/* * 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-app"],{ /***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js": /*!**************************************************************************!*\ !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js ***! \**************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_base)\n/* harmony export */ });\nfunction _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZ0QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZShyZWNlaXZlciwgcHJpdmF0ZUtleSkge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlY2VpdmVyLCBwcml2YXRlS2V5KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHVzZSBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjZWl2ZXI7XG59XG5leHBvcnQgeyBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlIGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js": /*!*************************************************************************!*\ !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js ***! \*************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_key)\n/* harmony export */ });\nvar id = 0;\n\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQytDIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkID0gMDtcblxuZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2Vfa2V5KG5hbWUpIHtcbiAgICByZXR1cm4gXCJfX3ByaXZhdGVfXCIgKyBpZCsrICsgXCJfXCIgKyBuYW1lO1xufVxuZXhwb3J0IHsgX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2Vfa2V5IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js": /*!*******************************************************************!*\ !*** ./node_modules/@swc/helpers/esm/_interop_require_default.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDeUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07XG59XG5leHBvcnQgeyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js": /*!********************************************************************!*\ !*** ./node_modules/@swc/helpers/esm/_interop_require_wildcard.js ***! \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_wildcard)\n/* harmony export */ });\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7O0FBRUEsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDMEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuXG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHtcbiAgICBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgcmV0dXJuIG9iajtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4geyBkZWZhdWx0OiBvYmogfTtcblxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCk7XG5cbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHJldHVybiBjYWNoZS5nZXQob2JqKTtcblxuICAgIHZhciBuZXdPYmogPSB7IF9fcHJvdG9fXzogbnVsbCB9O1xuICAgIHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgZWxzZSBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG5cbiAgICBpZiAoY2FjaGUpIGNhY2hlLnNldChvYmosIG5ld09iaik7XG5cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuZXhwb3J0IHsgX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/build/deployment-id.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/build/deployment-id.js ***! \*******************************************************/ /***/ ((__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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvZGVwbG95bWVudC1pZC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHFFQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0EsUUFBUSxLQUE4QixFQUFFLEVBRW5DO0FBQ0w7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9kZXBsb3ltZW50LWlkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmc7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmcoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRCkge1xuICAgICAgICByZXR1cm4gYD9kcGw9JHtwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSUR9YDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZXBsb3ltZW50LWlkLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/deployment-id.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/build/polyfills/polyfill-module.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/build/polyfills/polyfill-module.js ***! \*******************************************************************/ /***/ ((__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]}),Object.hasOwn||(Object.hasOwn=function(t,r){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");return Object.prototype.hasOwnProperty.call(Object(t),r)}),\"canParse\"in URL||(URL.canParse=function(t,r){try{return!!new URL(t,r)}catch(t){return!1}});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtUUFBbVEsK0JBQStCLHVDQUF1QyxzQkFBc0IsNERBQTRELDZFQUE2RSx1Q0FBdUMsNEJBQTRCLG9FQUFvRSw4Q0FBOEMsZ0NBQWdDLDZCQUE2QixzQ0FBc0MsU0FBUyxFQUFFLGFBQWEsc0NBQXNDLFFBQVEsRUFBRSxFQUFFLHNEQUFzRCwwQ0FBMEMsc0JBQXNCLEdBQUcsRUFBRSxzREFBc0QsdUJBQXVCLCtEQUErRCw4Q0FBOEMsNkVBQTZFLHlEQUF5RCxnREFBZ0QsSUFBSSxxQkFBcUIsU0FBUyxVQUFVIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ0cmltU3RhcnRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1TdGFydD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0KSxcInRyaW1FbmRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpLFwiZGVzY3JpcHRpb25cImluIFN5bWJvbC5wcm90b3R5cGV8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTeW1ib2wucHJvdG90eXBlLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PS9cXCgoLiopXFwpLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7cmV0dXJuIHQ/dFsxXTp2b2lkIDB9fSksQXJyYXkucHJvdG90eXBlLmZsYXR8fChBcnJheS5wcm90b3R5cGUuZmxhdD1mdW5jdGlvbih0LHIpe3JldHVybiByPXRoaXMuY29uY2F0LmFwcGx5KFtdLHRoaXMpLHQ+MSYmci5zb21lKEFycmF5LmlzQXJyYXkpP3IuZmxhdCh0LTEpOnJ9LEFycmF5LnByb3RvdHlwZS5mbGF0TWFwPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMubWFwKHQscikuZmxhdCgpfSksUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KFByb21pc2UucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdClyZXR1cm4gdGhpcy50aGVuKHQsdCk7dmFyIHI9dGhpcy5jb25zdHJ1Y3Rvcnx8UHJvbWlzZTtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sZnVuY3Rpb24obil7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBufSl9KX0pLE9iamVjdC5mcm9tRW50cmllc3x8KE9iamVjdC5mcm9tRW50cmllcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyWzBdXT1yWzFdLHR9LHt9KX0pLEFycmF5LnByb3RvdHlwZS5hdHx8KEFycmF5LnByb3RvdHlwZS5hdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoLnRydW5jKHQpfHwwO2lmKHI8MCYmKHIrPXRoaXMubGVuZ3RoKSwhKHI8MHx8cj49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW3JdfSksT2JqZWN0Lmhhc093bnx8KE9iamVjdC5oYXNPd249ZnVuY3Rpb24odCxyKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3RcIik7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChPYmplY3QodCkscil9KSxcImNhblBhcnNlXCJpbiBVUkx8fChVUkwuY2FuUGFyc2U9ZnVuY3Rpb24odCxyKXt0cnl7cmV0dXJuISFuZXcgVVJMKHQscil9Y2F0Y2godCl7cmV0dXJuITF9fSk7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/polyfills/polyfill-module.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/build/polyfills/process.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nvar _global_process, _global_process1;\nmodule.exports = ((_global_process = __webpack_require__.g.process) == null ? void 0 : _global_process.env) && typeof ((_global_process1 = __webpack_require__.g.process) == null ? void 0 : _global_process1.env) === 'object' ? __webpack_require__.g.process : __webpack_require__(/*! next/dist/compiled/process */ \"(app-pages-browser)/./node_modules/next/dist/compiled/process/browser.js\");\n\n//# sourceMappingURL=process.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3Byb2Nlc3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLHFDQUFxQyxxQkFBTSxpRkFBaUYscUJBQU0sa0VBQWtFLHFCQUFNLFdBQVcsbUJBQU8sQ0FBQyw0R0FBNEI7O0FBRXpQIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL2RyYW1hbGluZy12b2NhYi1sZWFybmluZy9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wcm9jZXNzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9nbG9iYWxfcHJvY2VzcywgX2dsb2JhbF9wcm9jZXNzMTtcbm1vZHVsZS5leHBvcnRzID0gKChfZ2xvYmFsX3Byb2Nlc3MgPSBnbG9iYWwucHJvY2VzcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9nbG9iYWxfcHJvY2Vzcy5lbnYpICYmIHR5cGVvZiAoKF9nbG9iYWxfcHJvY2VzczEgPSBnbG9iYWwucHJvY2VzcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9nbG9iYWxfcHJvY2VzczEuZW52KSA9PT0gJ29iamVjdCcgPyBnbG9iYWwucHJvY2VzcyA6IHJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9wcm9jZXNzJyk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByb2Nlc3MuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/add-base-path.js ***! \********************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(app-pages-browser)/./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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OzsrQ0FLZ0JBOzs7ZUFBQUE7OzsyQ0FMYztvREFDYTtBQUUzQyxNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLFlBQVlLLElBQVksRUFBRUMsUUFBa0I7SUFDMUQsT0FBT0MsQ0FBQUEsR0FBQUEsd0JBQUFBLDBCQUFBQSxFQUNMTCxNQUF1REksR0FDbkRELENBQUlBLEdBQ0pJLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNKLE1BQU1KO0FBRTVCIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvYWRkLWJhc2UtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRQYXRoUHJlZml4IH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLXBhdGgtcHJlZml4J1xuaW1wb3J0IHsgbm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2ggfSBmcm9tICcuL25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaCdcblxuY29uc3QgYmFzZVBhdGggPSAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCBhcyBzdHJpbmcpIHx8ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRCYXNlUGF0aChwYXRoOiBzdHJpbmcsIHJlcXVpcmVkPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaChcbiAgICBwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEggJiYgIXJlcXVpcmVkXG4gICAgICA/IHBhdGhcbiAgICAgIDogYWRkUGF0aFByZWZpeChwYXRoLCBiYXNlUGF0aClcbiAgKVxufVxuIl0sIm5hbWVzIjpbImFkZEJhc2VQYXRoIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJyZXF1aXJlZCIsIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoIiwiX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIIiwiYWRkUGF0aFByZWZpeCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-bootstrap.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/app-bootstrap.js ***! \********************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Before starting the Next.js runtime and requiring any module, we need to make\n * sure the following scripts are executed in the correct order:\n * - Polyfills\n * - next/script with `beforeInteractive` strategy\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"appBootstrap\", ({\n enumerable: true,\n get: function() {\n return appBootstrap;\n }\n}));\nconst _setattributesfromprops = __webpack_require__(/*! ./set-attributes-from-props */ \"(app-pages-browser)/./node_modules/next/dist/client/set-attributes-from-props.js\");\nconst version = \"15.5.3\";\nwindow.next = {\n version,\n appDir: true\n};\nfunction loadScriptsInSequence(scripts, hydrate) {\n if (!scripts || !scripts.length) {\n return hydrate();\n }\n return scripts.reduce((promise, param)=>{\n let [src, props] = param;\n return promise.then(()=>{\n return new Promise((resolve, reject)=>{\n const el = document.createElement('script');\n if (props) {\n (0, _setattributesfromprops.setAttributesFromProps)(el, props);\n }\n if (src) {\n el.src = src;\n el.onload = ()=>resolve();\n el.onerror = reject;\n } else if (props) {\n el.innerHTML = props.children;\n setTimeout(resolve);\n }\n document.head.appendChild(el);\n });\n });\n }, Promise.resolve()).catch((err)=>{\n console.error(err);\n // Still try to hydrate even if there's an error.\n }).then(()=>{\n hydrate();\n });\n}\nfunction appBootstrap(hydrate) {\n loadScriptsInSequence(self.__next_s, ()=>{\n // If the static shell is being debugged, skip hydration if the\n // `__nextppronly` query is present. This is only enabled when the\n // environment variable `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` is\n // set to `1`. Otherwise the following is optimized out.\n if (false) {}\n hydrate();\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=app-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1ib290c3RyYXAuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7Z0RBbURlQTs7O2VBQUFBOzs7b0RBakR1QjtBQUV2QyxNQUFNQyxVQUFVQyxRQUFRQztBQUV4QkUsT0FBT0MsSUFBSSxHQUFHO0lBQ1pMO0lBQ0FNLFFBQVE7QUFDVjtBQUVBLFNBQVNDLHNCQUNQQyxPQUF3RCxFQUN4REMsT0FBbUI7SUFFbkIsSUFBSSxDQUFDRCxXQUFXLENBQUNBLFFBQVFFLE1BQU0sRUFBRTtRQUMvQixPQUFPRDtJQUNUO0lBRUEsT0FBT0QsUUFDSkcsTUFBTSxDQUFDLENBQUNDLFNBQUFBO1lBQVMsQ0FBQ0MsS0FBS0MsTUFBTTtRQUM1QixPQUFPRixRQUFRRyxJQUFJLENBQUM7WUFDbEIsT0FBTyxJQUFJQyxRQUFjLENBQUNDLFNBQVNDO2dCQUNqQyxNQUFNQyxLQUFLQyxTQUFTQyxhQUFhLENBQUM7Z0JBRWxDLElBQUlQLE9BQU87b0JBQ1RRLENBQUFBLEdBQUFBLHdCQUFBQSxzQkFBQUEsRUFBdUJILElBQUlMO2dCQUM3QjtnQkFFQSxJQUFJRCxLQUFLO29CQUNQTSxHQUFHTixHQUFHLEdBQUdBO29CQUNUTSxHQUFHSSxNQUFNLEdBQUcsSUFBTU47b0JBQ2xCRSxHQUFHSyxPQUFPLEdBQUdOO2dCQUNmLE9BQU8sSUFBSUosT0FBTztvQkFDaEJLLEdBQUdNLFNBQVMsR0FBR1gsTUFBTVksUUFBUTtvQkFDN0JDLFdBQVdWO2dCQUNiO2dCQUVBRyxTQUFTUSxJQUFJLENBQUNDLFdBQVcsQ0FBQ1Y7WUFDNUI7UUFDRjtJQUNGLEdBQUdILFFBQVFDLE9BQU8sSUFDakJhLEtBQUssQ0FBQyxDQUFDQztRQUNOQyxRQUFRQyxLQUFLLENBQUNGO0lBQ2QsaURBQWlEO0lBQ25ELEdBQ0NoQixJQUFJLENBQUM7UUFDSk47SUFDRjtBQUNKO0FBRU8sU0FBU1YsYUFBYVUsT0FBbUI7SUFDOUNGLHNCQUF1QjJCLEtBQWFDLFFBQVEsRUFBRTtRQUM1QywrREFBK0Q7UUFDL0Qsa0VBQWtFO1FBQ2xFLHVFQUF1RTtRQUN2RSx3REFBd0Q7UUFDeEQsSUFBSWxDLEtBQThELEVBQUUsRUFXbkU7UUFFRFE7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvYXBwLWJvb3RzdHJhcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJlZm9yZSBzdGFydGluZyB0aGUgTmV4dC5qcyBydW50aW1lIGFuZCByZXF1aXJpbmcgYW55IG1vZHVsZSwgd2UgbmVlZCB0byBtYWtlXG4gKiBzdXJlIHRoZSBmb2xsb3dpbmcgc2NyaXB0cyBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXI6XG4gKiAtIFBvbHlmaWxsc1xuICogLSBuZXh0L3NjcmlwdCB3aXRoIGBiZWZvcmVJbnRlcmFjdGl2ZWAgc3RyYXRlZ3lcbiAqL1xuXG5pbXBvcnQgeyBzZXRBdHRyaWJ1dGVzRnJvbVByb3BzIH0gZnJvbSAnLi9zZXQtYXR0cmlidXRlcy1mcm9tLXByb3BzJ1xuXG5jb25zdCB2ZXJzaW9uID0gcHJvY2Vzcy5lbnYuX19ORVhUX1ZFUlNJT05cblxud2luZG93Lm5leHQgPSB7XG4gIHZlcnNpb24sXG4gIGFwcERpcjogdHJ1ZSxcbn1cblxuZnVuY3Rpb24gbG9hZFNjcmlwdHNJblNlcXVlbmNlKFxuICBzY3JpcHRzOiBbc3JjOiBzdHJpbmcsIHByb3BzOiB7IFtwcm9wOiBzdHJpbmddOiBhbnkgfV1bXSxcbiAgaHlkcmF0ZTogKCkgPT4gdm9pZFxuKSB7XG4gIGlmICghc2NyaXB0cyB8fCAhc2NyaXB0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gaHlkcmF0ZSgpXG4gIH1cblxuICByZXR1cm4gc2NyaXB0c1xuICAgIC5yZWR1Y2UoKHByb21pc2UsIFtzcmMsIHByb3BzXSkgPT4ge1xuICAgICAgcmV0dXJuIHByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuXG4gICAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzRnJvbVByb3BzKGVsLCBwcm9wcylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3JjKSB7XG4gICAgICAgICAgICBlbC5zcmMgPSBzcmNcbiAgICAgICAgICAgIGVsLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKVxuICAgICAgICAgICAgZWwub25lcnJvciA9IHJlamVjdFxuICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IHByb3BzLmNoaWxkcmVuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgIC8vIFN0aWxsIHRyeSB0byBoeWRyYXRlIGV2ZW4gaWYgdGhlcmUncyBhbiBlcnJvci5cbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIGh5ZHJhdGUoKVxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBCb290c3RyYXAoaHlkcmF0ZTogKCkgPT4gdm9pZCkge1xuICBsb2FkU2NyaXB0c0luU2VxdWVuY2UoKHNlbGYgYXMgYW55KS5fX25leHRfcywgKCkgPT4ge1xuICAgIC8vIElmIHRoZSBzdGF0aWMgc2hlbGwgaXMgYmVpbmcgZGVidWdnZWQsIHNraXAgaHlkcmF0aW9uIGlmIHRoZVxuICAgIC8vIGBfX25leHRwcHJvbmx5YCBxdWVyeSBpcyBwcmVzZW50LiBUaGlzIGlzIG9ubHkgZW5hYmxlZCB3aGVuIHRoZVxuICAgIC8vIGVudmlyb25tZW50IHZhcmlhYmxlIGBfX05FWFRfRVhQRVJJTUVOVEFMX1NUQVRJQ19TSEVMTF9ERUJVR0dJTkdgIGlzXG4gICAgLy8gc2V0IHRvIGAxYC4gT3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgaXMgb3B0aW1pemVkIG91dC5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9TVEFUSUNfU0hFTExfREVCVUdHSU5HID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHNlYXJjaCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaClcbiAgICAgIGlmIChcbiAgICAgICAgc2VhcmNoLmdldCgnX19uZXh0cHByb25seScpID09PSAnZmFsbGJhY2snIHx8XG4gICAgICAgIHNlYXJjaC5nZXQoJ19fbmV4dHBwcm9ubHknKSA9PT0gJzEnXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBTa2lwcGluZyBoeWRyYXRpb24gZHVlIHRvIF9fbmV4dHBwcm9ubHk9JHtzZWFyY2guZ2V0KCdfX25leHRwcHJvbmx5Jyl9YFxuICAgICAgICApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIGh5ZHJhdGUoKVxuICB9KVxufVxuIl0sIm5hbWVzIjpbImFwcEJvb3RzdHJhcCIsInZlcnNpb24iLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1ZFUlNJT04iLCJ3aW5kb3ciLCJuZXh0IiwiYXBwRGlyIiwibG9hZFNjcmlwdHNJblNlcXVlbmNlIiwic2NyaXB0cyIsImh5ZHJhdGUiLCJsZW5ndGgiLCJyZWR1Y2UiLCJwcm9taXNlIiwic3JjIiwicHJvcHMiLCJ0aGVuIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXNGcm9tUHJvcHMiLCJvbmxvYWQiLCJvbmVycm9yIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzZXRUaW1lb3V0IiwiaGVhZCIsImFwcGVuZENoaWxkIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJzZWxmIiwiX19uZXh0X3MiLCJfX05FWFRfRVhQRVJJTUVOVEFMX1NUQVRJQ19TSEVMTF9ERUJVR0dJTkciLCJzZWFyY2giLCJVUkxTZWFyY2hQYXJhbXMiLCJsb2NhdGlvbiIsImdldCIsIndhcm4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-bootstrap.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-build-id.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/app-build-id.js ***! \*******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This gets assigned as a side-effect during app initialization. Because it\n// represents the build used to create the JS bundle, it should never change\n// after being set, so we store it in a global variable.\n//\n// When performing RSC requests, if the incoming data has a different build ID,\n// we perform an MPA navigation/refresh to load the updated build and ensure\n// that the client and server in sync.\n// Starts as an empty string. In practice, because setAppBuildId is called\n// during initialization before hydration starts, this will always get\n// reassigned to the actual build ID before it's ever needed by a navigation.\n// If for some reasons it didn't, due to a bug or race condition, then on\n// navigation the build comparision would fail and trigger an MPA navigation.\n\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 getAppBuildId: function() {\n return getAppBuildId;\n },\n setAppBuildId: function() {\n return setAppBuildId;\n }\n});\nlet globalBuildId = '';\nfunction setAppBuildId(buildId) {\n globalBuildId = buildId;\n}\nfunction getAppBuildId() {\n return globalBuildId;\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=app-build-id.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1idWlsZC1pZC5qcyIsIm1hcHBpbmdzIjoiQUFBQSw0RUFBNEU7QUFDNUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSxzQ0FBc0M7QUFFdEMsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSw2RUFBNkU7QUFDN0UseUVBQXlFO0FBQ3pFLDZFQUE2RTs7Ozs7Ozs7Ozs7OztJQU83REEsYUFBYTtlQUFiQTs7SUFKQUMsYUFBYTtlQUFiQTs7O0FBRmhCLElBQUlDLGdCQUF3QjtBQUVyQixTQUFTRCxjQUFjRSxPQUFlO0lBQzNDRCxnQkFBZ0JDO0FBQ2xCO0FBRU8sU0FBU0g7SUFDZCxPQUFPRTtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvYXBwLWJ1aWxkLWlkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZ2V0cyBhc3NpZ25lZCBhcyBhIHNpZGUtZWZmZWN0IGR1cmluZyBhcHAgaW5pdGlhbGl6YXRpb24uIEJlY2F1c2UgaXRcbi8vIHJlcHJlc2VudHMgdGhlIGJ1aWxkIHVzZWQgdG8gY3JlYXRlIHRoZSBKUyBidW5kbGUsIGl0IHNob3VsZCBuZXZlciBjaGFuZ2Vcbi8vIGFmdGVyIGJlaW5nIHNldCwgc28gd2Ugc3RvcmUgaXQgaW4gYSBnbG9iYWwgdmFyaWFibGUuXG4vL1xuLy8gV2hlbiBwZXJmb3JtaW5nIFJTQyByZXF1ZXN0cywgaWYgdGhlIGluY29taW5nIGRhdGEgaGFzIGEgZGlmZmVyZW50IGJ1aWxkIElELFxuLy8gd2UgcGVyZm9ybSBhbiBNUEEgbmF2aWdhdGlvbi9yZWZyZXNoIHRvIGxvYWQgdGhlIHVwZGF0ZWQgYnVpbGQgYW5kIGVuc3VyZVxuLy8gdGhhdCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgaW4gc3luYy5cblxuLy8gU3RhcnRzIGFzIGFuIGVtcHR5IHN0cmluZy4gSW4gcHJhY3RpY2UsIGJlY2F1c2Ugc2V0QXBwQnVpbGRJZCBpcyBjYWxsZWRcbi8vIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWZvcmUgaHlkcmF0aW9uIHN0YXJ0cywgdGhpcyB3aWxsIGFsd2F5cyBnZXRcbi8vIHJlYXNzaWduZWQgdG8gdGhlIGFjdHVhbCBidWlsZCBJRCBiZWZvcmUgaXQncyBldmVyIG5lZWRlZCBieSBhIG5hdmlnYXRpb24uXG4vLyBJZiBmb3Igc29tZSByZWFzb25zIGl0IGRpZG4ndCwgZHVlIHRvIGEgYnVnIG9yIHJhY2UgY29uZGl0aW9uLCB0aGVuIG9uXG4vLyBuYXZpZ2F0aW9uIHRoZSBidWlsZCBjb21wYXJpc2lvbiB3b3VsZCBmYWlsIGFuZCB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxubGV0IGdsb2JhbEJ1aWxkSWQ6IHN0cmluZyA9ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcHBCdWlsZElkKGJ1aWxkSWQ6IHN0cmluZykge1xuICBnbG9iYWxCdWlsZElkID0gYnVpbGRJZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwQnVpbGRJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2xvYmFsQnVpbGRJZFxufVxuIl0sIm5hbWVzIjpbImdldEFwcEJ1aWxkSWQiLCJzZXRBcHBCdWlsZElkIiwiZ2xvYmFsQnVpbGRJZCIsImJ1aWxkSWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-build-id.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/client/app-call-server.js ***! \**********************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"callServer\", ({\n enumerable: true,\n get: function() {\n return callServer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./components/router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _useactionqueue = __webpack_require__(/*! ./components/use-action-queue */ \"(app-pages-browser)/./node_modules/next/dist/client/components/use-action-queue.js\");\nasync function callServer(actionId, actionArgs) {\n return new Promise((resolve, reject)=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_SERVER_ACTION,\n actionId,\n actionArgs,\n resolve,\n reject\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=app-call-server.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1jYWxsLXNlcnZlci5qcyIsIm1hcHBpbmdzIjoiOzs7OzhDQUlzQkE7OztlQUFBQTs7O21DQUpVO2dEQUNLOzRDQUNHO0FBRWpDLGVBQWVBLFdBQVdDLFFBQWdCLEVBQUVDLFVBQWlCO0lBQ2xFLE9BQU8sSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUMzQkMsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7WUFDZEMsQ0FBQUEsR0FBQUEsZ0JBQUFBLHVCQUFBQSxFQUF3QjtnQkFDdEJDLE1BQU1DLG9CQUFBQSxvQkFBb0I7Z0JBQzFCUjtnQkFDQUM7Z0JBQ0FFO2dCQUNBQztZQUNGO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvYXBwLWNhbGwtc2VydmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0YXJ0VHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQUNUSU9OX1NFUlZFUl9BQ1RJT04gfSBmcm9tICcuL2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiB9IGZyb20gJy4vY29tcG9uZW50cy91c2UtYWN0aW9uLXF1ZXVlJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFNlcnZlcihhY3Rpb25JZDogc3RyaW5nLCBhY3Rpb25BcmdzOiBhbnlbXSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IEFDVElPTl9TRVJWRVJfQUNUSU9OLFxuICAgICAgICBhY3Rpb25JZCxcbiAgICAgICAgYWN0aW9uQXJncyxcbiAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuIl0sIm5hbWVzIjpbImNhbGxTZXJ2ZXIiLCJhY3Rpb25JZCIsImFjdGlvbkFyZ3MiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInN0YXJ0VHJhbnNpdGlvbiIsImRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIiwidHlwZSIsIkFDVElPTl9TRVJWRVJfQUNUSU9OIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-find-source-map-url.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/app-find-source-map-url.js ***! \******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findSourceMapURL\", ({\n enumerable: true,\n get: function() {\n return findSourceMapURL;\n }\n}));\nconst basePath = false || '';\nconst pathname = \"\" + basePath + \"/__nextjs_source-map\";\nconst findSourceMapURL = true ? function findSourceMapURL(filename) {\n if (filename === '') {\n return null;\n }\n if (filename.startsWith(document.location.origin) && filename.includes('/_next/static')) {\n // This is a request for a client chunk. This can only happen when\n // using Turbopack. In this case, since we control how those source\n // maps are generated, we can safely assume that the sourceMappingURL\n // is relative to the filename, with an added `.map` extension. The\n // browser can just request this file, and it gets served through the\n // normal dev server, without the need to route this through\n // the `/__nextjs_source-map` dev middleware.\n return \"\" + filename + \".map\";\n }\n const url = new URL(pathname, document.location.origin);\n url.searchParams.set('filename', filename);\n return url.href;\n} : 0;\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=app-find-source-map-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBR2FBOzs7ZUFBQUE7OztBQUhiLE1BQU1DLFdBQVdDLE1BQWtDLElBQUk7QUFDdkQsTUFBTUcsV0FBWSxLQUFFSixXQUFTO0FBRXRCLE1BQU1ELG1CQUNYRSxLQUFvQixHQUNoQixTQUFTRixpQkFBaUJPLFFBQWdCO0lBQ3hDLElBQUlBLGFBQWEsSUFBSTtRQUNuQixPQUFPO0lBQ1Q7SUFFQSxJQUNFQSxTQUFTQyxVQUFVLENBQUNDLFNBQVNDLFFBQVEsQ0FBQ0MsTUFBTSxLQUM1Q0osU0FBU0ssUUFBUSxDQUFDLGtCQUNsQjtRQUNBLGtFQUFrRTtRQUNsRSxtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsNERBQTREO1FBQzVELDZDQUE2QztRQUM3QyxPQUFRLEtBQUVMLFdBQVM7SUFDckI7SUFFQSxNQUFNTSxNQUFNLElBQUlDLElBQUlULFVBQVVJLFNBQVNDLFFBQVEsQ0FBQ0MsTUFBTTtJQUN0REUsSUFBSUUsWUFBWSxDQUFDQyxHQUFHLENBQUMsWUFBWVQ7SUFFakMsT0FBT00sSUFBSUksSUFBSTtBQUNqQixJQUNBQyxDQUFTQSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCAnJ1xuY29uc3QgcGF0aG5hbWUgPSBgJHtiYXNlUGF0aH0vX19uZXh0anNfc291cmNlLW1hcGBcblxuZXhwb3J0IGNvbnN0IGZpbmRTb3VyY2VNYXBVUkwgPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gZmluZFNvdXJjZU1hcFVSTChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChmaWxlbmFtZSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKSAmJlxuICAgICAgICAgIGZpbGVuYW1lLmluY2x1ZGVzKCcvX25leHQvc3RhdGljJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBhIHJlcXVlc3QgZm9yIGEgY2xpZW50IGNodW5rLiBUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aGVuXG4gICAgICAgICAgLy8gdXNpbmcgVHVyYm9wYWNrLiBJbiB0aGlzIGNhc2UsIHNpbmNlIHdlIGNvbnRyb2wgaG93IHRob3NlIHNvdXJjZVxuICAgICAgICAgIC8vIG1hcHMgYXJlIGdlbmVyYXRlZCwgd2UgY2FuIHNhZmVseSBhc3N1bWUgdGhhdCB0aGUgc291cmNlTWFwcGluZ1VSTFxuICAgICAgICAgIC8vIGlzIHJlbGF0aXZlIHRvIHRoZSBmaWxlbmFtZSwgd2l0aCBhbiBhZGRlZCBgLm1hcGAgZXh0ZW5zaW9uLiBUaGVcbiAgICAgICAgICAvLyBicm93c2VyIGNhbiBqdXN0IHJlcXVlc3QgdGhpcyBmaWxlLCBhbmQgaXQgZ2V0cyBzZXJ2ZWQgdGhyb3VnaCB0aGVcbiAgICAgICAgICAvLyBub3JtYWwgZGV2IHNlcnZlciwgd2l0aG91dCB0aGUgbmVlZCB0byByb3V0ZSB0aGlzIHRocm91Z2hcbiAgICAgICAgICAvLyB0aGUgYC9fX25leHRqc19zb3VyY2UtbWFwYCBkZXYgbWlkZGxld2FyZS5cbiAgICAgICAgICByZXR1cm4gYCR7ZmlsZW5hbWV9Lm1hcGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGF0aG5hbWUsIGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbilcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ZpbGVuYW1lJywgZmlsZW5hbWUpXG5cbiAgICAgICAgcmV0dXJuIHVybC5ocmVmXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWRcbiJdLCJuYW1lcyI6WyJmaW5kU291cmNlTWFwVVJMIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGhuYW1lIiwiTk9ERV9FTlYiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaW5jbHVkZXMiLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJocmVmIiwidW5kZWZpbmVkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-find-source-map-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-globals.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/app-globals.js ***! \******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// imports polyfill from `@next/polyfill-module` after build.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/polyfill-module.js\");\n// Only setup devtools in development\nif (true) {\n __webpack_require__(/*! ../next-devtools/userspace/app/app-dev-overlay-setup */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-setup.js\");\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=app-globals.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1nbG9iYWxzLmpzIiwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDs7Ozs7b0JBQ3REO0FBRVAscUNBQXFDO0FBQ3JDLElBQUlBLElBQW9CLEVBQW1CO0lBQ3pDRyxtQkFBT0EsQ0FBQywrSkFBc0Q7QUFDaEUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvc3JjL2NsaWVudC9hcHAtZ2xvYmFscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnRzIHBvbHlmaWxsIGZyb20gYEBuZXh0L3BvbHlmaWxsLW1vZHVsZWAgYWZ0ZXIgYnVpbGQuXG5pbXBvcnQgJy4uL2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUnXG5cbi8vIE9ubHkgc2V0dXAgZGV2dG9vbHMgaW4gZGV2ZWxvcG1lbnRcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHJlcXVpcmUoJy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktc2V0dXAnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvYXBwLWRldi1vdmVybGF5LXNldHVwJylcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJyZXF1aXJlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-globals.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-index.js": /*!****************************************************!*\ !*** ./node_modules/next/dist/client/app-index.js ***! \****************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hydrate\", ({\n enumerable: true,\n get: function() {\n return hydrate;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\n__webpack_require__(/*! ./app-globals */ \"(app-pages-browser)/./node_modules/next/dist/client/app-globals.js\");\nconst _client = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom/client */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/client.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _client1 = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _onrecoverableerror = __webpack_require__(/*! ./react-client-callbacks/on-recoverable-error */ \"(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\");\nconst _errorboundarycallbacks = __webpack_require__(/*! ./react-client-callbacks/error-boundary-callbacks */ \"(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js\");\nconst _appcallserver = __webpack_require__(/*! ./app-call-server */ \"(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ./app-find-source-map-url */ \"(app-pages-browser)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _approuterinstance = __webpack_require__(/*! ./components/app-router-instance */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js\");\nconst _approuter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./components/app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\"));\nconst _createinitialrouterstate = __webpack_require__(/*! ./components/router-reducer/create-initial-router-state */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _appbuildid = __webpack_require__(/*! ./app-build-id */ \"(app-pages-browser)/./node_modules/next/dist/client/app-build-id.js\");\n/// \nconst createFromReadableStream = _client1.createFromReadableStream;\nconst appElement = document;\nconst encoder = new TextEncoder();\nlet initialServerDataBuffer = undefined;\nlet initialServerDataWriter = undefined;\nlet initialServerDataLoaded = false;\nlet initialServerDataFlushed = false;\nlet initialFormStateData = null;\nfunction nextServerDataCallback(seg) {\n if (seg[0] === 0) {\n initialServerDataBuffer = [];\n } else if (seg[0] === 1) {\n if (!initialServerDataBuffer) throw Object.defineProperty(new Error('Unexpected server data: missing bootstrap script.'), \"__NEXT_ERROR_CODE\", {\n value: \"E18\",\n enumerable: false,\n configurable: true\n });\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(encoder.encode(seg[1]));\n } else {\n initialServerDataBuffer.push(seg[1]);\n }\n } else if (seg[0] === 2) {\n initialFormStateData = seg[1];\n } else if (seg[0] === 3) {\n if (!initialServerDataBuffer) throw Object.defineProperty(new Error('Unexpected server data: missing bootstrap script.'), \"__NEXT_ERROR_CODE\", {\n value: \"E18\",\n enumerable: false,\n configurable: true\n });\n // Decode the base64 string back to binary data.\n const binaryString = atob(seg[1]);\n const decodedChunk = new Uint8Array(binaryString.length);\n for(var i = 0; i < binaryString.length; i++){\n decodedChunk[i] = binaryString.charCodeAt(i);\n }\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(decodedChunk);\n } else {\n initialServerDataBuffer.push(decodedChunk);\n }\n }\n}\nfunction isStreamErrorOrUnfinished(ctr) {\n // If `desiredSize` is null, it means the stream is closed or errored. If it is lower than 0, the stream is still unfinished.\n return ctr.desiredSize === null || ctr.desiredSize < 0;\n}\n// There might be race conditions between `nextServerDataRegisterWriter` and\n// `DOMContentLoaded`. The former will be called when React starts to hydrate\n// the root, the latter will be called when the DOM is fully loaded.\n// For streaming, the former is called first due to partial hydration.\n// For non-streaming, the latter can be called first.\n// Hence, we use two variables `initialServerDataLoaded` and\n// `initialServerDataFlushed` to make sure the writer will be closed and\n// `initialServerDataBuffer` will be cleared in the right time.\nfunction nextServerDataRegisterWriter(ctr) {\n if (initialServerDataBuffer) {\n initialServerDataBuffer.forEach((val)=>{\n ctr.enqueue(typeof val === 'string' ? encoder.encode(val) : val);\n });\n if (initialServerDataLoaded && !initialServerDataFlushed) {\n if (isStreamErrorOrUnfinished(ctr)) {\n ctr.error(Object.defineProperty(new Error('The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection.'), \"__NEXT_ERROR_CODE\", {\n value: \"E117\",\n enumerable: false,\n configurable: true\n }));\n } else {\n ctr.close();\n }\n initialServerDataFlushed = true;\n initialServerDataBuffer = undefined;\n }\n }\n initialServerDataWriter = ctr;\n}\n// When `DOMContentLoaded`, we can close all pending writers to finish hydration.\nconst DOMContentLoaded = function() {\n if (initialServerDataWriter && !initialServerDataFlushed) {\n initialServerDataWriter.close();\n initialServerDataFlushed = true;\n initialServerDataBuffer = undefined;\n }\n initialServerDataLoaded = true;\n};\n_c = DOMContentLoaded;\n// It's possible that the DOM is already loaded.\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', DOMContentLoaded, false);\n} else {\n // Delayed in marco task to ensure it's executed later than hydration\n setTimeout(DOMContentLoaded);\n}\nconst nextServerDataLoadingGlobal = self.__next_f = self.__next_f || [];\nnextServerDataLoadingGlobal.forEach(nextServerDataCallback);\nnextServerDataLoadingGlobal.push = nextServerDataCallback;\nconst readable = new ReadableStream({\n start (controller) {\n nextServerDataRegisterWriter(controller);\n }\n});\nconst initialServerResponse = createFromReadableStream(readable, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n});\nfunction ServerRoot(param) {\n let { pendingActionQueue } = param;\n const initialRSCPayload = (0, _react.use)(initialServerResponse);\n const actionQueue = (0, _react.use)(pendingActionQueue);\n const router = /*#__PURE__*/ (0, _jsxruntime.jsx)(_approuter.default, {\n actionQueue: actionQueue,\n globalErrorState: initialRSCPayload.G,\n assetPrefix: initialRSCPayload.p\n });\n if ( true && initialRSCPayload.m) {\n // We provide missing slot information in a context provider only during development\n // as we log some additional information about the missing slots in the console.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.MissingSlotContext, {\n value: initialRSCPayload.m,\n children: router\n });\n }\n return router;\n}\n_c1 = ServerRoot;\nconst StrictModeIfEnabled = true ? _react.default.StrictMode : 0;\nfunction Root(param) {\n let { children } = param;\n if (false) {}\n return children;\n}\n_c2 = Root;\nfunction onDefaultTransitionIndicator() {\n // TODO: Compose default with user-configureable (e.g. nprogress)\n // TODO: Use React's default once we figure out hanging indicators: https://codesandbox.io/p/sandbox/charming-moon-hktkp6?file=%2Fsrc%2Findex.js%3A106%2C30\n return ()=>{};\n}\nconst reactRootOptions = {\n onDefaultTransitionIndicator: onDefaultTransitionIndicator,\n onRecoverableError: _onrecoverableerror.onRecoverableError,\n onCaughtError: _errorboundarycallbacks.onCaughtError,\n onUncaughtError: _errorboundarycallbacks.onUncaughtError\n};\nfunction hydrate(instrumentationHooks) {\n // React overrides `.then` and doesn't return a new promise chain,\n // so we wrap the action queue in a promise to ensure that its value\n // is defined when the promise resolves.\n // https://github.com/facebook/react/blob/163365a07872337e04826c4f501565d43dbd2fd4/packages/react-client/src/ReactFlightClient.js#L189-L190\n const pendingActionQueue = new Promise((resolve, reject)=>{\n initialServerResponse.then((initialRSCPayload)=>{\n // setAppBuildId should be called only once, during JS initialization\n // and before any components have hydrated.\n (0, _appbuildid.setAppBuildId)(initialRSCPayload.b);\n const initialTimestamp = Date.now();\n resolve((0, _approuterinstance.createMutableActionQueue)((0, _createinitialrouterstate.createInitialRouterState)({\n navigatedAt: initialTimestamp,\n initialFlightData: initialRSCPayload.f,\n initialCanonicalUrlParts: initialRSCPayload.c,\n initialParallelRoutes: new Map(),\n location: window.location,\n couldBeIntercepted: initialRSCPayload.i,\n postponed: initialRSCPayload.s,\n prerendered: initialRSCPayload.S\n }), instrumentationHooks));\n }, (err)=>reject(err));\n });\n const reactEl = /*#__PURE__*/ (0, _jsxruntime.jsx)(StrictModeIfEnabled, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_headmanagercontextsharedruntime.HeadManagerContext.Provider, {\n value: {\n appDir: true\n },\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Root, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(ServerRoot, {\n pendingActionQueue: pendingActionQueue\n })\n })\n })\n });\n if (document.documentElement.id === '__next_error__') {\n let element = reactEl;\n // Server rendering failed, fall back to client-side rendering\n if (true) {\n const { RootLevelDevOverlayElement } = __webpack_require__(/*! ../next-devtools/userspace/app/client-entry */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/client-entry.js\");\n // Note this won't cause hydration mismatch because we are doing CSR w/o hydration\n element = /*#__PURE__*/ (0, _jsxruntime.jsx)(RootLevelDevOverlayElement, {\n children: element\n });\n }\n _client.default.createRoot(appElement, reactRootOptions).render(element);\n } else {\n _react.default.startTransition(()=>{\n _client.default.hydrateRoot(appElement, reactEl, {\n ...reactRootOptions,\n formState: initialFormStateData\n });\n });\n }\n // TODO-APP: Remove this logic when Float has GC built-in in development.\n if (true) {\n const { linkGc } = __webpack_require__(/*! ./app-link-gc */ \"(app-pages-browser)/./node_modules/next/dist/client/app-link-gc.js\");\n linkGc();\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=app-index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"DOMContentLoaded\");\n$RefreshReg$(_c1, \"ServerRoot\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7OzJDQWtPZ0JBOzs7ZUFBQUE7Ozs7OztvQkFsT1Q7NkVBQ29COzZFQUNBO3FDQUdpRDs2REFDekM7Z0RBQ0E7b0RBSTVCOzJDQUNvQjtpREFDTTsrQ0FJMUI7Z0ZBQ2U7c0RBRW1COzJEQUNOO3dDQUNMO0FBRTlCLGdEQUFnRDtBQUVoRCxNQUFNQywyQkFDSkMsU0FBQUEsd0JBQStCO0FBRWpDLE1BQU1DLGFBQXFDQztBQUUzQyxNQUFNQyxVQUFVLElBQUlDO0FBRXBCLElBQUlDLDBCQUErREM7QUFDbkUsSUFBSUMsMEJBQ0ZEO0FBQ0YsSUFBSUUsMEJBQTBCO0FBQzlCLElBQUlDLDJCQUEyQjtBQUUvQixJQUFJQyx1QkFBbUM7QUFtQnZDLFNBQVNDLHVCQUF1QkMsR0FBa0I7SUFDaEQsSUFBSUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO1FBQ2hCUCwwQkFBMEIsRUFBRTtJQUM5QixPQUFPLElBQUlPLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRztRQUN2QixJQUFJLENBQUNQLHlCQUNILE1BQU0scUJBQThELENBQTlELElBQUlRLE1BQU0sc0RBQVY7bUJBQUE7d0JBQUE7MEJBQUE7UUFBNkQ7UUFFckUsSUFBSU4seUJBQXlCO1lBQzNCQSx3QkFBd0JPLE9BQU8sQ0FBQ1gsUUFBUVksTUFBTSxDQUFDSCxHQUFHLENBQUMsRUFBRTtRQUN2RCxPQUFPO1lBQ0xQLHdCQUF3QlcsSUFBSSxDQUFDSixHQUFHLENBQUMsRUFBRTtRQUNyQztJQUNGLE9BQU8sSUFBSUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO1FBQ3ZCRix1QkFBdUJFLEdBQUcsQ0FBQyxFQUFFO0lBQy9CLE9BQU8sSUFBSUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO1FBQ3ZCLElBQUksQ0FBQ1AseUJBQ0gsTUFBTSxxQkFBOEQsQ0FBOUQsSUFBSVEs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cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2FwcC1nbG9iYWxzJ1xuaW1wb3J0IFJlYWN0RE9NQ2xpZW50IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnXG5pbXBvcnQgUmVhY3QsIHsgdXNlIH0gZnJvbSAncmVhY3QnXG4vLyBUT0RPOiBFeHBsaWNpdGx5IGltcG9ydCBmcm9tIGNsaWVudC5icm93c2VyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0gYXMgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciB9IGZyb20gJ3JlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnQnXG5pbXBvcnQgeyBIZWFkTWFuYWdlckNvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgb25SZWNvdmVyYWJsZUVycm9yIH0gZnJvbSAnLi9yZWFjdC1jbGllbnQtY2FsbGJhY2tzL29uLXJlY292ZXJhYmxlLWVycm9yJ1xuaW1wb3J0IHtcbiAgb25DYXVnaHRFcnJvcixcbiAgb25VbmNhdWdodEVycm9yLFxufSBmcm9tICcuL3JlYWN0LWNsaWVudC1jYWxsYmFja3MvZXJyb3ItYm91bmRhcnktY2FsbGJhY2tzJ1xuaW1wb3J0IHsgY2FsbFNlcnZlciB9IGZyb20gJy4vYXBwLWNhbGwtc2VydmVyJ1xuaW1wb3J0IHsgZmluZFNvdXJjZU1hcFVSTCB9IGZyb20gJy4vYXBwLWZpbmQtc291cmNlLW1hcC11cmwnXG5pbXBvcnQge1xuICB0eXBlIEFwcFJvdXRlckFjdGlvblF1ZXVlLFxuICBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUsXG59IGZyb20gJy4vY29tcG9uZW50cy9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IEFwcFJvdXRlciBmcm9tICcuL2NvbXBvbmVudHMvYXBwLXJvdXRlcidcbmltcG9ydCB0eXBlIHsgSW5pdGlhbFJTQ1BheWxvYWQgfSBmcm9tICcuLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaW5pdGlhbC1yb3V0ZXItc3RhdGUnXG5pbXBvcnQgeyBNaXNzaW5nU2xvdENvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHNldEFwcEJ1aWxkSWQgfSBmcm9tICcuL2FwcC1idWlsZC1pZCdcblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJyZWFjdC1kb20vZXhwZXJpbWVudGFsXCIgLz5cblxuY29uc3QgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtID1cbiAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0nXVxuXG5jb25zdCBhcHBFbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50ID0gZG9jdW1lbnRcblxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXG5cbmxldCBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcjogKHN0cmluZyB8IFVpbnQ4QXJyYXkpW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbmxldCBpbml0aWFsU2VydmVyRGF0YVdyaXRlcjogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciB8IHVuZGVmaW5lZCA9XG4gIHVuZGVmaW5lZFxubGV0IGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gZmFsc2VcbmxldCBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQgPSBmYWxzZVxuXG5sZXQgaW5pdGlhbEZvcm1TdGF0ZURhdGE6IG51bGwgfCBhbnkgPSBudWxsXG5cbnR5cGUgRmxpZ2h0U2VnbWVudCA9XG4gIHwgW2lzQm9vdFN0cmFwOiAwXVxuICB8IFtpc05vdEJvb3RzdHJhcDogMSwgcmVzcG9uc2VQYXJ0aWFsOiBzdHJpbmddXG4gIHwgW2lzRm9ybVN0YXRlOiAyLCBmb3JtU3RhdGU6IGFueV1cbiAgfCBbaXNCaW5hcnk6IDMsIHJlc3BvbnNlQmFzZTY0UGFydGlhbDogc3RyaW5nXVxuXG50eXBlIE5leHRGbGlnaHQgPSBPbWl0PEFycmF5PEZsaWdodFNlZ21lbnQ+LCAncHVzaCc+ICYge1xuICBwdXNoOiAoc2VnOiBGbGlnaHRTZWdtZW50KSA9PiB2b2lkXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gSWYgeW91J3JlIHdvcmtpbmcgaW4gYSBicm93c2VyIGVudmlyb25tZW50XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fbmV4dF9mOiBOZXh0RmxpZ2h0XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dFNlcnZlckRhdGFDYWxsYmFjayhzZWc6IEZsaWdodFNlZ21lbnQpOiB2b2lkIHtcbiAgaWYgKHNlZ1swXSA9PT0gMCkge1xuICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyID0gW11cbiAgfSBlbHNlIGlmIChzZWdbMF0gPT09IDEpIHtcbiAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHNlcnZlciBkYXRhOiBtaXNzaW5nIGJvb3RzdHJhcCBzY3JpcHQuJylcblxuICAgIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlcikge1xuICAgICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShzZWdbMV0pKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlci5wdXNoKHNlZ1sxXSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VnWzBdID09PSAyKSB7XG4gICAgaW5pdGlhbEZvcm1TdGF0ZURhdGEgPSBzZWdbMV1cbiAgfSBlbHNlIGlmIChzZWdbMF0gPT09IDMpIHtcbiAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHNlcnZlciBkYXRhOiBtaXNzaW5nIGJvb3RzdHJhcCBzY3JpcHQuJylcblxuICAgIC8vIERlY29kZSB0aGUgYmFzZTY0IHN0cmluZyBiYWNrIHRvIGJpbmFyeSBkYXRhLlxuICAgIGNvbnN0IGJpbmFyeVN0cmluZyA9IGF0b2Ioc2VnWzFdKVxuICAgIGNvbnN0IGRlY29kZWRDaHVuayA9IG5ldyBVaW50OEFycmF5KGJpbmFyeVN0cmluZy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlY29kZWRDaHVua1tpXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyKSB7XG4gICAgICBpbml0aWFsU2VydmVyRGF0YVdyaXRlci5lbnF1ZXVlKGRlY29kZWRDaHVuaylcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIucHVzaChkZWNvZGVkQ2h1bmspXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RyZWFtRXJyb3JPclVuZmluaXNoZWQoY3RyOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKSB7XG4gIC8vIElmIGBkZXNpcmVkU2l6ZWAgaXMgbnVsbCwgaXQgbWVhbnMgdGhlIHN0cmVhbSBpcyBjbG9zZWQgb3IgZXJyb3JlZC4gSWYgaXQgaXMgbG93ZXIgdGhhbiAwLCB0aGUgc3RyZWFtIGlzIHN0aWxsIHVuZmluaXNoZWQuXG4gIHJldHVybiBjdHIuZGVzaXJlZFNpemUgPT09IG51bGwgfHwgY3RyLmRlc2lyZWRTaXplIDwgMFxufVxuXG4vLyBUaGVyZSBtaWdodCBiZSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcmAgYW5kXG4vLyBgRE9NQ29udGVudExvYWRlZGAuIFRoZSBmb3JtZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiBSZWFjdCBzdGFydHMgdG8gaHlkcmF0ZVxuLy8gdGhlIHJvb3QsIHRoZSBsYXR0ZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgRE9NIGlzIGZ1bGx5IGxvYWRlZC5cbi8vIEZvciBzdHJlYW1pbmcsIHRoZSBmb3JtZXIgaXMgY2FsbGVkIGZpcnN0IGR1ZSB0byBwYXJ0aWFsIGh5ZHJhdGlvbi5cbi8vIEZvciBub24tc3RyZWFtaW5nLCB0aGUgbGF0dGVyIGNhbiBiZSBjYWxsZWQgZmlyc3QuXG4vLyBIZW5jZSwgd2UgdXNlIHR3byB2YXJpYWJsZXMgYGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkYCBhbmRcbi8vIGBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWRgIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGVyIHdpbGwgYmUgY2xvc2VkIGFuZFxuLy8gYGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyYCB3aWxsIGJlIGNsZWFyZWQgaW4gdGhlIHJpZ2h0IHRpbWUuXG5mdW5jdGlvbiBuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyKGN0cjogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcikge1xuICBpZiAoaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIpIHtcbiAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlci5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGN0ci5lbnF1ZXVlKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gZW5jb2Rlci5lbmNvZGUodmFsKSA6IHZhbClcbiAgICB9KVxuICAgIGlmIChpbml0aWFsU2VydmVyRGF0YUxvYWRlZCAmJiAhaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkKSB7XG4gICAgICBpZiAoaXNTdHJlYW1FcnJvck9yVW5maW5pc2hlZChjdHIpKSB7XG4gICAgICAgIGN0ci5lcnJvcihcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBhZ2Ugd2FzIHVuZXhwZWN0ZWRseSBjbG9zZWQsIHBvc3NpYmx5IGR1ZSB0byB0aGUgc3RvcCBidXR0b24gYmVpbmcgY2xpY2tlZCwgbG9zcyBvZiBXaS1GaSwgb3IgYW4gdW5zdGFibGUgaW50ZXJuZXQgY29ubmVjdGlvbi4nXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHIuY2xvc2UoKVxuICAgICAgfVxuICAgICAgaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkID0gdHJ1ZVxuICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBpbml0aWFsU2VydmVyRGF0YVdyaXRlciA9IGN0clxufVxuXG4vLyBXaGVuIGBET01Db250ZW50TG9hZGVkYCwgd2UgY2FuIGNsb3NlIGFsbCBwZW5kaW5nIHdyaXRlcnMgdG8gZmluaXNoIGh5ZHJhdGlvbi5cbmNvbnN0IERPTUNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlciAmJiAhaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkKSB7XG4gICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIuY2xvc2UoKVxuICAgIGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IHRydWVcbiAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlciA9IHVuZGVmaW5lZFxuICB9XG4gIGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gdHJ1ZVxufVxuXG4vLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIERPTSBpcyBhbHJlYWR5IGxvYWRlZC5cbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIERPTUNvbnRlbnRMb2FkZWQsIGZhbHNlKVxufSBlbHNlIHtcbiAgLy8gRGVsYXllZCBpbiBtYXJjbyB0YXNrIHRvIGVuc3VyZSBpdCdzIGV4ZWN1dGVkIGxhdGVyIHRoYW4gaHlkcmF0aW9uXG4gIHNldFRpbWVvdXQoRE9NQ29udGVudExvYWRlZClcbn1cblxuY29uc3QgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsID0gKHNlbGYuX19uZXh0X2YgPSBzZWxmLl9fbmV4dF9mIHx8IFtdKVxubmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLmZvckVhY2gobmV4dFNlcnZlckRhdGFDYWxsYmFjaylcbm5leHRTZXJ2ZXJEYXRhTG9hZGluZ0dsb2JhbC5wdXNoID0gbmV4dFNlcnZlckRhdGFDYWxsYmFja1xuXG5jb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICBuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyKGNvbnRyb2xsZXIpXG4gIH0sXG59KVxuXG5jb25zdCBpbml0aWFsU2VydmVyUmVzcG9uc2UgPSBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW08SW5pdGlhbFJTQ1BheWxvYWQ+KFxuICByZWFkYWJsZSxcbiAgeyBjYWxsU2VydmVyLCBmaW5kU291cmNlTWFwVVJMIH1cbilcblxuZnVuY3Rpb24gU2VydmVyUm9vdCh7XG4gIHBlbmRpbmdBY3Rpb25RdWV1ZSxcbn06IHtcbiAgcGVuZGluZ0FjdGlvblF1ZXVlOiBQcm9taXNlPEFwcFJvdXRlckFjdGlvblF1ZXVlPlxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGluaXRpYWxSU0NQYXlsb2FkID0gdXNlKGluaXRpYWxTZXJ2ZXJSZXNwb25zZSlcbiAgY29uc3QgYWN0aW9uUXVldWUgPSB1c2U8QXBwUm91dGVyQWN0aW9uUXVldWU+KHBlbmRpbmdBY3Rpb25RdWV1ZSlcblxuICBjb25zdCByb3V0ZXIgPSAoXG4gICAgPEFwcFJvdXRlclxuICAgICAgYWN0aW9uUXVldWU9e2FjdGlvblF1ZXVlfVxuICAgICAgZ2xvYmFsRXJyb3JTdGF0ZT17aW5pdGlhbFJTQ1BheWxvYWQuR31cbiAgICAgIGFzc2V0UHJlZml4PXtpbml0aWFsUlNDUGF5bG9hZC5wfVxuICAgIC8+XG4gIClcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgaW5pdGlhbFJTQ1BheWxvYWQubSkge1xuICAgIC8vIFdlIHByb3ZpZGUgbWlzc2luZyBzbG90IGluZm9ybWF0aW9uIGluIGEgY29udGV4dCBwcm92aWRlciBvbmx5IGR1cmluZyBkZXZlbG9wbWVudFxuICAgIC8vIGFzIHdlIGxvZyBzb21lIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1pc3Npbmcgc2xvdHMgaW4gdGhlIGNvbnNvbGUuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNaXNzaW5nU2xvdENvbnRleHQgdmFsdWU9e2luaXRpYWxSU0NQYXlsb2FkLm19PlxuICAgICAgICB7cm91dGVyfVxuICAgICAgPC9NaXNzaW5nU2xvdENvbnRleHQ+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJvdXRlclxufVxuXG5jb25zdCBTdHJpY3RNb2RlSWZFbmFibGVkID0gcHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9NT0RFX0FQUFxuICA/IFJlYWN0LlN0cmljdE1vZGVcbiAgOiBSZWFjdC5GcmFnbWVudFxuXG5mdW5jdGlvbiBSb290KHsgY2hpbGRyZW4gfTogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48e30+KSB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURUQgPSB0cnVlXG4gICAgICB3aW5kb3cuX19ORVhUX0hZRFJBVEVEX0FUID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0I/LigpXG4gICAgfSwgW10pXG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuZnVuY3Rpb24gb25EZWZhdWx0VHJhbnNpdGlvbkluZGljYXRvcigpIHtcbiAgLy8gVE9ETzogQ29tcG9zZSBkZWZhdWx0IHdpdGggdXNlci1jb25maWd1cmVhYmxlIChlLmcuIG5wcm9ncmVzcylcbiAgLy8gVE9ETzogVXNlIFJlYWN0J3MgZGVmYXVsdCBvbmNlIHdlIGZpZ3VyZSBvdXQgaGFuZ2luZyBpbmRpY2F0b3JzOiBodHRwczovL2NvZGVzYW5kYm94LmlvL3Avc2FuZGJveC9jaGFybWluZy1tb29uLWhrdGtwNj9maWxlPSUyRnNyYyUyRmluZGV4LmpzJTNBMTA2JTJDMzBcbiAgcmV0dXJuICgpID0+IHt9XG59XG5cbmNvbnN0IHJlYWN0Um9vdE9wdGlvbnM6IFJlYWN0RE9NQ2xpZW50LlJvb3RPcHRpb25zID0ge1xuICBvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yOiBvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yLFxuICBvblJlY292ZXJhYmxlRXJyb3IsXG4gIG9uQ2F1Z2h0RXJyb3IsXG4gIG9uVW5jYXVnaHRFcnJvcixcbn1cblxuZXhwb3J0IHR5cGUgQ2xpZW50SW5zdHJ1bWVudGF0aW9uSG9va3MgPSB7XG4gIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0PzogKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG5hdmlnYXRpb25UeXBlOiAncHVzaCcgfCAncmVwbGFjZScgfCAndHJhdmVyc2UnXG4gICkgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZShcbiAgaW5zdHJ1bWVudGF0aW9uSG9va3M6IENsaWVudEluc3RydW1lbnRhdGlvbkhvb2tzIHwgbnVsbFxuKSB7XG4gIC8vIFJlYWN0IG92ZXJyaWRlcyBgLnRoZW5gIGFuZCBkb2Vzbid0IHJldHVybiBhIG5ldyBwcm9taXNlIGNoYWluLFxuICAvLyBzbyB3ZSB3cmFwIHRoZSBhY3Rpb24gcXVldWUgaW4gYSBwcm9taXNlIHRvIGVuc3VyZSB0aGF0IGl0cyB2YWx1ZVxuICAvLyBpcyBkZWZpbmVkIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzE2MzM2NWEwNzg3MjMzN2UwNDgyNmM0ZjUwMTU2NWQ0M2RiZDJmZDQvcGFja2FnZXMvcmVhY3QtY2xpZW50L3NyYy9SZWFjdEZsaWdodENsaWVudC5qcyNMMTg5LUwxOTBcbiAgY29uc3QgcGVuZGluZ0FjdGlvblF1ZXVlOiBQcm9taXNlPEFwcFJvdXRlckFjdGlvblF1ZXVlPiA9IG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGluaXRpYWxTZXJ2ZXJSZXNwb25zZS50aGVuKFxuICAgICAgICAoaW5pdGlhbFJTQ1BheWxvYWQpID0+IHtcbiAgICAgICAgICAvLyBzZXRBcHBCdWlsZElkIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlLCBkdXJpbmcgSlMgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgICAvLyBhbmQgYmVmb3JlIGFueSBjb21wb25lbnRzIGhhdmUgaHlkcmF0ZWQuXG4gICAgICAgICAgc2V0QXBwQnVpbGRJZChpbml0aWFsUlNDUGF5bG9hZC5iKVxuXG4gICAgICAgICAgY29uc3QgaW5pdGlhbFRpbWVzdGFtcCA9IERhdGUubm93KClcblxuICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUoXG4gICAgICAgICAgICAgIGNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSh7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGVkQXQ6IGluaXRpYWxUaW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgaW5pdGlhbEZsaWdodERhdGE6IGluaXRpYWxSU0NQYXlsb2FkLmYsXG4gICAgICAgICAgICAgICAgaW5pdGlhbENhbm9uaWNhbFVybFBhcnRzOiBpbml0aWFsUlNDUGF5bG9hZC5jLFxuICAgICAgICAgICAgICAgIGluaXRpYWxQYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB3aW5kb3cubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgY291bGRCZUludGVyY2VwdGVkOiBpbml0aWFsUlNDUGF5bG9hZC5pLFxuICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogaW5pdGlhbFJTQ1BheWxvYWQucyxcbiAgICAgICAgICAgICAgICBwcmVyZW5kZXJlZDogaW5pdGlhbFJTQ1BheWxvYWQuUyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbkhvb2tzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBFcnJvcikgPT4gcmVqZWN0KGVycilcbiAgICAgIClcbiAgICB9XG4gIClcblxuICBjb25zdCByZWFjdEVsID0gKFxuICAgIDxTdHJpY3RNb2RlSWZFbmFibGVkPlxuICAgICAgPEhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBhcHBEaXI6IHRydWUgfX0+XG4gICAgICAgIDxSb290PlxuICAgICAgICAgIDxTZXJ2ZXJSb290IHBlbmRpbmdBY3Rpb25RdWV1ZT17cGVuZGluZ0FjdGlvblF1ZXVlfSAvPlxuICAgICAgICA8L1Jvb3Q+XG4gICAgICA8L0hlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1N0cmljdE1vZGVJZkVuYWJsZWQ+XG4gIClcblxuICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlkID09PSAnX19uZXh0X2Vycm9yX18nKSB7XG4gICAgbGV0IGVsZW1lbnQgPSByZWFjdEVsXG4gICAgLy8gU2VydmVyIHJlbmRlcmluZyBmYWlsZWQsIGZhbGwgYmFjayB0byBjbGllbnQtc2lkZSByZW5kZXJpbmdcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc3QgeyBSb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudCB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2NsaWVudC1lbnRyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9jbGllbnQtZW50cnknKVxuXG4gICAgICAvLyBOb3RlIHRoaXMgd29uJ3QgY2F1c2UgaHlkcmF0aW9uIG1pc21hdGNoIGJlY2F1c2Ugd2UgYXJlIGRvaW5nIENTUiB3L28gaHlkcmF0aW9uXG4gICAgICBlbGVtZW50ID0gKFxuICAgICAgICA8Um9vdExldmVsRGV2T3ZlcmxheUVsZW1lbnQ+e2VsZW1lbnR9PC9Sb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBSZWFjdERPTUNsaWVudC5jcmVhdGVSb290KGFwcEVsZW1lbnQsIHJlYWN0Um9vdE9wdGlvbnMpLnJlbmRlcihlbGVtZW50KVxuICB9IGVsc2Uge1xuICAgIFJlYWN0LnN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBSZWFjdERPTUNsaWVudC5oeWRyYXRlUm9vdChhcHBFbGVtZW50LCByZWFjdEVsLCB7XG4gICAgICAgIC4uLnJlYWN0Um9vdE9wdGlvbnMsXG4gICAgICAgIGZvcm1TdGF0ZTogaW5pdGlhbEZvcm1TdGF0ZURhdGEsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvLyBUT0RPLUFQUDogUmVtb3ZlIHRoaXMgbG9naWMgd2hlbiBGbG9hdCBoYXMgR0MgYnVpbHQtaW4gaW4gZGV2ZWxvcG1lbnQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyBsaW5rR2MgfSA9XG4gICAgICByZXF1aXJlKCcuL2FwcC1saW5rLWdjJykgYXMgdHlwZW9mIGltcG9ydCgnLi9hcHAtbGluay1nYycpXG4gICAgbGlua0djKClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImh5ZHJhdGUiLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0iLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIiwiYXBwRWxlbWVudCIsImRvY3VtZW50IiwiZW5jb2RlciIsIlRleHRFbmNvZGVyIiwiaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIiLCJ1bmRlZmluZWQiLCJpbml0aWFsU2VydmVyRGF0YVdyaXRlciIsImluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkIiwiaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkIiwiaW5pdGlhbEZvcm1TdGF0ZURhdGEiLCJuZXh0U2VydmVyRGF0YUNhbGxiYWNrIiwic2VnIiwiRXJyb3IiLCJlbnF1ZXVlIiwiZW5jb2RlIiwicHVzaCIsImJpbmFyeVN0cmluZyIsImF0b2IiLCJkZWNvZGVkQ2h1bmsiLCJVaW50OEFycmF5IiwibGVuZ3RoIiwiaSIsImNoYXJDb2RlQXQiLCJpc1N0cmVhbUVycm9yT3JVbmZpbmlzaGVkIiwiY3RyIiwiZGVzaXJlZFNpemUiLCJuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyIiwiZm9yRWFjaCIsInZhbCIsImVycm9yIiwiY2xvc2UiLCJET01Db250ZW50TG9hZGVkIiwicmVhZHlTdGF0ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwibmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsIiwic2VsZiIsIl9fbmV4dF9mIiwicmVhZGFibGUiLCJSZWFkYWJsZVN0cmVhbSIsInN0YXJ0IiwiY29udHJvbGxlciIsImluaXRpYWxTZXJ2ZXJSZXNwb25zZSIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwiU2VydmVyUm9vdCIsInBlbmRpbmdBY3Rpb25RdWV1ZSIsImluaXRpYWxSU0NQYXlsb2FkIiwidXNlIiwiYWN0aW9uUXVldWUiLCJyb3V0ZXIiLCJBcHBSb3V0ZXIiLCJnbG9iYWxFcnJvclN0YXRlIiwiRyIsImFzc2V0UHJlZml4IiwicCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm0iLCJNaXNzaW5nU2xvdENvbnRleHQiLCJ2YWx1ZSIsIlN0cmljdE1vZGVJZkVuYWJsZWQiLCJfX05FWFRfU1RSSUNUX01PREVfQVBQIiwiUmVhY3QiLCJTdHJpY3RNb2RlIiwiRnJhZ21lbnQiLCJSb290IiwiY2hpbGRyZW4iLCJfX05FWFRfVEVTVF9NT0RFIiwidXNlRWZmZWN0Iiwid2luZG93IiwiX19ORVhUX0hZRFJBVEVEIiwiX19ORVhUX0hZRFJBVEVEX0FUIiwicGVyZm9ybWFuY2UiLCJub3ciLCJfX05FWFRfSFlEUkFURURfQ0IiLCJvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yIiwicmVhY3RSb290T3B0aW9ucyIsIm9uUmVjb3ZlcmFibGVFcnJvciIsIm9uQ2F1Z2h0RXJyb3IiLCJvblVuY2F1Z2h0RXJyb3IiLCJpbnN0cnVtZW50YXRpb25Ib29rcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInNldEFwcEJ1aWxkSWQiLCJiIiwiaW5pdGlhbFRpbWVzdGFtcCIsIkRhdGUiLCJjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUiLCJjcmVhdGVJbml0aWFsUm91dGVyU3RhdGUiLCJuYXZpZ2F0ZWRBdCIsImluaXRpYWxGbGlnaHREYXRhIiwiZiIsImluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyIsImMiLCJpbml0aWFsUGFyYWxsZWxSb3V0ZXMiLCJNYXAiLCJsb2NhdGlvbiIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInBvc3Rwb25lZCIsInMiLCJwcmVyZW5kZXJlZCIsIlMiLCJlcnIiLCJyZWFjdEVsIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJhcHBEaXIiLCJkb2N1bWVudEVsZW1lbnQiLCJpZCIsImVsZW1lbnQiLCJSb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudCIsInJlcXVpcmUiLCJSZWFjdERPTUNsaWVudCIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJzdGFydFRyYW5zaXRpb24iLCJoeWRyYXRlUm9vdCIsImZvcm1TdGF0ZSIsImxpbmtHYyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-index.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-link-gc.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/app-link-gc.js ***! \******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"linkGc\", ({\n enumerable: true,\n get: function() {\n return linkGc;\n }\n}));\nfunction linkGc() {\n // TODO-APP: Remove this logic when Float has GC built-in in development.\n if (true) {\n const callback = (mutationList)=>{\n for (const mutation of mutationList){\n if (mutation.type === 'childList') {\n for (const node of mutation.addedNodes){\n if ('tagName' in node && node.tagName === 'LINK') {\n var _link_dataset_precedence;\n const link = node;\n if ((_link_dataset_precedence = link.dataset.precedence) == null ? void 0 : _link_dataset_precedence.startsWith('next')) {\n const href = link.getAttribute('href');\n if (href) {\n const [resource, version] = href.split('?v=', 2);\n if (version) {\n const currentOrigin = window.location.origin;\n const allLinks = [\n ...document.querySelectorAll('link[href^=\"' + resource + '\"]'),\n // It's possible that the resource is a full URL or only pathname,\n // so we need to remove the alternative href as well.\n ...document.querySelectorAll('link[href^=\"' + (resource.startsWith(currentOrigin) ? resource.slice(currentOrigin.length) : currentOrigin + resource) + '\"]')\n ];\n for (const otherLink of allLinks){\n var _otherLink_dataset_precedence;\n if ((_otherLink_dataset_precedence = otherLink.dataset.precedence) == null ? void 0 : _otherLink_dataset_precedence.startsWith('next')) {\n const otherHref = otherLink.getAttribute('href');\n if (otherHref) {\n const [, otherVersion] = otherHref.split('?v=', 2);\n if (!otherVersion || +otherVersion < +version) {\n // Delay the removal of the stylesheet to avoid FOUC\n // caused by `@font-face` rules, as they seem to be\n // a couple of ticks delayed between the old and new\n // styles being swapped even if the font is cached.\n setTimeout(()=>{\n otherLink.remove();\n }, 5);\n const preloadLink = document.querySelector('link[rel=\"preload\"][as=\"style\"][href=\"' + otherHref + '\"]');\n if (preloadLink) {\n preloadLink.remove();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(callback);\n observer.observe(document.head, {\n childList: true\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=app-link-gc.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1saW5rLWdjLmpzIiwibWFwcGluZ3MiOiI7Ozs7MENBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQTtJQUNkLHlFQUF5RTtJQUN6RSxJQUFJQyxJQUFvQixFQUFtQjtRQUN6QyxNQUFNRyxXQUFXLENBQUNDO1lBQ2hCLEtBQUssTUFBTUMsWUFBWUQsYUFBYztnQkFDbkMsSUFBSUMsU0FBU0MsSUFBSSxLQUFLLGFBQWE7b0JBQ2pDLEtBQUssTUFBTUMsUUFBUUYsU0FBU0csVUFBVSxDQUFFO3dCQUN0QyxJQUNFLGFBQWFELFFBQ1pBLEtBQXlCRSxPQUFPLEtBQUssUUFDdEM7Z0NBRUlDOzRCQURKLE1BQU1BLE9BQU9IOzRCQUNiLEtBQUlHLDJCQUFBQSxLQUFLQyxPQUFPLENBQUNDLFVBQUFBLEtBQVUsZ0JBQXZCRix5QkFBeUJHLFVBQVUsQ0FBQyxTQUFTO2dDQUMvQyxNQUFNQyxPQUFPSixLQUFLSyxZQUFZLENBQUM7Z0NBQy9CLElBQUlELE1BQU07b0NBQ1IsTUFBTSxDQUFDRSxVQUFVQyxRQUFRLEdBQUdILEtBQUtJLEtBQUssQ0FBQyxPQUFPO29DQUM5QyxJQUFJRCxTQUFTO3dDQUNYLE1BQU1FLGdCQUFnQkMsT0FBT0MsUUFBUSxDQUFDQyxNQUFNO3dDQUM1QyxNQUFNQyxXQUFXOytDQUNaQyxTQUFTQyxnQkFBZ0IsQ0FDMUIsaUJBQWlCVCxXQUFXOzRDQUU5QixrRUFBa0U7NENBQ2xFLHFEQUFxRDsrQ0FDbERRLFNBQVNDLGdCQUFnQixDQUMxQixpQkFDR1QsQ0FBQUEsU0FBU0gsVUFBVSxDQUFDTSxpQkFDakJILFNBQVNVLEtBQUssQ0FBQ1AsY0FBY1EsTUFBTSxJQUNuQ1IsZ0JBQWdCSCxRQUFBQSxDQUFPLEdBQzNCO3lDQUVMO3dDQUVELEtBQUssTUFBTVksYUFBYUwsU0FBVTtnREFDNUJLOzRDQUFKLEtBQUlBLGdDQUFBQSxVQUFVakIsT0FBTyxDQUFDQyxVQUFBQSxLQUFVLGdCQUE1QmdCLDhCQUE4QmYsVUFBVSxDQUFDLFNBQVM7Z0RBQ3BELE1BQU1nQixZQUFZRCxVQUFVYixZQUFZLENBQUM7Z0RBQ3pDLElBQUljLFdBQVc7b0RBQ2IsTUFBTSxHQUFHQyxhQUFhLEdBQUdELFVBQVVYLEtBQUssQ0FBQyxPQUFPO29EQUNoRCxJQUFJLENBQUNZLGdCQUFnQixDQUFDQSxlQUFlLENBQUNiLFNBQVM7d0RBQzdDLG9EQUFvRDt3REFDcEQsbURBQW1EO3dEQUNuRCxvREFBb0Q7d0RBQ3BELG1EQUFtRDt3REFDbkRjLFdBQVc7NERBQ1RILFVBQVVJLE1BQU07d0RBQ2xCLEdBQUc7d0RBQ0gsTUFBTUMsY0FBY1QsU0FBU1UsYUFBYSxDQUN2QywyQ0FBd0NMLFlBQVU7d0RBRXJELElBQUlJLGFBQWE7NERBQ2ZBLFlBQVlELE1BQU07d0RBQ3BCO29EQUNGO2dEQUNGOzRDQUNGO3dDQUNGO29DQUNGO2dDQUNGOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLDhEQUE4RDtRQUM5RCxNQUFNRyxXQUFXLElBQUlDLGlCQUFpQmpDO1FBQ3RDZ0MsU0FBU0UsT0FBTyxDQUFDYixTQUFTYyxJQUFJLEVBQUU7WUFDOUJDLFdBQVc7UUFDYjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvc3JjL2NsaWVudC9hcHAtbGluay1nYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbGlua0djKCkge1xuICAvLyBUT0RPLUFQUDogUmVtb3ZlIHRoaXMgbG9naWMgd2hlbiBGbG9hdCBoYXMgR0MgYnVpbHQtaW4gaW4gZGV2ZWxvcG1lbnQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAobXV0YXRpb25MaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uTGlzdCkge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2Rlcykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAndGFnTmFtZScgaW4gbm9kZSAmJlxuICAgICAgICAgICAgICAobm9kZSBhcyBIVE1MTGlua0VsZW1lbnQpLnRhZ05hbWUgPT09ICdMSU5LJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBub2RlIGFzIEhUTUxMaW5rRWxlbWVudFxuICAgICAgICAgICAgICBpZiAobGluay5kYXRhc2V0LnByZWNlZGVuY2U/LnN0YXJ0c1dpdGgoJ25leHQnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpXG4gICAgICAgICAgICAgICAgaWYgKGhyZWYpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFtyZXNvdXJjZSwgdmVyc2lvbl0gPSBocmVmLnNwbGl0KCc/dj0nLCAyKVxuICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudE9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsTGlua3MgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rW2hyZWZePVwiJyArIHJlc291cmNlICsgJ1wiXSdcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmVzb3VyY2UgaXMgYSBmdWxsIFVSTCBvciBvbmx5IHBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBhbHRlcm5hdGl2ZSBocmVmIGFzIHdlbGwuXG4gICAgICAgICAgICAgICAgICAgICAgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rW2hyZWZePVwiJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNvdXJjZS5zdGFydHNXaXRoKGN1cnJlbnRPcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXNvdXJjZS5zbGljZShjdXJyZW50T3JpZ2luLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRPcmlnaW4gKyByZXNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnXCJdJ1xuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgSFRNTExpbmtFbGVtZW50W11cblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG90aGVyTGluayBvZiBhbGxMaW5rcykge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlckxpbmsuZGF0YXNldC5wcmVjZWRlbmNlPy5zdGFydHNXaXRoKCduZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVySHJlZiA9IG90aGVyTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVySHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbLCBvdGhlclZlcnNpb25dID0gb3RoZXJIcmVmLnNwbGl0KCc/dj0nLCAyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyVmVyc2lvbiB8fCArb3RoZXJWZXJzaW9uIDwgK3ZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxheSB0aGUgcmVtb3ZhbCBvZiB0aGUgc3R5bGVzaGVldCB0byBhdm9pZCBGT1VDXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2VkIGJ5IGBAZm9udC1mYWNlYCBydWxlcywgYXMgdGhleSBzZWVtIHRvIGJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBjb3VwbGUgb2YgdGlja3MgZGVsYXllZCBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlcyBiZWluZyBzd2FwcGVkIGV2ZW4gaWYgdGhlIGZvbnQgaXMgY2FjaGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJMaW5rLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVsb2FkTGluayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2FzPVwic3R5bGVcIl1baHJlZj1cIiR7b3RoZXJIcmVmfVwiXWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWxvYWRMaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkTGluay5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBsaW5rZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjaylcbiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmhlYWQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICB9KVxuICB9XG59XG4iXSwibmFtZXMiOlsibGlua0djIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY2FsbGJhY2siLCJtdXRhdGlvbkxpc3QiLCJtdXRhdGlvbiIsInR5cGUiLCJub2RlIiwiYWRkZWROb2RlcyIsInRhZ05hbWUiLCJsaW5rIiwiZGF0YXNldCIsInByZWNlZGVuY2UiLCJzdGFydHNXaXRoIiwiaHJlZiIsImdldEF0dHJpYnV0ZSIsInJlc291cmNlIiwidmVyc2lvbiIsInNwbGl0IiwiY3VycmVudE9yaWdpbiIsIndpbmRvdyIsImxvY2F0aW9uIiwib3JpZ2luIiwiYWxsTGlua3MiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzbGljZSIsImxlbmd0aCIsIm90aGVyTGluayIsIm90aGVySHJlZiIsIm90aGVyVmVyc2lvbiIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJwcmVsb2FkTGluayIsInF1ZXJ5U2VsZWN0b3IiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiaGVhZCIsImNoaWxkTGlzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-link-gc.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-next-dev.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/app-next-dev.js ***! \*******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// TODO-APP: hydration warning\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__webpack_require__(/*! ./app-webpack */ \"(app-pages-browser)/./node_modules/next/dist/client/app-webpack.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(app-pages-browser)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _appbootstrap = __webpack_require__(/*! ./app-bootstrap */ \"(app-pages-browser)/./node_modules/next/dist/client/app-bootstrap.js\");\nconst _stitchederror = __webpack_require__(/*! ../next-devtools/userspace/app/errors/stitched-error */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\nconst _onrecoverableerror = __webpack_require__(/*! ./react-client-callbacks/on-recoverable-error */ \"(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\");\n// eslint-disable-next-line @next/internal/typechecked-require\nconst instrumentationHooks = __webpack_require__(/*! ../lib/require-instrumentation-client */ \"(app-pages-browser)/./node_modules/next/dist/lib/require-instrumentation-client.js\");\n(0, _appbootstrap.appBootstrap)(()=>{\n const { hydrate } = __webpack_require__(/*! ./app-index */ \"(app-pages-browser)/./node_modules/next/dist/client/app-index.js\");\n try {\n hydrate(instrumentationHooks);\n } finally{\n (0, _nextdevtools.renderAppDevOverlay)(_stitchederror.getOwnerStack, _onrecoverableerror.isRecoverableError);\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=app-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1uZXh0LWRldi5qcyIsIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEI7Ozs7O29CQUV2QjswQ0FFNkI7MENBQ1A7MkNBQ0M7Z0RBQ0s7QUFFbkMsOERBQThEO0FBQzlELE1BQU1BLHVCQUF1QkMsbUJBQU9BLENBQUMsaUlBQXVDO0FBRTVFQyxDQUFBQSxHQUFBQSxjQUFBQSxZQUFBQSxFQUFhO0lBQ1gsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0YsbUJBQU9BLENBQUMscUZBQWE7SUFDekMsSUFBSTtRQUNGRSxRQUFRSDtJQUNWLFNBQVU7UUFDUkksQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CQyxlQUFBQSxhQUFhLEVBQUVDLG9CQUFBQSxrQkFBa0I7SUFDdkQ7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L2FwcC1uZXh0LWRldi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPLUFQUDogaHlkcmF0aW9uIHdhcm5pbmdcblxuaW1wb3J0ICcuL2FwcC13ZWJwYWNrJ1xuXG5pbXBvcnQgeyByZW5kZXJBcHBEZXZPdmVybGF5IH0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5pbXBvcnQgeyBhcHBCb290c3RyYXAgfSBmcm9tICcuL2FwcC1ib290c3RyYXAnXG5pbXBvcnQgeyBnZXRPd25lclN0YWNrIH0gZnJvbSAnLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy9zdGl0Y2hlZC1lcnJvcidcbmltcG9ydCB7IGlzUmVjb3ZlcmFibGVFcnJvciB9IGZyb20gJy4vcmVhY3QtY2xpZW50LWNhbGxiYWNrcy9vbi1yZWNvdmVyYWJsZS1lcnJvcidcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBuZXh0L2ludGVybmFsL3R5cGVjaGVja2VkLXJlcXVpcmVcbmNvbnN0IGluc3RydW1lbnRhdGlvbkhvb2tzID0gcmVxdWlyZSgnLi4vbGliL3JlcXVpcmUtaW5zdHJ1bWVudGF0aW9uLWNsaWVudCcpXG5cbmFwcEJvb3RzdHJhcCgoKSA9PiB7XG4gIGNvbnN0IHsgaHlkcmF0ZSB9ID0gcmVxdWlyZSgnLi9hcHAtaW5kZXgnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL2FwcC1pbmRleCcpXG4gIHRyeSB7XG4gICAgaHlkcmF0ZShpbnN0cnVtZW50YXRpb25Ib29rcylcbiAgfSBmaW5hbGx5IHtcbiAgICByZW5kZXJBcHBEZXZPdmVybGF5KGdldE93bmVyU3RhY2ssIGlzUmVjb3ZlcmFibGVFcnJvcilcbiAgfVxufSlcbiJdLCJuYW1lcyI6WyJpbnN0cnVtZW50YXRpb25Ib29rcyIsInJlcXVpcmUiLCJhcHBCb290c3RyYXAiLCJoeWRyYXRlIiwicmVuZGVyQXBwRGV2T3ZlcmxheSIsImdldE93bmVyU3RhY2siLCJpc1JlY292ZXJhYmxlRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-next-dev.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/app-webpack.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/app-webpack.js ***! \******************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// Override chunk URL mapping in the webpack runtime\n// https://github.com/webpack/webpack/blob/2738eebc7880835d88c727d364ad37f3ec557593/lib/RuntimeGlobals.js#L204\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _deploymentid = __webpack_require__(/*! ../build/deployment-id */ \"(app-pages-browser)/./node_modules/next/dist/build/deployment-id.js\");\nconst _encodeuripath = __webpack_require__(/*! ../shared/lib/encode-uri-path */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/encode-uri-path.js\");\n// If we have a deployment ID, we need to append it to the webpack chunk names\n// I am keeping the process check explicit so this can be statically optimized\nif (false) {} else {\n // eslint-disable-next-line no-undef\n const getChunkScriptFilename = __webpack_require__.u;\n // eslint-disable-next-line no-undef\n __webpack_require__.u = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return(// filename path.\n (0, _encodeuripath.encodeURIPath)(getChunkScriptFilename(...args)));\n };\n// We don't need to override __webpack_require__.k because we don't modify\n// the css chunk name when not using deployment id suffixes\n// WE don't need to override __webpack_require__.miniCssF because we don't modify\n// the mini css chunk name when not using deployment id suffixes\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=app-webpack.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC13ZWJwYWNrLmpzIiwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCw4R0FBOEc7Ozs7OzBDQUU1RDsyQ0FDcEI7QUFJOUIsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxJQUFJQSxLQUE4QixFQUFFLEVBcUJuQyxNQUFNO0lBQ0wsb0NBQW9DO0lBQ3BDLE1BQU1LLHlCQUF5QkMsbUJBQW1CQSxDQUFDQyxDQUFDO0lBQ3BELG9DQUFvQztJQUNwQ0QsbUJBQW1CQSxDQUFDQyxDQUFDLEdBQUc7eUNBQUlDLE9BQUFBLElBQUFBLE1BQUFBLE9BQUFBLE9BQUFBLEdBQUFBLE9BQUFBLE1BQUFBLE9BQUFBO1lBQUFBLElBQUFBLENBQUFBLEtBQUFBLEdBQUFBLFNBQUFBLENBQUFBLEtBQUFBOztlQUUxQixpQkFBaUI7UUFDakJDLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNKLDBCQUEwQkc7O0FBRTFDLDBFQUEwRTtBQUMxRSwyREFBMkQ7QUFFM0QsaUZBQWlGO0FBQ2pGLGdFQUFnRTtBQUNsRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L2FwcC13ZWJwYWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE92ZXJyaWRlIGNodW5rIFVSTCBtYXBwaW5nIGluIHRoZSB3ZWJwYWNrIHJ1bnRpbWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svYmxvYi8yNzM4ZWViYzc4ODA4MzVkODhjNzI3ZDM2NGFkMzdmM2VjNTU3NTkzL2xpYi9SdW50aW1lR2xvYmFscy5qcyNMMjA0XG5cbmltcG9ydCB7IGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZyB9IGZyb20gJy4uL2J1aWxkL2RlcGxveW1lbnQtaWQnXG5pbXBvcnQgeyBlbmNvZGVVUklQYXRoIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9lbmNvZGUtdXJpLXBhdGgnXG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX3JlcXVpcmVfXzogYW55XG5cbi8vIElmIHdlIGhhdmUgYSBkZXBsb3ltZW50IElELCB3ZSBuZWVkIHRvIGFwcGVuZCBpdCB0byB0aGUgd2VicGFjayBjaHVuayBuYW1lc1xuLy8gSSBhbSBrZWVwaW5nIHRoZSBwcm9jZXNzIGNoZWNrIGV4cGxpY2l0IHNvIHRoaXMgY2FuIGJlIHN0YXRpY2FsbHkgb3B0aW1pemVkXG5pZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gIGNvbnN0IHN1ZmZpeCA9IGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZygpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjb25zdCBnZXRDaHVua1NjcmlwdEZpbGVuYW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXy51XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoLi4uYXJnczogYW55W10pID0+XG4gICAgLy8gV2UgZW5jb2RlIHRoZSBjaHVuayBmaWxlbmFtZSBiZWNhdXNlIG91ciBzdGF0aWMgc2VydmVyIG1hdGNoZXMgYWdhaW5zdCBhbmQgZW5jb2RlZFxuICAgIC8vIGZpbGVuYW1lIHBhdGguXG4gICAgZW5jb2RlVVJJUGF0aChnZXRDaHVua1NjcmlwdEZpbGVuYW1lKC4uLmFyZ3MpKSArIHN1ZmZpeFxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjb25zdCBnZXRDaHVua0Nzc0ZpbGVuYW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXy5rXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmsgPSAoLi4uYXJnczogYW55W10pID0+XG4gICAgZ2V0Q2h1bmtDc3NGaWxlbmFtZSguLi5hcmdzKSArIHN1ZmZpeFxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjb25zdCBnZXRNaW5pQ3NzRmlsZW5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm1pbmlDc3NGXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBfX3dlYnBhY2tfcmVxdWlyZV9fLm1pbmlDc3NGID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIGdldE1pbmlDc3NGaWxlbmFtZSguLi5hcmdzKSArIHN1ZmZpeFxufSBlbHNlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNvbnN0IGdldENodW5rU2NyaXB0RmlsZW5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIF9fd2VicGFja19yZXF1aXJlX18udSA9ICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICAvLyBXZSBlbmNvZGUgdGhlIGNodW5rIGZpbGVuYW1lIGJlY2F1c2Ugb3VyIHN0YXRpYyBzZXJ2ZXIgbWF0Y2hlcyBhZ2FpbnN0IGFuZCBlbmNvZGVkXG4gICAgLy8gZmlsZW5hbWUgcGF0aC5cbiAgICBlbmNvZGVVUklQYXRoKGdldENodW5rU2NyaXB0RmlsZW5hbWUoLi4uYXJncykpXG5cbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSBfX3dlYnBhY2tfcmVxdWlyZV9fLmsgYmVjYXVzZSB3ZSBkb24ndCBtb2RpZnlcbiAgLy8gdGhlIGNzcyBjaHVuayBuYW1lIHdoZW4gbm90IHVzaW5nIGRlcGxveW1lbnQgaWQgc3VmZml4ZXNcblxuICAvLyBXRSBkb24ndCBuZWVkIHRvIG92ZXJyaWRlIF9fd2VicGFja19yZXF1aXJlX18ubWluaUNzc0YgYmVjYXVzZSB3ZSBkb24ndCBtb2RpZnlcbiAgLy8gdGhlIG1pbmkgY3NzIGNodW5rIG5hbWUgd2hlbiBub3QgdXNpbmcgZGVwbG95bWVudCBpZCBzdWZmaXhlc1xufVxuXG5leHBvcnQge31cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiZW52IiwiTkVYVF9ERVBMT1lNRU5UX0lEIiwic3VmZml4IiwiZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nIiwiZ2V0Q2h1bmtTY3JpcHRGaWxlbmFtZSIsIl9fd2VicGFja19yZXF1aXJlX18iLCJ1IiwiYXJncyIsImVuY29kZVVSSVBhdGgiLCJnZXRDaHVua0Nzc0ZpbGVuYW1lIiwiayIsImdldE1pbmlDc3NGaWxlbmFtZSIsIm1pbmlDc3NGIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/app-webpack.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/assign-location.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/client/assign-location.js ***! \**********************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"assignLocation\", ({\n enumerable: true,\n get: function() {\n return assignLocation;\n }\n}));\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\");\nfunction assignLocation(location, url) {\n if (location.startsWith('.')) {\n const urlBase = url.origin + url.pathname;\n return new URL(// new URL('./relative', 'https://example.com/subdir').href -> 'https://example.com/relative'\n // new URL('./relative', 'https://example.com/subdir/').href -> 'https://example.com/subdir/relative'\n (urlBase.endsWith('/') ? urlBase : urlBase + '/') + location);\n }\n return new URL((0, _addbasepath.addBasePath)(location), url.href);\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=assign-location.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Fzc2lnbi1sb2NhdGlvbi5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQVNnQkE7OztlQUFBQTs7O3lDQVRZO0FBU3JCLFNBQVNBLGVBQWVDLFFBQWdCLEVBQUVDLEdBQVE7SUFDdkQsSUFBSUQsU0FBU0UsVUFBVSxDQUFDLE1BQU07UUFDNUIsTUFBTUMsVUFBVUYsSUFBSUcsTUFBTSxHQUFHSCxJQUFJSSxRQUFRO1FBQ3pDLE9BQU8sSUFBSUMsSUFDVCw2RkFDNkY7UUFDN0YscUdBQXFHO1NBQ3BHSCxRQUFRSSxRQUFRLENBQUMsT0FBT0osVUFBVUEsVUFBVSxJQUFFLEdBQUtIO0lBRXhEO0lBRUEsT0FBTyxJQUFJTSxJQUFJRSxDQUFBQSxHQUFBQSxhQUFBQSxXQUFBQSxFQUFZUixXQUFXQyxJQUFJUSxJQUFJO0FBQ2hEIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvYXNzaWduLWxvY2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi9hZGQtYmFzZS1wYXRoJ1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNvcnJlY3RseSBhc3NpZ24gbG9jYXRpb24gdG8gVVJMXG4gKlxuICogVGhlIG1ldGhvZCB3aWxsIGFkZCBiYXNlUGF0aCwgYW5kIHdpbGwgYWxzbyBjb3JyZWN0bHkgYWRkIGxvY2F0aW9uIChpbmNsdWRpbmcgaWYgaXQgaXMgYSByZWxhdGl2ZSBwYXRoKVxuICogQHBhcmFtIGxvY2F0aW9uIExvY2F0aW9uIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB1cmxcbiAqIEBwYXJhbSB1cmwgQmFzZSBVUkwgdG8gd2hpY2ggdGhlIGxvY2F0aW9uIHNob3VsZCBiZSBhc3NpZ25lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduTG9jYXRpb24obG9jYXRpb246IHN0cmluZywgdXJsOiBVUkwpOiBVUkwge1xuICBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgY29uc3QgdXJsQmFzZSA9IHVybC5vcmlnaW4gKyB1cmwucGF0aG5hbWVcbiAgICByZXR1cm4gbmV3IFVSTChcbiAgICAgIC8vIEluIG9yZGVyIGZvciBhIHJlbGF0aXZlIHBhdGggdG8gYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgdXJsIGNvcnJlY3RseSwgdGhlIGN1cnJlbnQgdXJsIG11c3QgZW5kIHdpdGggYSBzbGFzaFxuICAgICAgLy8gbmV3IFVSTCgnLi9yZWxhdGl2ZScsICdodHRwczovL2V4YW1wbGUuY29tL3N1YmRpcicpLmhyZWYgLT4gJ2h0dHBzOi8vZXhhbXBsZS5jb20vcmVsYXRpdmUnXG4gICAgICAvLyBuZXcgVVJMKCcuL3JlbGF0aXZlJywgJ2h0dHBzOi8vZXhhbXBsZS5jb20vc3ViZGlyLycpLmhyZWYgLT4gJ2h0dHBzOi8vZXhhbXBsZS5jb20vc3ViZGlyL3JlbGF0aXZlJ1xuICAgICAgKHVybEJhc2UuZW5kc1dpdGgoJy8nKSA/IHVybEJhc2UgOiB1cmxCYXNlICsgJy8nKSArIGxvY2F0aW9uXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBVUkwoYWRkQmFzZVBhdGgobG9jYXRpb24pLCB1cmwuaHJlZilcbn1cbiJdLCJuYW1lcyI6WyJhc3NpZ25Mb2NhdGlvbiIsImxvY2F0aW9uIiwidXJsIiwic3RhcnRzV2l0aCIsInVybEJhc2UiLCJvcmlnaW4iLCJwYXRobmFtZSIsIlVSTCIsImVuZHNXaXRoIiwiYWRkQmFzZVBhdGgiLCJocmVmIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/assign-location.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/app-router-announcer.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-announcer.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppRouterAnnouncer\", ({\n enumerable: true,\n get: function() {\n return AppRouterAnnouncer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _reactdom = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\nconst ANNOUNCER_TYPE = 'next-route-announcer';\nconst ANNOUNCER_ID = '__next-route-announcer__';\nfunction getAnnouncerNode() {\n var _existingAnnouncer_shadowRoot;\n const existingAnnouncer = document.getElementsByName(ANNOUNCER_TYPE)[0];\n if (existingAnnouncer == null ? void 0 : (_existingAnnouncer_shadowRoot = existingAnnouncer.shadowRoot) == null ? void 0 : _existingAnnouncer_shadowRoot.childNodes[0]) {\n return existingAnnouncer.shadowRoot.childNodes[0];\n } else {\n const container = document.createElement(ANNOUNCER_TYPE);\n container.style.cssText = 'position:absolute';\n const announcer = document.createElement('div');\n announcer.ariaLive = 'assertive';\n announcer.id = ANNOUNCER_ID;\n announcer.role = 'alert';\n announcer.style.cssText = 'position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal';\n // Use shadow DOM here to avoid any potential CSS bleed\n const shadow = container.attachShadow({\n mode: 'open'\n });\n shadow.appendChild(announcer);\n document.body.appendChild(container);\n return announcer;\n }\n}\nfunction AppRouterAnnouncer(param) {\n let { tree } = param;\n const [portalNode, setPortalNode] = (0, _react.useState)(null);\n (0, _react.useEffect)(()=>{\n const announcer = getAnnouncerNode();\n setPortalNode(announcer);\n return ()=>{\n const container = document.getElementsByTagName(ANNOUNCER_TYPE)[0];\n if (container == null ? void 0 : container.isConnected) {\n document.body.removeChild(container);\n }\n };\n }, []);\n const [routeAnnouncement, setRouteAnnouncement] = (0, _react.useState)('');\n const previousTitle = (0, _react.useRef)(undefined);\n (0, _react.useEffect)(()=>{\n let currentTitle = '';\n if (document.title) {\n currentTitle = document.title;\n } else {\n const pageHeader = document.querySelector('h1');\n if (pageHeader) {\n currentTitle = pageHeader.innerText || pageHeader.textContent || '';\n }\n }\n // Only announce the title change, but not for the first load because screen\n // readers do that automatically.\n if (previousTitle.current !== undefined && previousTitle.current !== currentTitle) {\n setRouteAnnouncement(currentTitle);\n }\n previousTitle.current = currentTitle;\n }, [\n tree\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactdom.createPortal)(routeAnnouncement, portalNode) : null;\n}\n_c = AppRouterAnnouncer;\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=app-router-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"AppRouterAnnouncer\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1hbm5vdW5jZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztzREE2QmdCQTs7O2VBQUFBOzs7bUNBN0I0QjtzQ0FDZjtBQUc3QixNQUFNQyxpQkFBaUI7QUFDdkIsTUFBTUMsZUFBZTtBQUVyQixTQUFTQztRQUVIQztJQURKLE1BQU1BLG9CQUFvQkMsU0FBU0MsaUJBQWlCLENBQUNMLGVBQWUsQ0FBQyxFQUFFO0lBQ3ZFLElBQUlHLHFCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSxnQ0FBQUEsa0JBQW1CRyxVQUFBQSxLQUFVLGdCQUE3QkgsOEJBQStCSSxVQUFVLENBQUMsRUFBRSxFQUFFO1FBQ2hELE9BQU9KLGtCQUFrQkcsVUFBVSxDQUFDQyxVQUFVLENBQUMsRUFBRTtJQUNuRCxPQUFPO1FBQ0wsTUFBTUMsWUFBWUosU0FBU0ssYUFBYSxDQUFDVDtRQUN6Q1EsVUFBVUUsS0FBSyxDQUFDQyxPQUFPLEdBQUc7UUFDMUIsTUFBTUMsWUFBWVIsU0FBU0ssYUFBYSxDQUFDO1FBQ3pDRyxVQUFVQyxRQUFRLEdBQUc7UUFDckJELFVBQVVFLEVBQUUsR0FBR2I7UUFDZlcsVUFBVUcsSUFBSSxHQUFHO1FBQ2pCSCxVQUFVRixLQUFLLENBQUNDLE9BQU8sR0FDckI7UUFFRix1REFBdUQ7UUFDdkQsTUFBTUssU0FBU1IsVUFBVVMsWUFBWSxDQUFDO1lBQUVDLE1BQU07UUFBTztRQUNyREYsT0FBT0csV0FBVyxDQUFDUDtRQUNuQlIsU0FBU2dCLElBQUksQ0FBQ0QsV0FBVyxDQUFDWDtRQUMxQixPQUFPSTtJQUNUO0FBQ0Y7QUFFTyw0QkFBNEIsS0FBcUM7SUFBckMsTUFBRVMsSUFBSSxFQUErQixHQUFyQztJQUNqQyxNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsUUFBQUEsRUFBNkI7SUFFakVDLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixNQUFNYixZQUFZVjtRQUNsQnFCLGNBQWNYO1FBQ2QsT0FBTztZQUNMLE1BQU1KLFlBQVlKLFNBQVNzQixvQkFBb0IsQ0FBQzFCLGVBQWUsQ0FBQyxFQUFFO1lBQ2xFLElBQUlRLGFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFVBQVdtQixXQUFXLEVBQUU7Z0JBQzFCdkIsU0FBU2dCLElBQUksQ0FBQ1EsV0FBVyxDQUFDcEI7WUFDNUI7UUFDRjtJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU0sQ0FBQ3FCLG1CQUFtQkMscUJBQXFCLEdBQUdOLENBQUFBLEdBQUFBLE9BQUFBLFFBQUFBLEVBQVM7SUFDM0QsTUFBTU8sZ0JBQWdCQyxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUEyQkM7SUFFakRSLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJUyxlQUFlO1FBQ25CLElBQUk5QixTQUFTK0IsS0FBSyxFQUFFO1lBQ2xCRCxlQUFlOUIsU0FBUytCLEtBQUs7UUFDL0IsT0FBTztZQUNMLE1BQU1DLGFBQWFoQyxTQUFTaUMsYUFBYSxDQUFDO1lBQzFDLElBQUlELFlBQVk7Z0JBQ2RGLGVBQWVFLFdBQVdFLFNBQVMsSUFBSUYsV0FBV0csV0FBVyxJQUFJO1lBQ25FO1FBQ0Y7UUFFQSw0RUFBNEU7UUFDNUUsaUNBQWlDO1FBQ2pDLElBQ0VSLGNBQWNTLE9BQU8sS0FBS1AsYUFDMUJGLGNBQWNTLE9BQU8sS0FBS04sY0FDMUI7WUFDQUoscUJBQXFCSTtRQUN2QjtRQUNBSCxjQUFjUyxPQUFPLEdBQUdOO0lBQzFCLEdBQUc7UUFBQ2I7S0FBSztJQUVULE9BQU9DLGFBQUFBLFdBQUFBLEdBQWFtQixDQUFBQSxHQUFBQSxVQUFBQSxZQUFBQSxFQUFhWixtQkFBbUJQLGNBQWM7QUFDcEU7S0F4Q2dCdkIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWFubm91bmNlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5cbmNvbnN0IEFOTk9VTkNFUl9UWVBFID0gJ25leHQtcm91dGUtYW5ub3VuY2VyJ1xuY29uc3QgQU5OT1VOQ0VSX0lEID0gJ19fbmV4dC1yb3V0ZS1hbm5vdW5jZXJfXydcblxuZnVuY3Rpb24gZ2V0QW5ub3VuY2VyTm9kZSgpIHtcbiAgY29uc3QgZXhpc3RpbmdBbm5vdW5jZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShBTk5PVU5DRVJfVFlQRSlbMF1cbiAgaWYgKGV4aXN0aW5nQW5ub3VuY2VyPy5zaGFkb3dSb290Py5jaGlsZE5vZGVzWzBdKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nQW5ub3VuY2VyLnNoYWRvd1Jvb3QuY2hpbGROb2Rlc1swXSBhcyBIVE1MRWxlbWVudFxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoQU5OT1VOQ0VSX1RZUEUpXG4gICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGUnXG4gICAgY29uc3QgYW5ub3VuY2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBhbm5vdW5jZXIuYXJpYUxpdmUgPSAnYXNzZXJ0aXZlJ1xuICAgIGFubm91bmNlci5pZCA9IEFOTk9VTkNFUl9JRFxuICAgIGFubm91bmNlci5yb2xlID0gJ2FsZXJ0J1xuICAgIGFubm91bmNlci5zdHlsZS5jc3NUZXh0ID1cbiAgICAgICdwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDt3aWR0aDoxcHg7Y2xpcDpyZWN0KDAgMCAwIDApO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7d29yZC13cmFwOm5vcm1hbCdcblxuICAgIC8vIFVzZSBzaGFkb3cgRE9NIGhlcmUgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBDU1MgYmxlZWRcbiAgICBjb25zdCBzaGFkb3cgPSBjb250YWluZXIuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pXG4gICAgc2hhZG93LmFwcGVuZENoaWxkKGFubm91bmNlcilcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcilcbiAgICByZXR1cm4gYW5ub3VuY2VyXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFwcFJvdXRlckFubm91bmNlcih7IHRyZWUgfTogeyB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB9KSB7XG4gIGNvbnN0IFtwb3J0YWxOb2RlLCBzZXRQb3J0YWxOb2RlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFubm91bmNlciA9IGdldEFubm91bmNlck5vZGUoKVxuICAgIHNldFBvcnRhbE5vZGUoYW5ub3VuY2VyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShBTk5PVU5DRVJfVFlQRSlbMF1cbiAgICAgIGlmIChjb250YWluZXI/LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgW3JvdXRlQW5ub3VuY2VtZW50LCBzZXRSb3V0ZUFubm91bmNlbWVudF0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgcHJldmlvdXNUaXRsZSA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjdXJyZW50VGl0bGUgPSAnJ1xuICAgIGlmIChkb2N1bWVudC50aXRsZSkge1xuICAgICAgY3VycmVudFRpdGxlID0gZG9jdW1lbnQudGl0bGVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFnZUhlYWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2gxJylcbiAgICAgIGlmIChwYWdlSGVhZGVyKSB7XG4gICAgICAgIGN1cnJlbnRUaXRsZSA9IHBhZ2VIZWFkZXIuaW5uZXJUZXh0IHx8IHBhZ2VIZWFkZXIudGV4dENvbnRlbnQgfHwgJydcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPbmx5IGFubm91bmNlIHRoZSB0aXRsZSBjaGFuZ2UsIGJ1dCBub3QgZm9yIHRoZSBmaXJzdCBsb2FkIGJlY2F1c2Ugc2NyZWVuXG4gICAgLy8gcmVhZGVycyBkbyB0aGF0IGF1dG9tYXRpY2FsbHkuXG4gICAgaWYgKFxuICAgICAgcHJldmlvdXNUaXRsZS5jdXJyZW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByZXZpb3VzVGl0bGUuY3VycmVudCAhPT0gY3VycmVudFRpdGxlXG4gICAgKSB7XG4gICAgICBzZXRSb3V0ZUFubm91bmNlbWVudChjdXJyZW50VGl0bGUpXG4gICAgfVxuICAgIHByZXZpb3VzVGl0bGUuY3VycmVudCA9IGN1cnJlbnRUaXRsZVxuICB9LCBbdHJlZV0pXG5cbiAgcmV0dXJuIHBvcnRhbE5vZGUgPyBjcmVhdGVQb3J0YWwocm91dGVBbm5vdW5jZW1lbnQsIHBvcnRhbE5vZGUpIDogbnVsbFxufVxuIl0sIm5hbWVzIjpbIkFwcFJvdXRlckFubm91bmNlciIsIkFOTk9VTkNFUl9UWVBFIiwiQU5OT1VOQ0VSX0lEIiwiZ2V0QW5ub3VuY2VyTm9kZSIsImV4aXN0aW5nQW5ub3VuY2VyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5TmFtZSIsInNoYWRvd1Jvb3QiLCJjaGlsZE5vZGVzIiwiY29udGFpbmVyIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY3NzVGV4dCIsImFubm91bmNlciIsImFyaWFMaXZlIiwiaWQiLCJyb2xlIiwic2hhZG93IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsImFwcGVuZENoaWxkIiwiYm9keSIsInRyZWUiLCJwb3J0YWxOb2RlIiwic2V0UG9ydGFsTm9kZSIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpc0Nvbm5lY3RlZCIsInJlbW92ZUNoaWxkIiwicm91dGVBbm5vdW5jZW1lbnQiLCJzZXRSb3V0ZUFubm91bmNlbWVudCIsInByZXZpb3VzVGl0bGUiLCJ1c2VSZWYiLCJ1bmRlZmluZWQiLCJjdXJyZW50VGl0bGUiLCJ0aXRsZSIsInBhZ2VIZWFkZXIiLCJxdWVyeVNlbGVjdG9yIiwiaW5uZXJUZXh0IiwidGV4dENvbnRlbnQiLCJjdXJyZW50IiwiY3JlYXRlUG9ydGFsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/app-router-announcer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-headers.js ***! \************************************************************************/ /***/ ((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 ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\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=app-router-headers.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUNhQSxhQUFhO2VBQWJBOztJQWlCQUMsY0FBYztlQUFkQTs7SUFlQUMsNEJBQTRCO2VBQTVCQTs7SUFKQUMsd0JBQXdCO2VBQXhCQTs7SUFmQUMsNEJBQTRCO2VBQTVCQTs7SUFEQUMsdUJBQXVCO2VBQXZCQTs7SUFtQkFDLHdCQUF3QjtlQUF4QkE7O0lBRkFDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDJCQUEyQjtlQUEzQkE7O0lBekJBQywyQkFBMkI7ZUFBM0JBOztJQUtBQyxtQ0FBbUM7ZUFBbkNBOztJQWlCQUMsNkJBQTZCO2VBQTdCQTs7SUF2QkFDLDZCQUE2QjtlQUE3QkE7O0lBcUJBQyxvQkFBb0I7ZUFBcEJBOztJQVhBQyxRQUFRO2VBQVJBOztJQUNBQyx1QkFBdUI7ZUFBdkJBOztJQWhCQUMsVUFBVTtlQUFWQTs7O0FBQU4sTUFBTUEsYUFBYTtBQUNuQixNQUFNaEIsZ0JBQWdCO0FBSXRCLE1BQU1ZLGdDQUFnQztBQUN0QyxNQUFNSCw4QkFBOEI7QUFLcEMsTUFBTUMsc0NBQ1g7QUFDSyxNQUFNTCwwQkFBMEI7QUFDaEMsTUFBTUQsK0JBQStCO0FBQ3JDLE1BQU1VLFdBQVc7QUFDakIsTUFBTUMsMEJBQTBCO0FBRWhDLE1BQU1kLGlCQUFpQjtJQUM1QmU7SUFDQUo7SUFDQUg7SUFDQUo7SUFDQUs7Q0FDRDtBQUVNLE1BQU1HLHVCQUF1QjtBQUU3QixNQUFNRixnQ0FBZ0M7QUFDdEMsTUFBTVIsMkJBQTJCO0FBQ2pDLE1BQU1JLDZCQUE2QjtBQUNuQyxNQUFNQyw4QkFBOEI7QUFDcEMsTUFBTUYsMkJBQTJCO0FBQ2pDLE1BQU1KLCtCQUErQiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUlNDX0hFQURFUiA9ICdyc2MnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgQUNUSU9OX0hFQURFUiA9ICduZXh0LWFjdGlvbicgYXMgY29uc3Rcbi8vIFRPRE86IEluc3RlYWQgb2Ygc2VuZGluZyB0aGUgZnVsbCByb3V0ZXIgc3RhdGUsIHdlIG9ubHkgbmVlZCB0byBzZW5kIHRoZVxuLy8gc2VnbWVudCBwYXRoLiBTYXZlcyBieXRlcy4gVGhlbiB3ZSBjb3VsZCBhbHNvIHVzZSB0aGlzIGZpZWxkIGZvciBzZWdtZW50XG4vLyBwcmVmZXRjaGVzLCB3aGljaCBhbHNvIG5lZWQgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgc2VnbWVudC5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiA9ICduZXh0LXJvdXRlci1zdGF0ZS10cmVlJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiA9ICduZXh0LXJvdXRlci1wcmVmZXRjaCcgYXMgY29uc3Rcbi8vIFRoaXMgY29udGFpbnMgdGhlIHBhdGggdG8gdGhlIHNlZ21lbnQgYmVpbmcgcHJlZmV0Y2hlZC5cbi8vIFRPRE86IElmIHdlIGNoYW5nZSBuZXh0LXJvdXRlci1zdGF0ZS10cmVlIHRvIGJlIGEgc2VnbWVudCBwYXRoLCB3ZSBjYW4gdXNlXG4vLyB0aGF0IGluc3RlYWQuIFRoZW4gbmV4dC1yb3V0ZXItcHJlZmV0Y2ggYW5kIG5leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2ggY2FuXG4vLyBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBlbnVtLlxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSID1cbiAgJ25leHQtcm91dGVyLXNlZ21lbnQtcHJlZmV0Y2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIgPSAnbmV4dC1obXItcmVmcmVzaCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFID0gJ19fbmV4dF9obXJfcmVmcmVzaF9oYXNoX18nIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9VUkwgPSAnbmV4dC11cmwnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgPSAndGV4dC94LWNvbXBvbmVudCcgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IEZMSUdIVF9IRUFERVJTID0gW1xuICBSU0NfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX0hNUl9SRUZSRVNIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBORVhUX1JTQ19VTklPTl9RVUVSWSA9ICdfcnNjJyBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIgPSAneC1uZXh0anMtc3RhbGUtdGltZScgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIgPSAneC1uZXh0anMtcG9zdHBvbmVkJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSID0gJ3gtbmV4dGpzLXJld3JpdHRlbi1wYXRoJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcXVlcnknIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSID0gJ3gtbmV4dGpzLXByZXJlbmRlcicgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSID0gJ3gtbmV4dGpzLWFjdGlvbi1ub3QtZm91bmQnIGFzIGNvbnN0XG4iXSwibmFtZXMiOlsiQUNUSU9OX0hFQURFUiIsIkZMSUdIVF9IRUFERVJTIiwiTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsIk5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUiLCJORVhUX0hNUl9SRUZSRVNIX0hFQURFUiIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSIiwiTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJORVhUX1VSTCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiUlNDX0hFQURFUiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-instance.js ***! \*************************************************************************/ /***/ ((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 createMutableActionQueue: function() {\n return createMutableActionQueue;\n },\n dispatchNavigateAction: function() {\n return dispatchNavigateAction;\n },\n dispatchTraverseAction: function() {\n return dispatchTraverseAction;\n },\n getCurrentAppRouterState: function() {\n return getCurrentAppRouterState;\n },\n publicAppRouterInstance: function() {\n return publicAppRouterInstance;\n }\n});\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _routerreducer = __webpack_require__(/*! ./router-reducer/router-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/is-thenable.js\");\nconst _segmentcache = __webpack_require__(/*! ./segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(app-pages-browser)/./node_modules/next/dist/client/components/use-action-queue.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\");\nconst _approuter = __webpack_require__(/*! ./app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./router-reducer/reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _links = __webpack_require__(/*! ./links */ \"(app-pages-browser)/./node_modules/next/dist/client/components/links.js\");\nfunction runRemainingActions(actionQueue, setState) {\n if (actionQueue.pending !== null) {\n actionQueue.pending = actionQueue.pending.next;\n if (actionQueue.pending !== null) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n runAction({\n actionQueue,\n action: actionQueue.pending,\n setState\n });\n } else {\n // No more actions are pending, check if a refresh is needed\n if (actionQueue.needsRefresh) {\n actionQueue.needsRefresh = false;\n actionQueue.dispatch({\n type: _routerreducertypes.ACTION_REFRESH,\n origin: window.location.origin\n }, setState);\n }\n }\n }\n}\nasync function runAction(param) {\n let { actionQueue, action, setState } = param;\n const prevState = actionQueue.state;\n actionQueue.pending = action;\n const payload = action.payload;\n const actionResult = actionQueue.action(prevState, payload);\n function handleResult(nextState) {\n // if we discarded this action, the state should also be discarded\n if (action.discarded) {\n return;\n }\n actionQueue.state = nextState;\n runRemainingActions(actionQueue, setState);\n action.resolve(nextState);\n }\n // if the action is a promise, set up a callback to resolve it\n if ((0, _isthenable.isThenable)(actionResult)) {\n actionResult.then(handleResult, (err)=>{\n runRemainingActions(actionQueue, setState);\n action.reject(err);\n });\n } else {\n handleResult(actionResult);\n }\n}\nfunction dispatchAction(actionQueue, payload, setState) {\n let resolvers = {\n resolve: setState,\n reject: ()=>{}\n };\n // most of the action types are async with the exception of restore\n // it's important that restore is handled quickly since it's fired on the popstate event\n // and we don't want to add any delay on a back/forward nav\n // this only creates a promise for the async actions\n if (payload.type !== _routerreducertypes.ACTION_RESTORE) {\n // Create the promise and assign the resolvers to the object.\n const deferredPromise = new Promise((resolve, reject)=>{\n resolvers = {\n resolve,\n reject\n };\n });\n (0, _react.startTransition)(()=>{\n // we immediately notify React of the pending promise -- the resolver is attached to the action node\n // and will be called when the associated action promise resolves\n setState(deferredPromise);\n });\n }\n const newAction = {\n payload,\n next: null,\n resolve: resolvers.resolve,\n reject: resolvers.reject\n };\n // Check if the queue is empty\n if (actionQueue.pending === null) {\n // The queue is empty, so add the action and start it immediately\n // Mark this action as the last in the queue\n actionQueue.last = newAction;\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else if (payload.type === _routerreducertypes.ACTION_NAVIGATE || payload.type === _routerreducertypes.ACTION_RESTORE) {\n // Navigations (including back/forward) take priority over any pending actions.\n // Mark the pending action as discarded (so the state is never applied) and start the navigation action immediately.\n actionQueue.pending.discarded = true;\n // The rest of the current queue should still execute after this navigation.\n // (Note that it can't contain any earlier navigations, because we always put those into `actionQueue.pending` by calling `runAction`)\n newAction.next = actionQueue.pending.next;\n // if the pending action was a server action, mark the queue as needing a refresh once events are processed\n if (actionQueue.pending.payload.type === _routerreducertypes.ACTION_SERVER_ACTION) {\n actionQueue.needsRefresh = true;\n }\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else {\n // The queue is not empty, so add the action to the end of the queue\n // It will be started by runRemainingActions after the previous action finishes\n if (actionQueue.last !== null) {\n actionQueue.last.next = newAction;\n }\n actionQueue.last = newAction;\n }\n}\nlet globalActionQueue = null;\nfunction createMutableActionQueue(initialState, instrumentationHooks) {\n const actionQueue = {\n state: initialState,\n dispatch: (payload, setState)=>dispatchAction(actionQueue, payload, setState),\n action: async (state, action)=>{\n const result = (0, _routerreducer.reducer)(state, action);\n return result;\n },\n pending: null,\n last: null,\n onRouterTransitionStart: instrumentationHooks !== null && typeof instrumentationHooks.onRouterTransitionStart === 'function' ? instrumentationHooks.onRouterTransitionStart : null\n };\n if (true) {\n // The action queue is lazily created on hydration, but after that point\n // it doesn't change. So we can store it in a global rather than pass\n // it around everywhere via props/context.\n if (globalActionQueue !== null) {\n throw Object.defineProperty(new Error('Internal Next.js Error: createMutableActionQueue was called more ' + 'than once'), \"__NEXT_ERROR_CODE\", {\n value: \"E624\",\n enumerable: false,\n configurable: true\n });\n }\n globalActionQueue = actionQueue;\n }\n return actionQueue;\n}\nfunction getCurrentAppRouterState() {\n return globalActionQueue !== null ? globalActionQueue.state : null;\n}\nfunction getAppRouterActionQueue() {\n if (globalActionQueue === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n return globalActionQueue;\n}\nfunction getProfilingHookForOnNavigationStart() {\n if (globalActionQueue !== null) {\n return globalActionQueue.onRouterTransitionStart;\n }\n return null;\n}\nfunction dispatchNavigateAction(href, navigateType, shouldScroll, linkInstanceRef) {\n // TODO: This stuff could just go into the reducer. Leaving as-is for now\n // since we're about to rewrite all the router reducer stuff anyway.\n const url = new URL((0, _addbasepath.addBasePath)(href), location.href);\n if (false) {}\n (0, _links.setLinkForCurrentNavigation)(linkInstanceRef);\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, navigateType);\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_NAVIGATE,\n url,\n isExternalUrl: (0, _approuter.isExternalURL)(url),\n locationSearch: location.search,\n shouldScroll,\n navigateType,\n allowAliasing: true\n });\n}\nfunction dispatchTraverseAction(href, tree) {\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, 'traverse');\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(href),\n tree\n });\n}\nconst publicAppRouterInstance = {\n back: ()=>window.history.back(),\n forward: ()=>window.history.forward(),\n prefetch: false ? // cache. So we don't need to dispatch an action.\n 0 : (href, options)=>{\n // Use the old prefetch implementation.\n const actionQueue = getAppRouterActionQueue();\n const url = (0, _approuter.createPrefetchURL)(href);\n if (url !== null) {\n var _options_kind;\n // The prefetch reducer doesn't actually update any state or\n // trigger a rerender. It just writes to a mutable cache. So we\n // shouldn't bother calling setState/dispatch; we can just re-run\n // the reducer directly using the current state.\n // TODO: Refactor this away from a \"reducer\" so it's\n // less confusing.\n (0, _prefetchreducer.prefetchReducer)(actionQueue.state, {\n type: _routerreducertypes.ACTION_PREFETCH,\n url,\n kind: (_options_kind = options == null ? void 0 : options.kind) != null ? _options_kind : _routerreducertypes.PrefetchKind.FULL\n });\n }\n },\n replace: (href, options)=>{\n (0, _react.startTransition)(()=>{\n var _options_scroll;\n dispatchNavigateAction(href, 'replace', (_options_scroll = options == null ? void 0 : options.scroll) != null ? _options_scroll : true, null);\n });\n },\n push: (href, options)=>{\n (0, _react.startTransition)(()=>{\n var _options_scroll;\n dispatchNavigateAction(href, 'push', (_options_scroll = options == null ? void 0 : options.scroll) != null ? _options_scroll : true, null);\n });\n },\n refresh: ()=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_REFRESH,\n origin: window.location.origin\n });\n });\n },\n hmrRefresh: ()=>{\n if (false) {} else {\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_HMR_REFRESH,\n origin: window.location.origin\n });\n });\n }\n }\n};\n// Exists for debugging purposes. Don't use in application code.\nif ( true && window.next) {\n window.next.router = publicAppRouterInstance;\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=app-router-instance.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFtTmdCQSx3QkFBd0I7ZUFBeEJBOztJQTBEQUMsc0JBQXNCO2VBQXRCQTs7SUErQkFDLHdCQUFzQjtlQUF0QkE7O0lBbkRBQyx3QkFBd0I7ZUFBeEJBOztJQXVFSEMsdUJBQXVCO2VBQXZCQTs7O2dEQXBUTjsyQ0FDaUI7bUNBQ1E7d0NBQ0w7MENBS3BCOzRDQUNpQzt5Q0FDWjt1Q0FDcUI7NkNBQ2pCO21DQU0rQjtBQWtDL0QsU0FBU0Msb0JBQ1BDLFdBQWlDLEVBQ2pDQyxRQUE4QjtJQUU5QixJQUFJRCxZQUFZRSxPQUFPLEtBQUssTUFBTTtRQUNoQ0YsWUFBWUUsT0FBTyxHQUFHRixZQUFZRSxPQUFPLENBQUNDLElBQUk7UUFDOUMsSUFBSUgsWUFBWUUsT0FBTyxLQUFLLE1BQU07WUFDaEMsbUVBQW1FO1lBQ25FRSxVQUFVO2dCQUNSSjtnQkFDQUssUUFBUUwsWUFBWUUsT0FBTztnQkFDM0JEO1lBQ0Y7UUFDRixPQUFPO1lBQ0wsNERBQTREO1lBQzVELElBQUlELFlBQVlNLFlBQVksRUFBRTtnQkFDNUJOLFlBQVlNLFlBQVksR0FBRztnQkFDM0JOLFlBQVlPLFFBQVEsQ0FDbEI7b0JBQ0VDLE1BQU1DLG9CQUFBQSxjQUFjO29CQUNwQkMsUUFBUUMsT0FBT0MsUUFBUSxDQUFDRixNQUFNO2dCQUNoQyxHQUNBVDtZQUVKO1FBQ0Y7SUFDRjtBQUNGO0FBRUEsZUFBZUcsVUFBVSxLQVF4QjtJQVJ3QixNQUN2QkosV0FBVyxFQUNYSyxNQUFNLEVBQ05KLFFBQVEsRUFLVCxHQVJ3QjtJQVN2QixNQUFNWSxZQUFZYixZQUFZYyxLQUFLO0lBRW5DZCxZQUFZRSxPQUFPLEdBQUdHO0lBRXRCLE1BQU1VLFVBQVVWLE9BQU9VLE9BQU87SUFDOUIsTUFBTUMsZUFBZWhCLFlB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LENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO2dCQUMwQnNDO1lBQXhDekUsdUJBQXVCaUQsTUFBTSxXQUFXd0IsQ0FBQUEsa0JBQUFBLFdBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFFBQVNrQixNQUFBQSxLQUFNLE9BQWZsQixrQkFBbUIsTUFBTTtRQUNuRTtJQUNGO0lBQ0FtQixNQUFNLENBQUMzQyxNQUFjd0I7UUFDbkJ0QyxDQUFBQSxHQUFBQSxPQUFBQSxlQUFBQSxFQUFnQjtnQkFDdUJzQztZQUFyQ3pFLHVCQUF1QmlELE1BQU0sUUFBUXdCLENBQUFBLGtCQUFBQSxXQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxRQUFTa0IsTUFBQUEsS0FBTSxPQUFmbEIsa0JBQW1CLE1BQU07UUFDaEU7SUFDRjtJQUNBb0IsU0FBUztRQUNQMUQsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7WUFDZDBCLENBQUFBLEdBQUFBLGdCQUFBQSx1QkFBQUEsRUFBd0I7Z0JBQ3RCaEQsTUFBTUMsb0JBQUFBLGNBQWM7Z0JBQ3BCQyxRQUFRQyxPQUFPQyxRQUFRLENBQUNGLE1BQU07WUFDaEM7UUFDRjtJQUNGO0lBQ0ErRSxZQUFZO1FBQ1YsSUFBSXRDLEtBQW9CLEVBQW9CLEVBSTNDLE1BQU07WUFDTHJCLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO2dCQUNkMEIsQ0FBQUEsR0FBQUEsZ0JBQUFBLHVCQUFBQSxFQUF3QjtvQkFDdEJoRCxNQUFNbUYsb0JBQUFBLGtCQUFrQjtvQkFDeEJqRixRQUFRQyxPQUFPQyxRQUFRLENBQUNGLE1BQU07Z0JBQ2hDO1lBQ0Y7UUFDRjtJQUNGO0FBQ0Y7QUFFQSxnRUFBZ0U7QUFDaEUsSUFBSSxLQUE2QixJQUFJQyxPQUFPUixJQUFJLEVBQUU7SUFDaERRLE9BQU9SLElBQUksQ0FBQ3lGLE1BQU0sR0FBRzlGO0FBQ3ZCIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIEFwcFJvdXRlclN0YXRlLFxuICB0eXBlIFJlZHVjZXJBY3Rpb25zLFxuICB0eXBlIFJlZHVjZXJTdGF0ZSxcbiAgQUNUSU9OX1JFRlJFU0gsXG4gIEFDVElPTl9TRVJWRVJfQUNUSU9OLFxuICBBQ1RJT05fTkFWSUdBVEUsXG4gIEFDVElPTl9SRVNUT1JFLFxuICB0eXBlIE5hdmlnYXRlQWN0aW9uLFxuICBBQ1RJT05fSE1SX1JFRlJFU0gsXG4gIFByZWZldGNoS2luZCxcbiAgQUNUSU9OX1BSRUZFVENILFxufSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgcmVkdWNlciB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXInXG5pbXBvcnQgeyBzdGFydFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGlzVGhlbmFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2lzLXRoZW5hYmxlJ1xuaW1wb3J0IHtcbiAgRmV0Y2hTdHJhdGVneSxcbiAgcHJlZmV0Y2ggYXMgcHJlZmV0Y2hXaXRoU2VnbWVudENhY2hlLFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG59IGZyb20gJy4vc2VnbWVudC1jYWNoZSdcbmltcG9ydCB7IGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIH0gZnJvbSAnLi91c2UtYWN0aW9uLXF1ZXVlJ1xuaW1wb3J0IHsgYWRkQmFzZVBhdGggfSBmcm9tICcuLi9hZGQtYmFzZS1wYXRoJ1xuaW1wb3J0IHsgY3JlYXRlUHJlZmV0Y2hVUkwsIGlzRXh0ZXJuYWxVUkwgfSBmcm9tICcuL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBwcmVmZXRjaFJlZHVjZXIgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3ByZWZldGNoLXJlZHVjZXInXG5pbXBvcnQgdHlwZSB7XG4gIEFwcFJvdXRlckluc3RhbmNlLFxuICBOYXZpZ2F0ZU9wdGlvbnMsXG4gIFByZWZldGNoT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBzZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24sIHR5cGUgTGlua0luc3RhbmNlIH0gZnJvbSAnLi9saW5rcydcbmltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2xpZW50SW5zdHJ1bWVudGF0aW9uSG9va3MgfSBmcm9tICcuLi9hcHAtaW5kZXgnXG5pbXBvcnQgdHlwZSB7IEdsb2JhbEVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9idWlsdGluL2dsb2JhbC1lcnJvcidcblxuZXhwb3J0IHR5cGUgRGlzcGF0Y2hTdGF0ZVByb21pc2UgPSBSZWFjdC5EaXNwYXRjaDxSZWR1Y2VyU3RhdGU+XG5cbmV4cG9ydCB0eXBlIEFwcFJvdXRlckFjdGlvblF1ZXVlID0ge1xuICBzdGF0ZTogQXBwUm91dGVyU3RhdGVcbiAgZGlzcGF0Y2g6IChwYXlsb2FkOiBSZWR1Y2VyQWN0aW9ucywgc2V0U3RhdGU6IERpc3BhdGNoU3RhdGVQcm9taXNlKSA9PiB2b2lkXG4gIGFjdGlvbjogKHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSwgYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4gUmVkdWNlclN0YXRlXG5cbiAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6XG4gICAgfCAoKHVybDogc3RyaW5nLCB0eXBlOiAncHVzaCcgfCAncmVwbGFjZScgfCAndHJhdmVyc2UnKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuXG4gIHBlbmRpbmc6IEFjdGlvblF1ZXVlTm9kZSB8IG51bGxcbiAgbmVlZHNSZWZyZXNoPzogYm9vbGVhblxuICBsYXN0OiBBY3Rpb25RdWV1ZU5vZGUgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEVycm9yU3RhdGUgPSBbXG4gIEdsb2JhbEVycm9yOiBHbG9iYWxFcnJvckNvbXBvbmVudCxcbiAgc3R5bGVzOiBSZWFjdC5SZWFjdE5vZGUsXG5dXG5cbmV4cG9ydCB0eXBlIEFjdGlvblF1ZXVlTm9kZSA9IHtcbiAgcGF5bG9hZDogUmVkdWNlckFjdGlvbnNcbiAgbmV4dDogQWN0aW9uUXVldWVOb2RlIHwgbnVsbFxuICByZXNvbHZlOiAodmFsdWU6IFJlZHVjZXJTdGF0ZSkgPT4gdm9pZFxuICByZWplY3Q6IChlcnI6IEVycm9yKSA9PiB2b2lkXG4gIGRpc2NhcmRlZD86IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gcnVuUmVtYWluaW5nQWN0aW9ucyhcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlLFxuICBzZXRTdGF0ZTogRGlzcGF0Y2hTdGF0ZVByb21pc2Vcbikge1xuICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyAhPT0gbnVsbCkge1xuICAgIGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBhY3Rpb25RdWV1ZS5wZW5kaW5nLm5leHRcbiAgICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcnVuQWN0aW9uKHtcbiAgICAgICAgYWN0aW9uUXVldWUsXG4gICAgICAgIGFjdGlvbjogYWN0aW9uUXVldWUucGVuZGluZyxcbiAgICAgICAgc2V0U3RhdGUsXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBtb3JlIGFjdGlvbnMgYXJlIHBlbmRpbmcsIGNoZWNrIGlmIGEgcmVmcmVzaCBpcyBuZWVkZWRcbiAgICAgIGlmIChhY3Rpb25RdWV1ZS5uZWVkc1JlZnJlc2gpIHtcbiAgICAgICAgYWN0aW9uUXVldWUubmVlZHNSZWZyZXNoID0gZmFsc2VcbiAgICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogQUNUSU9OX1JFRlJFU0gsXG4gICAgICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXRTdGF0ZVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkFjdGlvbih7XG4gIGFjdGlvblF1ZXVlLFxuICBhY3Rpb24sXG4gIHNldFN0YXRlLFxufToge1xuICBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWVcbiAgYWN0aW9uOiBBY3Rpb25RdWV1ZU5vZGVcbiAgc2V0U3RhdGU6IERpc3BhdGNoU3RhdGVQcm9taXNlXG59KSB7XG4gIGNvbnN0IHByZXZTdGF0ZSA9IGFjdGlvblF1ZXVlLnN0YXRlXG5cbiAgYWN0aW9uUXVldWUucGVuZGluZyA9IGFjdGlvblxuXG4gIGNvbnN0IHBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZFxuICBjb25zdCBhY3Rpb25SZXN1bHQgPSBhY3Rpb25RdWV1ZS5hY3Rpb24ocHJldlN0YXRlLCBwYXlsb2FkKVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVJlc3VsdChuZXh0U3RhdGU6IEFwcFJvdXRlclN0YXRlKSB7XG4gICAgLy8gaWYgd2UgZGlzY2FyZGVkIHRoaXMgYWN0aW9uLCB0aGUgc3RhdGUgc2hvdWxkIGFsc28gYmUgZGlzY2FyZGVkXG4gICAgaWYgKGFjdGlvbi5kaXNjYXJkZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGFjdGlvblF1ZXVlLnN0YXRlID0gbmV4dFN0YXRlXG5cbiAgICBydW5SZW1haW5pbmdBY3Rpb25zKGFjdGlvblF1ZXVlLCBzZXRTdGF0ZSlcbiAgICBhY3Rpb24ucmVzb2x2ZShuZXh0U3RhdGUpXG4gIH1cblxuICAvLyBpZiB0aGUgYWN0aW9uIGlzIGEgcHJvbWlzZSwgc2V0IHVwIGEgY2FsbGJhY2sgdG8gcmVzb2x2ZSBpdFxuICBpZiAoaXNUaGVuYWJsZShhY3Rpb25SZXN1bHQpKSB7XG4gICAgYWN0aW9uUmVzdWx0LnRoZW4oaGFuZGxlUmVzdWx0LCAoZXJyKSA9PiB7XG4gICAgICBydW5SZW1haW5pbmdBY3Rpb25zKGFjdGlvblF1ZXVlLCBzZXRTdGF0ZSlcbiAgICAgIGFjdGlvbi5yZWplY3QoZXJyKVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgaGFuZGxlUmVzdWx0KGFjdGlvblJlc3VsdClcbiAgfVxufVxuXG5mdW5jdGlvbiBkaXNwYXRjaEFjdGlvbihcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlLFxuICBwYXlsb2FkOiBSZWR1Y2VyQWN0aW9ucyxcbiAgc2V0U3RhdGU6IERpc3BhdGNoU3RhdGVQcm9taXNlXG4pIHtcbiAgbGV0IHJlc29sdmVyczoge1xuICAgIHJlc29sdmU6ICh2YWx1ZTogUmVkdWNlclN0YXRlKSA9PiB2b2lkXG4gICAgcmVqZWN0OiAocmVhc29uOiBhbnkpID0+IHZvaWRcbiAgfSA9IHsgcmVzb2x2ZTogc2V0U3RhdGUsIHJlamVjdDogKCkgPT4ge30gfVxuXG4gIC8vIG1vc3Qgb2YgdGhlIGFjdGlvbiB0eXBlcyBhcmUgYXN5bmMgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHJlc3RvcmVcbiAgLy8gaXQncyBpbXBvcnRhbnQgdGhhdCByZXN0b3JlIGlzIGhhbmRsZWQgcXVpY2tseSBzaW5jZSBpdCdzIGZpcmVkIG9uIHRoZSBwb3BzdGF0ZSBldmVudFxuICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhZGQgYW55IGRlbGF5IG9uIGEgYmFjay9mb3J3YXJkIG5hdlxuICAvLyB0aGlzIG9ubHkgY3JlYXRlcyBhIHByb21pc2UgZm9yIHRoZSBhc3luYyBhY3Rpb25zXG4gIGlmIChwYXlsb2FkLnR5cGUgIT09IEFDVElPTl9SRVNUT1JFKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBwcm9taXNlIGFuZCBhc3NpZ24gdGhlIHJlc29sdmVycyB0byB0aGUgb2JqZWN0LlxuICAgIGNvbnN0IGRlZmVycmVkUHJvbWlzZSA9IG5ldyBQcm9taXNlPEFwcFJvdXRlclN0YXRlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICByZXNvbHZlcnMgPSB7IHJlc29sdmUsIHJlamVjdCB9XG4gICAgfSlcblxuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAvLyB3ZSBpbW1lZGlhdGVseSBub3RpZnkgUmVhY3Qgb2YgdGhlIHBlbmRpbmcgcHJvbWlzZSAtLSB0aGUgcmVzb2x2ZXIgaXMgYXR0YWNoZWQgdG8gdGhlIGFjdGlvbiBub2RlXG4gICAgICAvLyBhbmQgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBhY3Rpb24gcHJvbWlzZSByZXNvbHZlc1xuICAgICAgc2V0U3RhdGUoZGVmZXJyZWRQcm9taXNlKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdBY3Rpb246IEFjdGlvblF1ZXVlTm9kZSA9IHtcbiAgICBwYXlsb2FkLFxuICAgIG5leHQ6IG51bGwsXG4gICAgcmVzb2x2ZTogcmVzb2x2ZXJzLnJlc29sdmUsXG4gICAgcmVqZWN0OiByZXNvbHZlcnMucmVqZWN0LFxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5XG4gIGlmIChhY3Rpb25RdWV1ZS5wZW5kaW5nID09PSBudWxsKSB7XG4gICAgLy8gVGhlIHF1ZXVlIGlzIGVtcHR5LCBzbyBhZGQgdGhlIGFjdGlvbiBhbmQgc3RhcnQgaXQgaW1tZWRpYXRlbHlcbiAgICAvLyBNYXJrIHRoaXMgYWN0aW9uIGFzIHRoZSBsYXN0IGluIHRoZSBxdWV1ZVxuICAgIGFjdGlvblF1ZXVlLmxhc3QgPSBuZXdBY3Rpb25cblxuICAgIHJ1bkFjdGlvbih7XG4gICAgICBhY3Rpb25RdWV1ZSxcbiAgICAgIGFjdGlvbjogbmV3QWN0aW9uLFxuICAgICAgc2V0U3RhdGUsXG4gICAgfSlcbiAgfSBlbHNlIGlmIChcbiAgICBwYXlsb2FkLnR5cGUgPT09IEFDVElPTl9OQVZJR0FURSB8fFxuICAgIHBheWxvYWQudHlwZSA9PT0gQUNUSU9OX1JFU1RPUkVcbiAgKSB7XG4gICAgLy8gTmF2aWdhdGlvbnMgKGluY2x1ZGluZyBiYWNrL2ZvcndhcmQpIHRha2UgcHJpb3JpdHkgb3ZlciBhbnkgcGVuZGluZyBhY3Rpb25zLlxuICAgIC8vIE1hcmsgdGhlIHBlbmRpbmcgYWN0aW9uIGFzIGRpc2NhcmRlZCAoc28gdGhlIHN0YXRlIGlzIG5ldmVyIGFwcGxpZWQpIGFuZCBzdGFydCB0aGUgbmF2aWdhdGlvbiBhY3Rpb24gaW1tZWRpYXRlbHkuXG4gICAgYWN0aW9uUXVldWUucGVuZGluZy5kaXNjYXJkZWQgPSB0cnVlXG5cbiAgICAvLyBUaGUgcmVzdCBvZiB0aGUgY3VycmVudCBxdWV1ZSBzaG91bGQgc3RpbGwgZXhlY3V0ZSBhZnRlciB0aGlzIG5hdmlnYXRpb24uXG4gICAgLy8gKE5vdGUgdGhhdCBpdCBjYW4ndCBjb250YWluIGFueSBlYXJsaWVyIG5hdmlnYXRpb25zLCBiZWNhdXNlIHdlIGFsd2F5cyBwdXQgdGhvc2UgaW50byBgYWN0aW9uUXVldWUucGVuZGluZ2AgYnkgY2FsbGluZyBgcnVuQWN0aW9uYClcbiAgICBuZXdBY3Rpb24ubmV4dCA9IGFjdGlvblF1ZXVlLnBlbmRpbmcubmV4dFxuXG4gICAgLy8gaWYgdGhlIHBlbmRpbmcgYWN0aW9uIHdhcyBhIHNlcnZlciBhY3Rpb24sIG1hcmsgdGhlIHF1ZXVlIGFzIG5lZWRpbmcgYSByZWZyZXNoIG9uY2UgZXZlbnRzIGFyZSBwcm9jZXNzZWRcbiAgICBpZiAoYWN0aW9uUXVldWUucGVuZGluZy5wYXlsb2FkLnR5cGUgPT09IEFDVElPTl9TRVJWRVJfQUNUSU9OKSB7XG4gICAgICBhY3Rpb25RdWV1ZS5uZWVkc1JlZnJlc2ggPSB0cnVlXG4gICAgfVxuXG4gICAgcnVuQWN0aW9uKHtcbiAgICAgIGFjdGlvblF1ZXVlLFxuICAgICAgYWN0aW9uOiBuZXdBY3Rpb24sXG4gICAgICBzZXRTdGF0ZSxcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIC8vIFRoZSBxdWV1ZSBpcyBub3QgZW1wdHksIHNvIGFkZCB0aGUgYWN0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlXG4gICAgLy8gSXQgd2lsbCBiZSBzdGFydGVkIGJ5IHJ1blJlbWFpbmluZ0FjdGlvbnMgYWZ0ZXIgdGhlIHByZXZpb3VzIGFjdGlvbiBmaW5pc2hlc1xuICAgIGlmIChhY3Rpb25RdWV1ZS5sYXN0ICE9PSBudWxsKSB7XG4gICAgICBhY3Rpb25RdWV1ZS5sYXN0Lm5leHQgPSBuZXdBY3Rpb25cbiAgICB9XG4gICAgYWN0aW9uUXVldWUubGFzdCA9IG5ld0FjdGlvblxuICB9XG59XG5cbmxldCBnbG9iYWxBY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWUgfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTXV0YWJsZUFjdGlvblF1ZXVlKFxuICBpbml0aWFsU3RhdGU6IEFwcFJvdXRlclN0YXRlLFxuICBpbnN0cnVtZW50YXRpb25Ib29rczogQ2xpZW50SW5zdHJ1bWVudGF0aW9uSG9va3MgfCBudWxsXG4pOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSB7XG4gIGNvbnN0IGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSA9IHtcbiAgICBzdGF0ZTogaW5pdGlhbFN0YXRlLFxuICAgIGRpc3BhdGNoOiAocGF5bG9hZDogUmVkdWNlckFjdGlvbnMsIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZSkgPT5cbiAgICAgIGRpc3BhdGNoQWN0aW9uKGFjdGlvblF1ZXVlLCBwYXlsb2FkLCBzZXRTdGF0ZSksXG4gICAgYWN0aW9uOiBhc3luYyAoc3RhdGU6IEFwcFJvdXRlclN0YXRlLCBhY3Rpb246IFJlZHVjZXJBY3Rpb25zKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgICBwZW5kaW5nOiBudWxsLFxuICAgIGxhc3Q6IG51bGwsXG4gICAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6XG4gICAgICBpbnN0cnVtZW50YXRpb25Ib29rcyAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIGluc3RydW1lbnRhdGlvbkhvb2tzLm9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gLy8gVGhpcyBwcm9maWxpbmcgaG9vayB3aWxsIGJlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZXZlcnkgbmF2aWdhdGlvbi5cbiAgICAgICAgICBpbnN0cnVtZW50YXRpb25Ib29rcy5vblJvdXRlclRyYW5zaXRpb25TdGFydFxuICAgICAgICA6IG51bGwsXG4gIH1cblxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBUaGUgYWN0aW9uIHF1ZXVlIGlzIGxhemlseSBjcmVhdGVkIG9uIGh5ZHJhdGlvbiwgYnV0IGFmdGVyIHRoYXQgcG9pbnRcbiAgICAvLyBpdCBkb2Vzbid0IGNoYW5nZS4gU28gd2UgY2FuIHN0b3JlIGl0IGluIGEgZ2xvYmFsIHJhdGhlciB0aGFuIHBhc3NcbiAgICAvLyBpdCBhcm91bmQgZXZlcnl3aGVyZSB2aWEgcHJvcHMvY29udGV4dC5cbiAgICBpZiAoZ2xvYmFsQWN0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0ludGVybmFsIE5leHQuanMgRXJyb3I6IGNyZWF0ZU11dGFibGVBY3Rpb25RdWV1ZSB3YXMgY2FsbGVkIG1vcmUgJyArXG4gICAgICAgICAgJ3RoYW4gb25jZSdcbiAgICAgIClcbiAgICB9XG4gICAgZ2xvYmFsQWN0aW9uUXVldWUgPSBhY3Rpb25RdWV1ZVxuICB9XG5cbiAgcmV0dXJuIGFjdGlvblF1ZXVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJyZW50QXBwUm91dGVyU3RhdGUoKTogQXBwUm91dGVyU3RhdGUgfCBudWxsIHtcbiAgcmV0dXJuIGdsb2JhbEFjdGlvblF1ZXVlICE9PSBudWxsID8gZ2xvYmFsQWN0aW9uUXVldWUuc3RhdGUgOiBudWxsXG59XG5cbmZ1bmN0aW9uIGdldEFwcFJvdXRlckFjdGlvblF1ZXVlKCk6IEFwcFJvdXRlckFjdGlvblF1ZXVlIHtcbiAgaWYgKGdsb2JhbEFjdGlvblF1ZXVlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludGVybmFsIE5leHQuanMgZXJyb3I6IFJvdXRlciBhY3Rpb24gZGlzcGF0Y2hlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uJ1xuICAgIClcbiAgfVxuICByZXR1cm4gZ2xvYmFsQWN0aW9uUXVldWVcbn1cblxuZnVuY3Rpb24gZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0KCkge1xuICBpZiAoZ2xvYmFsQWN0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZ2xvYmFsQWN0aW9uUXVldWUub25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnRcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hOYXZpZ2F0ZUFjdGlvbihcbiAgaHJlZjogc3RyaW5nLFxuICBuYXZpZ2F0ZVR5cGU6IE5hdmlnYXRlQWN0aW9uWyduYXZpZ2F0ZVR5cGUnXSxcbiAgc2hvdWxkU2Nyb2xsOiBib29sZWFuLFxuICBsaW5rSW5zdGFuY2VSZWY6IExpbmtJbnN0YW5jZSB8IG51bGxcbik6IHZvaWQge1xuICAvLyBUT0RPOiBUaGlzIHN0dWZmIGNvdWxkIGp1c3QgZ28gaW50byB0aGUgcmVkdWNlci4gTGVhdmluZyBhcy1pcyBmb3Igbm93XG4gIC8vIHNpbmNlIHdlJ3JlIGFib3V0IHRvIHJld3JpdGUgYWxsIHRoZSByb3V0ZXIgcmVkdWNlciBzdHVmZiBhbnl3YXkuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYWRkQmFzZVBhdGgoaHJlZiksIGxvY2F0aW9uLmhyZWYpXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgd2luZG93Lm5leHQuX19wZW5kaW5nVXJsID0gdXJsXG4gIH1cblxuICBzZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24obGlua0luc3RhbmNlUmVmKVxuXG4gIGNvbnN0IG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ID0gZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0KClcbiAgaWYgKG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ICE9PSBudWxsKSB7XG4gICAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQoaHJlZiwgbmF2aWdhdGVUeXBlKVxuICB9XG5cbiAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgIHR5cGU6IEFDVElPTl9OQVZJR0FURSxcbiAgICB1cmwsXG4gICAgaXNFeHRlcm5hbFVybDogaXNFeHRlcm5hbFVSTCh1cmwpLFxuICAgIGxvY2F0aW9uU2VhcmNoOiBsb2NhdGlvbi5zZWFyY2gsXG4gICAgc2hvdWxkU2Nyb2xsLFxuICAgIG5hdmlnYXRlVHlwZSxcbiAgICBhbGxvd0FsaWFzaW5nOiB0cnVlLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbihcbiAgaHJlZjogc3RyaW5nLFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHVuZGVmaW5lZFxuKSB7XG4gIGNvbnN0IG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ID0gZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0KClcbiAgaWYgKG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0ICE9PSBudWxsKSB7XG4gICAgb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQoaHJlZiwgJ3RyYXZlcnNlJylcbiAgfVxuICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgdHlwZTogQUNUSU9OX1JFU1RPUkUsXG4gICAgdXJsOiBuZXcgVVJMKGhyZWYpLFxuICAgIHRyZWUsXG4gIH0pXG59XG5cbi8qKlxuICogVGhlIGFwcCByb3V0ZXIgdGhhdCBpcyBleHBvc2VkIHRocm91Z2ggYHVzZVJvdXRlcmAuIFRoZXNlIGFyZSBwdWJsaWMgQVBJXG4gKiBtZXRob2RzLiBJbnRlcm5hbCBOZXh0LmpzIGNvZGUgc2hvdWxkIGNhbGwgdGhlIGxvd2VyIGxldmVsIG1ldGhvZHMgZGlyZWN0bHlcbiAqIChhbHRob3VnaCB0aGVyZSdzIGxvdHMgb2YgZXhpc3RpbmcgY29kZSB0aGF0IGRvZXNuJ3QgZG8gdGhhdCkuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZTogQXBwUm91dGVySW5zdGFuY2UgPSB7XG4gIGJhY2s6ICgpID0+IHdpbmRvdy5oaXN0b3J5LmJhY2soKSxcbiAgZm9yd2FyZDogKCkgPT4gd2luZG93Lmhpc3RvcnkuZm9yd2FyZCgpLFxuICBwcmVmZXRjaDogcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyAvLyBVbmxpa2UgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiwgdGhlIFNlZ21lbnQgQ2FjaGUgZG9lc24ndCBzdG9yZSBpdHNcbiAgICAgIC8vIGRhdGEgaW4gdGhlIHJvdXRlciByZWR1Y2VyIHN0YXRlOyBpdCB3cml0ZXMgaW50byBhIGdsb2JhbCBtdXRhYmxlXG4gICAgICAvLyBjYWNoZS4gU28gd2UgZG9uJ3QgbmVlZCB0byBkaXNwYXRjaCBhbiBhY3Rpb24uXG4gICAgICAoaHJlZjogc3RyaW5nLCBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGlvblF1ZXVlID0gZ2V0QXBwUm91dGVyQWN0aW9uUXVldWUoKVxuICAgICAgICBjb25zdCBwcmVmZXRjaEtpbmQgPSBvcHRpb25zPy5raW5kID8/IFByZWZldGNoS2luZC5BVVRPXG5cbiAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IG9mZmVyIGEgd2F5IHRvIGlzc3VlIGEgcnVudGltZSBwcmVmZXRjaCB2aWEgYHJvdXRlci5wcmVmZXRjaCgpYC5cbiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHBvc3NpYmxlIHdoZW4gd2UgdXBkYXRlIGl0cyBBUEkgdG8gbm90IHRha2UgYSBQcmVmZXRjaEtpbmQuXG4gICAgICAgIGxldCBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5XG4gICAgICAgIHN3aXRjaCAocHJlZmV0Y2hLaW5kKSB7XG4gICAgICAgICAgY2FzZSBQcmVmZXRjaEtpbmQuQVVUTzoge1xuICAgICAgICAgICAgLy8gV2UgZGVmYXVsdCB0byBQUFIuIFdlJ2xsIGRpc2NvdmVyIHdoZXRoZXIgb3Igbm90IHRoZSByb3V0ZSBzdXBwb3J0cyBpdCB3aXRoIHRoZSBpbml0aWFsIHByZWZldGNoLlxuICAgICAgICAgICAgZmV0Y2hTdHJhdGVneSA9IEZldGNoU3RyYXRlZ3kuUFBSXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFByZWZldGNoS2luZC5GVUxMOiB7XG4gICAgICAgICAgICBmZXRjaFN0cmF0ZWd5ID0gRmV0Y2hTdHJhdGVneS5GdWxsXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFByZWZldGNoS2luZC5URU1QT1JBUlk6IHtcbiAgICAgICAgICAgIC8vIFRoaXMgY29uY2VwdCBkb2Vzbid0IGV4aXN0IGluIHRoZSBzZWdtZW50IGNhY2hlIGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHByZWZldGNoS2luZCBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgICAgICAgIC8vIERlc3BpdGUgdHlwZXNjcmlwdCB0aGlua2luZyB0aGF0IHRoaXMgY2FuJ3QgaGFwcGVuLFxuICAgICAgICAgICAgLy8gd2UgbWlnaHQgZ2V0IGFuIHVuZXhwZWN0ZWQgdmFsdWUgZnJvbSB1c2VyIGNvZGUuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCBrbm93IHdoYXQgdGhleSB3YW50LCBidXQgd2Uga25vdyB0aGV5IHdhbnQgYSBwcmVmZXRjaCxcbiAgICAgICAgICAgIC8vIHNvIHVzZSB0aGUgZGVmYXVsdC5cbiAgICAgICAgICAgIGZldGNoU3RyYXRlZ3kgPSBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHByZWZldGNoV2l0aFNlZ21lbnRDYWNoZShcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIGFjdGlvblF1ZXVlLnN0YXRlLm5leHRVcmwsXG4gICAgICAgICAgYWN0aW9uUXVldWUuc3RhdGUudHJlZSxcbiAgICAgICAgICBmZXRjaFN0cmF0ZWd5LFxuICAgICAgICAgIG9wdGlvbnM/Lm9uSW52YWxpZGF0ZSA/PyBudWxsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICA6IChocmVmOiBzdHJpbmcsIG9wdGlvbnM/OiBQcmVmZXRjaE9wdGlvbnMpID0+IHtcbiAgICAgICAgLy8gVXNlIHRoZSBvbGQgcHJlZmV0Y2ggaW1wbGVtZW50YXRpb24uXG4gICAgICAgIGNvbnN0IGFjdGlvblF1ZXVlID0gZ2V0QXBwUm91dGVyQWN0aW9uUXVldWUoKVxuICAgICAgICBjb25zdCB1cmwgPSBjcmVhdGVQcmVmZXRjaFVSTChocmVmKVxuICAgICAgICBpZiAodXJsICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIHByZWZldGNoIHJlZHVjZXIgZG9lc24ndCBhY3R1YWxseSB1cGRhdGUgYW55IHN0YXRlIG9yXG4gICAgICAgICAgLy8gdHJpZ2dlciBhIHJlcmVuZGVyLiBJdCBqdXN0IHdyaXRlcyB0byBhIG11dGFibGUgY2FjaGUuIFNvIHdlXG4gICAgICAgICAgLy8gc2hvdWxkbid0IGJvdGhlciBjYWxsaW5nIHNldFN0YXRlL2Rpc3BhdGNoOyB3ZSBjYW4ganVzdCByZS1ydW5cbiAgICAgICAgICAvLyB0aGUgcmVkdWNlciBkaXJlY3RseSB1c2luZyB0aGUgY3VycmVudCBzdGF0ZS5cbiAgICAgICAgICAvLyBUT0RPOiBSZWZhY3RvciB0aGlzIGF3YXkgZnJvbSBhIFwicmVkdWNlclwiIHNvIGl0J3NcbiAgICAgICAgICAvLyBsZXNzIGNvbmZ1c2luZy5cbiAgICAgICAgICBwcmVmZXRjaFJlZHVjZXIoYWN0aW9uUXVldWUuc3RhdGUsIHtcbiAgICAgICAgICAgIHR5cGU6IEFDVElPTl9QUkVGRVRDSCxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGtpbmQ6IG9wdGlvbnM/LmtpbmQgPz8gUHJlZmV0Y2hLaW5kLkZVTEwsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgcmVwbGFjZTogKGhyZWY6IHN0cmluZywgb3B0aW9ucz86IE5hdmlnYXRlT3B0aW9ucykgPT4ge1xuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaE5hdmlnYXRlQWN0aW9uKGhyZWYsICdyZXBsYWNlJywgb3B0aW9ucz8uc2Nyb2xsID8/IHRydWUsIG51bGwpXG4gICAgfSlcbiAgfSxcbiAgcHVzaDogKGhyZWY6IHN0cmluZywgb3B0aW9ucz86IE5hdmlnYXRlT3B0aW9ucykgPT4ge1xuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaE5hdmlnYXRlQWN0aW9uKGhyZWYsICdwdXNoJywgb3B0aW9ucz8uc2Nyb2xsID8/IHRydWUsIG51bGwpXG4gICAgfSlcbiAgfSxcbiAgcmVmcmVzaDogKCkgPT4ge1xuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IEFDVElPTl9SRUZSRVNILFxuICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICB9KVxuICAgIH0pXG4gIH0sXG4gIGhtclJlZnJlc2g6ICgpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2htclJlZnJlc2ggY2FuIG9ubHkgYmUgdXNlZCBpbiBkZXZlbG9wbWVudCBtb2RlLiBQbGVhc2UgdXNlIHJlZnJlc2ggaW5zdGVhZC4nXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHtcbiAgICAgICAgICB0eXBlOiBBQ1RJT05fSE1SX1JFRlJFU0gsXG4gICAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG4gIH0sXG59XG5cbi8vIEV4aXN0cyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBEb24ndCB1c2UgaW4gYXBwbGljYXRpb24gY29kZS5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmV4dCkge1xuICB3aW5kb3cubmV4dC5yb3V0ZXIgPSBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZU11dGFibGVBY3Rpb25RdWV1ZSIsImRpc3BhdGNoTmF2aWdhdGVBY3Rpb24iLCJkaXNwYXRjaFRyYXZlcnNlQWN0aW9uIiwiZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlIiwicHVibGljQXBwUm91dGVySW5zdGFuY2UiLCJydW5SZW1haW5pbmdBY3Rpb25zIiwiYWN0aW9uUXVldWUiLCJzZXRTdGF0ZSIsInBlbmRpbmciLCJuZXh0IiwicnVuQWN0aW9uIiwiYWN0aW9uIiwibmVlZHNSZWZyZXNoIiwiZGlzcGF0Y2giLCJ0eXBlIiwiQUNUSU9OX1JFRlJFU0giLCJvcmlnaW4iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInByZXZTdGF0ZSIsInN0YXRlIiwicGF5bG9hZCIsImFjdGlvblJlc3VsdCIsImhhbmRsZVJlc3VsdCIsIm5leHRTdGF0ZSIsImRpc2NhcmRlZCIsInJlc29sdmUiLCJpc1RoZW5hYmxlIiwidGhlbiIsImVyciIsInJlamVjdCIsImRpc3BhdGNoQWN0aW9uIiwicmVzb2x2ZXJzIiwiQUNUSU9OX1JFU1RPUkUiLCJkZWZlcnJlZFByb21pc2UiLCJQcm9taXNlIiwic3RhcnRUcmFuc2l0aW9uIiwibmV3QWN0aW9uIiwibGFzdCIsIkFDVElPTl9OQVZJR0FURSIsIkFDVElPTl9TRVJWRVJfQUNUSU9OIiwiZ2xvYmFsQWN0aW9uUXVldWUiLCJpbml0aWFsU3RhdGUiLCJpbnN0cnVtZW50YXRpb25Ib29rcyIsInJlc3VsdCIsInJlZHVjZXIiLCJvblJvdXRlclRyYW5zaXRpb25TdGFydCIsIkVycm9yIiwiZ2V0QXBwUm91dGVyQWN0aW9uUXVldWUiLCJnZXRQcm9maWxpbmdIb29rRm9yT25OYXZpZ2F0aW9uU3RhcnQiLCJocmVmIiwibmF2aWdhdGVUeXBlIiwic2hvdWxkU2Nyb2xsIiwibGlua0luc3RhbmNlUmVmIiwidXJsIiwiVVJMIiwiYWRkQmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORyIsIl9fcGVuZGluZ1VybCIsInNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsImRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIiwiaXNFeHRlcm5hbFVybCIsImlzRXh0ZXJuYWxVUkwiLCJsb2NhdGlvblNlYXJjaCIsInNlYXJjaCIsImFsbG93QWxpYXNpbmciLCJ0cmVlIiwiYmFjayIsImhpc3RvcnkiLCJmb3J3YXJkIiwicHJlZmV0Y2giLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJvcHRpb25zIiwicHJlZmV0Y2hLaW5kIiwia2luZCIsIlByZWZldGNoS2luZCIsIkFVVE8iLCJmZXRjaFN0cmF0ZWd5IiwiRmV0Y2hTdHJhdGVneSIsIlBQUiIsIkZVTEwiLCJGdWxsIiwiVEVNUE9SQVJZIiwicHJlZmV0Y2hXaXRoU2VnbWVudENhY2hlIiwibmV4dFVybCIsIm9uSW52YWxpZGF0ZSIsImNyZWF0ZVByZWZldGNoVVJMIiwicHJlZmV0Y2hSZWR1Y2VyIiwiQUNUSU9OX1BSRUZFVENIIiwicmVwbGFjZSIsInNjcm9sbCIsInB1c2giLCJyZWZyZXNoIiwiaG1yUmVmcmVzaCIsIk5PREVfRU5WIiwiQUNUSU9OX0hNUl9SRUZSRVNIIiwicm91dGVyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router.js ***! \****************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nvar _s = $RefreshSig$();\n\"use strict\";\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 createEmptyCacheNode: function() {\n return createEmptyCacheNode;\n },\n createPrefetchURL: function() {\n return createPrefetchURL;\n },\n default: function() {\n return AppRouter;\n },\n isExternalURL: function() {\n return isExternalURL;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(app-pages-browser)/./node_modules/next/dist/client/components/use-action-queue.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/add-base-path.js\");\nconst _approuterannouncer = __webpack_require__(/*! ./app-router-announcer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-announcer.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _findheadincache = __webpack_require__(/*! ./router-reducer/reducers/find-head-in-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js\");\nconst _unresolvedthenable = __webpack_require__(/*! ./unresolved-thenable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unresolved-thenable.js\");\nconst _removebasepath = __webpack_require__(/*! ../remove-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../has-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js\");\nconst _computechangedpath = __webpack_require__(/*! ./router-reducer/compute-changed-path */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(app-pages-browser)/./node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _approuterinstance = __webpack_require__(/*! ./app-router-instance */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst _links = __webpack_require__(/*! ./links */ \"(app-pages-browser)/./node_modules/next/dist/client/components/links.js\");\nconst _rooterrorboundary = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./errors/root-error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/errors/root-error-boundary.js\"));\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./builtin/global-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst _boundarycomponents = __webpack_require__(/*! ../../lib/framework/boundary-components */ \"(app-pages-browser)/./node_modules/next/dist/lib/framework/boundary-components.js\");\nconst globalMutable = {};\nfunction isExternalURL(url) {\n return url.origin !== window.location.origin;\n}\nfunction createPrefetchURL(href) {\n // Don't prefetch for bots as they don't navigate.\n if ((0, _isbot.isBot)(window.navigator.userAgent)) {\n return null;\n }\n let url;\n try {\n url = new URL((0, _addbasepath.addBasePath)(href), window.location.href);\n } catch (_) {\n // TODO: Does this need to throw or can we just console.error instead? Does\n // anyone rely on this throwing? (Seems unlikely.)\n throw Object.defineProperty(new Error(\"Cannot prefetch '\" + href + \"' because it cannot be converted to a URL.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E234\",\n enumerable: false,\n configurable: true\n });\n }\n // Don't prefetch during development (improves compilation performance)\n if (true) {\n return null;\n }\n // External urls can't be prefetched in the same way.\n if (isExternalURL(url)) {\n return null;\n }\n return url;\n}\nfunction HistoryUpdater(param) {\n let { appRouterState } = param;\n (0, _react.useInsertionEffect)(()=>{\n if (false) {}\n const { tree, pushRef, canonicalUrl } = appRouterState;\n const historyState = {\n ...pushRef.preserveCustomHistoryState ? window.history.state : {},\n // Identifier is shortened intentionally.\n // __NA is used to identify if the history entry can be handled by the app-router.\n // __N is used to identify if the history entry can be handled by the old router.\n __NA: true,\n __PRIVATE_NEXTJS_INTERNALS_TREE: tree\n };\n if (pushRef.pendingPush && // Skip pushing an additional history entry if the canonicalUrl is the same as the current url.\n // This mirrors the browser behavior for normal navigation.\n (0, _createhreffromurl.createHrefFromUrl)(new URL(window.location.href)) !== canonicalUrl) {\n // This intentionally mutates React state, pushRef is overwritten to ensure additional push/replace calls do not trigger an additional history entry.\n pushRef.pendingPush = false;\n window.history.pushState(historyState, '', canonicalUrl);\n } else {\n window.history.replaceState(historyState, '', canonicalUrl);\n }\n }, [\n appRouterState\n ]);\n (0, _react.useEffect)(()=>{\n // The Next-Url and the base tree may affect the result of a prefetch\n // task. Re-prefetch all visible links with the updated values. In most\n // cases, this will not result in any new network requests, only if\n // the prefetch result actually varies on one of these inputs.\n if (false) {}\n }, [\n appRouterState.nextUrl,\n appRouterState.tree\n ]);\n return null;\n}\n_c = HistoryUpdater;\nfunction createEmptyCacheNode() {\n return {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n };\n}\nfunction copyNextJsInternalHistoryState(data) {\n if (data == null) data = {};\n const currentState = window.history.state;\n const __NA = currentState == null ? void 0 : currentState.__NA;\n if (__NA) {\n data.__NA = __NA;\n }\n const __PRIVATE_NEXTJS_INTERNALS_TREE = currentState == null ? void 0 : currentState.__PRIVATE_NEXTJS_INTERNALS_TREE;\n if (__PRIVATE_NEXTJS_INTERNALS_TREE) {\n data.__PRIVATE_NEXTJS_INTERNALS_TREE = __PRIVATE_NEXTJS_INTERNALS_TREE;\n }\n return data;\n}\nfunction Head(param) {\n let { headCacheNode } = param;\n // If this segment has a `prefetchHead`, it's the statically prefetched data.\n // We should use that on initial render instead of `head`. Then we'll switch\n // to `head` when the dynamic response streams in.\n const head = headCacheNode !== null ? headCacheNode.head : null;\n const prefetchHead = headCacheNode !== null ? headCacheNode.prefetchHead : null;\n // If no prefetch data is available, then we go straight to rendering `head`.\n const resolvedPrefetchRsc = prefetchHead !== null ? prefetchHead : head;\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n return (0, _react.useDeferredValue)(head, resolvedPrefetchRsc);\n}\n_c1 = Head;\n/**\n * The global router that wraps the application components.\n */ function Router(param) {\n let { actionQueue, assetPrefix, globalError } = param;\n const state = (0, _useactionqueue.useActionQueue)(actionQueue);\n const { canonicalUrl } = state;\n // Add memoized pathname/query for useSearchParams and usePathname.\n const { searchParams, pathname } = (0, _react.useMemo)(()=>{\n const url = new URL(canonicalUrl, false ? 0 : window.location.href);\n return {\n // This is turned into a readonly class in `useSearchParams`\n searchParams: url.searchParams,\n pathname: (0, _hasbasepath.hasBasePath)(url.pathname) ? (0, _removebasepath.removeBasePath)(url.pathname) : url.pathname\n };\n }, [\n canonicalUrl\n ]);\n if (true) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { cache, prefetchCache, tree } = state;\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n // Add `window.nd` for debugging purposes.\n // This is not meant for use in applications as concurrent rendering will affect the cache/tree/router.\n // @ts-ignore this is for debugging\n window.nd = {\n router: _approuterinstance.publicAppRouterInstance,\n cache,\n prefetchCache,\n tree\n };\n }, [\n cache,\n prefetchCache,\n tree\n ]);\n }\n (0, _react.useEffect)(()=>{\n // If the app is restored from bfcache, it's possible that\n // pushRef.mpaNavigation is true, which would mean that any re-render of this component\n // would trigger the mpa navigation logic again from the lines below.\n // This will restore the router to the initial state in the event that the app is restored from bfcache.\n function handlePageShow(event) {\n var _window_history_state;\n if (!event.persisted || !((_window_history_state = window.history.state) == null ? void 0 : _window_history_state.__PRIVATE_NEXTJS_INTERNALS_TREE)) {\n return;\n }\n // Clear the pendingMpaPath value so that a subsequent MPA navigation to the same URL can be triggered.\n // This is necessary because if the browser restored from bfcache, the pendingMpaPath would still be set to the value\n // of the last MPA navigation.\n globalMutable.pendingMpaPath = undefined;\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(window.location.href),\n tree: window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE\n });\n }\n window.addEventListener('pageshow', handlePageShow);\n return ()=>{\n window.removeEventListener('pageshow', handlePageShow);\n };\n }, []);\n (0, _react.useEffect)(()=>{\n // Ensure that any redirect errors that bubble up outside of the RedirectBoundary\n // are caught and handled by the router.\n function handleUnhandledRedirect(event) {\n const error = 'reason' in event ? event.reason : event.error;\n if ((0, _redirecterror.isRedirectError)(error)) {\n event.preventDefault();\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n // TODO: This should access the router methods directly, rather than\n // go through the public interface.\n if (redirectType === _redirecterror.RedirectType.push) {\n _approuterinstance.publicAppRouterInstance.push(url, {});\n } else {\n _approuterinstance.publicAppRouterInstance.replace(url, {});\n }\n }\n }\n window.addEventListener('error', handleUnhandledRedirect);\n window.addEventListener('unhandledrejection', handleUnhandledRedirect);\n return ()=>{\n window.removeEventListener('error', handleUnhandledRedirect);\n window.removeEventListener('unhandledrejection', handleUnhandledRedirect);\n };\n }, []);\n // When mpaNavigation flag is set do a hard navigation to the new url.\n // Infinitely suspend because we don't actually want to rerender any child\n // components with the new URL and any entangled state updates shouldn't\n // commit either (eg: useTransition isPending should stay true until the page\n // unloads).\n //\n // This is a side effect in render. Don't try this at home, kids. It's\n // probably safe because we know this is a singleton component and it's never\n // in . At least I hope so. (It will run twice in dev strict mode,\n // but that's... fine?)\n const { pushRef } = state;\n if (pushRef.mpaNavigation) {\n // if there's a re-render, we don't want to trigger another redirect if one is already in flight to the same URL\n if (globalMutable.pendingMpaPath !== canonicalUrl) {\n const location = window.location;\n if (pushRef.pendingPush) {\n location.assign(canonicalUrl);\n } else {\n location.replace(canonicalUrl);\n }\n globalMutable.pendingMpaPath = canonicalUrl;\n }\n // TODO-APP: Should we listen to navigateerror here to catch failed\n // navigations somehow? And should we call window.stop() if a SPA navigation\n // should interrupt an MPA one?\n // NOTE: This is intentionally using `throw` instead of `use` because we're\n // inside an externally mutable condition (pushRef.mpaNavigation), which\n // violates the rules of hooks.\n throw _unresolvedthenable.unresolvedThenable;\n }\n (0, _react.useEffect)(()=>{\n const originalPushState = window.history.pushState.bind(window.history);\n const originalReplaceState = window.history.replaceState.bind(window.history);\n // Ensure the canonical URL in the Next.js Router is updated when the URL is changed so that `usePathname` and `useSearchParams` hold the pushed values.\n const applyUrlFromHistoryPushReplace = (url)=>{\n var _window_history_state;\n const href = window.location.href;\n const tree = (_window_history_state = window.history.state) == null ? void 0 : _window_history_state.__PRIVATE_NEXTJS_INTERNALS_TREE;\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(url != null ? url : href, href),\n tree\n });\n });\n };\n /**\n * Patch pushState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */ window.history.pushState = function pushState(data, _unused, url) {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if ((data == null ? void 0 : data.__NA) || (data == null ? void 0 : data._N)) {\n return originalPushState(data, _unused, url);\n }\n data = copyNextJsInternalHistoryState(data);\n if (url) {\n applyUrlFromHistoryPushReplace(url);\n }\n return originalPushState(data, _unused, url);\n };\n /**\n * Patch replaceState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */ window.history.replaceState = function replaceState(data, _unused, url) {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if ((data == null ? void 0 : data.__NA) || (data == null ? void 0 : data._N)) {\n return originalReplaceState(data, _unused, url);\n }\n data = copyNextJsInternalHistoryState(data);\n if (url) {\n applyUrlFromHistoryPushReplace(url);\n }\n return originalReplaceState(data, _unused, url);\n };\n /**\n * Handle popstate event, this is used to handle back/forward in the browser.\n * By default dispatches ACTION_RESTORE, however if the history entry was not pushed/replaced by app-router it will reload the page.\n * That case can happen when the old router injected the history entry.\n */ const onPopState = (event)=>{\n if (!event.state) {\n // TODO-APP: this case only happens when pushState/replaceState was called outside of Next.js. It should probably reload the page in this case.\n return;\n }\n // This case happens when the history entry was pushed by the `pages` router.\n if (!event.state.__NA) {\n window.location.reload();\n return;\n }\n // TODO-APP: Ideally the back button should not use startTransition as it should apply the updates synchronously\n // Without startTransition works if the cache is there for this path\n (0, _react.startTransition)(()=>{\n (0, _approuterinstance.dispatchTraverseAction)(window.location.href, event.state.__PRIVATE_NEXTJS_INTERNALS_TREE);\n });\n };\n // Register popstate event to call onPopstate.\n window.addEventListener('popstate', onPopState);\n return ()=>{\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n window.removeEventListener('popstate', onPopState);\n };\n }, []);\n const { cache, tree, nextUrl, focusAndScrollRef } = state;\n const matchingHead = (0, _react.useMemo)(()=>{\n return (0, _findheadincache.findHeadInCache)(cache, tree[1]);\n }, [\n cache,\n tree\n ]);\n // Add memoized pathParams for useParams.\n const pathParams = (0, _react.useMemo)(()=>{\n return (0, _computechangedpath.getSelectedParams)(tree);\n }, [\n tree\n ]);\n const layoutRouterContext = (0, _react.useMemo)(()=>{\n return {\n parentTree: tree,\n parentCacheNode: cache,\n parentSegmentPath: null,\n // Root node always has `url`\n // Provided in AppTreeContext to ensure it can be overwritten in layout-router\n url: canonicalUrl\n };\n }, [\n tree,\n cache,\n canonicalUrl\n ]);\n const globalLayoutRouterContext = (0, _react.useMemo)(()=>{\n return {\n tree,\n focusAndScrollRef,\n nextUrl\n };\n }, [\n tree,\n focusAndScrollRef,\n nextUrl\n ]);\n let head;\n if (matchingHead !== null) {\n // The head is wrapped in an extra component so we can use\n // `useDeferredValue` to swap between the prefetched and final versions of\n // the head. (This is what LayoutRouter does for segment data, too.)\n //\n // The `key` is used to remount the component whenever the head moves to\n // a different segment.\n const [headCacheNode, headKey, headKeyWithoutSearchParams] = matchingHead;\n head = /*#__PURE__*/ (0, _jsxruntime.jsx)(Head, {\n headCacheNode: headCacheNode\n }, false ? 0 : headKey);\n } else {\n head = null;\n }\n let content = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_redirectboundary.RedirectBoundary, {\n children: [\n head,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.RootLayoutBoundary, {\n children: cache.rsc\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_approuterannouncer.AppRouterAnnouncer, {\n tree: tree\n })\n ]\n });\n if (true) {\n // In development, we apply few error boundaries and hot-reloader:\n // - DevRootHTTPAccessFallbackBoundary: avoid using navigation API like notFound() in root layout\n // - HotReloader:\n // - hot-reload the app when the code changes\n // - render dev overlay\n // - catch runtime errors and display global-error when necessary\n if (true) {\n const { DevRootHTTPAccessFallbackBoundary } = __webpack_require__(/*! ./dev-root-http-access-fallback-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js\");\n content = /*#__PURE__*/ (0, _jsxruntime.jsx)(DevRootHTTPAccessFallbackBoundary, {\n children: content\n });\n }\n const HotReloader = (__webpack_require__(/*! ../dev/hot-reloader/app/hot-reloader-app */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\")[\"default\"]);\n content = /*#__PURE__*/ (0, _jsxruntime.jsx)(HotReloader, {\n assetPrefix: assetPrefix,\n globalError: globalError,\n children: content\n });\n } else {}\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(HistoryUpdater, {\n appRouterState: state\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(RuntimeStyles, {}),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.PathParamsContext.Provider, {\n value: pathParams,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.PathnameContext.Provider, {\n value: pathname,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.SearchParamsContext.Provider, {\n value: searchParams,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.GlobalLayoutRouterContext.Provider, {\n value: globalLayoutRouterContext,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.AppRouterContext.Provider, {\n value: _approuterinstance.publicAppRouterInstance,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: layoutRouterContext,\n children: content\n })\n })\n })\n })\n })\n })\n ]\n });\n}\n_c2 = Router;\nfunction AppRouter(param) {\n let { actionQueue, globalErrorState, assetPrefix } = param;\n (0, _navfailurehandler.useNavFailureHandler)();\n const router = /*#__PURE__*/ (0, _jsxruntime.jsx)(Router, {\n actionQueue: actionQueue,\n assetPrefix: assetPrefix,\n globalError: globalErrorState\n });\n // At the very top level, use the default GlobalError component as the final fallback.\n // When the app router itself fails, which means the framework itself fails, we show the default error.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_rooterrorboundary.default, {\n errorComponent: _globalerror.default,\n children: router\n });\n}\n_c3 = AppRouter;\nconst runtimeStyles = new Set();\nlet runtimeStyleChanged = new Set();\nglobalThis._N_E_STYLE_LOAD = function(href) {\n let len = runtimeStyles.size;\n runtimeStyles.add(href);\n if (runtimeStyles.size !== len) {\n runtimeStyleChanged.forEach((cb)=>cb());\n }\n // TODO figure out how to get a promise here\n // But maybe it's not necessary as react would block rendering until it's loaded\n return Promise.resolve();\n};\nfunction RuntimeStyles() {\n _s();\n const [, forceUpdate] = _react.default.useState(0);\n const renderedStylesSize = runtimeStyles.size;\n (0, _react.useEffect)(()=>{\n const changed = ()=>forceUpdate((c)=>c + 1);\n runtimeStyleChanged.add(changed);\n if (renderedStylesSize !== runtimeStyles.size) {\n changed();\n }\n return ()=>{\n runtimeStyleChanged.delete(changed);\n };\n }, [\n renderedStylesSize,\n forceUpdate\n ]);\n const dplId = false ? 0 : '';\n return [\n ...runtimeStyles\n ].map((href, i)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"stylesheet\",\n href: \"\" + href + dplId,\n // @ts-ignore\n precedence: \"next\"\n }, i));\n}\n_s(RuntimeStyles, \"Eht7Kgdrrgt5B4LSklQ7qDPo8Aw=\");\n_c4 = RuntimeStyles;\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=app-router.js.map\nvar _c, _c1, _c2, _c3, _c4;\n$RefreshReg$(_c, \"HistoryUpdater\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Router\");\n$RefreshReg$(_c3, \"AppRouter\");\n$RefreshReg$(_c4, \"RuntimeStyles\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQTZJZ0JBLG9CQUFvQjtlQUFwQkE7O0lBOUVBQyxpQkFBaUI7ZUFBakJBOztJQXdmaEIsT0EwQkM7ZUExQnVCQzs7SUFuZ0JSQyxhQUFhO2VBQWJBOzs7Ozs7NkVBNUNUOzJEQUtBO2dEQUV3QjsrQ0FFRzs2REFLM0I7NENBQ2lEO21DQUNsQzt5Q0FDTTtnREFDTzs4Q0FDRjs2Q0FDRDtnREFDRzs0Q0FDSjt5Q0FDSDtnREFDTTsrQ0FFRzsrQ0FNOUI7c0NBQzJEOzJDQUNwQjttQ0FDYjt3RkFDSDtrRkFDQztnREFDSTtBQUVuQyxNQUFNQyxnQkFFRixDQUFDO0FBRUUsU0FBU0QsY0FBY0UsR0FBUTtJQUNwQyxPQUFPQSxJQUFJQyxNQUFNLEtBQUtDLE9BQU9DLFFBQVEsQ0FBQ0YsTUFBTTtBQUM5QztBQVNPLFNBQVNMLGtCQUFrQlEsSUFBWTtJQUM1QyxrREFBa0Q7SUFDbEQsSUFBSUMsQ0FBQUEsR0FBQUEsT0FBQUEsS0FBQUEsRUFBTUgsT0FBT0ksU0FBUyxDQUFDQyxTQUFTLEdBQUc7UUFDckMsT0FBTztJQUNUO0lBRUEsSUFBSVA7SUFDSixJQUFJO1FBQ0ZBLE1BQU0sSUFBSVEsSUFBSUMsQ0FBQUEsR0FBQUEsYUFBQUEsV0FBQUEsRUFBWUwsT0FBT0YsT0FBT0MsUUFBUSxDQUFDQyxJQUFJO0lBQ3ZELEVBQUUsT0FBT00sR0FBRztRQUNWLDJFQUEyRTtRQUMzRSxrREFBa0Q7UUFDbEQsTUFBTSxxQkFFTCxDQUZLLElBQUlDLE1BQ1Asc0JBQW1CUCxPQUFLLCtDQURyQjttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSx1RUFBdUU7SUFDdkUsSUFBSVEsSUFBb0IsRUFBb0I7UUFDMUMsT0FBTztJQUNUO0lBRUEscURBQXFEO0lBQ3JELElBQUlkLGNBQWNFLE1BQU07UUFDdEIsT0FBTztJQUNUO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNlLGVBQWUsS0FJdkI7SUFKdUIsTUFDdEJDLGNBQWMsRUFHZixHQUp1QjtJQUt0QkMsQ0FBQUEsR0FBQUEsT0FBQUEsa0JBQUFBLEVBQW1CO1FBQ2pCLElBQUlMLEtBQXdDLEVBQUUsRUFJN0M7UUFFRCxNQUFNLEVBQUVVLElBQUksRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUUsR0FBR1I7UUFDeEMsTUFBTVMsZUFBZTtZQUNuQixHQUFJRixRQUFRRywwQkFBMEIsR0FBR3hCLE9BQU95QixPQUFPLENBQUNDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDbEUseUNBQXlDO1lBQ3pDLGtGQUFrRjtZQUNsRixpRkFBaUY7WUFDakZDLE1BQU07WUFDTkMsaUNBQWlDUjtRQUNuQztRQUNBLElBQ0VDLFFBQVFRLFdBQVcsSUFHbkJDLCtGQUYrRjtRQUMvRiwyREFBMkQ7UUFDM0RBLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0IsSUFBSXhCLElBQUlOLE9BQU9DLFFBQVEsQ0FBQ0MsSUFBSSxPQUFPb0IsY0FDckQ7WUFDQSxxSkFBcUo7WUFDckpELFFBQVFRLFdBQVcsR0FBRztZQUN0QjdCLE9BQU95QixPQUFPLENBQUNNLFNBQVMsQ0FBQ1IsY0FBYyxJQUFJRDtRQUM3QyxPQUFPO1lBQ0x0QixPQUFPeUIsT0FBTyxDQUFDTyxZQUFZLENBQUNULGNBQWMsSUFBSUQ7UUFDaEQ7SUFDRixHQUFHO1FBQUNSO0tBQWU7SUFFbkJtQixDQUFBQSxHQUFBQSxPQUFBQSxTQUFTLEVBQUM7UUFDUixxRUFBcUU7UUFDckUsdUVBQXVFO1FBQ3ZFLG1FQUFtRTtRQUNuRSw4REFBOEQ7UUFDOUQsSUFBSXZCLEtBQXVDLEVBQUUsRUFFNUM7SUFDSCxHQUFHO1FBQUNJLGVBQWVzQixPQUFPO1FBQUV0QixlQUFlTSxJQUFJO0tBQUM7SUFFaEQsT0FBTztBQUNUOztBQUVPLFNBQVMzQjtJQUNkLE9BQU87UUFDTDRDLFVBQVU7UUFDVkMsS0FBSztRQUNMQyxhQUFhO1FBQ2JDLE1BQU07UUFDTkMsY0FBYztRQUNkQyxnQkFBZ0IsSUFBSUM7UUFDcEJDLFNBQVM7UUFDVEMsYUFBYSxDQUFDO0lBQ2hCO0FBQ0Y7QUFFQSxTQUFTQywrQkFBK0JDLElBQVM7SUFDL0MsSUFBSUEsUUFBUSxNQUFNQSxPQUFPLENBQUM7SUFDMUIsTUFBTUMsZUFBZWhELE9BQU95QixPQUFPLENBQUNDLEtBQUs7SUFDekMsTUFBTUMsT0FBT3FCLGdCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxhQUFjckIsSUFBSTtJQUMvQixJQUFJQSxNQUFNO1FBQ1JvQixLQUFLcEIsSUFBSSxHQUFHQTtJQUNkO0lBQ0EsTUFBTUMsa0NBQ0pvQixnQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsYUFBY3BCLCtCQUErQjtJQUMvQyxJQUFJQSxpQ0FBaUM7UUFDbkNtQixLQUFLbkIsK0JBQStCLEdBQUdBO0lBQ3pDO0lBRUEsT0FBT21CO0FBQ1Q7QUFFQSxTQUFTRSxLQUFLLEtBSWI7SUFKYSxNQUNaQyxhQUFhLEVBR2QsR0FKYTtJQUtaLDZFQUE2RTtJQUM3RSw0RUFBNEU7SUFDNUUsa0RBQWtEO0lBQ2xELE1BQU1WLE9BQU9VLGtCQUFrQixPQUFPQSxjQUFjVixJQUFJLEdBQUc7SUFDM0QsTUFBTUMsZUFDSlMsa0JBQWtCLE9BQU9BLGNBQWNULFlBQVksR0FBRztJQUV4RCw2RUFBNkU7SUFDN0UsTUFBTVUsc0JBQXNCVixpQkFBaUIsT0FBT0EsZUFBZUQ7SUFFbkUsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSxzQ0FBc0M7SUFDdEMsT0FBT1ksQ0FBQUEsR0FBQUEsT0FBQUEsZ0JBQUFBLEVBQWlCWixNQUFNVztBQUNoQzs7QUFFQTs7Q0FFQyxHQUNELGdCQUFnQixLQVFmO0lBUmUsTUFDZEcsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLFdBQVcsRUFLWixHQVJlO0lBU2QsTUFBTTlCLFFBQVErQixDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZUg7SUFDN0IsTUFBTSxFQUFFaEMsWUFBWSxFQUFFLEdBQUdJO0lBQ3pCLG1FQUFtRTtJQUNuRSxNQUFNLEVBQUVnQyxZQUFZLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxPQUFBQSxPQUFBQSxFQUFRO1FBQ3pDLE1BQU05RCxNQUFNLElBQUlRLElBQ2RnQixjQUNBLE1BQTZCLEdBQUcsQ0FBVSxHQUFHdEIsT0FBT0MsUUFBUSxDQUFDQyxJQUFJO1FBR25FLE9BQU87WUFDTCw0REFBNEQ7WUFDNUR3RCxjQUFjNUQsSUFBSTRELFlBQVk7WUFDOUJDLFVBQVVFLENBQUFBLEdBQUFBLGFBQUFBLFdBQUFBLEVBQVkvRCxJQUFJNkQsUUFBUSxJQUM5QkcsQ0FBQUEsR0FBQUEsZ0JBQUFBLGNBQUFBLEVBQWVoRSxJQUFJNkQsUUFBUSxJQUMzQjdELElBQUk2RCxRQUFRO1FBQ2xCO0lBQ0YsR0FBRztRQUFDckM7S0FBYTtJQUVqQixJQUFJWixJQUFvQixFQUFtQjtRQUN6QyxzREFBc0Q7UUFDdEQsTUFBTSxFQUFFcUQsS0FBSyxFQUFFQyxhQUFhLEVBQUU1QyxJQUFJLEVBQUUsR0FBR007UUFFdkMsNEZBQTRGO1FBQzVGLHNEQUFzRDtRQUN0RE8sQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtZQUNSLDBDQUEwQztZQUMxQyx1R0FBdUc7WUFDdkcsbUNBQW1DO1lBQ25DakMsT0FBT2lFLEVBQUUsR0FBRztnQkFDVkMsUUFBUUMsbUJBQUFBLHVCQUF1QjtnQkFDL0JKO2dCQUNBQztnQkFDQTVDO1lBQ0Y7UUFDRixHQUFHO1lBQUMyQztZQUFPQztZQUFlNUM7U0FBSztJQUNqQztJQUVBYSxDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1IsMERBQTBEO1FBQzFELHVGQUF1RjtRQUN2RixxRUFBcUU7UUFDckUsd0dBQXdHO1FBQ3hHLFNBQVNtQyxlQUFlQyxLQUEwQjtnQkFHN0NyRTtZQUZILElBQ0UsQ0FBQ3FFLE1BQU1DLFNBQVMsSUFDaEIsR0FBQ3RFLHdCQUFBQSxPQUFPeUIsT0FBTyxDQUFDQyxLQUFBQSxLQUFLLGdCQUFwQjFCLHNCQUFzQjRCLCtCQUFBQSxHQUN2QjtnQkFDQTtZQUNGO1lBRUEsdUdBQXVHO1lBQ3ZHLHFIQUFxSDtZQUNySCw4QkFBOEI7WUFDOUIvQixjQUFjMEUsY0FBYyxHQUFHcEQ7WUFFL0JxRCxDQUFBQSxHQUFBQSxnQkFBQUEsdUJBQUFBLEVBQXdCO2dCQUN0QkMsTUFBTUMsb0JBQUFBLGNBQWM7Z0JBQ3BCNUUsS0FBSyxJQUFJUSxJQUFJTixPQUFPQyxRQUFRLENBQUNDLElBQUk7Z0JBQ2pDa0IsTUFBTXBCLE9BQU95QixPQUFPLENBQUNDLEtBQUssQ0FBQ0UsK0JBQStCO1lBQzVEO1FBQ0Y7UUFFQTVCLE9BQU8yRSxnQkFBZ0IsQ0FBQyxZQUFZUDtRQUVwQyxPQUFPO1lBQ0xwRSxPQUFPNEUsbUJBQW1CLENBQUMsWUFBWVI7UUFDekM7SUFDRixHQUFHLEVBQUU7SUFFTG5DLENBQUFBLEdBQUFBLE9BQUFBLFNBQVMsRUFBQztRQUNSLGlGQUFpRjtRQUNqRix3Q0FBd0M7UUFDeEMsU0FBUzRDLHdCQUNQUixLQUF5QztZQUV6QyxNQUFNUyxRQUFRLFlBQVlULFFBQVFBLE1BQU1VLE1BQU0sR0FBR1YsTUFBTVMsS0FBSztZQUM1RCxJQUFJRSxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQkYsUUFBUTtnQkFDMUJULE1BQU1ZLGNBQWM7Z0JBQ3BCLE1BQU1uRixNQUFNb0YsQ0FBQUEsR0FBQUEsVUFBQUEsdUJBQUFBLEVBQXdCSjtnQkFDcEMsTUFBTUssZUFBZUMsQ0FBQUEsR0FBQUEsVUFBQUEsd0JBQUFBLEVBQXlCTjtnQkFDOUMsb0VBQW9FO2dCQUNwRSxtQ0FBbUM7Z0JBQ25DLElBQUlLLGlCQUFpQkUsZUFBQUEsWUFBWSxDQUFDQyxJQUFJLEVBQUU7b0JBQ3RDbkIsbUJBQUFBLHVCQUF1QixDQUFDbUIsSUFBSSxDQUFDeEYsS0FBSyxDQUFDO2dCQUNyQyxPQUFPO29CQUNMcUUsbUJBQUFBLHVCQUF1QixDQUFDb0IsT0FBTyxDQUFDekYsS0FBSyxDQUFDO2dCQUN4QztZQUNGO1FBQ0Y7UUFDQUUsT0FBTzJFLGdCQUFnQixDQUFDLFNBQVNFO1FBQ2pDN0UsT0FBTzJFLGdCQUFnQixDQUFDLHNCQUFzQkU7UUFFOUMsT0FBTztZQUNMN0UsT0FBTzRFLG1CQUFtQixDQUFDLFNBQVNDO1lBQ3BDN0UsT0FBTzRFLG1CQUFtQixDQUFDLHNCQUFzQkM7UUFDbkQ7SUFDRixHQUFHLEVBQUU7SUFFTCxzRUFBc0U7SUFDdEUsMEVBQTBFO0lBQzFFLHdFQUF3RTtJQUN4RSw2RUFBNkU7SUFDN0UsWUFBWTtJQUNaLEVBQUU7SUFDRixzRUFBc0U7SUFDdEUsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSx1QkFBdUI7SUFDdkIsTUFBTSxFQUFFeEQsT0FBTyxFQUFFLEdBQUdLO0lBQ3BCLElBQUlMLFFBQVFtRSxhQUFhLEVBQUU7UUFDekIsZ0hBQWdIO1FBQ2hILElBQUkzRixjQUFjMEUsY0FBYyxLQUFLakQsY0FBYztZQUNqRCxNQUFNckIsV0FBV0QsT0FBT0MsUUFBUTtZQUNoQyxJQUFJb0IsUUFBUVEsV0FBVyxFQUFFO2dCQUN2QjVCLFNBQVN3RixNQUFNLENBQUNuRTtZQUNsQixPQUFPO2dCQUNMckIsU0FBU3NGLE9BQU8sQ0FBQ2pFO1lBQ25CO1lBRUF6QixjQUFjMEUsY0FBYyxHQUFHakQ7UUFDakM7UUFDQSxtRUFBbUU7UUFDbkUsNEVBQTRFO1FBQzVFLCtCQUErQjtRQUMvQiwyRUFBMkU7UUFDM0Usd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixNQUFNb0Usb0JBQUFBLGtCQUFrQjtJQUMxQjtJQUVBekQsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLE1BQU0wRCxvQkFBb0IzRixPQUFPeUIsT0FBTyxDQUFDTSxTQUFTLENBQUM2RCxJQUFJLENBQUM1RixPQUFPeUIsT0FBTztRQUN0RSxNQUFNb0UsdUJBQXVCN0YsT0FBT3lCLE9BQU8sQ0FBQ08sWUFBWSxDQUFDNEQsSUFBSSxDQUMzRDVGLE9BQU95QixPQUFPO1FBR2hCLHdKQUF3SjtRQUN4SixNQUFNcUUsaUNBQWlDLENBQ3JDaEc7Z0JBSUVFO1lBRkYsTUFBTUUsT0FBT0YsT0FBT0MsUUFBUSxDQUFDQyxJQUFJO1lBQ2pDLE1BQU1rQixPQUFBQSxDQUNKcEIsd0JBQUFBLE9BQU95QixPQUFPLENBQUNDLEtBQUFBLEtBQUssZ0JBQXBCMUIsc0JBQXNCNEIsK0JBQStCO1lBRXZEbUUsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7Z0JBQ2R2QixDQUFBQSxHQUFBQSxnQkFBQUEsdUJBQUFBLEVBQXdCO29CQUN0QkMsTUFBTUMsb0JBQUFBLGNBQWM7b0JBQ3BCNUUsS0FBSyxJQUFJUSxJQUFJUixPQUFBQSxPQUFBQSxNQUFPSSxNQUFNQTtvQkFDMUJrQjtnQkFDRjtZQUNGO1FBQ0Y7UUFFQTs7OztLQUlDLEdBQ0RwQixPQUFPeUIsT0FBTyxDQUFDTSxTQUFTLEdBQUcsU0FBU0EsVUFDbENnQixJQUFTLEVBQ1RpRCxPQUFlLEVBQ2ZsRyxHQUF5QjtZQUV6QixxRUFBcUU7WUFDckUsSUFBSWlELENBQUFBLFFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLEtBQU1wQixJQUFBQSxNQUFRb0IsUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsS0FBTWtELEVBQUFBLEdBQUk7Z0JBQzFCLE9BQU9OLGtCQUFrQjVDLE1BQU1pRCxTQUFTbEc7WUFDMUM7WUFFQWlELE9BQU9ELCtCQUErQkM7WUFFdEMsSUFBSWpELEtBQUs7Z0JBQ1BnRywrQkFBK0JoRztZQUNqQztZQUVBLE9BQU82RixrQkFBa0I1QyxNQUFNaUQsU0FBU2xHO1FBQzFDO1FBRUE7Ozs7S0FJQyxHQUNERSxPQUFPeUIsT0FBTyxDQUFDTyxZQUFZLEdBQUcsU0FBU0EsYUFDckNlLElBQVMsRUFDVGlELE9BQWUsRUFDZmxHLEdBQXlCO1lBRXpCLHFFQUFxRTtZQUNyRSxJQUFJaUQsQ0FBQUEsUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsS0FBTXBCLElBQUFBLE1BQVFvQixRQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxLQUFNa0QsRUFBQUEsR0FBSTtnQkFDMUIsT0FBT0oscUJBQXFCOUMsTUFBTWlELFNBQVNsRztZQUM3QztZQUNBaUQsT0FBT0QsK0JBQStCQztZQUV0QyxJQUFJakQsS0FBSztnQkFDUGdHLCtCQUErQmhHO1lBQ2pDO1lBQ0EsT0FBTytGLHFCQUFxQjlDLE1BQU1pRCxTQUFTbEc7UUFDN0M7UUFFQTs7OztLQUlDLEdBQ0QsTUFBTW9HLGFBQWEsQ0FBQzdCO1lBQ2xCLElBQUksQ0FBQ0EsTUFBTTNDLEtBQUssRUFBRTtnQkFDaEIsK0lBQStJO2dCQUMvSTtZQUNGO1lBRUEsNkVBQTZFO1lBQzdFLElBQUksQ0FBQzJDLE1BQU0zQyxLQUFLLENBQUNDLElBQUksRUFBRTtnQkFDckIzQixPQUFPQyxRQUFRLENBQUNrRyxNQUFNO2dCQUN0QjtZQUNGO1lBRUEsZ0hBQWdIO1lBQ2hILG9FQUFvRTtZQUNwRUosQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7Z0JBQ2RLLENBQUFBLEdBQUFBLG1CQUFBQSxzQkFBQUEsRUFDRXBHLE9BQU9DLFFBQVEsQ0FBQ0MsSUFBSSxFQUNwQm1FLE1BQU0zQyxLQUFLLENBQUNFLCtCQUErQjtZQUUvQztRQUNGO1FBRUEsOENBQThDO1FBQzlDNUIsT0FBTzJFLGdCQUFnQixDQUFDLFlBQVl1QjtRQUNwQyxPQUFPO1lBQ0xsRyxPQUFPeUIsT0FBTyxDQUFDTSxTQUFTLEdBQUc0RDtZQUMzQjNGLE9BQU95QixPQUFPLENBQUNPLFlBQVksR0FBRzZEO1lBQzlCN0YsT0FBTzRFLG1CQUFtQixDQUFDLFlBQVlzQjtRQUN6QztJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU0sRUFBRW5DLEtBQUssRUFBRTNDLElBQUksRUFBRWdCLE9BQU8sRUFBRWlFLGlCQUFpQixFQUFFLEdBQUczRTtJQUVwRCxNQUFNNEUsZUFBZTFDLENBQUFBLEdBQUFBLE9BQUFBLE9BQUFBLEVBQVE7UUFDM0IsT0FBTzJDLENBQUFBLEdBQUFBLGlCQUFBQSxlQUFBQSxFQUFnQnhDLE9BQU8zQyxJQUFJLENBQUMsRUFBRTtJQUN2QyxHQUFHO1FBQUMyQztRQUFPM0M7S0FBSztJQUVoQix5Q0FBeUM7SUFDekMsTUFBTW9GLGFBQWE1QyxDQUFBQSxHQUFBQSxPQUFBQSxPQUFPLEVBQUM7UUFDekIsT0FBTzZDLENBQUFBLEdBQUFBLG9CQUFBQSxpQkFBQUEsRUFBa0JyRjtJQUMzQixHQUFHO1FBQUNBO0tBQUs7SUFFVCxNQUFNc0Ysc0JBQXNCOUMsQ0FBQUEsR0FBQUEsT0FBQUEsT0FBTyxFQUFDO1FBQ2xDLE9BQU87WUFDTCtDLFlBQVl2RjtZQUNad0YsaUJBQWlCN0M7WUFDakI4QyxtQkFBbUI7WUFDbkIsNkJBQTZCO1lBQzdCLDhFQUE4RTtZQUM5RS9HLEtBQUt3QjtRQUNQO0lBQ0YsR0FBRztRQUFDRjtRQUFNMkM7UUFBT3pDO0tBQWE7SUFFOUIsTUFBTXdGLDRCQUE0QmxELENBQUFBLEdBQUFBLE9BQUFBLE9BQU8sRUFBQztRQUN4QyxPQUFPO1lBQ0x4QztZQUNBaUY7WUFDQWpFO1FBQ0Y7SUFDRixHQUFHO1FBQUNoQjtRQUFNaUY7UUFBbUJqRTtLQUFRO0lBRXJDLElBQUlJO0lBQ0osSUFBSThELGlCQUFpQixNQUFNO1FBQ3pCLDBEQUEwRDtRQUMxRCwwRUFBMEU7UUFDMUUsb0VBQW9FO1FBQ3BFLEVBQUU7UUFDRix3RUFBd0U7UUFDeEUsdUJBQXVCO1FBQ3ZCLE1BQU0sQ0FBQ3BELGVBQWU2RCxTQUFTQywyQkFBMkIsR0FBR1Y7UUFFN0Q5RCxPQUFBQSxXQUFBQSxHQUNFLHFCQUFDUyxNQUFBQTtZQUtDQyxlQUFlQTtXQUhiLE1BQzZCLEdBQUc4RCxDQUEwQkEsR0FBR0Q7SUFLckUsT0FBTztRQUNMdkUsT0FBTztJQUNUO0lBRUEsSUFBSXlFLFVBQUFBLFdBQUFBLEdBQ0Ysc0JBQUNDLGtCQUFBQSxnQkFBZ0I7O1lBQ2QxRTswQkFJRCxxQkFBQzJFLG9CQUFBQSxrQkFBa0I7MEJBQUVwRCxNQUFNekIsR0FBRzs7MEJBQzlCLHFCQUFDOEUsb0JBQUFBLGtCQUFrQjtnQkFBQ2hHLE1BQU1BOzs7O0lBSTlCLElBQUlWLElBQW9CLEVBQW1CO1FBQ3pDLGtFQUFrRTtRQUNsRSxpR0FBaUc7UUFDakcsaUJBQWlCO1FBQ2pCLDhDQUE4QztRQUM5Qyx3QkFBd0I7UUFDeEIsa0VBQWtFO1FBQ2xFLElBQUksSUFBNkIsRUFBRTtZQUNqQyxNQUFNLEVBQUUyRyxpQ0FBaUMsRUFBRSxHQUN6Q0MsbUJBQU9BLENBQUMsMEpBQTBDO1lBQ3BETCxVQUFBQSxXQUFBQSxHQUNFLHFCQUFDSSxtQ0FBQUE7MEJBQ0VKOztRQUdQO1FBQ0EsTUFBTU0sY0FFRkQsZ0xBQ087UUFFWEwsVUFBQUEsV0FBQUEsR0FDRSxxQkFBQ00sYUFBQUE7WUFBWWhFLGFBQWFBO1lBQWFDLGFBQWFBO3NCQUNqRHlEOztJQUdQLE9BQU8sRUFTTjtJQUVELHFCQUNFOzswQkFDRSxxQkFBQ3BHLGdCQUFBQTtnQkFBZUMsZ0JBQWdCWTs7MEJBQ2hDLHFCQUFDa0csZUFBQUEsQ0FBQUE7MEJBQ0QscUJBQUNDLGlDQUFBQSxpQkFBaUIsQ0FBQ0MsUUFBUTtnQkFBQ0MsT0FBT3ZCOzBCQUNqQyxtQ0FBQ3dCLGlDQUFBQSxlQUFlLENBQUNGLFFBQVE7b0JBQUNDLE9BQU9wRTs4QkFDL0IsbUNBQUNzRSxpQ0FBQUEsbUJBQW1CLENBQUNILFFBQVE7d0JBQUNDLE9BQU9yRTtrQ0FDbkMsbUNBQUN3RSwrQkFBQUEseUJBQXlCLENBQUNKLFFBQVE7NEJBQ2pDQyxPQUFPakI7c0NBT1AsbUNBQUNxQiwrQkFBQUEsZ0JBQWdCLENBQUNMLFFBQVE7Z0NBQUNDLE9BQU81RCxtQkFBQUEsdUJBQXVCOzBDQUN2RCxtQ0FBQ2lFLCtCQUFBQSxtQkFBbUIsQ0FBQ04sUUFBUTtvQ0FBQ0MsT0FBT3JCOzhDQUNsQ087Ozs7Ozs7OztBQVNuQjtNQW5YUzVEO0FBcVhNLG1CQUFtQixLQVFqQztJQVJpQyxNQUNoQ0MsV0FBVyxFQUNYK0UsZ0JBQWdCLEVBQ2hCOUUsV0FBVyxFQUtaLEdBUmlDO0lBU2hDK0UsQ0FBQUEsR0FBQUEsbUJBQUFBLG9CQUFBQTtJQUVBLE1BQU1wRSxTQUFBQSxXQUFBQSxHQUNKLHFCQUFDYixRQUFBQTtRQUNDQyxhQUFhQTtRQUNiQyxhQUFhQTtRQUNiQyxhQUFhNkU7O0lBSWpCLHNGQUFzRjtJQUN0Rix1R0FBdUc7SUFDdkcscUJBQ0UscUJBQUNaLG1CQUFBQSxPQUFpQjtRQUFDQyxnQkFBZ0JhLGFBQUFBLE9BQWtCO2tCQUNsRHJFOztBQUdQO01BMUJ3QnZFO0FBNEJ4QixNQUFNNkksZ0JBQWdCLElBQUlDO0FBQzFCLElBQUlDLHNCQUFzQixJQUFJRDtBQUU5QkUsV0FBV0MsZUFBZSxHQUFHLFNBQVUxSSxJQUFZO0lBQ2pELElBQUkySSxNQUFNTCxjQUFjTSxJQUFJO0lBQzVCTixjQUFjTyxHQUFHLENBQUM3STtJQUNsQixJQUFJc0ksY0FBY00sSUFBSSxLQUFLRCxLQUFLO1FBQzlCSCxvQkFBb0JNLE9BQU8sQ0FBQyxDQUFDQyxLQUFPQTtJQUN0QztJQUNBLDRDQUE0QztJQUM1QyxnRkFBZ0Y7SUFDaEYsT0FBT0MsUUFBUUMsT0FBTztBQUN4QjtBQUVBOztJQUNFLE1BQU0sR0FBR0MsWUFBWSxHQUFHQyxPQUFBQSxPQUFLLENBQUNDLFFBQVEsQ0FBQztJQUN2QyxNQUFNQyxxQkFBcUJmLGNBQWNNLElBQUk7SUFDN0M3RyxDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1IsTUFBTXVILFVBQVUsSUFBTUosWUFBWSxDQUFDSyxJQUFNQSxJQUFJO1FBQzdDZixvQkFBb0JLLEdBQUcsQ0FBQ1M7UUFDeEIsSUFBSUQsdUJBQXVCZixjQUFjTSxJQUFJLEVBQUU7WUFDN0NVO1FBQ0Y7UUFDQSxPQUFPO1lBQ0xkLG9CQUFvQmdCLE1BQU0sQ0FBQ0Y7UUFDN0I7SUFDRixHQUFHO1FBQUNEO1FBQW9CSDtLQUFZO0lBRXBDLE1BQU1PLFFBQVFqSixNQUE4QixHQUN2QyxDQUFxQyxHQUN0QztJQUNKLE9BQU87V0FBSThIO0tBQWMsQ0FBQ3FCLEdBQUcsQ0FBQyxDQUFDM0osTUFBTTRKLElBQUFBLFdBQUFBLEdBQ25DLHFCQUFDQyxRQUFBQTtZQUVDQyxLQUFJO1lBQ0o5SixNQUFPLEtBQUVBLE9BQU95SjtZQUNoQixhQUFhO1lBQ2JNLFlBQVc7V0FKTkg7QUFVWDs7TUE3QlNsQyIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICBzdGFydFRyYW5zaXRpb24sXG4gIHVzZUluc2VydGlvbkVmZmVjdCxcbiAgdXNlRGVmZXJyZWRWYWx1ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBcHBSb3V0ZXJDb250ZXh0LFxuICBMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBBQ1RJT05fUkVTVE9SRSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7XG4gIFNlYXJjaFBhcmFtc0NvbnRleHQsXG4gIFBhdGhuYW1lQ29udGV4dCxcbiAgUGF0aFBhcmFtc0NvbnRleHQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiwgdXNlQWN0aW9uUXVldWUgfSBmcm9tICcuL3VzZS1hY3Rpb24tcXVldWUnXG5pbXBvcnQgeyBpc0JvdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdCdcbmltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IEFwcFJvdXRlckFubm91bmNlciB9IGZyb20gJy4vYXBwLXJvdXRlci1hbm5vdW5jZXInXG5pbXBvcnQgeyBSZWRpcmVjdEJvdW5kYXJ5IH0gZnJvbSAnLi9yZWRpcmVjdC1ib3VuZGFyeSdcbmltcG9ydCB7IGZpbmRIZWFkSW5DYWNoZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZmluZC1oZWFkLWluLWNhY2hlJ1xuaW1wb3J0IHsgdW5yZXNvbHZlZFRoZW5hYmxlIH0gZnJvbSAnLi91bnJlc29sdmVkLXRoZW5hYmxlJ1xuaW1wb3J0IHsgcmVtb3ZlQmFzZVBhdGggfSBmcm9tICcuLi9yZW1vdmUtYmFzZS1wYXRoJ1xuaW1wb3J0IHsgaGFzQmFzZVBhdGggfSBmcm9tICcuLi9oYXMtYmFzZS1wYXRoJ1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRQYXJhbXMgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL2NvbXB1dGUtY2hhbmdlZC1wYXRoJ1xuaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgdXNlTmF2RmFpbHVyZUhhbmRsZXIgfSBmcm9tICcuL25hdi1mYWlsdXJlLWhhbmRsZXInXG5pbXBvcnQge1xuICBkaXNwYXRjaFRyYXZlcnNlQWN0aW9uLFxuICBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZSxcbiAgdHlwZSBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSxcbiAgdHlwZSBHbG9iYWxFcnJvclN0YXRlLFxufSBmcm9tICcuL2FwcC1yb3V0ZXItaW5zdGFuY2UnXG5pbXBvcnQgeyBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IsIGdldFVSTEZyb21SZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdCdcbmltcG9ydCB7IGlzUmVkaXJlY3RFcnJvciwgUmVkaXJlY3RUeXBlIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcbmltcG9ydCB7IHBpbmdWaXNpYmxlTGlua3MgfSBmcm9tICcuL2xpbmtzJ1xuaW1wb3J0IFJvb3RFcnJvckJvdW5kYXJ5IGZyb20gJy4vZXJyb3JzL3Jvb3QtZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgRGVmYXVsdEdsb2JhbEVycm9yIGZyb20gJy4vYnVpbHRpbi9nbG9iYWwtZXJyb3InXG5pbXBvcnQgeyBSb290TGF5b3V0Qm91bmRhcnkgfSBmcm9tICcuLi8uLi9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbXBvbmVudHMnXG5cbmNvbnN0IGdsb2JhbE11dGFibGU6IHtcbiAgcGVuZGluZ01wYVBhdGg/OiBzdHJpbmdcbn0gPSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbFVSTCh1cmw6IFVSTCkge1xuICByZXR1cm4gdXJsLm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpblxufVxuXG4vKipcbiAqIEdpdmVuIGEgbGluayBocmVmLCBjb25zdHJ1Y3RzIHRoZSBVUkwgdGhhdCBzaG91bGQgYmUgcHJlZmV0Y2hlZC4gUmV0dXJucyBudWxsXG4gKiBpbiBjYXNlcyB3aGVyZSBwcmVmZXRjaGluZyBzaG91bGQgYmUgZGlzYWJsZWQsIGxpa2UgZXh0ZXJuYWwgVVJMcywgb3JcbiAqIGR1cmluZyBkZXZlbG9wbWVudC5cbiAqIEBwYXJhbSBocmVmIFRoZSBocmVmIHBhc3NlZCB0byA8TGluaz4sIHJvdXRlci5wcmVmZXRjaCgpLCBvciBzaW1pbGFyXG4gKiBAcmV0dXJucyBBIFVSTCBvYmplY3QgdG8gcHJlZmV0Y2gsIG9yIG51bGwgaWYgcHJlZmV0Y2hpbmcgc2hvdWxkIGJlIGRpc2FibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmVmZXRjaFVSTChocmVmOiBzdHJpbmcpOiBVUkwgfCBudWxsIHtcbiAgLy8gRG9uJ3QgcHJlZmV0Y2ggZm9yIGJvdHMgYXMgdGhleSBkb24ndCBuYXZpZ2F0ZS5cbiAgaWYgKGlzQm90KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgdXJsOiBVUkxcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKGFkZEJhc2VQYXRoKGhyZWYpLCB3aW5kb3cubG9jYXRpb24uaHJlZilcbiAgfSBjYXRjaCAoXykge1xuICAgIC8vIFRPRE86IERvZXMgdGhpcyBuZWVkIHRvIHRocm93IG9yIGNhbiB3ZSBqdXN0IGNvbnNvbGUuZXJyb3IgaW5zdGVhZD8gRG9lc1xuICAgIC8vIGFueW9uZSByZWx5IG9uIHRoaXMgdGhyb3dpbmc/IChTZWVtcyB1bmxpa2VseS4pXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBwcmVmZXRjaCAnJHtocmVmfScgYmVjYXVzZSBpdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVVJMLmBcbiAgICApXG4gIH1cblxuICAvLyBEb24ndCBwcmVmZXRjaCBkdXJpbmcgZGV2ZWxvcG1lbnQgKGltcHJvdmVzIGNvbXBpbGF0aW9uIHBlcmZvcm1hbmNlKVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gRXh0ZXJuYWwgdXJscyBjYW4ndCBiZSBwcmVmZXRjaGVkIGluIHRoZSBzYW1lIHdheS5cbiAgaWYgKGlzRXh0ZXJuYWxVUkwodXJsKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbmZ1bmN0aW9uIEhpc3RvcnlVcGRhdGVyKHtcbiAgYXBwUm91dGVyU3RhdGUsXG59OiB7XG4gIGFwcFJvdXRlclN0YXRlOiBBcHBSb3V0ZXJTdGF0ZVxufSkge1xuICB1c2VJbnNlcnRpb25FZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgICAvLyBjbGVhciBwZW5kaW5nIFVSTCBhcyBuYXZpZ2F0aW9uIGlzIG5vIGxvbmdlclxuICAgICAgLy8gaW4gZmxpZ2h0XG4gICAgICB3aW5kb3cubmV4dC5fX3BlbmRpbmdVcmwgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IHRyZWUsIHB1c2hSZWYsIGNhbm9uaWNhbFVybCB9ID0gYXBwUm91dGVyU3RhdGVcbiAgICBjb25zdCBoaXN0b3J5U3RhdGUgPSB7XG4gICAgICAuLi4ocHVzaFJlZi5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA/IHdpbmRvdy5oaXN0b3J5LnN0YXRlIDoge30pLFxuICAgICAgLy8gSWRlbnRpZmllciBpcyBzaG9ydGVuZWQgaW50ZW50aW9uYWxseS5cbiAgICAgIC8vIF9fTkEgaXMgdXNlZCB0byBpZGVudGlmeSBpZiB0aGUgaGlzdG9yeSBlbnRyeSBjYW4gYmUgaGFuZGxlZCBieSB0aGUgYXBwLXJvdXRlci5cbiAgICAgIC8vIF9fTiBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBvbGQgcm91dGVyLlxuICAgICAgX19OQTogdHJ1ZSxcbiAgICAgIF9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUU6IHRyZWUsXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHB1c2hSZWYucGVuZGluZ1B1c2ggJiZcbiAgICAgIC8vIFNraXAgcHVzaGluZyBhbiBhZGRpdGlvbmFsIGhpc3RvcnkgZW50cnkgaWYgdGhlIGNhbm9uaWNhbFVybCBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCB1cmwuXG4gICAgICAvLyBUaGlzIG1pcnJvcnMgdGhlIGJyb3dzZXIgYmVoYXZpb3IgZm9yIG5vcm1hbCBuYXZpZ2F0aW9uLlxuICAgICAgY3JlYXRlSHJlZkZyb21VcmwobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpICE9PSBjYW5vbmljYWxVcmxcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBtdXRhdGVzIFJlYWN0IHN0YXRlLCBwdXNoUmVmIGlzIG92ZXJ3cml0dGVuIHRvIGVuc3VyZSBhZGRpdGlvbmFsIHB1c2gvcmVwbGFjZSBjYWxscyBkbyBub3QgdHJpZ2dlciBhbiBhZGRpdGlvbmFsIGhpc3RvcnkgZW50cnkuXG4gICAgICBwdXNoUmVmLnBlbmRpbmdQdXNoID0gZmFsc2VcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCBjYW5vbmljYWxVcmwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCBjYW5vbmljYWxVcmwpXG4gICAgfVxuICB9LCBbYXBwUm91dGVyU3RhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIE5leHQtVXJsIGFuZCB0aGUgYmFzZSB0cmVlIG1heSBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhIHByZWZldGNoXG4gICAgLy8gdGFzay4gUmUtcHJlZmV0Y2ggYWxsIHZpc2libGUgbGlua3Mgd2l0aCB0aGUgdXBkYXRlZCB2YWx1ZXMuIEluIG1vc3RcbiAgICAvLyBjYXNlcywgdGhpcyB3aWxsIG5vdCByZXN1bHQgaW4gYW55IG5ldyBuZXR3b3JrIHJlcXVlc3RzLCBvbmx5IGlmXG4gICAgLy8gdGhlIHByZWZldGNoIHJlc3VsdCBhY3R1YWxseSB2YXJpZXMgb24gb25lIG9mIHRoZXNlIGlucHV0cy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFKSB7XG4gICAgICBwaW5nVmlzaWJsZUxpbmtzKGFwcFJvdXRlclN0YXRlLm5leHRVcmwsIGFwcFJvdXRlclN0YXRlLnRyZWUpXG4gICAgfVxuICB9LCBbYXBwUm91dGVyU3RhdGUubmV4dFVybCwgYXBwUm91dGVyU3RhdGUudHJlZV0pXG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKCk6IENhY2hlTm9kZSB7XG4gIHJldHVybiB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcnNjOiBudWxsLFxuICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgIGhlYWQ6IG51bGwsXG4gICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgbG9hZGluZzogbnVsbCxcbiAgICBuYXZpZ2F0ZWRBdDogLTEsXG4gIH1cbn1cblxuZnVuY3Rpb24gY29weU5leHRKc0ludGVybmFsSGlzdG9yeVN0YXRlKGRhdGE6IGFueSkge1xuICBpZiAoZGF0YSA9PSBudWxsKSBkYXRhID0ge31cbiAgY29uc3QgY3VycmVudFN0YXRlID0gd2luZG93Lmhpc3Rvcnkuc3RhdGVcbiAgY29uc3QgX19OQSA9IGN1cnJlbnRTdGF0ZT8uX19OQVxuICBpZiAoX19OQSkge1xuICAgIGRhdGEuX19OQSA9IF9fTkFcbiAgfVxuICBjb25zdCBfX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFID1cbiAgICBjdXJyZW50U3RhdGU/Ll9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUVcbiAgaWYgKF9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUpIHtcbiAgICBkYXRhLl9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUgPSBfX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBIZWFkKHtcbiAgaGVhZENhY2hlTm9kZSxcbn06IHtcbiAgaGVhZENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbFxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIC8vIElmIHRoaXMgc2VnbWVudCBoYXMgYSBgcHJlZmV0Y2hIZWFkYCwgaXQncyB0aGUgc3RhdGljYWxseSBwcmVmZXRjaGVkIGRhdGEuXG4gIC8vIFdlIHNob3VsZCB1c2UgdGhhdCBvbiBpbml0aWFsIHJlbmRlciBpbnN0ZWFkIG9mIGBoZWFkYC4gVGhlbiB3ZSdsbCBzd2l0Y2hcbiAgLy8gdG8gYGhlYWRgIHdoZW4gdGhlIGR5bmFtaWMgcmVzcG9uc2Ugc3RyZWFtcyBpbi5cbiAgY29uc3QgaGVhZCA9IGhlYWRDYWNoZU5vZGUgIT09IG51bGwgPyBoZWFkQ2FjaGVOb2RlLmhlYWQgOiBudWxsXG4gIGNvbnN0IHByZWZldGNoSGVhZCA9XG4gICAgaGVhZENhY2hlTm9kZSAhPT0gbnVsbCA/IGhlYWRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkIDogbnVsbFxuXG4gIC8vIElmIG5vIHByZWZldGNoIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGVuIHdlIGdvIHN0cmFpZ2h0IHRvIHJlbmRlcmluZyBgaGVhZGAuXG4gIGNvbnN0IHJlc29sdmVkUHJlZmV0Y2hSc2MgPSBwcmVmZXRjaEhlYWQgIT09IG51bGwgPyBwcmVmZXRjaEhlYWQgOiBoZWFkXG5cbiAgLy8gV2UgdXNlIGB1c2VEZWZlcnJlZFZhbHVlYCB0byBoYW5kbGUgc3dpdGNoaW5nIGJldHdlZW4gdGhlIHByZWZldGNoZWQgYW5kXG4gIC8vIGZpbmFsIHZhbHVlcy4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyByZXR1cm5lZCBvbiBpbml0aWFsIHJlbmRlciwgdGhlbiBpdFxuICAvLyByZS1yZW5kZXJzIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50LlxuICByZXR1cm4gdXNlRGVmZXJyZWRWYWx1ZShoZWFkLCByZXNvbHZlZFByZWZldGNoUnNjKVxufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgcm91dGVyIHRoYXQgd3JhcHMgdGhlIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMuXG4gKi9cbmZ1bmN0aW9uIFJvdXRlcih7XG4gIGFjdGlvblF1ZXVlLFxuICBhc3NldFByZWZpeCxcbiAgZ2xvYmFsRXJyb3IsXG59OiB7XG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZVxuICBhc3NldFByZWZpeDogc3RyaW5nXG4gIGdsb2JhbEVycm9yOiBHbG9iYWxFcnJvclN0YXRlXG59KSB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQWN0aW9uUXVldWUoYWN0aW9uUXVldWUpXG4gIGNvbnN0IHsgY2Fub25pY2FsVXJsIH0gPSBzdGF0ZVxuICAvLyBBZGQgbWVtb2l6ZWQgcGF0aG5hbWUvcXVlcnkgZm9yIHVzZVNlYXJjaFBhcmFtcyBhbmQgdXNlUGF0aG5hbWUuXG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zLCBwYXRobmFtZSB9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChcbiAgICAgIGNhbm9uaWNhbFVybCxcbiAgICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJ2h0dHA6Ly9uJyA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFRoaXMgaXMgdHVybmVkIGludG8gYSByZWFkb25seSBjbGFzcyBpbiBgdXNlU2VhcmNoUGFyYW1zYFxuICAgICAgc2VhcmNoUGFyYW1zOiB1cmwuc2VhcmNoUGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IGhhc0Jhc2VQYXRoKHVybC5wYXRobmFtZSlcbiAgICAgICAgPyByZW1vdmVCYXNlUGF0aCh1cmwucGF0aG5hbWUpXG4gICAgICAgIDogdXJsLnBhdGhuYW1lLFxuICAgIH1cbiAgfSwgW2Nhbm9uaWNhbFVybF0pXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBjb25zdCB7IGNhY2hlLCBwcmVmZXRjaENhY2hlLCB0cmVlIH0gPSBzdGF0ZVxuXG4gICAgLy8gVGhpcyBob29rIGlzIGluIGEgY29uZGl0aW9uYWwgYnV0IHRoYXQgaXMgb2sgYmVjYXVzZSBgcHJvY2Vzcy5lbnYuTk9ERV9FTlZgIG5ldmVyIGNoYW5nZXNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQWRkIGB3aW5kb3cubmRgIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gICAgICAvLyBUaGlzIGlzIG5vdCBtZWFudCBmb3IgdXNlIGluIGFwcGxpY2F0aW9ucyBhcyBjb25jdXJyZW50IHJlbmRlcmluZyB3aWxsIGFmZmVjdCB0aGUgY2FjaGUvdHJlZS9yb3V0ZXIuXG4gICAgICAvLyBAdHMtaWdub3JlIHRoaXMgaXMgZm9yIGRlYnVnZ2luZ1xuICAgICAgd2luZG93Lm5kID0ge1xuICAgICAgICByb3V0ZXI6IHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLFxuICAgICAgICBjYWNoZSxcbiAgICAgICAgcHJlZmV0Y2hDYWNoZSxcbiAgICAgICAgdHJlZSxcbiAgICAgIH1cbiAgICB9LCBbY2FjaGUsIHByZWZldGNoQ2FjaGUsIHRyZWVdKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBJZiB0aGUgYXBwIGlzIHJlc3RvcmVkIGZyb20gYmZjYWNoZSwgaXQncyBwb3NzaWJsZSB0aGF0XG4gICAgLy8gcHVzaFJlZi5tcGFOYXZpZ2F0aW9uIGlzIHRydWUsIHdoaWNoIHdvdWxkIG1lYW4gdGhhdCBhbnkgcmUtcmVuZGVyIG9mIHRoaXMgY29tcG9uZW50XG4gICAgLy8gd291bGQgdHJpZ2dlciB0aGUgbXBhIG5hdmlnYXRpb24gbG9naWMgYWdhaW4gZnJvbSB0aGUgbGluZXMgYmVsb3cuXG4gICAgLy8gVGhpcyB3aWxsIHJlc3RvcmUgdGhlIHJvdXRlciB0byB0aGUgaW5pdGlhbCBzdGF0ZSBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgYXBwIGlzIHJlc3RvcmVkIGZyb20gYmZjYWNoZS5cbiAgICBmdW5jdGlvbiBoYW5kbGVQYWdlU2hvdyhldmVudDogUGFnZVRyYW5zaXRpb25FdmVudCkge1xuICAgICAgaWYgKFxuICAgICAgICAhZXZlbnQucGVyc2lzdGVkIHx8XG4gICAgICAgICF3aW5kb3cuaGlzdG9yeS5zdGF0ZT8uX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRVxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDbGVhciB0aGUgcGVuZGluZ01wYVBhdGggdmFsdWUgc28gdGhhdCBhIHN1YnNlcXVlbnQgTVBBIG5hdmlnYXRpb24gdG8gdGhlIHNhbWUgVVJMIGNhbiBiZSB0cmlnZ2VyZWQuXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGlmIHRoZSBicm93c2VyIHJlc3RvcmVkIGZyb20gYmZjYWNoZSwgdGhlIHBlbmRpbmdNcGFQYXRoIHdvdWxkIHN0aWxsIGJlIHNldCB0byB0aGUgdmFsdWVcbiAgICAgIC8vIG9mIHRoZSBsYXN0IE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgZ2xvYmFsTXV0YWJsZS5wZW5kaW5nTXBhUGF0aCA9IHVuZGVmaW5lZFxuXG4gICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IEFDVElPTl9SRVNUT1JFLFxuICAgICAgICB1cmw6IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgICB0cmVlOiB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5fX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBoYW5kbGVQYWdlU2hvdylcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBoYW5kbGVQYWdlU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRW5zdXJlIHRoYXQgYW55IHJlZGlyZWN0IGVycm9ycyB0aGF0IGJ1YmJsZSB1cCBvdXRzaWRlIG9mIHRoZSBSZWRpcmVjdEJvdW5kYXJ5XG4gICAgLy8gYXJlIGNhdWdodCBhbmQgaGFuZGxlZCBieSB0aGUgcm91dGVyLlxuICAgIGZ1bmN0aW9uIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KFxuICAgICAgZXZlbnQ6IEVycm9yRXZlbnQgfCBQcm9taXNlUmVqZWN0aW9uRXZlbnRcbiAgICApIHtcbiAgICAgIGNvbnN0IGVycm9yID0gJ3JlYXNvbicgaW4gZXZlbnQgPyBldmVudC5yZWFzb24gOiBldmVudC5lcnJvclxuICAgICAgaWYgKGlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjb25zdCB1cmwgPSBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcilcbiAgICAgICAgY29uc3QgcmVkaXJlY3RUeXBlID0gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yKVxuICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBhY2Nlc3MgdGhlIHJvdXRlciBtZXRob2RzIGRpcmVjdGx5LCByYXRoZXIgdGhhblxuICAgICAgICAvLyBnbyB0aHJvdWdoIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICAgICAgICBpZiAocmVkaXJlY3RUeXBlID09PSBSZWRpcmVjdFR5cGUucHVzaCkge1xuICAgICAgICAgIHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLnB1c2godXJsLCB7fSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZS5yZXBsYWNlKHVybCwge30pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgaGFuZGxlVW5oYW5kbGVkUmVkaXJlY3QpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gV2hlbiBtcGFOYXZpZ2F0aW9uIGZsYWcgaXMgc2V0IGRvIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBuZXcgdXJsLlxuICAvLyBJbmZpbml0ZWx5IHN1c3BlbmQgYmVjYXVzZSB3ZSBkb24ndCBhY3R1YWxseSB3YW50IHRvIHJlcmVuZGVyIGFueSBjaGlsZFxuICAvLyBjb21wb25lbnRzIHdpdGggdGhlIG5ldyBVUkwgYW5kIGFueSBlbnRhbmdsZWQgc3RhdGUgdXBkYXRlcyBzaG91bGRuJ3RcbiAgLy8gY29tbWl0IGVpdGhlciAoZWc6IHVzZVRyYW5zaXRpb24gaXNQZW5kaW5nIHNob3VsZCBzdGF5IHRydWUgdW50aWwgdGhlIHBhZ2VcbiAgLy8gdW5sb2FkcykuXG4gIC8vXG4gIC8vIFRoaXMgaXMgYSBzaWRlIGVmZmVjdCBpbiByZW5kZXIuIERvbid0IHRyeSB0aGlzIGF0IGhvbWUsIGtpZHMuIEl0J3NcbiAgLy8gcHJvYmFibHkgc2FmZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHNpbmdsZXRvbiBjb21wb25lbnQgYW5kIGl0J3MgbmV2ZXJcbiAgLy8gaW4gPE9mZnNjcmVlbj4uIEF0IGxlYXN0IEkgaG9wZSBzby4gKEl0IHdpbGwgcnVuIHR3aWNlIGluIGRldiBzdHJpY3QgbW9kZSxcbiAgLy8gYnV0IHRoYXQncy4uLiBmaW5lPylcbiAgY29uc3QgeyBwdXNoUmVmIH0gPSBzdGF0ZVxuICBpZiAocHVzaFJlZi5tcGFOYXZpZ2F0aW9uKSB7XG4gICAgLy8gaWYgdGhlcmUncyBhIHJlLXJlbmRlciwgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGFub3RoZXIgcmVkaXJlY3QgaWYgb25lIGlzIGFscmVhZHkgaW4gZmxpZ2h0IHRvIHRoZSBzYW1lIFVSTFxuICAgIGlmIChnbG9iYWxNdXRhYmxlLnBlbmRpbmdNcGFQYXRoICE9PSBjYW5vbmljYWxVcmwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uXG4gICAgICBpZiAocHVzaFJlZi5wZW5kaW5nUHVzaCkge1xuICAgICAgICBsb2NhdGlvbi5hc3NpZ24oY2Fub25pY2FsVXJsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYXRpb24ucmVwbGFjZShjYW5vbmljYWxVcmwpXG4gICAgICB9XG5cbiAgICAgIGdsb2JhbE11dGFibGUucGVuZGluZ01wYVBhdGggPSBjYW5vbmljYWxVcmxcbiAgICB9XG4gICAgLy8gVE9ETy1BUFA6IFNob3VsZCB3ZSBsaXN0ZW4gdG8gbmF2aWdhdGVlcnJvciBoZXJlIHRvIGNhdGNoIGZhaWxlZFxuICAgIC8vIG5hdmlnYXRpb25zIHNvbWVob3c/IEFuZCBzaG91bGQgd2UgY2FsbCB3aW5kb3cuc3RvcCgpIGlmIGEgU1BBIG5hdmlnYXRpb25cbiAgICAvLyBzaG91bGQgaW50ZXJydXB0IGFuIE1QQSBvbmU/XG4gICAgLy8gTk9URTogVGhpcyBpcyBpbnRlbnRpb25hbGx5IHVzaW5nIGB0aHJvd2AgaW5zdGVhZCBvZiBgdXNlYCBiZWNhdXNlIHdlJ3JlXG4gICAgLy8gaW5zaWRlIGFuIGV4dGVybmFsbHkgbXV0YWJsZSBjb25kaXRpb24gKHB1c2hSZWYubXBhTmF2aWdhdGlvbiksIHdoaWNoXG4gICAgLy8gdmlvbGF0ZXMgdGhlIHJ1bGVzIG9mIGhvb2tzLlxuICAgIHRocm93IHVucmVzb2x2ZWRUaGVuYWJsZVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbFB1c2hTdGF0ZSA9IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZS5iaW5kKHdpbmRvdy5oaXN0b3J5KVxuICAgIGNvbnN0IG9yaWdpbmFsUmVwbGFjZVN0YXRlID0gd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlLmJpbmQoXG4gICAgICB3aW5kb3cuaGlzdG9yeVxuICAgIClcblxuICAgIC8vIEVuc3VyZSB0aGUgY2Fub25pY2FsIFVSTCBpbiB0aGUgTmV4dC5qcyBSb3V0ZXIgaXMgdXBkYXRlZCB3aGVuIHRoZSBVUkwgaXMgY2hhbmdlZCBzbyB0aGF0IGB1c2VQYXRobmFtZWAgYW5kIGB1c2VTZWFyY2hQYXJhbXNgIGhvbGQgdGhlIHB1c2hlZCB2YWx1ZXMuXG4gICAgY29uc3QgYXBwbHlVcmxGcm9tSGlzdG9yeVB1c2hSZXBsYWNlID0gKFxuICAgICAgdXJsOiBzdHJpbmcgfCBVUkwgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgIGNvbnN0IHRyZWU6IEZsaWdodFJvdXRlclN0YXRlIHwgdW5kZWZpbmVkID1cbiAgICAgICAgd2luZG93Lmhpc3Rvcnkuc3RhdGU/Ll9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUVcblxuICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgICAgICAgIHR5cGU6IEFDVElPTl9SRVNUT1JFLFxuICAgICAgICAgIHVybDogbmV3IFVSTCh1cmwgPz8gaHJlZiwgaHJlZiksXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF0Y2ggcHVzaFN0YXRlIHRvIGVuc3VyZSBleHRlcm5hbCBjaGFuZ2VzIHRvIHRoZSBoaXN0b3J5IGFyZSByZWZsZWN0ZWQgaW4gdGhlIE5leHQuanMgUm91dGVyLlxuICAgICAqIEVuc3VyZXMgTmV4dC5qcyBpbnRlcm5hbCBoaXN0b3J5IHN0YXRlIGlzIGNvcGllZCB0byB0aGUgbmV3IGhpc3RvcnkgZW50cnkuXG4gICAgICogRW5zdXJlcyB1c2VQYXRobmFtZSBhbmQgdXNlU2VhcmNoUGFyYW1zIGhvbGQgdGhlIG5ld2x5IHByb3ZpZGVkIHVybC5cbiAgICAgKi9cbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgPSBmdW5jdGlvbiBwdXNoU3RhdGUoXG4gICAgICBkYXRhOiBhbnksXG4gICAgICBfdW51c2VkOiBzdHJpbmcsXG4gICAgICB1cmw/OiBzdHJpbmcgfCBVUkwgfCBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAvLyBBdm9pZCBhIGxvb3Agd2hlbiBOZXh0LmpzIGludGVybmFscyB0cmlnZ2VyIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGVcbiAgICAgIGlmIChkYXRhPy5fX05BIHx8IGRhdGE/Ll9OKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFB1c2hTdGF0ZShkYXRhLCBfdW51c2VkLCB1cmwpXG4gICAgICB9XG5cbiAgICAgIGRhdGEgPSBjb3B5TmV4dEpzSW50ZXJuYWxIaXN0b3J5U3RhdGUoZGF0YSlcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICBhcHBseVVybEZyb21IaXN0b3J5UHVzaFJlcGxhY2UodXJsKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxQdXNoU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdGNoIHJlcGxhY2VTdGF0ZSB0byBlbnN1cmUgZXh0ZXJuYWwgY2hhbmdlcyB0byB0aGUgaGlzdG9yeSBhcmUgcmVmbGVjdGVkIGluIHRoZSBOZXh0LmpzIFJvdXRlci5cbiAgICAgKiBFbnN1cmVzIE5leHQuanMgaW50ZXJuYWwgaGlzdG9yeSBzdGF0ZSBpcyBjb3BpZWQgdG8gdGhlIG5ldyBoaXN0b3J5IGVudHJ5LlxuICAgICAqIEVuc3VyZXMgdXNlUGF0aG5hbWUgYW5kIHVzZVNlYXJjaFBhcmFtcyBob2xkIHRoZSBuZXdseSBwcm92aWRlZCB1cmwuXG4gICAgICovXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gcmVwbGFjZVN0YXRlKFxuICAgICAgZGF0YTogYW55LFxuICAgICAgX3VudXNlZDogc3RyaW5nLFxuICAgICAgdXJsPzogc3RyaW5nIHwgVVJMIHwgbnVsbFxuICAgICk6IHZvaWQge1xuICAgICAgLy8gQXZvaWQgYSBsb29wIHdoZW4gTmV4dC5qcyBpbnRlcm5hbHMgdHJpZ2dlciBwdXNoU3RhdGUvcmVwbGFjZVN0YXRlXG4gICAgICBpZiAoZGF0YT8uX19OQSB8fCBkYXRhPy5fTikge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgICAgfVxuICAgICAgZGF0YSA9IGNvcHlOZXh0SnNJbnRlcm5hbEhpc3RvcnlTdGF0ZShkYXRhKVxuXG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIGFwcGx5VXJsRnJvbUhpc3RvcnlQdXNoUmVwbGFjZSh1cmwpXG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBwb3BzdGF0ZSBldmVudCwgdGhpcyBpcyB1c2VkIHRvIGhhbmRsZSBiYWNrL2ZvcndhcmQgaW4gdGhlIGJyb3dzZXIuXG4gICAgICogQnkgZGVmYXVsdCBkaXNwYXRjaGVzIEFDVElPTl9SRVNUT1JFLCBob3dldmVyIGlmIHRoZSBoaXN0b3J5IGVudHJ5IHdhcyBub3QgcHVzaGVkL3JlcGxhY2VkIGJ5IGFwcC1yb3V0ZXIgaXQgd2lsbCByZWxvYWQgdGhlIHBhZ2UuXG4gICAgICogVGhhdCBjYXNlIGNhbiBoYXBwZW4gd2hlbiB0aGUgb2xkIHJvdXRlciBpbmplY3RlZCB0aGUgaGlzdG9yeSBlbnRyeS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvcFN0YXRlID0gKGV2ZW50OiBQb3BTdGF0ZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LnN0YXRlKSB7XG4gICAgICAgIC8vIFRPRE8tQVBQOiB0aGlzIGNhc2Ugb25seSBoYXBwZW5zIHdoZW4gcHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSB3YXMgY2FsbGVkIG91dHNpZGUgb2YgTmV4dC5qcy4gSXQgc2hvdWxkIHByb2JhYmx5IHJlbG9hZCB0aGUgcGFnZSBpbiB0aGlzIGNhc2UuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIGNhc2UgaGFwcGVucyB3aGVuIHRoZSBoaXN0b3J5IGVudHJ5IHdhcyBwdXNoZWQgYnkgdGhlIGBwYWdlc2Agcm91dGVyLlxuICAgICAgaWYgKCFldmVudC5zdGF0ZS5fX05BKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETy1BUFA6IElkZWFsbHkgdGhlIGJhY2sgYnV0dG9uIHNob3VsZCBub3QgdXNlIHN0YXJ0VHJhbnNpdGlvbiBhcyBpdCBzaG91bGQgYXBwbHkgdGhlIHVwZGF0ZXMgc3luY2hyb25vdXNseVxuICAgICAgLy8gV2l0aG91dCBzdGFydFRyYW5zaXRpb24gd29ya3MgaWYgdGhlIGNhY2hlIGlzIHRoZXJlIGZvciB0aGlzIHBhdGhcbiAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoVHJhdmVyc2VBY3Rpb24oXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgZXZlbnQuc3RhdGUuX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIHBvcHN0YXRlIGV2ZW50IHRvIGNhbGwgb25Qb3BzdGF0ZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBvblBvcFN0YXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgPSBvcmlnaW5hbFB1c2hTdGF0ZVxuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlID0gb3JpZ2luYWxSZXBsYWNlU3RhdGVcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIG9uUG9wU3RhdGUpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB7IGNhY2hlLCB0cmVlLCBuZXh0VXJsLCBmb2N1c0FuZFNjcm9sbFJlZiB9ID0gc3RhdGVcblxuICBjb25zdCBtYXRjaGluZ0hlYWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZmluZEhlYWRJbkNhY2hlKGNhY2hlLCB0cmVlWzFdKVxuICB9LCBbY2FjaGUsIHRyZWVdKVxuXG4gIC8vIEFkZCBtZW1vaXplZCBwYXRoUGFyYW1zIGZvciB1c2VQYXJhbXMuXG4gIGNvbnN0IHBhdGhQYXJhbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZ2V0U2VsZWN0ZWRQYXJhbXModHJlZSlcbiAgfSwgW3RyZWVdKVxuXG4gIGNvbnN0IGxheW91dFJvdXRlckNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50VHJlZTogdHJlZSxcbiAgICAgIHBhcmVudENhY2hlTm9kZTogY2FjaGUsXG4gICAgICBwYXJlbnRTZWdtZW50UGF0aDogbnVsbCxcbiAgICAgIC8vIFJvb3Qgbm9kZSBhbHdheXMgaGFzIGB1cmxgXG4gICAgICAvLyBQcm92aWRlZCBpbiBBcHBUcmVlQ29udGV4dCB0byBlbnN1cmUgaXQgY2FuIGJlIG92ZXJ3cml0dGVuIGluIGxheW91dC1yb3V0ZXJcbiAgICAgIHVybDogY2Fub25pY2FsVXJsLFxuICAgIH1cbiAgfSwgW3RyZWUsIGNhY2hlLCBjYW5vbmljYWxVcmxdKVxuXG4gIGNvbnN0IGdsb2JhbExheW91dFJvdXRlckNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJlZSxcbiAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmLFxuICAgICAgbmV4dFVybCxcbiAgICB9XG4gIH0sIFt0cmVlLCBmb2N1c0FuZFNjcm9sbFJlZiwgbmV4dFVybF0pXG5cbiAgbGV0IGhlYWRcbiAgaWYgKG1hdGNoaW5nSGVhZCAhPT0gbnVsbCkge1xuICAgIC8vIFRoZSBoZWFkIGlzIHdyYXBwZWQgaW4gYW4gZXh0cmEgY29tcG9uZW50IHNvIHdlIGNhbiB1c2VcbiAgICAvLyBgdXNlRGVmZXJyZWRWYWx1ZWAgdG8gc3dhcCBiZXR3ZWVuIHRoZSBwcmVmZXRjaGVkIGFuZCBmaW5hbCB2ZXJzaW9ucyBvZlxuICAgIC8vIHRoZSBoZWFkLiAoVGhpcyBpcyB3aGF0IExheW91dFJvdXRlciBkb2VzIGZvciBzZWdtZW50IGRhdGEsIHRvby4pXG4gICAgLy9cbiAgICAvLyBUaGUgYGtleWAgaXMgdXNlZCB0byByZW1vdW50IHRoZSBjb21wb25lbnQgd2hlbmV2ZXIgdGhlIGhlYWQgbW92ZXMgdG9cbiAgICAvLyBhIGRpZmZlcmVudCBzZWdtZW50LlxuICAgIGNvbnN0IFtoZWFkQ2FjaGVOb2RlLCBoZWFkS2V5LCBoZWFkS2V5V2l0aG91dFNlYXJjaFBhcmFtc10gPSBtYXRjaGluZ0hlYWRcblxuICAgIGhlYWQgPSAoXG4gICAgICA8SGVhZFxuICAgICAgICBrZXk9e1xuICAgICAgICAgIC8vIE5lY2Vzc2FyeSBmb3IgUFBSOiBvbWl0IHNlYXJjaCBwYXJhbXMgZnJvbSB0aGUga2V5IHRvIG1hdGNoIHByZXJlbmRlcmVkIGtleXNcbiAgICAgICAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IGhlYWRLZXlXaXRob3V0U2VhcmNoUGFyYW1zIDogaGVhZEtleVxuICAgICAgICB9XG4gICAgICAgIGhlYWRDYWNoZU5vZGU9e2hlYWRDYWNoZU5vZGV9XG4gICAgICAvPlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBoZWFkID0gbnVsbFxuICB9XG5cbiAgbGV0IGNvbnRlbnQgPSAoXG4gICAgPFJlZGlyZWN0Qm91bmRhcnk+XG4gICAgICB7aGVhZH1cbiAgICAgIHsvKiBSb290TGF5b3V0Qm91bmRhcnkgZW5hYmxlcyBkZXRlY3Rpb24gb2YgU3VzcGVuc2UgYm91bmRhcmllcyBhcm91bmQgdGhlIHJvb3QgbGF5b3V0LlxuICAgICAgICAgIFdoZW4gdXNlcnMgd3JhcCB0aGVpciBsYXlvdXQgaW4gPFN1c3BlbnNlPiwgdGhpcyBjcmVhdGVzIHRoZSBjb21wb25lbnQgc3RhY2sgcGF0dGVyblxuICAgICAgICAgIFwiU3VzcGVuc2UgLT4gUm9vdExheW91dEJvdW5kYXJ5XCIgd2hpY2ggZHluYW1pYy1yZW5kZXJpbmcudHMgdXNlcyB0byBhbGxvdyBkeW5hbWljIHJlbmRlcmluZy4gKi99XG4gICAgICA8Um9vdExheW91dEJvdW5kYXJ5PntjYWNoZS5yc2N9PC9Sb290TGF5b3V0Qm91bmRhcnk+XG4gICAgICA8QXBwUm91dGVyQW5ub3VuY2VyIHRyZWU9e3RyZWV9IC8+XG4gICAgPC9SZWRpcmVjdEJvdW5kYXJ5PlxuICApXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJbiBkZXZlbG9wbWVudCwgd2UgYXBwbHkgZmV3IGVycm9yIGJvdW5kYXJpZXMgYW5kIGhvdC1yZWxvYWRlcjpcbiAgICAvLyAtIERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeTogYXZvaWQgdXNpbmcgbmF2aWdhdGlvbiBBUEkgbGlrZSBub3RGb3VuZCgpIGluIHJvb3QgbGF5b3V0XG4gICAgLy8gLSBIb3RSZWxvYWRlcjpcbiAgICAvLyAgLSBob3QtcmVsb2FkIHRoZSBhcHAgd2hlbiB0aGUgY29kZSBjaGFuZ2VzXG4gICAgLy8gIC0gcmVuZGVyIGRldiBvdmVybGF5XG4gICAgLy8gIC0gY2F0Y2ggcnVudGltZSBlcnJvcnMgYW5kIGRpc3BsYXkgZ2xvYmFsLWVycm9yIHdoZW4gbmVjZXNzYXJ5XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCB7IERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi9kZXYtcm9vdC1odHRwLWFjY2Vzcy1mYWxsYmFjay1ib3VuZGFyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vZGV2LXJvb3QtaHR0cC1hY2Nlc3MtZmFsbGJhY2stYm91bmRhcnknKVxuICAgICAgY29udGVudCA9IChcbiAgICAgICAgPERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeT5cbiAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgPC9EZXZSb290SFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk+XG4gICAgICApXG4gICAgfVxuICAgIGNvbnN0IEhvdFJlbG9hZGVyOiB0eXBlb2YgaW1wb3J0KCcuLi9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwJykuZGVmYXVsdCA9XG4gICAgICAoXG4gICAgICAgIHJlcXVpcmUoJy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwJylcbiAgICAgICkuZGVmYXVsdFxuXG4gICAgY29udGVudCA9IChcbiAgICAgIDxIb3RSZWxvYWRlciBhc3NldFByZWZpeD17YXNzZXRQcmVmaXh9IGdsb2JhbEVycm9yPXtnbG9iYWxFcnJvcn0+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9Ib3RSZWxvYWRlcj5cbiAgICApXG4gIH0gZWxzZSB7XG4gICAgY29udGVudCA9IChcbiAgICAgIDxSb290RXJyb3JCb3VuZGFyeVxuICAgICAgICBlcnJvckNvbXBvbmVudD17Z2xvYmFsRXJyb3JbMF19XG4gICAgICAgIGVycm9yU3R5bGVzPXtnbG9iYWxFcnJvclsxXX1cbiAgICAgID5cbiAgICAgICAge2NvbnRlbnR9XG4gICAgICA8L1Jvb3RFcnJvckJvdW5kYXJ5PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxIaXN0b3J5VXBkYXRlciBhcHBSb3V0ZXJTdGF0ZT17c3RhdGV9IC8+XG4gICAgICA8UnVudGltZVN0eWxlcyAvPlxuICAgICAgPFBhdGhQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwYXRoUGFyYW1zfT5cbiAgICAgICAgPFBhdGhuYW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cGF0aG5hbWV9PlxuICAgICAgICAgIDxTZWFyY2hQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzZWFyY2hQYXJhbXN9PlxuICAgICAgICAgICAgPEdsb2JhbExheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgdmFsdWU9e2dsb2JhbExheW91dFJvdXRlckNvbnRleHR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUT0RPOiBXZSBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyBjb250ZXh0LiB1c2VSb3V0ZXJcbiAgICAgICAgICAgICAgICAgIHNob3VsZCBpbXBvcnQgZnJvbSBhcHAtcm91dGVyLWluc3RhbmNlIGluc3RlYWQuIEl0J3Mgb25seVxuICAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2UgdXNlUm91dGVyIGlzIHNoYXJlZCBiZXR3ZWVuIFBhZ2VzIGFuZFxuICAgICAgICAgICAgICAgICAgQXBwIFJvdXRlci4gV2Ugc2hvdWxkIGZvcmsgdGhhdCBtb2R1bGUsIHRoZW4gcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQgcHJvdmlkZXIuICovfVxuICAgICAgICAgICAgICA8QXBwUm91dGVyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHVibGljQXBwUm91dGVySW5zdGFuY2V9PlxuICAgICAgICAgICAgICAgIDxMYXlvdXRSb3V0ZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtsYXlvdXRSb3V0ZXJDb250ZXh0fT5cbiAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgIDwvTGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9BcHBSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9HbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU2VhcmNoUGFyYW1zQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYXRobmFtZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1BhdGhQYXJhbXNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcFJvdXRlcih7XG4gIGFjdGlvblF1ZXVlLFxuICBnbG9iYWxFcnJvclN0YXRlLFxuICBhc3NldFByZWZpeCxcbn06IHtcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlXG4gIGdsb2JhbEVycm9yU3RhdGU6IEdsb2JhbEVycm9yU3RhdGVcbiAgYXNzZXRQcmVmaXg6IHN0cmluZ1xufSkge1xuICB1c2VOYXZGYWlsdXJlSGFuZGxlcigpXG5cbiAgY29uc3Qgcm91dGVyID0gKFxuICAgIDxSb3V0ZXJcbiAgICAgIGFjdGlvblF1ZXVlPXthY3Rpb25RdWV1ZX1cbiAgICAgIGFzc2V0UHJlZml4PXthc3NldFByZWZpeH1cbiAgICAgIGdsb2JhbEVycm9yPXtnbG9iYWxFcnJvclN0YXRlfVxuICAgIC8+XG4gIClcblxuICAvLyBBdCB0aGUgdmVyeSB0b3AgbGV2ZWwsIHVzZSB0aGUgZGVmYXVsdCBHbG9iYWxFcnJvciBjb21wb25lbnQgYXMgdGhlIGZpbmFsIGZhbGxiYWNrLlxuICAvLyBXaGVuIHRoZSBhcHAgcm91dGVyIGl0c2VsZiBmYWlscywgd2hpY2ggbWVhbnMgdGhlIGZyYW1ld29yayBpdHNlbGYgZmFpbHMsIHdlIHNob3cgdGhlIGRlZmF1bHQgZXJyb3IuXG4gIHJldHVybiAoXG4gICAgPFJvb3RFcnJvckJvdW5kYXJ5IGVycm9yQ29tcG9uZW50PXtEZWZhdWx0R2xvYmFsRXJyb3J9PlxuICAgICAge3JvdXRlcn1cbiAgICA8L1Jvb3RFcnJvckJvdW5kYXJ5PlxuICApXG59XG5cbmNvbnN0IHJ1bnRpbWVTdHlsZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxubGV0IHJ1bnRpbWVTdHlsZUNoYW5nZWQgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KClcblxuZ2xvYmFsVGhpcy5fTl9FX1NUWUxFX0xPQUQgPSBmdW5jdGlvbiAoaHJlZjogc3RyaW5nKSB7XG4gIGxldCBsZW4gPSBydW50aW1lU3R5bGVzLnNpemVcbiAgcnVudGltZVN0eWxlcy5hZGQoaHJlZilcbiAgaWYgKHJ1bnRpbWVTdHlsZXMuc2l6ZSAhPT0gbGVuKSB7XG4gICAgcnVudGltZVN0eWxlQ2hhbmdlZC5mb3JFYWNoKChjYikgPT4gY2IoKSlcbiAgfVxuICAvLyBUT0RPIGZpZ3VyZSBvdXQgaG93IHRvIGdldCBhIHByb21pc2UgaGVyZVxuICAvLyBCdXQgbWF5YmUgaXQncyBub3QgbmVjZXNzYXJ5IGFzIHJlYWN0IHdvdWxkIGJsb2NrIHJlbmRlcmluZyB1bnRpbCBpdCdzIGxvYWRlZFxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbn1cblxuZnVuY3Rpb24gUnVudGltZVN0eWxlcygpIHtcbiAgY29uc3QgWywgZm9yY2VVcGRhdGVdID0gUmVhY3QudXNlU3RhdGUoMClcbiAgY29uc3QgcmVuZGVyZWRTdHlsZXNTaXplID0gcnVudGltZVN0eWxlcy5zaXplXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2hhbmdlZCA9ICgpID0+IGZvcmNlVXBkYXRlKChjKSA9PiBjICsgMSlcbiAgICBydW50aW1lU3R5bGVDaGFuZ2VkLmFkZChjaGFuZ2VkKVxuICAgIGlmIChyZW5kZXJlZFN0eWxlc1NpemUgIT09IHJ1bnRpbWVTdHlsZXMuc2l6ZSkge1xuICAgICAgY2hhbmdlZCgpXG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBydW50aW1lU3R5bGVDaGFuZ2VkLmRlbGV0ZShjaGFuZ2VkKVxuICAgIH1cbiAgfSwgW3JlbmRlcmVkU3R5bGVzU2l6ZSwgZm9yY2VVcGRhdGVdKVxuXG4gIGNvbnN0IGRwbElkID0gcHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEXG4gICAgPyBgP2RwbD0ke3Byb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRH1gXG4gICAgOiAnJ1xuICByZXR1cm4gWy4uLnJ1bnRpbWVTdHlsZXNdLm1hcCgoaHJlZiwgaSkgPT4gKFxuICAgIDxsaW5rXG4gICAgICBrZXk9e2l9XG4gICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgIGhyZWY9e2Ake2hyZWZ9JHtkcGxJZH1gfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJlY2VkZW5jZT1cIm5leHRcIlxuICAgICAgLy8gVE9ETyBmaWd1cmUgb3V0IGNyb3NzT3JpZ2luIGFuZCBub25jZVxuICAgICAgLy8gY3Jvc3NPcmlnaW49e1RPRE99XG4gICAgICAvLyBub25jZT17VE9ET31cbiAgICAvPlxuICApKVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwiY3JlYXRlUHJlZmV0Y2hVUkwiLCJBcHBSb3V0ZXIiLCJpc0V4dGVybmFsVVJMIiwiZ2xvYmFsTXV0YWJsZSIsInVybCIsIm9yaWdpbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImlzQm90IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiVVJMIiwiYWRkQmFzZVBhdGgiLCJfIiwiRXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJIaXN0b3J5VXBkYXRlciIsImFwcFJvdXRlclN0YXRlIiwidXNlSW5zZXJ0aW9uRWZmZWN0IiwiX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORyIsIm5leHQiLCJfX3BlbmRpbmdVcmwiLCJ1bmRlZmluZWQiLCJ0cmVlIiwicHVzaFJlZiIsImNhbm9uaWNhbFVybCIsImhpc3RvcnlTdGF0ZSIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiaGlzdG9yeSIsInN0YXRlIiwiX19OQSIsIl9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUiLCJwZW5kaW5nUHVzaCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIiwidXNlRWZmZWN0IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwicGluZ1Zpc2libGVMaW5rcyIsIm5leHRVcmwiLCJsYXp5RGF0YSIsInJzYyIsInByZWZldGNoUnNjIiwiaGVhZCIsInByZWZldGNoSGVhZCIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwibG9hZGluZyIsIm5hdmlnYXRlZEF0IiwiY29weU5leHRKc0ludGVybmFsSGlzdG9yeVN0YXRlIiwiZGF0YSIsImN1cnJlbnRTdGF0ZSIsIkhlYWQiLCJoZWFkQ2FjaGVOb2RlIiwicmVzb2x2ZWRQcmVmZXRjaFJzYyIsInVzZURlZmVycmVkVmFsdWUiLCJSb3V0ZXIiLCJhY3Rpb25RdWV1ZSIsImFzc2V0UHJlZml4IiwiZ2xvYmFsRXJyb3IiLCJ1c2VBY3Rpb25RdWV1ZSIsInNlYXJjaFBhcmFtcyIsInBhdGhuYW1lIiwidXNlTWVtbyIsImhhc0Jhc2VQYXRoIiwicmVtb3ZlQmFzZVBhdGgiLCJjYWNoZSIsInByZWZldGNoQ2FjaGUiLCJuZCIsInJvdXRlciIsInB1YmxpY0FwcFJvdXRlckluc3RhbmNlIiwiaGFuZGxlUGFnZVNob3ciLCJldmVudCIsInBlcnNpc3RlZCIsInBlbmRpbmdNcGFQYXRoIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1JFU1RPUkUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0IiwiZXJyb3IiLCJyZWFzb24iLCJpc1JlZGlyZWN0RXJyb3IiLCJwcmV2ZW50RGVmYXVsdCIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwicmVkaXJlY3RUeXBlIiwiZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yIiwiUmVkaXJlY3RUeXBlIiwicHVzaCIsInJlcGxhY2UiLCJtcGFOYXZpZ2F0aW9uIiwiYXNzaWduIiwidW5yZXNvbHZlZFRoZW5hYmxlIiwib3JpZ2luYWxQdXNoU3RhdGUiLCJiaW5kIiwib3JpZ2luYWxSZXBsYWNlU3RhdGUiLCJhcHBseVVybEZyb21IaXN0b3J5UHVzaFJlcGxhY2UiLCJzdGFydFRyYW5zaXRpb24iLCJfdW51c2VkIiwiX04iLCJvblBvcFN0YXRlIiwicmVsb2FkIiwiZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbiIsImZvY3VzQW5kU2Nyb2xsUmVmIiwibWF0Y2hpbmdIZWFkIiwiZmluZEhlYWRJbkNhY2hlIiwicGF0aFBhcmFtcyIsImdldFNlbGVjdGVkUGFyYW1zIiwibGF5b3V0Um91dGVyQ29udGV4dCIsInBhcmVudFRyZWUiLCJwYXJlbnRDYWNoZU5vZGUiLCJwYXJlbnRTZWdtZW50UGF0aCIsImdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJoZWFkS2V5IiwiaGVhZEtleVdpdGhvdXRTZWFyY2hQYXJhbXMiLCJjb250ZW50IiwiUmVkaXJlY3RCb3VuZGFyeSIsIlJvb3RMYXlvdXRCb3VuZGFyeSIsIkFwcFJvdXRlckFubm91bmNlciIsIkRldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSIsInJlcXVpcmUiLCJIb3RSZWxvYWRlciIsImRlZmF1bHQiLCJSb290RXJyb3JCb3VuZGFyeSIsImVycm9yQ29tcG9uZW50IiwiZXJyb3JTdHlsZXMiLCJSdW50aW1lU3R5bGVzIiwiUGF0aFBhcmFtc0NvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiUGF0aG5hbWVDb250ZXh0IiwiU2VhcmNoUGFyYW1zQ29udGV4dCIsIkdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJBcHBSb3V0ZXJDb250ZXh0IiwiTGF5b3V0Um91dGVyQ29udGV4dCIsImdsb2JhbEVycm9yU3RhdGUiLCJ1c2VOYXZGYWlsdXJlSGFuZGxlciIsIkRlZmF1bHRHbG9iYWxFcnJvciIsInJ1bnRpbWVTdHlsZXMiLCJTZXQiLCJydW50aW1lU3R5bGVDaGFuZ2VkIiwiZ2xvYmFsVGhpcyIsIl9OX0VfU1RZTEVfTE9BRCIsImxlbiIsInNpemUiLCJhZGQiLCJmb3JFYWNoIiwiY2IiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZvcmNlVXBkYXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInJlbmRlcmVkU3R5bGVzU2l6ZSIsImNoYW5nZWQiLCJjIiwiZGVsZXRlIiwiZHBsSWQiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJtYXAiLCJpIiwibGluayIsInJlbCIsInByZWNlZGVuY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/builtin/global-error.js ***! \**************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _handleisrerror = __webpack_require__(/*! ../handle-isr-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n text: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '28px',\n margin: '0 8px'\n }\n};\nfunction DefaultGlobalError(param) {\n let { error } = param;\n const digest = error == null ? void 0 : error.digest;\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n id: \"__next_error__\",\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {}),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"body\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: error\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"h2\", {\n style: styles.text,\n children: [\n \"Application error: a \",\n digest ? 'server' : 'client',\n \"-side exception has occurred while loading \",\n window.location.hostname,\n \" (see the\",\n ' ',\n digest ? 'server logs' : 'browser console',\n \" for more information).\"\n ]\n }),\n digest ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"p\", {\n style: styles.text,\n children: \"Digest: \" + digest\n }) : null\n ]\n })\n })\n ]\n })\n ]\n });\n}\n_c = DefaultGlobalError;\nconst _default = DefaultGlobalError;\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=global-error.js.map\nvar _c;\n$RefreshReg$(_c, \"DefaultGlobalError\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FvREE7OztlQUFBOzs7OzRDQWxEK0I7QUFFL0IsTUFBTUEsU0FBUztJQUNiQyxPQUFPO1FBQ0wsMEZBQTBGO1FBQzFGQyxZQUNFO1FBQ0ZDLFFBQVE7UUFDUkMsV0FBVztRQUNYQyxTQUFTO1FBQ1RDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxnQkFBZ0I7SUFDbEI7SUFDQUMsTUFBTTtRQUNKQyxVQUFVO1FBQ1ZDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxRQUFRO0lBQ1Y7QUFDRjtBQUtBLDRCQUE0QixLQUF5QjtJQUF6QixNQUFFWixLQUFLLEVBQWtCLEdBQXpCO0lBQzFCLE1BQU1jLFNBQTZCZCxTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPYyxNQUFNO0lBQ2hELHFCQUNFLHNCQUFDQyxRQUFBQTtRQUFLQyxJQUFHOzswQkFDUCxxQkFBQ0MsUUFBQUEsQ0FBQUE7MEJBQ0Qsc0JBQUNDLFFBQUFBOztrQ0FDQyxxQkFBQ0MsZ0JBQUFBLGNBQWM7d0JBQUNuQixPQUFPQTs7a0NBQ3ZCLHFCQUFDb0IsT0FBQUE7d0JBQUlDLE9BQU90QixPQUFPQyxLQUFLO2tDQUN0QixvQ0FBQ29CLE9BQUFBOzs4Q0FDQyxzQkFBQ0UsTUFBQUE7b0NBQUdELE9BQU90QixPQUFPUyxJQUFJOzt3Q0FBRTt3Q0FDQU0sU0FBUyxXQUFXO3dDQUFTO3dDQUN2QlMsT0FBT0MsUUFBUSxDQUFDQyxRQUFRO3dDQUFDO3dDQUFVO3dDQUM5RFgsU0FBUyxnQkFBZ0I7d0NBQWtCOzs7Z0NBRzdDQSxTQUFBQSxXQUFBQSxHQUFTLHFCQUFDWSxLQUFBQTtvQ0FBRUwsT0FBT3RCLE9BQU9TLElBQUk7OENBQUksYUFBVU07cUNBQWdCOzs7Ozs7OztBQU16RTtLQXJCU0Q7TUF5QlQsV0FBZUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBIYW5kbGVJU1JFcnJvciB9IGZyb20gJy4uL2hhbmRsZS1pc3ItZXJyb3InXG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgZXJyb3I6IHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUvYmxvYi9tYWluL21vZGVybi1ub3JtYWxpemUuY3NzI0wzOC1MNTJcbiAgICBmb250RmFtaWx5OlxuICAgICAgJ3N5c3RlbS11aSxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmLFwiQXBwbGUgQ29sb3IgRW1vamlcIixcIlNlZ29lIFVJIEVtb2ppXCInLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICBsaW5lSGVpZ2h0OiAnMjhweCcsXG4gICAgbWFyZ2luOiAnMCA4cHgnLFxuICB9LFxufSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBHbG9iYWxFcnJvckNvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8e1xuICBlcnJvcjogYW55XG59PlxuZnVuY3Rpb24gRGVmYXVsdEdsb2JhbEVycm9yKHsgZXJyb3IgfTogeyBlcnJvcjogYW55IH0pIHtcbiAgY29uc3QgZGlnZXN0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSBlcnJvcj8uZGlnZXN0XG4gIHJldHVybiAoXG4gICAgPGh0bWwgaWQ9XCJfX25leHRfZXJyb3JfX1wiPlxuICAgICAgPGhlYWQ+PC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxIYW5kbGVJU1JFcnJvciBlcnJvcj17ZXJyb3J9IC8+XG4gICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5lcnJvcn0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMiBzdHlsZT17c3R5bGVzLnRleHR9PlxuICAgICAgICAgICAgICBBcHBsaWNhdGlvbiBlcnJvcjogYSB7ZGlnZXN0ID8gJ3NlcnZlcicgOiAnY2xpZW50J30tc2lkZSBleGNlcHRpb25cbiAgICAgICAgICAgICAgaGFzIG9jY3VycmVkIHdoaWxlIGxvYWRpbmcge3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gKHNlZSB0aGV7JyAnfVxuICAgICAgICAgICAgICB7ZGlnZXN0ID8gJ3NlcnZlciBsb2dzJyA6ICdicm93c2VyIGNvbnNvbGUnfSBmb3IgbW9yZVxuICAgICAgICAgICAgICBpbmZvcm1hdGlvbikuXG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAge2RpZ2VzdCA/IDxwIHN0eWxlPXtzdHlsZXMudGV4dH0+e2BEaWdlc3Q6ICR7ZGlnZXN0fWB9PC9wPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKVxufVxuXG4vLyBFeHBvcnRlZCBzbyB0aGF0IHRoZSBpbXBvcnQgc2lnbmF0dXJlIGluIHRoZSBsb2FkZXJzIGNhbiBiZSBpZGVudGljYWwgdG8gdXNlclxuLy8gc3VwcGxpZWQgY3VzdG9tIGdsb2JhbCBlcnJvciBzaWduYXR1cmVzLlxuZXhwb3J0IGRlZmF1bHQgRGVmYXVsdEdsb2JhbEVycm9yXG4iXSwibmFtZXMiOlsic3R5bGVzIiwiZXJyb3IiLCJmb250RmFtaWx5IiwiaGVpZ2h0IiwidGV4dEFsaWduIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ0ZXh0IiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsIm1hcmdpbiIsIkRlZmF1bHRHbG9iYWxFcnJvciIsImRpZ2VzdCIsImh0bWwiLCJpZCIsImhlYWQiLCJib2R5IiwiSGFuZGxlSVNSRXJyb3IiLCJkaXYiLCJzdHlsZSIsImgyIiwid2luZG93IiwibG9jYXRpb24iLCJob3N0bmFtZSIsInAiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js ***! \********************************************************************************************/ /***/ ((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 DevRootHTTPAccessFallbackBoundary: function() {\n return DevRootHTTPAccessFallbackBoundary;\n },\n bailOnRootNotFound: function() {\n return bailOnRootNotFound;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _errorboundary = __webpack_require__(/*! ./http-access-fallback/error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nfunction bailOnRootNotFound() {\n throw Object.defineProperty(new Error('notFound() is not allowed to use in root layout'), \"__NEXT_ERROR_CODE\", {\n value: \"E192\",\n enumerable: false,\n configurable: true\n });\n}\nfunction NotAllowedRootHTTPFallbackError() {\n bailOnRootNotFound();\n return null;\n}\n_c = NotAllowedRootHTTPFallbackError;\nfunction DevRootHTTPAccessFallbackBoundary(param) {\n let { children } = param;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.HTTPAccessFallbackBoundary, {\n notFound: /*#__PURE__*/ (0, _jsxruntime.jsx)(NotAllowedRootHTTPFallbackError, {}),\n children: children\n });\n}\n_c1 = DevRootHTTPAccessFallbackBoundary;\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-root-http-access-fallback-boundary.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"NotAllowedRootHTTPFallbackError\");\n$RefreshReg$(_c1, \"DevRootHTTPAccessFallbackBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZGV2LXJvb3QtaHR0cC1hY2Nlc3MtZmFsbGJhY2stYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWdCQSxpQ0FBaUM7ZUFBakNBOztJQVRBQyxrQkFBa0I7ZUFBbEJBOzs7Ozs0RUFKRTsyQ0FDeUI7QUFHcEMsU0FBU0E7SUFDZCxNQUFNLHFCQUE0RCxDQUE1RCxJQUFJQyxNQUFNLG9EQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBMkQ7QUFDbkU7QUFFQTtJQUNFRDtJQUNBLE9BQU87QUFDVDtLQUhTRTtBQUtGLDJDQUEyQyxLQUlqRDtJQUppRCxNQUNoREMsUUFBUSxFQUdULEdBSmlEO0lBS2hELHFCQUNFLHFCQUFDQyxlQUFBQSwwQkFBMEI7UUFBQ0MsVUFBQUEsV0FBQUEsR0FBVSxxQkFBQ0gsaUNBQUFBLENBQUFBO2tCQUNwQ0M7O0FBR1A7TUFWZ0JKIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvZGV2LXJvb3QtaHR0cC1hY2Nlc3MtZmFsbGJhY2stYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSB9IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnknXG5cbi8vIFRPRE86IGVycm9yIG9uIHVzaW5nIGZvcmJpZGRlbiBhbmQgdW5hdXRob3JpemVkIGluIHJvb3QgbGF5b3V0XG5leHBvcnQgZnVuY3Rpb24gYmFpbE9uUm9vdE5vdEZvdW5kKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ25vdEZvdW5kKCkgaXMgbm90IGFsbG93ZWQgdG8gdXNlIGluIHJvb3QgbGF5b3V0Jylcbn1cblxuZnVuY3Rpb24gTm90QWxsb3dlZFJvb3RIVFRQRmFsbGJhY2tFcnJvcigpIHtcbiAgYmFpbE9uUm9vdE5vdEZvdW5kKClcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSh7XG4gIGNoaWxkcmVuLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIHJldHVybiAoXG4gICAgPEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5IG5vdEZvdW5kPXs8Tm90QWxsb3dlZFJvb3RIVFRQRmFsbGJhY2tFcnJvciAvPn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9IVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeT5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkRldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSIsImJhaWxPblJvb3ROb3RGb3VuZCIsIkVycm9yIiwiTm90QWxsb3dlZFJvb3RIVFRQRmFsbGJhY2tFcnJvciIsImNoaWxkcmVuIiwiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJub3RGb3VuZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/error-boundary.js ***! \********************************************************************/ /***/ ((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 ErrorBoundary: function() {\n return ErrorBoundary;\n },\n ErrorBoundaryHandler: function() {\n return ErrorBoundaryHandler;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ./navigation-untracked */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(app-pages-browser)/./node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _handleisrerror = __webpack_require__(/*! ./handle-isr-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/handle-isr-error.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst isBotUserAgent = true && (0, _isbot.isBot)(window.navigator.userAgent);\nclass ErrorBoundaryHandler extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n // Re-throw if an expected internal Next.js router error occurs\n // this means it should be handled by a different boundary (such as a NotFound boundary in a parent segment)\n throw error;\n }\n return {\n error\n };\n }\n static getDerivedStateFromProps(props, state) {\n const { error } = state;\n // if we encounter an error while\n // a navigation is pending we shouldn't render\n // the error boundary and instead should fallback\n // to a hard navigation to attempt recovering\n if (false) {}\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.error) {\n return {\n error: null,\n previousPathname: props.pathname\n };\n }\n return {\n error: state.error,\n previousPathname: props.pathname\n };\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n //When it's bot request, segment level error boundary will keep rendering the children,\n // the final error will be caught by the root error boundary and determine wether need to apply graceful degrade.\n if (this.state.error && !isBotUserAgent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: this.state.error\n }),\n this.props.errorStyles,\n this.props.errorScripts,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(this.props.errorComponent, {\n error: this.state.error,\n reset: this.reset\n })\n ]\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props), this.reset = ()=>{\n this.setState({\n error: null\n });\n };\n this.state = {\n error: null,\n previousPathname: this.props.pathname\n };\n }\n}\nfunction ErrorBoundary(param) {\n let { errorComponent, errorStyles, errorScripts, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these errors can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n if (errorComponent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorBoundaryHandler, {\n pathname: pathname,\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\n_c = ErrorBoundary;\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=error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"ErrorBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0lnQkEsYUFBYTtlQUFiQTs7SUE1RkhDLG9CQUFvQjtlQUFwQkE7Ozs7OzRFQWxDbUI7aURBQ0s7K0NBQ0g7K0NBQ0M7NENBQ0o7bUNBQ1Q7QUFFdEIsTUFBTUMsaUJBQ0osS0FBNkIsSUFBSUUsQ0FBQUEsR0FBQUEsT0FBQUEsS0FBQUEsRUFBTUQsT0FBT0UsU0FBUyxDQUFDQyxTQUFTO0FBMEI1RCxNQUFNTCw2QkFBNkJNLE9BQUFBLE9BQUssQ0FBQ0MsU0FBUztJQVN2RCxPQUFPQyx5QkFBeUJDLEtBQVksRUFBRTtRQUM1QyxJQUFJQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxRQUFRO1lBQzVCLCtEQUErRDtZQUMvRCw0R0FBNEc7WUFDNUcsTUFBTUE7UUFDUjtRQUVBLE9BQU87WUFBRUE7UUFBTTtJQUNqQjtJQUVBLE9BQU9FLHlCQUNMQyxLQUFnQyxFQUNoQ0MsS0FBZ0MsRUFDRTtRQUNsQyxNQUFNLEVBQUVKLEtBQUssRUFBRSxHQUFHSTtRQUVsQixpQ0FBaUM7UUFDakMsOENBQThDO1FBQzlDLGlEQUFpRDtRQUNqRCw2Q0FBNkM7UUFDN0MsSUFBSUMsS0FBd0MsRUFBRSxFQVE3QztRQUVEOzs7OztLQUtDLEdBQ0QsSUFBSUYsTUFBTU8sUUFBUSxLQUFLTixNQUFNSyxnQkFBZ0IsSUFBSUwsTUFBTUosS0FBSyxFQUFFO1lBQzVELE9BQU87Z0JBQ0xBLE9BQU87Z0JBQ1BTLGtCQUFrQk4sTUFBTU8sUUFBUTtZQUNsQztRQUNGO1FBQ0EsT0FBTztZQUNMVixPQUFPSSxNQUFNSixLQUFLO1lBQ2xCUyxrQkFBa0JOLE1BQU1PLFFBQVE7UUFDbEM7SUFDRjtJQU1BLHlJQUF5STtJQUN6SUMsU0FBMEI7UUFDeEIsdUZBQXVGO1FBQ3ZGLGlIQUFpSDtRQUNqSCxJQUFJLElBQUksQ0FBQ1AsS0FBSyxDQUFDSixLQUFLLElBQUksQ0FBQ1IsZ0JBQWdCO1lBQ3ZDLHFCQUNFOztrQ0FDRSxxQkFBQ29CLGdCQUFBQSxjQUFjO3dCQUFDWixPQUFPLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixLQUFLOztvQkFDdEMsSUFBSSxDQUFDRyxLQUFLLENBQUNVLFdBQVc7b0JBQ3RCLElBQUksQ0FBQ1YsS0FBSyxDQUFDVyxZQUFZO2tDQUN4QixxQkFBQ0MsSUFBSSxDQUFDWixLQUFLLENBQUNhLGNBQWM7d0JBQ3hCaEIsT0FBTyxJQUFJLENBQUNJLEtBQUssQ0FBQ0osS0FBSzt3QkFDdkJpQixPQUFPLElBQUksQ0FBQ0EsS0FBSzs7OztRQUl6QjtRQUVBLE9BQU8sSUFBSSxDQUFDZCxLQUFLLENBQUNlLFFBQVE7SUFDNUI7SUE1RUFDLFlBQVloQixLQUFnQyxDQUFFO1FBQzVDLEtBQUssQ0FBQ0EsUUFBQUEsSUFBQUEsQ0FvRFJjLEtBQUFBLEdBQVE7WUFDTixJQUFJLENBQUNHLFFBQVEsQ0FBQztnQkFBRXBCLE9BQU87WUFBSztRQUM5QjtRQXJERSxJQUFJLENBQUNJLEtBQUssR0FBRztZQUFFSixPQUFPO1lBQU1TLGtCQUFrQixJQUFJLENBQUNOLEtBQUssQ0FBQ08sUUFBUTtRQUFDO0lBQ3BFO0FBMEVGO0FBV08sdUJBQXVCLEtBTzdCO0lBUDZCLE1BQzVCTSxjQUFjLEVBQ2RILFdBQVcsRUFDWEMsWUFBWSxFQUNaSSxRQUFRLEVBR1QsR0FQNkI7SUFRNUIsNkVBQTZFO0lBQzdFLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsb0VBQW9FO0lBQ3BFLE1BQU1SLFdBQVdXLENBQUFBLEdBQUFBLHFCQUFBQSxvQkFBQUE7SUFDakIsSUFBSUwsZ0JBQWdCO1FBQ2xCLHFCQUNFLHFCQUFDekIsc0JBQUFBO1lBQ0NtQixVQUFVQTtZQUNWTSxnQkFBZ0JBO1lBQ2hCSCxhQUFhQTtZQUNiQyxjQUFjQTtzQkFFYkk7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1o7S0EzQmdCNUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBSZWFjdCwgeyB0eXBlIEpTWCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVW50cmFja2VkUGF0aG5hbWUgfSBmcm9tICcuL25hdmlnYXRpb24tdW50cmFja2VkJ1xuaW1wb3J0IHsgaXNOZXh0Um91dGVyRXJyb3IgfSBmcm9tICcuL2lzLW5leHQtcm91dGVyLWVycm9yJ1xuaW1wb3J0IHsgaGFuZGxlSGFyZE5hdkVycm9yIH0gZnJvbSAnLi9uYXYtZmFpbHVyZS1oYW5kbGVyJ1xuaW1wb3J0IHsgSGFuZGxlSVNSRXJyb3IgfSBmcm9tICcuL2hhbmRsZS1pc3ItZXJyb3InXG5pbXBvcnQgeyBpc0JvdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdCdcblxuY29uc3QgaXNCb3RVc2VyQWdlbnQgPVxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBpc0JvdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudClcblxuZXhwb3J0IHR5cGUgRXJyb3JDb21wb25lbnQgPSBSZWFjdC5Db21wb25lbnRUeXBlPHtcbiAgZXJyb3I6IEVycm9yXG4gIC8vIGdsb2JhbC1lcnJvciwgdGhlcmUncyBubyBgcmVzZXRgIGZ1bmN0aW9uO1xuICAvLyByZWd1bGFyIGVycm9yIGJvdW5kYXJ5LCB0aGVyZSdzIGEgYHJlc2V0YCBmdW5jdGlvbi5cbiAgcmVzZXQ/OiAoKSA9PiB2b2lkXG59PlxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQm91bmRhcnlQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIGVycm9yQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBlcnJvclN0eWxlcz86IFJlYWN0LlJlYWN0Tm9kZSB8IHVuZGVmaW5lZFxuICBlcnJvclNjcmlwdHM/OiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbn1cblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMgZXh0ZW5kcyBFcnJvckJvdW5kYXJ5UHJvcHMge1xuICBwYXRobmFtZTogc3RyaW5nIHwgbnVsbFxuICBlcnJvckNvbXBvbmVudDogRXJyb3JDb21wb25lbnRcbn1cblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGUge1xuICBlcnJvcjogRXJyb3IgfCBudWxsXG4gIHByZXZpb3VzUGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yQm91bmRhcnlIYW5kbGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzLFxuICBFcnJvckJvdW5kYXJ5SGFuZGxlclN0YXRlXG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0geyBlcnJvcjogbnVsbCwgcHJldmlvdXNQYXRobmFtZTogdGhpcy5wcm9wcy5wYXRobmFtZSB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBFcnJvcikge1xuICAgIGlmIChpc05leHRSb3V0ZXJFcnJvcihlcnJvcikpIHtcbiAgICAgIC8vIFJlLXRocm93IGlmIGFuIGV4cGVjdGVkIGludGVybmFsIE5leHQuanMgcm91dGVyIGVycm9yIG9jY3Vyc1xuICAgICAgLy8gdGhpcyBtZWFucyBpdCBzaG91bGQgYmUgaGFuZGxlZCBieSBhIGRpZmZlcmVudCBib3VuZGFyeSAoc3VjaCBhcyBhIE5vdEZvdW5kIGJvdW5kYXJ5IGluIGEgcGFyZW50IHNlZ21lbnQpXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB7IGVycm9yIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgcHJvcHM6IEVycm9yQm91bmRhcnlIYW5kbGVyUHJvcHMsXG4gICAgc3RhdGU6IEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGVcbiAgKTogRXJyb3JCb3VuZGFyeUhhbmRsZXJTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHsgZXJyb3IgfSA9IHN0YXRlXG5cbiAgICAvLyBpZiB3ZSBlbmNvdW50ZXIgYW4gZXJyb3Igd2hpbGVcbiAgICAvLyBhIG5hdmlnYXRpb24gaXMgcGVuZGluZyB3ZSBzaG91bGRuJ3QgcmVuZGVyXG4gICAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5IGFuZCBpbnN0ZWFkIHNob3VsZCBmYWxsYmFja1xuICAgIC8vIHRvIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIGF0dGVtcHQgcmVjb3ZlcmluZ1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgICBpZiAoZXJyb3IgJiYgaGFuZGxlSGFyZE5hdkVycm9yKGVycm9yKSkge1xuICAgICAgICAvLyBjbGVhciBlcnJvciBzbyB3ZSBkb24ndCByZW5kZXIgYW55dGhpbmdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgcmVzZXQgb2YgdGhlIGVycm9yIGJvdW5kYXJ5IHdoZW4gYSBuYXZpZ2F0aW9uIGhhcHBlbnMuXG4gICAgICogRW5zdXJlcyB0aGUgZXJyb3IgYm91bmRhcnkgZG9lcyBub3Qgc3RheSBlbmFibGVkIHdoZW4gbmF2aWdhdGluZyB0byBhIG5ldyBwYWdlLlxuICAgICAqIEFwcHJvYWNoIG9mIHNldFN0YXRlIGluIHJlbmRlciBpcyBzYWZlIGFzIGl0IGNoZWNrcyB0aGUgcHJldmlvdXMgcGF0aG5hbWUgYW5kIHRoZW4gb3ZlcnJpZGVzXG4gICAgICogaXQgYXMgb3V0bGluZWQgaW4gaHR0cHM6Ly9yZWFjdC5kZXYvcmVmZXJlbmNlL3JlYWN0L3VzZVN0YXRlI3N0b3JpbmctaW5mb3JtYXRpb24tZnJvbS1wcmV2aW91cy1yZW5kZXJzXG4gICAgICovXG4gICAgaWYgKHByb3BzLnBhdGhuYW1lICE9PSBzdGF0ZS5wcmV2aW91c1BhdGhuYW1lICYmIHN0YXRlLmVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogc3RhdGUuZXJyb3IsXG4gICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IHR5cGUgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBnZW5lcmF0ZWQgYC5kLnRzYCBoYXZpbmcgYSB3aWRlIHJldHVybiB0eXBlIHRoYXQgY291bGQgYmUgc3BlY2lmaWMgdG8gdGhlIGBAdHlwZXMvcmVhY3RgIHZlcnNpb24uXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgIC8vV2hlbiBpdCdzIGJvdCByZXF1ZXN0LCBzZWdtZW50IGxldmVsIGVycm9yIGJvdW5kYXJ5IHdpbGwga2VlcCByZW5kZXJpbmcgdGhlIGNoaWxkcmVuLFxuICAgIC8vIHRoZSBmaW5hbCBlcnJvciB3aWxsIGJlIGNhdWdodCBieSB0aGUgcm9vdCBlcnJvciBib3VuZGFyeSBhbmQgZGV0ZXJtaW5lIHdldGhlciBuZWVkIHRvIGFwcGx5IGdyYWNlZnVsIGRlZ3JhZGUuXG4gICAgaWYgKHRoaXMuc3RhdGUuZXJyb3IgJiYgIWlzQm90VXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxIYW5kbGVJU1JFcnJvciBlcnJvcj17dGhpcy5zdGF0ZS5lcnJvcn0gLz5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5lcnJvclN0eWxlc31cbiAgICAgICAgICB7dGhpcy5wcm9wcy5lcnJvclNjcmlwdHN9XG4gICAgICAgICAgPHRoaXMucHJvcHMuZXJyb3JDb21wb25lbnRcbiAgICAgICAgICAgIGVycm9yPXt0aGlzLnN0YXRlLmVycm9yfVxuICAgICAgICAgICAgcmVzZXQ9e3RoaXMucmVzZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG4vKipcbiAqIEhhbmRsZXMgZXJyb3JzIHRocm91Z2ggYGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcmAuXG4gKiBSZW5kZXJzIHRoZSBwcm92aWRlZCBlcnJvciBjb21wb25lbnQgYW5kIHByb3ZpZGVzIGEgd2F5IHRvIGByZXNldGAgdGhlIGVycm9yIGJvdW5kYXJ5IHN0YXRlLlxuICovXG5cbi8qKlxuICogUmVuZGVycyBlcnJvciBib3VuZGFyeSB3aXRoIHRoZSBwcm92aWRlZCBcImVycm9yQ29tcG9uZW50XCIgcHJvcGVydHkgYXMgdGhlIGZhbGxiYWNrLlxuICogSWYgbm8gXCJlcnJvckNvbXBvbmVudFwiIHByb3BlcnR5IGlzIHByb3ZpZGVkIGl0IHJlbmRlcnMgdGhlIGNoaWxkcmVuIHdpdGhvdXQgYW4gZXJyb3IgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFcnJvckJvdW5kYXJ5KHtcbiAgZXJyb3JDb21wb25lbnQsXG4gIGVycm9yU3R5bGVzLFxuICBlcnJvclNjcmlwdHMsXG4gIGNoaWxkcmVuLFxufTogRXJyb3JCb3VuZGFyeVByb3BzICYge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59KTogSlNYLkVsZW1lbnQge1xuICAvLyBXaGVuIHdlJ3JlIHJlbmRlcmluZyB0aGUgbWlzc2luZyBwYXJhbXMgc2hlbGwsIHRoaXMgd2lsbCByZXR1cm4gbnVsbC4gVGhpc1xuICAvLyBpcyBiZWNhdXNlIHdlIHdvbid0IGJlIHJlbmRlcmluZyBhbnkgbm90IGZvdW5kIGJvdW5kYXJpZXMgb3IgZXJyb3JcbiAgLy8gYm91bmRhcmllcyBmb3IgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLiBXaGVuIHRoaXMgcnVucyBvbiB0aGUgY2xpZW50XG4gIC8vICh3aGVyZSB0aGVzZSBlcnJvcnMgY2FuIG9jY3VyKSwgd2Ugd2lsbCBnZXQgdGhlIGNvcnJlY3QgcGF0aG5hbWUuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuICBpZiAoZXJyb3JDb21wb25lbnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEVycm9yQm91bmRhcnlIYW5kbGVyXG4gICAgICAgIHBhdGhuYW1lPXtwYXRobmFtZX1cbiAgICAgICAgZXJyb3JDb21wb25lbnQ9e2Vycm9yQ29tcG9uZW50fVxuICAgICAgICBlcnJvclN0eWxlcz17ZXJyb3JTdHlsZXN9XG4gICAgICAgIGVycm9yU2NyaXB0cz17ZXJyb3JTY3JpcHRzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Vycm9yQm91bmRhcnlIYW5kbGVyPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz5cbn1cbiJdLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiRXJyb3JCb3VuZGFyeUhhbmRsZXIiLCJpc0JvdFVzZXJBZ2VudCIsIndpbmRvdyIsImlzQm90IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiUmVhY3QiLCJDb21wb25lbnQiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJlcnJvciIsImlzTmV4dFJvdXRlckVycm9yIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwicHJvcHMiLCJzdGF0ZSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HIiwiaGFuZGxlSGFyZE5hdkVycm9yIiwicHJldmlvdXNQYXRobmFtZSIsInBhdGhuYW1lIiwicmVuZGVyIiwiSGFuZGxlSVNSRXJyb3IiLCJlcnJvclN0eWxlcyIsImVycm9yU2NyaXB0cyIsInRoaXMiLCJlcnJvckNvbXBvbmVudCIsInJlc2V0IiwiY2hpbGRyZW4iLCJjb25zdHJ1Y3RvciIsInNldFN0YXRlIiwidXNlVW50cmFja2VkUGF0aG5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js": /*!**************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js ***! \**************************************************************************************/ /***/ ((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 GracefulDegradeBoundary: function() {\n return GracefulDegradeBoundary;\n },\n default: function() {\n return _default;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nfunction getDomNodeAttributes(node) {\n const result = {};\n for(let i = 0; i < node.attributes.length; i++){\n const attr = node.attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n}\nclass GracefulDegradeBoundary extends _react.Component {\n static getDerivedStateFromError(_) {\n return {\n hasError: true\n };\n }\n componentDidMount() {\n const htmlNode = this.htmlRef.current;\n if (this.state.hasError && htmlNode) {\n // Reapply the cached HTML attributes to the root element\n Object.entries(this.htmlAttributes).forEach((param)=>{\n let [key, value] = param;\n htmlNode.setAttribute(key, value);\n });\n }\n }\n render() {\n const { hasError } = this.state;\n // Cache the root HTML content on the first render\n if ( true && !this.rootHtml) {\n this.rootHtml = document.documentElement.innerHTML;\n this.htmlAttributes = getDomNodeAttributes(document.documentElement);\n }\n if (hasError) {\n // Render the current HTML content without hydration\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"html\", {\n ref: this.htmlRef,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: this.rootHtml\n }\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props);\n this.state = {\n hasError: false\n };\n this.rootHtml = '';\n this.htmlAttributes = {};\n this.htmlRef = /*#__PURE__*/ (0, _react.createRef)();\n }\n}\nconst _default = GracefulDegradeBoundary;\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=graceful-degrade-boundary.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL2dyYWNlZnVsLWRlZ3JhZGUtYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBcUJhQSx1QkFBdUI7ZUFBdkJBOztJQXVEYixPQUFzQztlQUF0Qzs7OzttQ0ExRXFEO0FBVXJELFNBQVNDLHFCQUFxQkMsSUFBaUI7SUFDN0MsTUFBTUMsU0FBaUMsQ0FBQztJQUN4QyxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUYsS0FBS0csVUFBVSxDQUFDQyxNQUFNLEVBQUVGLElBQUs7UUFDL0MsTUFBTUcsT0FBT0wsS0FBS0csVUFBVSxDQUFDRCxFQUFFO1FBQy9CRCxNQUFNLENBQUNJLEtBQUtDLElBQUksQ0FBQyxHQUFHRCxLQUFLRSxLQUFLO0lBQ2hDO0lBQ0EsT0FBT047QUFDVDtBQUVPLE1BQU1ILGdDQUFnQ1UsT0FBQUEsU0FBUztJQWdCcEQsT0FBT0MseUJBQXlCQyxDQUFVLEVBQXNCO1FBQzlELE9BQU87WUFBRUMsVUFBVTtRQUFLO0lBQzFCO0lBRUFDLG9CQUFvQjtRQUNsQixNQUFNQyxXQUFXLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPO1FBQ3JDLElBQUksSUFBSSxDQUFDQyxLQUFLLENBQUNMLFFBQVEsSUFBSUUsVUFBVTtZQUNuQyx5REFBeUQ7WUFDekRJLE9BQU9DLE9BQU8sQ0FBQyxJQUFJLENBQUNDLGNBQWMsRUFBRUMsT0FBTyxDQUFDO29CQUFDLENBQUNDLEtBQUtkLE1BQU07Z0JBQ3ZETSxTQUFTUyxZQUFZLENBQUNELEtBQUtkO1lBQzdCO1FBQ0Y7SUFDRjtJQUVBZ0IsU0FBUztRQUNQLE1BQU0sRUFBRVosUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDSyxLQUFLO1FBQy9CLGtEQUFrRDtRQUNsRCxJQUFJLEtBQTZCLElBQUksQ0FBQyxJQUFJLENBQUNTLFFBQVEsRUFBRTtZQUNuRCxJQUFJLENBQUNBLFFBQVEsR0FBR0MsU0FBU0MsZUFBZSxDQUFDQyxTQUFTO1lBQ2xELElBQUksQ0FBQ1QsY0FBYyxHQUFHcEIscUJBQXFCMkIsU0FBU0MsZUFBZTtRQUNyRTtRQUVBLElBQUloQixVQUFVO1lBQ1osb0RBQW9EO1lBQ3BELHFCQUNFLHFCQUFDa0IsUUFBQUE7Z0JBQ0NDLEtBQUssSUFBSSxDQUFDaEIsT0FBTztnQkFDakJpQix3QkFBd0I7Z0JBQ3hCQyx5QkFBeUI7b0JBQ3ZCQyxRQUFRLElBQUksQ0FBQ1IsUUFBUTtnQkFDdkI7O1FBR047UUFFQSxPQUFPLElBQUksQ0FBQ1MsS0FBSyxDQUFDQyxRQUFRO0lBQzVCO0lBNUNBQyxZQUFZRixLQUF5QixDQUFFO1FBQ3JDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNsQixLQUFLLEdBQUc7WUFBRUwsVUFBVTtRQUFNO1FBQy9CLElBQUksQ0FBQ2MsUUFBUSxHQUFHO1FBQ2hCLElBQUksQ0FBQ04sY0FBYyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDTCxPQUFPLGlCQUFHdUIsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUE7SUFDakI7QUF1Q0Y7TUFFQSxXQUFldkMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL2dyYWNlZnVsLWRlZ3JhZGUtYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIGNyZWF0ZVJlZiwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbn1cblxuaW50ZXJmYWNlIEVycm9yQm91bmRhcnlTdGF0ZSB7XG4gIGhhc0Vycm9yOiBib29sZWFuXG59XG5cbmZ1bmN0aW9uIGdldERvbU5vZGVBdHRyaWJ1dGVzKG5vZGU6IEhUTUxFbGVtZW50KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXR0ciA9IG5vZGUuYXR0cmlidXRlc1tpXVxuICAgIHJlc3VsdFthdHRyLm5hbWVdID0gYXR0ci52YWx1ZVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGNsYXNzIEdyYWNlZnVsRGVncmFkZUJvdW5kYXJ5IGV4dGVuZHMgQ29tcG9uZW50PFxuICBFcnJvckJvdW5kYXJ5UHJvcHMsXG4gIEVycm9yQm91bmRhcnlTdGF0ZVxuPiB7XG4gIHByaXZhdGUgcm9vdEh0bWw6IHN0cmluZ1xuICBwcml2YXRlIGh0bWxBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHByaXZhdGUgaHRtbFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxIdG1sRWxlbWVudCB8IG51bGw+XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEVycm9yQm91bmRhcnlQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIHRoaXMuc3RhdGUgPSB7IGhhc0Vycm9yOiBmYWxzZSB9XG4gICAgdGhpcy5yb290SHRtbCA9ICcnXG4gICAgdGhpcy5odG1sQXR0cmlidXRlcyA9IHt9XG4gICAgdGhpcy5odG1sUmVmID0gY3JlYXRlUmVmPEhUTUxIdG1sRWxlbWVudD4oKVxuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihfOiB1bmtub3duKTogRXJyb3JCb3VuZGFyeVN0YXRlIHtcbiAgICByZXR1cm4geyBoYXNFcnJvcjogdHJ1ZSB9XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBodG1sTm9kZSA9IHRoaXMuaHRtbFJlZi5jdXJyZW50XG4gICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IgJiYgaHRtbE5vZGUpIHtcbiAgICAgIC8vIFJlYXBwbHkgdGhlIGNhY2hlZCBIVE1MIGF0dHJpYnV0ZXMgdG8gdGhlIHJvb3QgZWxlbWVudFxuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5odG1sQXR0cmlidXRlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGh0bWxOb2RlLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBoYXNFcnJvciB9ID0gdGhpcy5zdGF0ZVxuICAgIC8vIENhY2hlIHRoZSByb290IEhUTUwgY29udGVudCBvbiB0aGUgZmlyc3QgcmVuZGVyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICF0aGlzLnJvb3RIdG1sKSB7XG4gICAgICB0aGlzLnJvb3RIdG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTFxuICAgICAgdGhpcy5odG1sQXR0cmlidXRlcyA9IGdldERvbU5vZGVBdHRyaWJ1dGVzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICB9XG5cbiAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgIC8vIFJlbmRlciB0aGUgY3VycmVudCBIVE1MIGNvbnRlbnQgd2l0aG91dCBoeWRyYXRpb25cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxodG1sXG4gICAgICAgICAgcmVmPXt0aGlzLmh0bWxSZWZ9XG4gICAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogdGhpcy5yb290SHRtbCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR3JhY2VmdWxEZWdyYWRlQm91bmRhcnlcbiJdLCJuYW1lcyI6WyJHcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeSIsImdldERvbU5vZGVBdHRyaWJ1dGVzIiwibm9kZSIsInJlc3VsdCIsImkiLCJhdHRyaWJ1dGVzIiwibGVuZ3RoIiwiYXR0ciIsIm5hbWUiLCJ2YWx1ZSIsIkNvbXBvbmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsIl8iLCJoYXNFcnJvciIsImNvbXBvbmVudERpZE1vdW50IiwiaHRtbE5vZGUiLCJodG1sUmVmIiwiY3VycmVudCIsInN0YXRlIiwiT2JqZWN0IiwiZW50cmllcyIsImh0bWxBdHRyaWJ1dGVzIiwiZm9yRWFjaCIsImtleSIsInNldEF0dHJpYnV0ZSIsInJlbmRlciIsIndpbmRvdyIsInJvb3RIdG1sIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJpbm5lckhUTUwiLCJodG1sIiwicmVmIiwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJwcm9wcyIsImNoaWxkcmVuIiwiY29uc3RydWN0b3IiLCJjcmVhdGVSZWYiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/errors/root-error-boundary.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/errors/root-error-boundary.js ***! \********************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RootErrorBoundary;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _gracefuldegradeboundary = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./graceful-degrade-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js\"));\nconst _errorboundary = __webpack_require__(/*! ../error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _isbot = __webpack_require__(/*! ../../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst isBotUserAgent = true && (0, _isbot.isBot)(window.navigator.userAgent);\nfunction RootErrorBoundary(param) {\n let { children, errorComponent, errorStyles, errorScripts } = param;\n if (isBotUserAgent) {\n // Preserve existing DOM/HTML for bots to avoid replacing content with an error UI\n // and to keep the original SSR output intact.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_gracefuldegradeboundary.default, {\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.ErrorBoundary, {\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n}\n_c = RootErrorBoundary;\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=root-error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"RootErrorBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL3Jvb3QtZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FVQTs7O2VBQXdCQTs7Ozs7NEVBUlE7OEZBQ0k7MkNBQ21CO21DQUNqQztBQUV0QixNQUFNQyxpQkFDSixLQUE2QixJQUFJRSxDQUFBQSxHQUFBQSxPQUFBQSxLQUFBQSxFQUFNRCxPQUFPRSxTQUFTLENBQUNDLFNBQVM7QUFFcEQsMkJBQTJCLEtBS1c7SUFMWCxNQUN4Q0MsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLFdBQVcsRUFDWEMsWUFBWSxFQUN1QyxHQUxYO0lBTXhDLElBQUlSLGdCQUFnQjtRQUNsQixrRkFBa0Y7UUFDbEYsOENBQThDO1FBQzlDLHFCQUFPLHFCQUFDUyx5QkFBQUEsT0FBdUI7c0JBQUVKOztJQUNuQztJQUVBLHFCQUNFLHFCQUFDSyxlQUFBQSxhQUFhO1FBQ1pKLGdCQUFnQkE7UUFDaEJDLGFBQWFBO1FBQ2JDLGNBQWNBO2tCQUViSDs7QUFHUDtLQXJCd0JOIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL2Vycm9ycy9yb290LWVycm9yLWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IFJlYWN0LCB7IHR5cGUgSlNYIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgR3JhY2VmdWxEZWdyYWRlQm91bmRhcnkgZnJvbSAnLi9ncmFjZWZ1bC1kZWdyYWRlLWJvdW5kYXJ5J1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSwgdHlwZSBFcnJvckJvdW5kYXJ5UHJvcHMgfSBmcm9tICcuLi9lcnJvci1ib3VuZGFyeSdcbmltcG9ydCB7IGlzQm90IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtYm90J1xuXG5jb25zdCBpc0JvdFVzZXJBZ2VudCA9XG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIGlzQm90KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSb290RXJyb3JCb3VuZGFyeSh7XG4gIGNoaWxkcmVuLFxuICBlcnJvckNvbXBvbmVudCxcbiAgZXJyb3JTdHlsZXMsXG4gIGVycm9yU2NyaXB0cyxcbn06IEVycm9yQm91bmRhcnlQcm9wcyAmIHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KTogSlNYLkVsZW1lbnQge1xuICBpZiAoaXNCb3RVc2VyQWdlbnQpIHtcbiAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyBET00vSFRNTCBmb3IgYm90cyB0byBhdm9pZCByZXBsYWNpbmcgY29udGVudCB3aXRoIGFuIGVycm9yIFVJXG4gICAgLy8gYW5kIHRvIGtlZXAgdGhlIG9yaWdpbmFsIFNTUiBvdXRwdXQgaW50YWN0LlxuICAgIHJldHVybiA8R3JhY2VmdWxEZWdyYWRlQm91bmRhcnk+e2NoaWxkcmVufTwvR3JhY2VmdWxEZWdyYWRlQm91bmRhcnk+XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFcnJvckJvdW5kYXJ5XG4gICAgICBlcnJvckNvbXBvbmVudD17ZXJyb3JDb21wb25lbnR9XG4gICAgICBlcnJvclN0eWxlcz17ZXJyb3JTdHlsZXN9XG4gICAgICBlcnJvclNjcmlwdHM9e2Vycm9yU2NyaXB0c31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9FcnJvckJvdW5kYXJ5PlxuICApXG59XG4iXSwibmFtZXMiOlsiUm9vdEVycm9yQm91bmRhcnkiLCJpc0JvdFVzZXJBZ2VudCIsIndpbmRvdyIsImlzQm90IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiY2hpbGRyZW4iLCJlcnJvckNvbXBvbmVudCIsImVycm9yU3R5bGVzIiwiZXJyb3JTY3JpcHRzIiwiR3JhY2VmdWxEZWdyYWRlQm91bmRhcnkiLCJFcnJvckJvdW5kYXJ5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/errors/root-error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/forbidden.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/components/forbidden.js ***! \***************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"forbidden\", ({\n enumerable: true,\n get: function() {\n return forbidden;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";403\";\nfunction forbidden() {\n if (true) {\n throw Object.defineProperty(new Error(\"`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E488\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=forbidden.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZm9yYmlkZGVuLmpzIiwibWFwcGluZ3MiOiI7Ozs7NkNBcUJnQkE7OztlQUFBQTs7O2dEQWxCVDtBQUVQLDZCQUE2QjtBQUM3Qjs7Ozs7Ozs7Ozs7Q0FXQyxHQUVELE1BQU1DLFNBQVUsS0FBRUMsb0JBQUFBLDhCQUE4QixHQUFDO0FBRTFDLFNBQVNGO0lBQ2QsSUFBSSxJQUFnRCxFQUFFO1FBQ3BELE1BQU0scUJBRUwsQ0FGSyxJQUFJTSxNQUNQLGdIQURHO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBLDRDQUE0QztJQUM1QyxNQUFNQyxRQUFRLHFCQUFpQixDQUFqQixJQUFJRCxNQUFNTCxTQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBZ0I7SUFDNUJNLE1BQWtDQyxNQUFNLEdBQUdQO0lBQzdDLE1BQU1NO0FBQ1IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9mb3JiaWRkZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuXG4vLyBUT0RPOiBBZGQgYGZvcmJpZGRlbmAgZG9jc1xuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gcmVuZGVyIHRoZSBbZm9yYmlkZGVuLmpzIGZpbGVdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2ZpbGUtY29udmVudGlvbnMvZm9yYmlkZGVuKVxuICogd2l0aGluIGEgcm91dGUgc2VnbWVudCBhcyB3ZWxsIGFzIGluamVjdCBhIHRhZy5cbiAqXG4gKiBgZm9yYmlkZGVuKClgIGNhbiBiZSB1c2VkIGluXG4gKiBbU2VydmVyIENvbXBvbmVudHNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyksXG4gKiBbUm91dGUgSGFuZGxlcnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JvdXRpbmcvcm91dGUtaGFuZGxlcnMpLCBhbmRcbiAqIFtTZXJ2ZXIgQWN0aW9uc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9zZXJ2ZXItYWN0aW9ucy1hbmQtbXV0YXRpb25zKS5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGBmb3JiaWRkZW5gXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvZm9yYmlkZGVuKVxuICovXG5cbmNvbnN0IERJR0VTVCA9IGAke0hUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07NDAzYFxuXG5leHBvcnQgZnVuY3Rpb24gZm9yYmlkZGVuKCk6IG5ldmVyIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBcXGBmb3JiaWRkZW4oKVxcYCBpcyBleHBlcmltZW50YWwgYW5kIG9ubHkgYWxsb3dlZCB0byBiZSBlbmFibGVkIHdoZW4gXFxgZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzXFxgIGlzIGVuYWJsZWQuYFxuICAgIClcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG4gIHRocm93IGVycm9yXG59XG4iXSwibmFtZXMiOlsiZm9yYmlkZGVuIiwiRElHRVNUIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTIiwiRXJyb3IiLCJlcnJvciIsImRpZ2VzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/forbidden.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/handle-isr-error.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/handle-isr-error.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HandleISRError\", ({\n enumerable: true,\n get: function() {\n return HandleISRError;\n }\n}));\nconst workAsyncStorage = false ? 0 : undefined;\nfunction HandleISRError(param) {\n let { error } = param;\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore();\n if ((store == null ? void 0 : store.isRevalidate) || (store == null ? void 0 : store.isStaticGeneration)) {\n console.error(error);\n throw error;\n }\n }\n return null;\n}\n_c = HandleISRError;\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=handle-isr-error.js.map\nvar _c;\n$RefreshReg$(_c, \"HandleISRError\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaGFuZGxlLWlzci1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQVVnQkE7OztlQUFBQTs7O0FBVmhCLE1BQU1DLG1CQUNKLE1BQTZCLEdBRXZCRSxDQUNnQixHQUNsQkM7QUFLQyx3QkFBd0IsS0FBeUI7SUFBekIsTUFBRUMsS0FBSyxFQUFrQixHQUF6QjtJQUM3QixJQUFJSixrQkFBa0I7UUFDcEIsTUFBTUssUUFBUUwsaUJBQWlCTSxRQUFRO1FBQ3ZDLElBQUlELENBQUFBLFNBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE1BQU9FLFlBQUFBLE1BQWdCRixTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPRyxrQkFBQUEsR0FBb0I7WUFDcERDLFFBQVFMLEtBQUssQ0FBQ0E7WUFDZCxNQUFNQTtRQUNSO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7S0FWZ0JMIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvaGFuZGxlLWlzci1lcnJvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgd29ya0FzeW5jU3RvcmFnZSA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpXG4gICAgICApLndvcmtBc3luY1N0b3JhZ2VcbiAgICA6IHVuZGVmaW5lZFxuXG4vLyBpZiB3ZSBhcmUgcmV2YWxpZGF0aW5nIHdlIHdhbnQgdG8gcmUtdGhyb3cgdGhlIGVycm9yIHNvIHRoZVxuLy8gZnVuY3Rpb24gY3Jhc2hlcyBzbyB3ZSBjYW4gbWFpbnRhaW4gb3VyIHByZXZpb3VzIGNhY2hlXG4vLyBpbnN0ZWFkIG9mIGNhY2hpbmcgdGhlIGVycm9yIHBhZ2VcbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGVJU1JFcnJvcih7IGVycm9yIH06IHsgZXJyb3I6IGFueSB9KSB7XG4gIGlmICh3b3JrQXN5bmNTdG9yYWdlKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB3b3JrQXN5bmNTdG9yYWdlLmdldFN0b3JlKClcbiAgICBpZiAoc3RvcmU/LmlzUmV2YWxpZGF0ZSB8fCBzdG9yZT8uaXNTdGF0aWNHZW5lcmF0aW9uKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuIl0sIm5hbWVzIjpbIkhhbmRsZUlTUkVycm9yIiwid29ya0FzeW5jU3RvcmFnZSIsIndpbmRvdyIsInJlcXVpcmUiLCJ1bmRlZmluZWQiLCJlcnJvciIsInN0b3JlIiwiZ2V0U3RvcmUiLCJpc1JldmFsaWRhdGUiLCJpc1N0YXRpY0dlbmVyYXRpb24iLCJjb25zb2xlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/handle-isr-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***! \*****************************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"HTTPAccessFallbackBoundary\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessFallbackBoundary;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ../navigation-untracked */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _warnonce = __webpack_require__(/*! ../../../shared/lib/utils/warn-once */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nclass HTTPAccessFallbackErrorBoundary extends _react.default.Component {\n componentDidCatch() {\n if ( true && this.props.missingSlots && this.props.missingSlots.size > 0 && // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')) {\n let warningMessage = 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n';\n const formattedSlots = Array.from(this.props.missingSlots).sort((a, b)=>a.localeCompare(b)).map((slot)=>\"@\" + slot).join(', ');\n warningMessage += 'Missing slots: ' + formattedSlots;\n (0, _warnonce.warnOnce)(warningMessage);\n }\n }\n static getDerivedStateFromError(error) {\n if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\n const httpStatus = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(error);\n return {\n triggeredStatus: httpStatus\n };\n }\n // Re-throw if error is not for 404\n throw error;\n }\n static getDerivedStateFromProps(props, state) {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname\n };\n }\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props;\n const { triggeredStatus } = this.state;\n const errorComponents = {\n [_httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [_httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [_httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized\n };\n if (triggeredStatus) {\n const isNotFound = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND && notFound;\n const isForbidden = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN && forbidden;\n const isUnauthorized = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized;\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"robots\",\n content: \"noindex\"\n }),\n true && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"boundary-next-error\",\n content: (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(triggeredStatus)\n }),\n errorComponents[triggeredStatus]\n ]\n });\n }\n return children;\n }\n constructor(props){\n super(props);\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n}\nfunction HTTPAccessFallbackBoundary(param) {\n let { notFound, forbidden, unauthorized, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const missingSlots = (0, _react.useContext)(_approutercontextsharedruntime.MissingSlotContext);\n const hasErrorFallback = !!(notFound || forbidden || unauthorized);\n if (hasErrorFallback) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HTTPAccessFallbackErrorBoundary, {\n pathname: pathname,\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n missingSlots: missingSlots,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\n_c = HTTPAccessFallbackBoundary;\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=error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"HTTPAccessFallbackBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4REF1SmdCQTs7O2VBQUFBOzs7Ozs2RUExSWtCO2lEQUNHO2dEQU05QjtzQ0FDa0I7MkRBQ1U7QUFxQm5DLE1BQU1DLHdDQUF3Q0MsT0FBQUEsT0FBSyxDQUFDQyxTQUFTO0lBWTNEQyxvQkFBMEI7UUFDeEIsSUFuQ3FCLEtBb0NDLElBQ3BCLElBQUksQ0FBQ0ksS0FBSyxDQUFDQyxZQUFZLElBQ3ZCLElBQUksQ0FBQ0QsS0FBSyxDQUFDQyxZQUFZLENBQUNDLElBQUksR0FBRyxLQUMvQiw0RUFBNEU7UUFDNUUsQ0FBQyxJQUFJLENBQUNGLEtBQUssQ0FBQ0MsWUFBWSxDQUFDRSxHQUFHLENBQUMsYUFDN0I7WUFDQSxJQUFJQyxpQkFDRiw0SEFDQTtZQUVGLE1BQU1DLGlCQUFpQkMsTUFBTUMsSUFBSSxDQUFDLElBQUksQ0FBQ1AsS0FBSyxDQUFDQyxZQUFZLEVBQ3RETyxJQUFJLENBQUMsQ0FBQ0MsR0FBR0MsSUFBTUQsRUFBRUUsYUFBYSxDQUFDRCxJQUMvQkUsR0FBRyxDQUFDLENBQUNDLE9BQVUsTUFBR0EsTUFDbEJDLElBQUksQ0FBQztZQUVSVixrQkFBa0Isb0JBQW9CQztZQUV0Q1UsQ0FBQUEsR0FBQUEsVUFBQUEsUUFBQUEsRUFBU1g7UUFDWDtJQUNGO0lBRUEsT0FBT1kseUJBQXlCQyxLQUFVLEVBQUU7UUFDMUMsSUFBSUMsQ0FBQUEsR0FBQUEsb0JBQUFBLHlCQUFBQSxFQUEwQkQsUUFBUTtZQUNwQyxNQUFNRSxhQUFhQyxDQUFBQSxHQUFBQSxvQkFBQUEsMkJBQUFBLEVBQTRCSDtZQUMvQyxPQUFPO2dCQUNMSSxpQkFBaUJGO1lBQ25CO1FBQ0Y7UUFDQSxtQ0FBbUM7UUFDbkMsTUFBTUY7SUFDUjtJQUVBLE9BQU9LLHlCQUNMdEIsS0FBMkMsRUFDM0N1QixLQUE4QixFQUNFO1FBQ2hDOzs7OztLQUtDLEdBQ0QsSUFBSXZCLE1BQU13QixRQUFRLEtBQUtELE1BQU1FLGdCQUFnQixJQUFJRixNQUFNRixlQUFlLEVBQUU7WUFDdEUsT0FBTztnQkFDTEEsaUJBQWlCSztnQkFDakJELGtCQUFrQnpCLE1BQU13QixRQUFRO1lBQ2xDO1FBQ0Y7UUFDQSxPQUFPO1lBQ0xILGlCQUFpQkUsTUFBTUYsZUFBZTtZQUN0Q0ksa0JBQWtCekIsTUFBTXdCLFFBQVE7UUFDbEM7SUFDRjtJQUVBRyxTQUFTO1FBQ1AsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsWUFBWSxFQUFFQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMvQixLQUFLO1FBQ2xFLE1BQU0sRUFBRXFCLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQ0UsS0FBSztRQUN0QyxNQUFNUyxrQkFBa0I7WUFDdEIsQ0FBQ0Msb0JBQUFBLHFCQUFxQixDQUFDQyxTQUFTLENBQUMsRUFBRU47WUFDbkMsQ0FBQ0ssb0JBQUFBLHFCQUFxQixDQUFDRSxTQUFTLENBQUMsRUFBRU47WUFDbkMsQ0FBQ0ksb0JBQUFBLHFCQUFxQixDQUFDRyxZQUFZLENBQUMsRUFBRU47UUFDeEM7UUFFQSxJQUFJVCxpQkFBaUI7WUFDbkIsTUFBTWdCLGFBQ0poQixvQkFBb0JZLG9CQUFBQSxxQkFBcUIsQ0FBQ0MsU0FBUyxJQUFJTjtZQUN6RCxNQUFNVSxjQUNKakIsb0JBQW9CWSxvQkFBQUEscUJBQXFCLENBQUNFLFNBQVMsSUFBSU47WUFDekQsTUFBTVUsaUJBQ0psQixvQkFBb0JZLG9CQUFBQSxxQkFBcUIsQ0FBQ0csWUFBWSxJQUFJTjtZQUU1RCxrR0FBa0c7WUFDbEcsSUFBSSxDQUFFTyxDQUFBQSxjQUFjQyxlQUFlQyxjQUFBQSxDQUFhLEVBQUk7Z0JBQ2xELE9BQU9SO1lBQ1Q7WUFFQSxxQkFDRTs7a0NBQ0UscUJBQUNTLFFBQUFBO3dCQUFLQyxNQUFLO3dCQUFTQyxTQUFROztvQkFsSGIsS0FtSHdCLElBQWIsY0FDeEIscUJBQUNGLFFBQUFBO3dCQUNDQyxNQUFLO3dCQUNMQyxTQUFTQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0NBQUFBLEVBQW1DdEI7O29CQUcvQ1csZUFBZSxDQUFDWCxnQkFBZ0I7OztRQUd2QztRQUVBLE9BQU9VO0lBQ1Q7SUFyR0FhLFlBQVk1QyxLQUEyQyxDQUFFO1FBQ3ZELEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUN1QixLQUFLLEdBQUc7WUFDWEYsaUJBQWlCSztZQUNqQkQsa0JBQWtCekIsTUFBTXdCLFFBQVE7UUFDbEM7SUFDRjtBQWdHRjtBQUVPLG9DQUFvQyxLQUtUO0lBTFMsTUFDekNJLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxZQUFZLEVBQ1pDLFFBQVEsRUFDd0IsR0FMUztJQU16Qyw2RUFBNkU7SUFDN0UscUVBQXFFO0lBQ3JFLHdFQUF3RTtJQUN4RSxtRUFBbUU7SUFDbkUsTUFBTVAsV0FBV3FCLENBQUFBLEdBQUFBLHFCQUFBQSxvQkFBQUE7SUFDakIsTUFBTTVDLGVBQWU2QyxDQUFBQSxHQUFBQSxPQUFBQSxVQUFBQSxFQUFXQywrQkFBQUEsa0JBQWtCO0lBQ2xELE1BQU1DLG1CQUFtQixDQUFDLENBQUVwQixDQUFBQSxZQUFZQyxhQUFhQyxZQUFBQSxDQUFXO0lBRWhFLElBQUlrQixrQkFBa0I7UUFDcEIsT0FDRSxXQURGLEdBQ0UscUJBQUN2RCxpQ0FBQUE7WUFDQytCLFVBQVVBO1lBQ1ZJLFVBQVVBO1lBQ1ZDLFdBQVdBO1lBQ1hDLGNBQWNBO1lBQ2Q3QixjQUFjQTtzQkFFYjhCOztJQUdQO0lBRUEscUJBQU87a0JBQUdBOztBQUNaO0tBN0JnQnZDIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLyoqXG4gKiBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSBpcyBhIGJvdW5kYXJ5IHRoYXQgY2F0Y2hlcyBlcnJvcnMgYW5kIHJlbmRlcnMgYVxuICogZmFsbGJhY2sgY29tcG9uZW50IGZvciBIVFRQIGVycm9ycy5cbiAqXG4gKiBJdCByZWNlaXZlcyB0aGUgc3RhdHVzIGNvZGUsIGFuZCBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHJlbmRlciBmYWxsYmFja3MgZm9yIGZldyBIVFRQIDR4eCBlcnJvcnMuXG4gKlxuICogZS5nLiA0MDRcbiAqIDQwNCByZXByZXNlbnRzIG5vdCBmb3VuZCwgYW5kIHRoZSBmYWxsYmFjayBjb21wb25lbnQgcGFpciBjb250YWlucyB0aGUgY29tcG9uZW50IGFuZCBpdHMgc3R5bGVzLlxuICpcbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVW50cmFja2VkUGF0aG5hbWUgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLXVudHJhY2tlZCdcbmltcG9ydCB7XG4gIEhUVFBBY2Nlc3NFcnJvclN0YXR1cyxcbiAgZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzLFxuICBnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzLFxuICBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuaW1wb3J0IHsgd2Fybk9uY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3V0aWxzL3dhcm4tb25jZSdcbmltcG9ydCB7IE1pc3NpbmdTbG90Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlQcm9wcyB7XG4gIG5vdEZvdW5kPzogUmVhY3QuUmVhY3ROb2RlXG4gIGZvcmJpZGRlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICB1bmF1dGhvcml6ZWQ/OiBSZWFjdC5SZWFjdE5vZGVcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBtaXNzaW5nU2xvdHM/OiBTZXQ8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzXG4gIGV4dGVuZHMgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnlQcm9wcyB7XG4gIHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG4gIG1pc3NpbmdTbG90cz86IFNldDxzdHJpbmc+XG59XG5cbmludGVyZmFjZSBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZSB7XG4gIHRyaWdnZXJlZFN0YXR1czogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIHByZXZpb3VzUGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbn1cblxuY2xhc3MgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzLFxuICBIVFRQQWNjZXNzQm91bmRhcnlTdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdHJpZ2dlcmVkU3RhdHVzOiB1bmRlZmluZWQsXG4gICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRDYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMgJiZcbiAgICAgIHRoaXMucHJvcHMubWlzc2luZ1Nsb3RzLnNpemUgPiAwICYmXG4gICAgICAvLyBBIG1pc3NpbmcgY2hpbGRyZW4gc2xvdCBpcyB0aGUgdHlwaWNhbCBub3QtZm91bmQgY2FzZSwgc28gbm8gbmVlZCB0byB3YXJuXG4gICAgICAhdGhpcy5wcm9wcy5taXNzaW5nU2xvdHMuaGFzKCdjaGlsZHJlbicpXG4gICAgKSB7XG4gICAgICBsZXQgd2FybmluZ01lc3NhZ2UgPVxuICAgICAgICAnTm8gZGVmYXVsdCBjb21wb25lbnQgd2FzIGZvdW5kIGZvciBhIHBhcmFsbGVsIHJvdXRlIHJlbmRlcmVkIG9uIHRoaXMgcGFnZS4gRmFsbGluZyBiYWNrIHRvIG5lYXJlc3QgTm90Rm91bmQgYm91bmRhcnkuXFxuJyArXG4gICAgICAgICdMZWFybiBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3BhcmFsbGVsLXJvdXRlcyNkZWZhdWx0anNcXG5cXG4nXG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZFNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLnByb3BzLm1pc3NpbmdTbG90cylcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgLm1hcCgoc2xvdCkgPT4gYEAke3Nsb3R9YClcbiAgICAgICAgLmpvaW4oJywgJylcblxuICAgICAgd2FybmluZ01lc3NhZ2UgKz0gJ01pc3Npbmcgc2xvdHM6ICcgKyBmb3JtYXR0ZWRTbG90c1xuXG4gICAgICB3YXJuT25jZSh3YXJuaW5nTWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcihlcnJvcikpIHtcbiAgICAgIGNvbnN0IGh0dHBTdGF0dXMgPSBnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMoZXJyb3IpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlnZ2VyZWRTdGF0dXM6IGh0dHBTdGF0dXMsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlLXRocm93IGlmIGVycm9yIGlzIG5vdCBmb3IgNDA0XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgcHJvcHM6IEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlQcm9wcyxcbiAgICBzdGF0ZTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGVcbiAgKTogSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGUgfCBudWxsIHtcbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHJlc2V0IG9mIHRoZSBlcnJvciBib3VuZGFyeSB3aGVuIGEgbmF2aWdhdGlvbiBoYXBwZW5zLlxuICAgICAqIEVuc3VyZXMgdGhlIGVycm9yIGJvdW5kYXJ5IGRvZXMgbm90IHN0YXkgZW5hYmxlZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS5cbiAgICAgKiBBcHByb2FjaCBvZiBzZXRTdGF0ZSBpbiByZW5kZXIgaXMgc2FmZSBhcyBpdCBjaGVja3MgdGhlIHByZXZpb3VzIHBhdGhuYW1lIGFuZCB0aGVuIG92ZXJyaWRlc1xuICAgICAqIGl0IGFzIG91dGxpbmVkIGluIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZSNzdG9yaW5nLWluZm9ybWF0aW9uLWZyb20tcHJldmlvdXMtcmVuZGVyc1xuICAgICAqL1xuICAgIGlmIChwcm9wcy5wYXRobmFtZSAhPT0gc3RhdGUucHJldmlvdXNQYXRobmFtZSAmJiBzdGF0ZS50cmlnZ2VyZWRTdGF0dXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgICBwcmV2aW91c1BhdGhuYW1lOiBwcm9wcy5wYXRobmFtZSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyaWdnZXJlZFN0YXR1czogc3RhdGUudHJpZ2dlcmVkU3RhdHVzLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgbm90Rm91bmQsIGZvcmJpZGRlbiwgdW5hdXRob3JpemVkLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgdHJpZ2dlcmVkU3RhdHVzIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgZXJyb3JDb21wb25lbnRzID0ge1xuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5OT1RfRk9VTkRdOiBub3RGb3VuZCxcbiAgICAgIFtIVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOXTogZm9yYmlkZGVuLFxuICAgICAgW0hUVFBBY2Nlc3NFcnJvclN0YXR1cy5VTkFVVEhPUklaRURdOiB1bmF1dGhvcml6ZWQsXG4gICAgfVxuXG4gICAgaWYgKHRyaWdnZXJlZFN0YXR1cykge1xuICAgICAgY29uc3QgaXNOb3RGb3VuZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLk5PVF9GT1VORCAmJiBub3RGb3VuZFxuICAgICAgY29uc3QgaXNGb3JiaWRkZW4gPVxuICAgICAgICB0cmlnZ2VyZWRTdGF0dXMgPT09IEhUVFBBY2Nlc3NFcnJvclN0YXR1cy5GT1JCSURERU4gJiYgZm9yYmlkZGVuXG4gICAgICBjb25zdCBpc1VuYXV0aG9yaXplZCA9XG4gICAgICAgIHRyaWdnZXJlZFN0YXR1cyA9PT0gSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLlVOQVVUSE9SSVpFRCAmJiB1bmF1dGhvcml6ZWRcblxuICAgICAgLy8gSWYgdGhlcmUncyBubyBtYXRjaGVkIGJvdW5kYXJ5IGluIHRoaXMgbGF5ZXIsIGtlZXAgdGhyb3dpbmcgdGhlIGVycm9yIGJ5IHJlbmRlcmluZyB0aGUgY2hpbGRyZW5cbiAgICAgIGlmICghKGlzTm90Rm91bmQgfHwgaXNGb3JiaWRkZW4gfHwgaXNVbmF1dGhvcml6ZWQpKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwibm9pbmRleFwiIC8+XG4gICAgICAgICAge3Byb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIChcbiAgICAgICAgICAgIDxtZXRhXG4gICAgICAgICAgICAgIG5hbWU9XCJib3VuZGFyeS1uZXh0LWVycm9yXCJcbiAgICAgICAgICAgICAgY29udGVudD17Z2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyh0cmlnZ2VyZWRTdGF0dXMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvckNvbXBvbmVudHNbdHJpZ2dlcmVkU3RhdHVzXX1cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5KHtcbiAgbm90Rm91bmQsXG4gIGZvcmJpZGRlbixcbiAgdW5hdXRob3JpemVkLFxuICBjaGlsZHJlbixcbn06IEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5UHJvcHMpIHtcbiAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLCB0aGlzIHdpbGwgcmV0dXJuIG51bGwuIFRoaXNcbiAgLy8gaXMgYmVjYXVzZSB3ZSB3b24ndCBiZSByZW5kZXJpbmcgYW55IG5vdCBmb3VuZCBib3VuZGFyaWVzIG9yIGVycm9yXG4gIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbC4gV2hlbiB0aGlzIHJ1bnMgb24gdGhlIGNsaWVudFxuICAvLyAod2hlcmUgdGhlc2UgZXJyb3IgY2FuIG9jY3VyKSwgd2Ugd2lsbCBnZXQgdGhlIGNvcnJlY3QgcGF0aG5hbWUuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuICBjb25zdCBtaXNzaW5nU2xvdHMgPSB1c2VDb250ZXh0KE1pc3NpbmdTbG90Q29udGV4dClcbiAgY29uc3QgaGFzRXJyb3JGYWxsYmFjayA9ICEhKG5vdEZvdW5kIHx8IGZvcmJpZGRlbiB8fCB1bmF1dGhvcml6ZWQpXG5cbiAgaWYgKGhhc0Vycm9yRmFsbGJhY2spIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlcbiAgICAgICAgcGF0aG5hbWU9e3BhdGhuYW1lfVxuICAgICAgICBub3RGb3VuZD17bm90Rm91bmR9XG4gICAgICAgIGZvcmJpZGRlbj17Zm9yYmlkZGVufVxuICAgICAgICB1bmF1dGhvcml6ZWQ9e3VuYXV0aG9yaXplZH1cbiAgICAgICAgbWlzc2luZ1Nsb3RzPXttaXNzaW5nU2xvdHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb21wb25lbnREaWRDYXRjaCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BzIiwibWlzc2luZ1Nsb3RzIiwic2l6ZSIsImhhcyIsIndhcm5pbmdNZXNzYWdlIiwiZm9ybWF0dGVkU2xvdHMiLCJBcnJheSIsImZyb20iLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFwIiwic2xvdCIsImpvaW4iLCJ3YXJuT25jZSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImVycm9yIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciIsImh0dHBTdGF0dXMiLCJnZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMiLCJ0cmlnZ2VyZWRTdGF0dXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJzdGF0ZSIsInBhdGhuYW1lIiwicHJldmlvdXNQYXRobmFtZSIsInVuZGVmaW5lZCIsInJlbmRlciIsIm5vdEZvdW5kIiwiZm9yYmlkZGVuIiwidW5hdXRob3JpemVkIiwiY2hpbGRyZW4iLCJlcnJvckNvbXBvbmVudHMiLCJIVFRQQWNjZXNzRXJyb3JTdGF0dXMiLCJOT1RfRk9VTkQiLCJGT1JCSURERU4iLCJVTkFVVEhPUklaRUQiLCJpc05vdEZvdW5kIiwiaXNGb3JiaWRkZW4iLCJpc1VuYXV0aG9yaXplZCIsIm1ldGEiLCJuYW1lIiwiY29udGVudCIsImdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXMiLCJjb25zdHJ1Y3RvciIsInVzZVVudHJhY2tlZFBhdGhuYW1lIiwidXNlQ29udGV4dCIsIk1pc3NpbmdTbG90Q29udGV4dCIsImhhc0Vycm9yRmFsbGJhY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js": /*!***********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***! \***********************************************************************************************/ /***/ ((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 HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\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=http-access-fallback.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQWFBLHFCQUFxQjtlQUFyQkE7O0lBUUFDLDhCQUE4QjtlQUE5QkE7O0lBdUNHQyxrQ0FBa0M7ZUFBbENBOztJQVBBQywyQkFBMkI7ZUFBM0JBOztJQW5CQUMseUJBQXlCO2VBQXpCQTs7O0FBckJULE1BQU1KLHdCQUF3QjtJQUNuQ0ssV0FBVztJQUNYQyxXQUFXO0lBQ1hDLGNBQWM7QUFDaEI7QUFFQSxNQUFNQyxnQkFBZ0IsSUFBSUMsSUFBSUMsT0FBT0MsTUFBTSxDQUFDWDtBQUVyQyxNQUFNQyxpQ0FBaUM7QUFhdkMsU0FBU0csMEJBQ2RRLEtBQWM7SUFFZCxJQUNFLE9BQU9BLFVBQVUsWUFDakJBLFVBQVUsUUFDVixDQUFFLGFBQVlBLEtBQUFBLENBQUksSUFDbEIsT0FBT0EsTUFBTUMsTUFBTSxLQUFLLFVBQ3hCO1FBQ0EsT0FBTztJQUNUO0lBQ0EsTUFBTSxDQUFDQyxRQUFRQyxXQUFXLEdBQUdILE1BQU1DLE1BQU0sQ0FBQ0csS0FBSyxDQUFDO0lBRWhELE9BQ0VGLFdBQVdiLGtDQUNYTyxjQUFjUyxHQUFHLENBQUNDLE9BQU9IO0FBRTdCO0FBRU8sU0FBU1osNEJBQ2RTLEtBQThCO0lBRTlCLE1BQU1HLGFBQWFILE1BQU1DLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQzdDLE9BQU9FLE9BQU9IO0FBQ2hCO0FBRU8sU0FBU2IsbUNBQ2RpQixNQUFjO0lBRWQsT0FBUUE7UUFDTixLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1QsS0FBSztZQUNILE9BQU87UUFDVDtZQUNFO0lBQ0o7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSFRUUEFjY2Vzc0Vycm9yU3RhdHVzID0ge1xuICBOT1RfRk9VTkQ6IDQwNCxcbiAgRk9SQklEREVOOiA0MDMsXG4gIFVOQVVUSE9SSVpFRDogNDAxLFxufVxuXG5jb25zdCBBTExPV0VEX0NPREVTID0gbmV3IFNldChPYmplY3QudmFsdWVzKEhUVFBBY2Nlc3NFcnJvclN0YXR1cykpXG5cbmV4cG9ydCBjb25zdCBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUgPSAnTkVYVF9IVFRQX0VSUk9SX0ZBTExCQUNLJ1xuXG5leHBvcnQgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciA9IEVycm9yICYge1xuICBkaWdlc3Q6IGAke3R5cGVvZiBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREV9OyR7c3RyaW5nfWBcbn1cblxuLyoqXG4gKiBDaGVja3MgYW4gZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYW4gZXJyb3IgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgSFRUUCBuYXZpZ2F0aW9uIEFQSXMgYG5vdEZvdW5kKClgLCBgZm9yYmlkZGVuKClgIG9yIGB1bmF1dGhvcml6ZWQoKWAuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSByZWZlcmVuY2UgYSBIVFRQIGFjY2VzcyBlcnJvclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSBIVFRQIGFjY2VzcyBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIHtcbiAgaWYgKFxuICAgIHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgfHxcbiAgICBlcnJvciA9PT0gbnVsbCB8fFxuICAgICEoJ2RpZ2VzdCcgaW4gZXJyb3IpIHx8XG4gICAgdHlwZW9mIGVycm9yLmRpZ2VzdCAhPT0gJ3N0cmluZydcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgW3ByZWZpeCwgaHR0cFN0YXR1c10gPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVxuXG4gIHJldHVybiAoXG4gICAgcHJlZml4ID09PSBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUgJiZcbiAgICBBTExPV0VEX0NPREVTLmhhcyhOdW1iZXIoaHR0cFN0YXR1cykpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjY2Vzc0ZhbGxiYWNrSFRUUFN0YXR1cyhcbiAgZXJyb3I6IEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yXG4pOiBudW1iZXIge1xuICBjb25zdCBodHRwU3RhdHVzID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylbMV1cbiAgcmV0dXJuIE51bWJlcihodHRwU3RhdHVzKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyhcbiAgc3RhdHVzOiBudW1iZXJcbik6ICdub3QtZm91bmQnIHwgJ2ZvcmJpZGRlbicgfCAndW5hdXRob3JpemVkJyB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSA0MDE6XG4gICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCdcbiAgICBjYXNlIDQwMzpcbiAgICAgIHJldHVybiAnZm9yYmlkZGVuJ1xuICAgIGNhc2UgNDA0OlxuICAgICAgcmV0dXJuICdub3QtZm91bmQnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVyblxuICB9XG59XG4iXSwibmFtZXMiOlsiSFRUUEFjY2Vzc0Vycm9yU3RhdHVzIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwiZ2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyIsImdldEFjY2Vzc0ZhbGxiYWNrSFRUUFN0YXR1cyIsImlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IiLCJOT1RfRk9VTkQiLCJGT1JCSURERU4iLCJVTkFVVEhPUklaRUQiLCJBTExPV0VEX0NPREVTIiwiU2V0IiwiT2JqZWN0IiwidmFsdWVzIiwiZXJyb3IiLCJkaWdlc3QiLCJwcmVmaXgiLCJodHRwU3RhdHVzIiwic3BsaXQiLCJoYXMiLCJOdW1iZXIiLCJzdGF0dXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/is-next-router-error.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/is-next-router-error.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\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=is-next-router-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFXZ0JBOzs7ZUFBQUE7OztnREFSVDsyQ0FDNkM7QUFPN0MsU0FBU0Esa0JBQ2RDLEtBQWM7SUFFZCxPQUFPQyxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQkQsVUFBVUUsQ0FBQUEsR0FBQUEsb0JBQUFBLHlCQUFBQSxFQUEwQkY7QUFDN0QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9pcy1uZXh0LXJvdXRlci1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuaW1wb3J0IHsgaXNSZWRpcmVjdEVycm9yLCB0eXBlIFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSBuYXZpZ2F0aW9uIHNpZ25hbCBlcnJvci4gVGhlc2UgZXJyb3JzIGFyZVxuICogdGhyb3duIGJ5IHVzZXIgY29kZSB0byBwZXJmb3JtIG5hdmlnYXRpb24gb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0IHRoZSBSZWFjdFxuICogcmVuZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOZXh0Um91dGVyRXJyb3IoXG4gIGVycm9yOiB1bmtub3duXG4pOiBlcnJvciBpcyBSZWRpcmVjdEVycm9yIHwgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICByZXR1cm4gaXNSZWRpcmVjdEVycm9yKGVycm9yKSB8fCBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKGVycm9yKVxufVxuIl0sIm5hbWVzIjpbImlzTmV4dFJvdXRlckVycm9yIiwiZXJyb3IiLCJpc1JlZGlyZWN0RXJyb3IiLCJpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/is-next-router-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/links.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/client/components/links.js ***! \***********************************************************/ /***/ ((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 IDLE_LINK_STATUS: function() {\n return IDLE_LINK_STATUS;\n },\n PENDING_LINK_STATUS: function() {\n return PENDING_LINK_STATUS;\n },\n mountFormInstance: function() {\n return mountFormInstance;\n },\n mountLinkInstance: function() {\n return mountLinkInstance;\n },\n onLinkVisibilityChanged: function() {\n return onLinkVisibilityChanged;\n },\n onNavigationIntent: function() {\n return onNavigationIntent;\n },\n pingVisibleLinks: function() {\n return pingVisibleLinks;\n },\n setLinkForCurrentNavigation: function() {\n return setLinkForCurrentNavigation;\n },\n unmountLinkForCurrentNavigation: function() {\n return unmountLinkForCurrentNavigation;\n },\n unmountPrefetchableInstance: function() {\n return unmountPrefetchableInstance;\n }\n});\nconst _approuterinstance = __webpack_require__(/*! ./app-router-instance */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-instance.js\");\nconst _approuter = __webpack_require__(/*! ./app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _segmentcache = __webpack_require__(/*! ./segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/invariant-error.js\");\n// Tracks the most recently navigated link instance. When null, indicates\n// the current navigation was not initiated by a link click.\nlet linkForMostRecentNavigation = null;\nconst PENDING_LINK_STATUS = {\n pending: true\n};\nconst IDLE_LINK_STATUS = {\n pending: false\n};\nfunction setLinkForCurrentNavigation(link) {\n (0, _react.startTransition)(()=>{\n linkForMostRecentNavigation == null ? void 0 : linkForMostRecentNavigation.setOptimisticLinkStatus(IDLE_LINK_STATUS);\n link == null ? void 0 : link.setOptimisticLinkStatus(PENDING_LINK_STATUS);\n linkForMostRecentNavigation = link;\n });\n}\nfunction unmountLinkForCurrentNavigation(link) {\n if (linkForMostRecentNavigation === link) {\n linkForMostRecentNavigation = null;\n }\n}\n// Use a WeakMap to associate a Link instance with its DOM element. This is\n// used by the IntersectionObserver to track the link's visibility.\nconst prefetchable = typeof WeakMap === 'function' ? new WeakMap() : new Map();\n// A Set of the currently visible links. We re-prefetch visible links after a\n// cache invalidation, or when the current URL changes. It's a separate data\n// structure from the WeakMap above because only the visible links need to\n// be enumerated.\nconst prefetchableAndVisible = new Set();\n// A single IntersectionObserver instance shared by all components.\nconst observer = typeof IntersectionObserver === 'function' ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px'\n}) : null;\nfunction observeVisibility(element, instance) {\n const existingInstance = prefetchable.get(element);\n if (existingInstance !== undefined) {\n // This shouldn't happen because each component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountPrefetchableInstance(element);\n }\n // Only track prefetchable links that have a valid prefetch URL\n prefetchable.set(element, instance);\n if (observer !== null) {\n observer.observe(element);\n }\n}\nfunction coercePrefetchableUrl(href) {\n try {\n return (0, _approuter.createPrefetchURL)(href);\n } catch (e) {\n // createPrefetchURL sometimes throws an error if an invalid URL is\n // provided, though I'm not sure if it's actually necessary.\n // TODO: Consider removing the throw from the inner function, or change it\n // to reportError. Or maybe the error isn't even necessary for automatic\n // prefetches, just navigations.\n const reportErrorFn = typeof reportError === 'function' ? reportError : console.error;\n reportErrorFn(\"Cannot prefetch '\" + href + \"' because it cannot be converted to a URL.\");\n return null;\n }\n}\nfunction mountLinkInstance(element, href, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus) {\n if (prefetchEnabled) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL !== null) {\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus\n };\n // We only observe the link's visibility if it's prefetchable. For\n // example, this excludes links to external URLs.\n observeVisibility(element, instance);\n return instance;\n }\n }\n // If the link is not prefetchable, we still create an instance so we can\n // track its optimistic state (i.e. useLinkStatus).\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: null,\n setOptimisticLinkStatus\n };\n return instance;\n}\nfunction mountFormInstance(element, href, router, fetchStrategy) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL === null) {\n // This href is not prefetchable, so we don't track it.\n // TODO: We currently observe/unobserve a form every time its href changes.\n // For Links, this isn't a big deal because the href doesn't usually change,\n // but for forms it's extremely common. We should optimize this.\n return;\n }\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus: null\n };\n observeVisibility(element, instance);\n}\nfunction unmountPrefetchableInstance(element) {\n const instance = prefetchable.get(element);\n if (instance !== undefined) {\n prefetchable.delete(element);\n prefetchableAndVisible.delete(instance);\n const prefetchTask = instance.prefetchTask;\n if (prefetchTask !== null) {\n (0, _segmentcache.cancelPrefetchTask)(prefetchTask);\n }\n }\n if (observer !== null) {\n observer.unobserve(element);\n }\n}\nfunction handleIntersect(entries) {\n for (const entry of entries){\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0;\n onLinkVisibilityChanged(entry.target, isVisible);\n }\n}\nfunction onLinkVisibilityChanged(element, isVisible) {\n if (true) {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return;\n }\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n instance.isVisible = isVisible;\n if (isVisible) {\n prefetchableAndVisible.add(instance);\n } else {\n prefetchableAndVisible.delete(instance);\n }\n rescheduleLinkPrefetch(instance, _segmentcache.PrefetchPriority.Default);\n}\nfunction onNavigationIntent(element, unstable_upgradeToDynamicPrefetch) {\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n if (false) {}\n rescheduleLinkPrefetch(instance, _segmentcache.PrefetchPriority.Intent);\n }\n}\nfunction rescheduleLinkPrefetch(instance, priority) {\n const existingPrefetchTask = instance.prefetchTask;\n if (!instance.isVisible) {\n // Cancel any in-progress prefetch task. (If it already finished then this\n // is a no-op.)\n if (existingPrefetchTask !== null) {\n (0, _segmentcache.cancelPrefetchTask)(existingPrefetchTask);\n }\n // We don't need to reset the prefetchTask to null upon cancellation; an\n // old task object can be rescheduled with reschedulePrefetchTask. This is a\n // micro-optimization but also makes the code simpler (don't need to\n // worry about whether an old task object is stale).\n return;\n }\n if (true) {\n // The old prefetch implementation does not have different priority levels.\n // Just schedule a new prefetch task.\n prefetchWithOldCacheImplementation(instance);\n return;\n }\n const appRouterState = (0, _approuterinstance.getCurrentAppRouterState)();\n if (appRouterState !== null) {\n const treeAtTimeOfPrefetch = appRouterState.tree;\n if (existingPrefetchTask === null) {\n // Initiate a prefetch task.\n const nextUrl = appRouterState.nextUrl;\n const cacheKey = (0, _segmentcache.createCacheKey)(instance.prefetchHref, nextUrl);\n instance.prefetchTask = (0, _segmentcache.schedulePrefetchTask)(cacheKey, treeAtTimeOfPrefetch, instance.fetchStrategy, priority, null);\n } else {\n // We already have an old task object that we can reschedule. This is\n // effectively the same as canceling the old task and creating a new one.\n (0, _segmentcache.reschedulePrefetchTask)(existingPrefetchTask, treeAtTimeOfPrefetch, instance.fetchStrategy, priority);\n }\n }\n}\nfunction pingVisibleLinks(nextUrl, tree) {\n // For each currently visible link, cancel the existing prefetch task (if it\n // exists) and schedule a new one. This is effectively the same as if all the\n // visible links left and then re-entered the viewport.\n //\n // This is called when the Next-Url or the base tree changes, since those\n // may affect the result of a prefetch task. It's also called after a\n // cache invalidation.\n for (const instance of prefetchableAndVisible){\n const task = instance.prefetchTask;\n if (task !== null && !(0, _segmentcache.isPrefetchTaskDirty)(task, nextUrl, tree)) {\n continue;\n }\n // Something changed. Cancel the existing prefetch task and schedule a\n // new one.\n if (task !== null) {\n (0, _segmentcache.cancelPrefetchTask)(task);\n }\n const cacheKey = (0, _segmentcache.createCacheKey)(instance.prefetchHref, nextUrl);\n instance.prefetchTask = (0, _segmentcache.schedulePrefetchTask)(cacheKey, tree, instance.fetchStrategy, _segmentcache.PrefetchPriority.Default, null);\n }\n}\nfunction prefetchWithOldCacheImplementation(instance) {\n // This is the path used when the Segment Cache is not enabled.\n if (false) {}\n const doPrefetch = async ()=>{\n // note that `appRouter.prefetch()` is currently sync,\n // so we have to wrap this call in an async function to be able to catch() errors below.\n let prefetchKind;\n switch(instance.fetchStrategy){\n case _segmentcache.FetchStrategy.PPR:\n {\n prefetchKind = _routerreducertypes.PrefetchKind.AUTO;\n break;\n }\n case _segmentcache.FetchStrategy.Full:\n {\n prefetchKind = _routerreducertypes.PrefetchKind.FULL;\n break;\n }\n case _segmentcache.FetchStrategy.PPRRuntime:\n {\n // We can only get here if Client Segment Cache is off, and in that case\n // it shouldn't be possible for a link to request a runtime prefetch.\n throw Object.defineProperty(new _invarianterror.InvariantError('FetchStrategy.PPRRuntime should never be used when `experimental.clientSegmentCache` is disabled'), \"__NEXT_ERROR_CODE\", {\n value: \"E772\",\n enumerable: false,\n configurable: true\n });\n }\n default:\n {\n instance.fetchStrategy;\n // Unreachable, but otherwise typescript will consider the variable unassigned\n prefetchKind = undefined;\n }\n }\n return instance.router.prefetch(instance.prefetchHref, {\n kind: prefetchKind\n });\n };\n // Prefetch the page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n doPrefetch().catch((err)=>{\n if (true) {\n // rethrow to show invalid URL errors\n throw 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=links.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGlua3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBb0VhQSxnQkFBZ0I7ZUFBaEJBOztJQUhBQyxtQkFBbUI7ZUFBbkJBOztJQW9IR0MsaUJBQWlCO2VBQWpCQTs7SUF0Q0FDLGlCQUFpQjtlQUFqQkE7O0lBd0ZBQyx1QkFBdUI7ZUFBdkJBOztJQXNCQUMsa0JBQWtCO2VBQWxCQTs7SUEwRUFDLGdCQUFnQjtlQUFoQkE7O0lBN1BBQywyQkFBMkI7ZUFBM0JBOztJQVNBQywrQkFBK0I7ZUFBL0JBOztJQTJIQUMsMkJBQTJCO2VBQTNCQTs7OytDQTVNeUI7dUNBQ1A7MENBSzNCO21DQVN5QjtnREFDSDs0Q0FDRTtBQXlDL0IseUVBQXlFO0FBQ3pFLDREQUE0RDtBQUM1RCxJQUFJQyw4QkFBbUQ7QUFHaEQsTUFBTVQsc0JBQXNCO0lBQUVVLFNBQVM7QUFBSztBQUc1QyxNQUFNWCxtQkFBbUI7SUFBRVcsU0FBUztBQUFNO0FBTTFDLFNBQVNKLDRCQUE0QkssSUFBeUI7SUFDbkVDLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1FBQ2RILCtCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSw0QkFBNkJJLHVCQUF1QixDQUFDZDtRQUNyRFksUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsS0FBTUUsdUJBQXVCLENBQUNiO1FBQzlCUyw4QkFBOEJFO0lBQ2hDO0FBQ0Y7QUFHTyxTQUFTSixnQ0FBZ0NJLElBQWtCO0lBQ2hFLElBQUlGLGdDQUFnQ0UsTUFBTTtRQUN4Q0YsOEJBQThCO0lBQ2hDO0FBQ0Y7QUFFQSwyRUFBMkU7QUFDM0UsbUVBQW1FO0FBQ25FLE1BQU1LLGVBR0osT0FBT0MsWUFBWSxhQUFhLElBQUlBLFlBQVksSUFBSUM7QUFFdEQsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwwRUFBMEU7QUFDMUUsaUJBQWlCO0FBQ2pCLE1BQU1DLHlC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QixJQWpWeUIsSUFpVkQsRUFBbUI7WUFDekMscUNBQXFDO1lBQ3JDLE1BQU1BO1FBQ1I7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvbGlua3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IHsgY3JlYXRlUHJlZmV0Y2hVUkwgfSBmcm9tICcuL2FwcC1yb3V0ZXInXG5pbXBvcnQge1xuICBGZXRjaFN0cmF0ZWd5LFxuICBpc1ByZWZldGNoVGFza0RpcnR5LFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG59IGZyb20gJy4vc2VnbWVudC1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZUNhY2hlS2V5IH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlJ1xuaW1wb3J0IHtcbiAgdHlwZSBQcmVmZXRjaFRhc2ssXG4gIFByZWZldGNoUHJpb3JpdHksXG4gIHNjaGVkdWxlUHJlZmV0Y2hUYXNrIGFzIHNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayxcbiAgY2FuY2VsUHJlZmV0Y2hUYXNrLFxuICByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrLFxufSBmcm9tICcuL3NlZ21lbnQtY2FjaGUnXG5pbXBvcnQgeyBzdGFydFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFByZWZldGNoS2luZCB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuXG50eXBlIExpbmtFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudFxuXG50eXBlIEVsZW1lbnQgPSBMaW5rRWxlbWVudCB8IEhUTUxGb3JtRWxlbWVudFxuXG4vLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIExpbmsgYW5kIEZvcm0gaW5zdGFuY2VzLiBXZSB1c2UgdGhlIHNhbWVcbi8vIHNoYXBlIGZvciBib3RoIHRvIHByZXZlbnQgYSBwb2x5bW9ycGhpYyBkZS1vcHQgaW4gdGhlIFZNLlxudHlwZSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgPSB7XG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2VcbiAgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneVxuXG4gIGlzVmlzaWJsZTogYm9vbGVhblxuXG4gIC8vIFRoZSBtb3N0IHJlY2VudGx5IGluaXRpYXRlZCBwcmVmZXRjaCB0YXNrLiBJdCBtYXkgb3IgbWF5IG5vdCBoYXZlXG4gIC8vIGFscmVhZHkgY29tcGxldGVkLiBUaGUgc2FtZSBwcmVmZXRjaCB0YXNrIG9iamVjdCBjYW4gYmUgcmV1c2VkIGFjcm9zc1xuICAvLyBtdWx0aXBsZSBwcmVmZXRjaGVzIG9mIHRoZSBzYW1lIGxpbmsuXG4gIHByZWZldGNoVGFzazogUHJlZmV0Y2hUYXNrIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBGb3JtSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogc3RyaW5nXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiBudWxsXG59XG5cbnR5cGUgUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0gTGlua09yRm9ybUluc3RhbmNlU2hhcmVkICYge1xuICBwcmVmZXRjaEhyZWY6IHN0cmluZ1xuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBOb25QcmVmZXRjaGFibGVMaW5rSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogbnVsbFxuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBQcmVmZXRjaGFibGVJbnN0YW5jZSA9IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSB8IEZvcm1JbnN0YW5jZVxuXG5leHBvcnQgdHlwZSBMaW5rSW5zdGFuY2UgPVxuICB8IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuICB8IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuXG4vLyBUcmFja3MgdGhlIG1vc3QgcmVjZW50bHkgbmF2aWdhdGVkIGxpbmsgaW5zdGFuY2UuIFdoZW4gbnVsbCwgaW5kaWNhdGVzXG4vLyB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHdhcyBub3QgaW5pdGlhdGVkIGJ5IGEgbGluayBjbGljay5cbmxldCBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb246IExpbmtJbnN0YW5jZSB8IG51bGwgPSBudWxsXG5cbi8vIFN0YXR1cyBvYmplY3QgaW5kaWNhdGluZyBsaW5rIGlzIHBlbmRpbmdcbmV4cG9ydCBjb25zdCBQRU5ESU5HX0xJTktfU1RBVFVTID0geyBwZW5kaW5nOiB0cnVlIH1cblxuLy8gU3RhdHVzIG9iamVjdCBpbmRpY2F0aW5nIGxpbmsgaXMgaWRsZVxuZXhwb3J0IGNvbnN0IElETEVfTElOS19TVEFUVVMgPSB7IHBlbmRpbmc6IGZhbHNlIH1cblxuLy8gVXBkYXRlcyB0aGUgbG9hZGluZyBzdGF0ZSB3aGVuIG5hdmlnYXRpbmcgYmV0d2VlbiBsaW5rc1xuLy8gLSBSZXNldHMgdGhlIHByZXZpb3VzIGxpbmsncyBsb2FkaW5nIHN0YXRlXG4vLyAtIFNldHMgdGhlIG5ldyBsaW5rJ3MgbG9hZGluZyBzdGF0ZVxuLy8gLSBVcGRhdGVzIHRyYWNraW5nIG9mIGN1cnJlbnQgbmF2aWdhdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbihsaW5rOiBMaW5rSW5zdGFuY2UgfCBudWxsKSB7XG4gIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uPy5zZXRPcHRpbWlzdGljTGlua1N0YXR1cyhJRExFX0xJTktfU1RBVFVTKVxuICAgIGxpbms/LnNldE9wdGltaXN0aWNMaW5rU3RhdHVzKFBFTkRJTkdfTElOS19TVEFUVVMpXG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uID0gbGlua1xuICB9KVxufVxuXG4vLyBVbm1vdW50cyB0aGUgY3VycmVudCBsaW5rIGluc3RhbmNlIGZyb20gbmF2aWdhdGlvbiB0cmFja2luZ1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24obGluazogTGlua0luc3RhbmNlKSB7XG4gIGlmIChsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPT09IGxpbmspIHtcbiAgICBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPSBudWxsXG4gIH1cbn1cblxuLy8gVXNlIGEgV2Vha01hcCB0byBhc3NvY2lhdGUgYSBMaW5rIGluc3RhbmNlIHdpdGggaXRzIERPTSBlbGVtZW50LiBUaGlzIGlzXG4vLyB1c2VkIGJ5IHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciB0byB0cmFjayB0aGUgbGluaydzIHZpc2liaWxpdHkuXG5jb25zdCBwcmVmZXRjaGFibGU6XG4gIHwgV2Vha01hcDxFbGVtZW50LCBQcmVmZXRjaGFibGVJbnN0YW5jZT5cbiAgfCBNYXA8RWxlbWVudCwgUHJlZmV0Y2hhYmxlSW5zdGFuY2U+ID1cbiAgdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgPyBuZXcgV2Vha01hcCgpIDogbmV3IE1hcCgpXG5cbi8vIEEgU2V0IG9mIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBsaW5rcy4gV2UgcmUtcHJlZmV0Y2ggdmlzaWJsZSBsaW5rcyBhZnRlciBhXG4vLyBjYWNoZSBpbnZhbGlkYXRpb24sIG9yIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMuIEl0J3MgYSBzZXBhcmF0ZSBkYXRhXG4vLyBzdHJ1Y3R1cmUgZnJvbSB0aGUgV2Vha01hcCBhYm92ZSBiZWNhdXNlIG9ubHkgdGhlIHZpc2libGUgbGlua3MgbmVlZCB0b1xuLy8gYmUgZW51bWVyYXRlZC5cbmNvbnN0IHByZWZldGNoYWJsZUFuZFZpc2libGU6IFNldDxQcmVmZXRjaGFibGVJbnN0YW5jZT4gPSBuZXcgU2V0KClcblxuLy8gQSBzaW5nbGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW5zdGFuY2Ugc2hhcmVkIGJ5IGFsbCA8TGluaz4gY29tcG9uZW50cy5cbmNvbnN0IG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGwgPVxuICB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbidcbiAgICA/IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVJbnRlcnNlY3QsIHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzIwMHB4JyxcbiAgICAgIH0pXG4gICAgOiBudWxsXG5cbmZ1bmN0aW9uIG9ic2VydmVWaXNpYmlsaXR5KGVsZW1lbnQ6IEVsZW1lbnQsIGluc3RhbmNlOiBQcmVmZXRjaGFibGVJbnN0YW5jZSkge1xuICBjb25zdCBleGlzdGluZ0luc3RhbmNlID0gcHJlZmV0Y2hhYmxlLmdldChlbGVtZW50KVxuICBpZiAoZXhpc3RpbmdJbnN0YW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2UgZWFjaCA8TGluaz4gY29tcG9uZW50IHNob3VsZCBoYXZlIGl0cyBvd25cbiAgICAvLyBhbmNob3IgdGFnIGluc3RhbmNlLCBidXQgaXQncyBkZWZlbnNpdmUgY29kaW5nIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgaW5cbiAgICAvLyBjYXNlIHRoZXJlJ3MgYSBsb2dpY2FsIGVycm9yIHNvbWV3aGVyZSBlbHNlLlxuICAgIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZShlbGVtZW50KVxuICB9XG4gIC8vIE9ubHkgdHJhY2sgcHJlZmV0Y2hhYmxlIGxpbmtzIHRoYXQgaGF2ZSBhIHZhbGlkIHByZWZldGNoIFVSTFxuICBwcmVmZXRjaGFibGUuc2V0KGVsZW1lbnQsIGluc3RhbmNlKVxuICBpZiAob2JzZXJ2ZXIgIT09IG51bGwpIHtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29lcmNlUHJlZmV0Y2hhYmxlVXJsKGhyZWY6IHN0cmluZyk6IFVSTCB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBjcmVhdGVQcmVmZXRjaFVSTChocmVmKVxuICB9IGNhdGNoIHtcbiAgICAvLyBjcmVhdGVQcmVmZXRjaFVSTCBzb21ldGltZXMgdGhyb3dzIGFuIGVycm9yIGlmIGFuIGludmFsaWQgVVJMIGlzXG4gICAgLy8gcHJvdmlkZWQsIHRob3VnaCBJJ20gbm90IHN1cmUgaWYgaXQncyBhY3R1YWxseSBuZWNlc3NhcnkuXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlIHRocm93IGZyb20gdGhlIGlubmVyIGZ1bmN0aW9uLCBvciBjaGFuZ2UgaXRcbiAgICAvLyB0byByZXBvcnRFcnJvci4gT3IgbWF5YmUgdGhlIGVycm9yIGlzbid0IGV2ZW4gbmVjZXNzYXJ5IGZvciBhdXRvbWF0aWNcbiAgICAvLyBwcmVmZXRjaGVzLCBqdXN0IG5hdmlnYXRpb25zLlxuICAgIGNvbnN0IHJlcG9ydEVycm9yRm4gPVxuICAgICAgdHlwZW9mIHJlcG9ydEVycm9yID09PSAnZnVuY3Rpb24nID8gcmVwb3J0RXJyb3IgOiBjb25zb2xlLmVycm9yXG4gICAgcmVwb3J0RXJyb3JGbihcbiAgICAgIGBDYW5ub3QgcHJlZmV0Y2ggJyR7aHJlZn0nIGJlY2F1c2UgaXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIFVSTC5gXG4gICAgKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50TGlua0luc3RhbmNlKFxuICBlbGVtZW50OiBMaW5rRWxlbWVudCxcbiAgaHJlZjogc3RyaW5nLFxuICByb3V0ZXI6IEFwcFJvdXRlckluc3RhbmNlLFxuICBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxuICBwcmVmZXRjaEVuYWJsZWQ6IGJvb2xlYW4sXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiAoc3RhdHVzOiB7IHBlbmRpbmc6IGJvb2xlYW4gfSkgPT4gdm9pZFxuKTogTGlua0luc3RhbmNlIHtcbiAgaWYgKHByZWZldGNoRW5hYmxlZCkge1xuICAgIGNvbnN0IHByZWZldGNoVVJMID0gY29lcmNlUHJlZmV0Y2hhYmxlVXJsKGhyZWYpXG4gICAgaWYgKHByZWZldGNoVVJMICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZTogUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0ge1xuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIcmVmOiBwcmVmZXRjaFVSTC5ocmVmLFxuICAgICAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1cyxcbiAgICAgIH1cbiAgICAgIC8vIFdlIG9ubHkgb2JzZXJ2ZSB0aGUgbGluaydzIHZpc2liaWxpdHkgaWYgaXQncyBwcmVmZXRjaGFibGUuIEZvclxuICAgICAgLy8gZXhhbXBsZSwgdGhpcyBleGNsdWRlcyBsaW5rcyB0byBleHRlcm5hbCBVUkxzLlxuICAgICAgb2JzZXJ2ZVZpc2liaWxpdHkoZWxlbWVudCwgaW5zdGFuY2UpXG4gICAgICByZXR1cm4gaW5zdGFuY2VcbiAgICB9XG4gIH1cbiAgLy8gSWYgdGhlIGxpbmsgaXMgbm90IHByZWZldGNoYWJsZSwgd2Ugc3RpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHNvIHdlIGNhblxuICAvLyB0cmFjayBpdHMgb3B0aW1pc3RpYyBzdGF0ZSAoaS5lLiB1c2VMaW5rU3RhdHVzKS5cbiAgY29uc3QgaW5zdGFuY2U6IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSA9IHtcbiAgICByb3V0ZXIsXG4gICAgZmV0Y2hTdHJhdGVneSxcbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICBwcmVmZXRjaEhyZWY6IG51bGwsXG4gICAgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMsXG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEZvcm1JbnN0YW5jZShcbiAgZWxlbWVudDogSFRNTEZvcm1FbGVtZW50LFxuICBocmVmOiBzdHJpbmcsXG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2UsXG4gIGZldGNoU3RyYXRlZ3k6IFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3lcbik6IHZvaWQge1xuICBjb25zdCBwcmVmZXRjaFVSTCA9IGNvZXJjZVByZWZldGNoYWJsZVVybChocmVmKVxuICBpZiAocHJlZmV0Y2hVUkwgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGhyZWYgaXMgbm90IHByZWZldGNoYWJsZSwgc28gd2UgZG9uJ3QgdHJhY2sgaXQuXG4gICAgLy8gVE9ETzogV2UgY3VycmVudGx5IG9ic2VydmUvdW5vYnNlcnZlIGEgZm9ybSBldmVyeSB0aW1lIGl0cyBocmVmIGNoYW5nZXMuXG4gICAgLy8gRm9yIExpbmtzLCB0aGlzIGlzbid0IGEgYmlnIGRlYWwgYmVjYXVzZSB0aGUgaHJlZiBkb2Vzbid0IHVzdWFsbHkgY2hhbmdlLFxuICAgIC8vIGJ1dCBmb3IgZm9ybXMgaXQncyBleHRyZW1lbHkgY29tbW9uLiBXZSBzaG91bGQgb3B0aW1pemUgdGhpcy5cbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBpbnN0YW5jZTogRm9ybUluc3RhbmNlID0ge1xuICAgIHJvdXRlcixcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgcHJlZmV0Y2hUYXNrOiBudWxsLFxuICAgIHByZWZldGNoSHJlZjogcHJlZmV0Y2hVUkwuaHJlZixcbiAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogbnVsbCxcbiAgfVxuICBvYnNlcnZlVmlzaWJpbGl0eShlbGVtZW50LCBpbnN0YW5jZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZShlbGVtZW50OiBFbGVtZW50KSB7XG4gIGNvbnN0IGluc3RhbmNlID0gcHJlZmV0Y2hhYmxlLmdldChlbGVtZW50KVxuICBpZiAoaW5zdGFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZldGNoYWJsZS5kZWxldGUoZWxlbWVudClcbiAgICBwcmVmZXRjaGFibGVBbmRWaXNpYmxlLmRlbGV0ZShpbnN0YW5jZSlcbiAgICBjb25zdCBwcmVmZXRjaFRhc2sgPSBpbnN0YW5jZS5wcmVmZXRjaFRhc2tcbiAgICBpZiAocHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxQcmVmZXRjaFRhc2socHJlZmV0Y2hUYXNrKVxuICAgIH1cbiAgfVxuICBpZiAob2JzZXJ2ZXIgIT09IG51bGwpIHtcbiAgICBvYnNlcnZlci51bm9ic2VydmUoZWxlbWVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnNlY3QoZW50cmllczogQXJyYXk8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4pIHtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gU29tZSBleHRyZW1lbHkgb2xkIGJyb3dzZXJzIG9yIHBvbHlmaWxscyBkb24ndCByZWxpYWJseSBzdXBwb3J0XG4gICAgLy8gaXNJbnRlcnNlY3Rpbmcgc28gd2UgY2hlY2sgaW50ZXJzZWN0aW9uUmF0aW8gaW5zdGVhZC4gKERvIHdlIGNhcmU/IE5vdFxuICAgIC8vIHJlYWxseS4gQnV0IHdoYXRldmVyIHRoaXMgaXMgZmluZS4pXG4gICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwXG4gICAgb25MaW5rVmlzaWJpbGl0eUNoYW5nZWQoZW50cnkudGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50LCBpc1Zpc2libGUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTGlua1Zpc2liaWxpdHlDaGFuZ2VkKGVsZW1lbnQ6IEVsZW1lbnQsIGlzVmlzaWJsZTogYm9vbGVhbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFByZWZldGNoaW5nIG9uIHZpZXdwb3J0IGlzIGRpc2FibGVkIGluIGRldmVsb3BtZW50IGZvciBwZXJmb3JtYW5jZVxuICAgIC8vIHJlYXNvbnMsIGJlY2F1c2UgaXQgcmVxdWlyZXMgY29tcGlsaW5nIHRoZSB0YXJnZXQgcGFnZS5cbiAgICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSByZS1lbmFibGluZyB0aGlzLlxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbnN0YW5jZS5pc1Zpc2libGUgPSBpc1Zpc2libGVcbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuYWRkKGluc3RhbmNlKVxuICB9IGVsc2Uge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuZGVsZXRlKGluc3RhbmNlKVxuICB9XG4gIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTmF2aWdhdGlvbkludGVudChcbiAgZWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudCxcbiAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoOiBib29sZWFuXG4pIHtcbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgLy8gUHJlZmV0Y2ggdGhlIGxpbmsgb24gaG92ZXIvdG91Y2hzdGFydC5cbiAgaWYgKGluc3RhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfRFlOQU1JQ19PTl9IT1ZFUiAmJlxuICAgICAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoXG4gICAgKSB7XG4gICAgICAvLyBTd2l0Y2ggdG8gYSBmdWxsIHByZWZldGNoXG4gICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5ID0gRmV0Y2hTdHJhdGVneS5GdWxsXG4gICAgfVxuICAgIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuSW50ZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goXG4gIGluc3RhbmNlOiBQcmVmZXRjaGFibGVJbnN0YW5jZSxcbiAgcHJpb3JpdHk6IFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCB8IFByZWZldGNoUHJpb3JpdHkuSW50ZW50XG4pIHtcbiAgY29uc3QgZXhpc3RpbmdQcmVmZXRjaFRhc2sgPSBpbnN0YW5jZS5wcmVmZXRjaFRhc2tcblxuICBpZiAoIWluc3RhbmNlLmlzVmlzaWJsZSkge1xuICAgIC8vIENhbmNlbCBhbnkgaW4tcHJvZ3Jlc3MgcHJlZmV0Y2ggdGFzay4gKElmIGl0IGFscmVhZHkgZmluaXNoZWQgdGhlbiB0aGlzXG4gICAgLy8gaXMgYSBuby1vcC4pXG4gICAgaWYgKGV4aXN0aW5nUHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxQcmVmZXRjaFRhc2soZXhpc3RpbmdQcmVmZXRjaFRhc2spXG4gICAgfVxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIHByZWZldGNoVGFzayB0byBudWxsIHVwb24gY2FuY2VsbGF0aW9uOyBhblxuICAgIC8vIG9sZCB0YXNrIG9iamVjdCBjYW4gYmUgcmVzY2hlZHVsZWQgd2l0aCByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrLiBUaGlzIGlzIGFcbiAgICAvLyBtaWNyby1vcHRpbWl6YXRpb24gYnV0IGFsc28gbWFrZXMgdGhlIGNvZGUgc2ltcGxlciAoZG9uJ3QgbmVlZCB0b1xuICAgIC8vIHdvcnJ5IGFib3V0IHdoZXRoZXIgYW4gb2xkIHRhc2sgb2JqZWN0IGlzIHN0YWxlKS5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFKSB7XG4gICAgLy8gVGhlIG9sZCBwcmVmZXRjaCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbHMuXG4gICAgLy8gSnVzdCBzY2hlZHVsZSBhIG5ldyBwcmVmZXRjaCB0YXNrLlxuICAgIHByZWZldGNoV2l0aE9sZENhY2hlSW1wbGVtZW50YXRpb24oaW5zdGFuY2UpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBhcHBSb3V0ZXJTdGF0ZSA9IGdldEN1cnJlbnRBcHBSb3V0ZXJTdGF0ZSgpXG4gIGlmIChhcHBSb3V0ZXJTdGF0ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRyZWVBdFRpbWVPZlByZWZldGNoID0gYXBwUm91dGVyU3RhdGUudHJlZVxuICAgIGlmIChleGlzdGluZ1ByZWZldGNoVGFzayA9PT0gbnVsbCkge1xuICAgICAgLy8gSW5pdGlhdGUgYSBwcmVmZXRjaCB0YXNrLlxuICAgICAgY29uc3QgbmV4dFVybCA9IGFwcFJvdXRlclN0YXRlLm5leHRVcmxcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkoaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCBuZXh0VXJsKVxuICAgICAgaW5zdGFuY2UucHJlZmV0Y2hUYXNrID0gc2NoZWR1bGVTZWdtZW50UHJlZmV0Y2hUYXNrKFxuICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgdHJlZUF0VGltZU9mUHJlZmV0Y2gsXG4gICAgICAgIGluc3RhbmNlLmZldGNoU3RyYXRlZ3ksXG4gICAgICAgIHByaW9yaXR5LFxuICAgICAgICBudWxsXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBvbGQgdGFzayBvYmplY3QgdGhhdCB3ZSBjYW4gcmVzY2hlZHVsZS4gVGhpcyBpc1xuICAgICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgY2FuY2VsaW5nIHRoZSBvbGQgdGFzayBhbmQgY3JlYXRpbmcgYSBuZXcgb25lLlxuICAgICAgcmVzY2hlZHVsZVByZWZldGNoVGFzayhcbiAgICAgICAgZXhpc3RpbmdQcmVmZXRjaFRhc2ssXG4gICAgICAgIHRyZWVBdFRpbWVPZlByZWZldGNoLFxuICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgICBwcmlvcml0eVxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGluZ1Zpc2libGVMaW5rcyhcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbikge1xuICAvLyBGb3IgZWFjaCBjdXJyZW50bHkgdmlzaWJsZSBsaW5rLCBjYW5jZWwgdGhlIGV4aXN0aW5nIHByZWZldGNoIHRhc2sgKGlmIGl0XG4gIC8vIGV4aXN0cykgYW5kIHNjaGVkdWxlIGEgbmV3IG9uZS4gVGhpcyBpcyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyBpZiBhbGwgdGhlXG4gIC8vIHZpc2libGUgbGlua3MgbGVmdCBhbmQgdGhlbiByZS1lbnRlcmVkIHRoZSB2aWV3cG9ydC5cbiAgLy9cbiAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgTmV4dC1Vcmwgb3IgdGhlIGJhc2UgdHJlZSBjaGFuZ2VzLCBzaW5jZSB0aG9zZVxuICAvLyBtYXkgYWZmZWN0IHRoZSByZXN1bHQgb2YgYSBwcmVmZXRjaCB0YXNrLiBJdCdzIGFsc28gY2FsbGVkIGFmdGVyIGFcbiAgLy8gY2FjaGUgaW52YWxpZGF0aW9uLlxuICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIHByZWZldGNoYWJsZUFuZFZpc2libGUpIHtcbiAgICBjb25zdCB0YXNrID0gaW5zdGFuY2UucHJlZmV0Y2hUYXNrXG4gICAgaWYgKHRhc2sgIT09IG51bGwgJiYgIWlzUHJlZmV0Y2hUYXNrRGlydHkodGFzaywgbmV4dFVybCwgdHJlZSkpIHtcbiAgICAgIC8vIFRoZSBjYWNoZSBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQsIGFuZCBub25lIG9mIHRoZSBpbnB1dHMgaGF2ZVxuICAgICAgLy8gY2hhbmdlZC4gQmFpbCBvdXQuXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICAvLyBTb21ldGhpbmcgY2hhbmdlZC4gQ2FuY2VsIHRoZSBleGlzdGluZyBwcmVmZXRjaCB0YXNrIGFuZCBzY2hlZHVsZSBhXG4gICAgLy8gbmV3IG9uZS5cbiAgICBpZiAodGFzayAhPT0gbnVsbCkge1xuICAgICAgY2FuY2VsUHJlZmV0Y2hUYXNrKHRhc2spXG4gICAgfVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkoaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCBuZXh0VXJsKVxuICAgIGluc3RhbmNlLnByZWZldGNoVGFzayA9IHNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayhcbiAgICAgIGNhY2hlS2V5LFxuICAgICAgdHJlZSxcbiAgICAgIGluc3RhbmNlLmZldGNoU3RyYXRlZ3ksXG4gICAgICBQcmVmZXRjaFByaW9yaXR5LkRlZmF1bHQsXG4gICAgICBudWxsXG4gICAgKVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZWZldGNoV2l0aE9sZENhY2hlSW1wbGVtZW50YXRpb24oaW5zdGFuY2U6IFByZWZldGNoYWJsZUluc3RhbmNlKSB7XG4gIC8vIFRoaXMgaXMgdGhlIHBhdGggdXNlZCB3aGVuIHRoZSBTZWdtZW50IENhY2hlIGlzIG5vdCBlbmFibGVkLlxuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGRvUHJlZmV0Y2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gbm90ZSB0aGF0IGBhcHBSb3V0ZXIucHJlZmV0Y2goKWAgaXMgY3VycmVudGx5IHN5bmMsXG4gICAgLy8gc28gd2UgaGF2ZSB0byB3cmFwIHRoaXMgY2FsbCBpbiBhbiBhc3luYyBmdW5jdGlvbiB0byBiZSBhYmxlIHRvIGNhdGNoKCkgZXJyb3JzIGJlbG93LlxuXG4gICAgbGV0IHByZWZldGNoS2luZDogUHJlZmV0Y2hLaW5kXG4gICAgc3dpdGNoIChpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSOiB7XG4gICAgICAgIHByZWZldGNoS2luZCA9IFByZWZldGNoS2luZC5BVVRPXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuRnVsbDoge1xuICAgICAgICBwcmVmZXRjaEtpbmQgPSBQcmVmZXRjaEtpbmQuRlVMTFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWU6IHtcbiAgICAgICAgLy8gV2UgY2FuIG9ubHkgZ2V0IGhlcmUgaWYgQ2xpZW50IFNlZ21lbnQgQ2FjaGUgaXMgb2ZmLCBhbmQgaW4gdGhhdCBjYXNlXG4gICAgICAgIC8vIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSBmb3IgYSBsaW5rIHRvIHJlcXVlc3QgYSBydW50aW1lIHByZWZldGNoLlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgJ0ZldGNoU3RyYXRlZ3kuUFBSUnVudGltZSBzaG91bGQgbmV2ZXIgYmUgdXNlZCB3aGVuIGBleHBlcmltZW50YWwuY2xpZW50U2VnbWVudENhY2hlYCBpcyBkaXNhYmxlZCdcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5IHNhdGlzZmllcyBuZXZlclxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IG90aGVyd2lzZSB0eXBlc2NyaXB0IHdpbGwgY29uc2lkZXIgdGhlIHZhcmlhYmxlIHVuYXNzaWduZWRcbiAgICAgICAgcHJlZmV0Y2hLaW5kID0gdW5kZWZpbmVkIVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZS5yb3V0ZXIucHJlZmV0Y2goaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCB7XG4gICAgICBraW5kOiBwcmVmZXRjaEtpbmQsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFByZWZldGNoIHRoZSBwYWdlIGlmIGFza2VkIChvbmx5IGluIHRoZSBjbGllbnQpXG4gIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGEgcHJlZmV0Y2ggZXJyb3IgaGVyZSBzaW5jZSB3ZSBtYXkgYmVcbiAgLy8gbG9hZGluZyB3aXRoIHByaW9yaXR5IHdoaWNoIGNhbiByZWplY3QgYnV0IHdlIGRvbid0XG4gIC8vIHdhbnQgdG8gZm9yY2UgbmF2aWdhdGlvbiBzaW5jZSB0aGlzIGlzIG9ubHkgYSBwcmVmZXRjaFxuICBkb1ByZWZldGNoKCkuY2F0Y2goKGVycikgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyByZXRocm93IHRvIHNob3cgaW52YWxpZCBVUkwgZXJyb3JzXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOlsiSURMRV9MSU5LX1NUQVRVUyIsIlBFTkRJTkdfTElOS19TVEFUVVMiLCJtb3VudEZvcm1JbnN0YW5jZSIsIm1vdW50TGlua0luc3RhbmNlIiwib25MaW5rVmlzaWJpbGl0eUNoYW5nZWQiLCJvbk5hdmlnYXRpb25JbnRlbnQiLCJwaW5nVmlzaWJsZUxpbmtzIiwic2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uIiwidW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsInVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZSIsImxpbmtGb3JNb3N0UmVjZW50TmF2aWdhdGlvbiIsInBlbmRpbmciLCJsaW5rIiwic3RhcnRUcmFuc2l0aW9uIiwic2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMiLCJwcmVmZXRjaGFibGUiLCJXZWFrTWFwIiwiTWFwIiwicHJlZmV0Y2hhYmxlQW5kVmlzaWJsZSIsIlNldCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJoYW5kbGVJbnRlcnNlY3QiLCJyb290TWFyZ2luIiwib2JzZXJ2ZVZpc2liaWxpdHkiLCJlbGVtZW50IiwiaW5zdGFuY2UiLCJleGlzdGluZ0luc3RhbmNlIiwiZ2V0IiwidW5kZWZpbmVkIiwic2V0Iiwib2JzZXJ2ZSIsImNvZXJjZVByZWZldGNoYWJsZVVybCIsImhyZWYiLCJjcmVhdGVQcmVmZXRjaFVSTCIsInJlcG9ydEVycm9yRm4iLCJyZXBvcnRFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInJvdXRlciIsImZldGNoU3RyYXRlZ3kiLCJwcmVmZXRjaEVuYWJsZWQiLCJwcmVmZXRjaFVSTCIsImlzVmlzaWJsZSIsInByZWZldGNoVGFzayIsInByZWZldGNoSHJlZiIsImRlbGV0ZSIsImNhbmNlbFByZWZldGNoVGFzayIsInVub2JzZXJ2ZSIsImVudHJpZXMiLCJlbnRyeSIsImludGVyc2VjdGlvblJhdGlvIiwidGFyZ2V0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiYWRkIiwicmVzY2hlZHVsZUxpbmtQcmVmZXRjaCIsIlByZWZldGNoUHJpb3JpdHkiLCJEZWZhdWx0IiwidW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoIiwiX19ORVhUX0RZTkFNSUNfT05fSE9WRVIiLCJGZXRjaFN0cmF0ZWd5IiwiRnVsbCIsIkludGVudCIsInByaW9yaXR5IiwiZXhpc3RpbmdQcmVmZXRjaFRhc2siLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJwcmVmZXRjaFdpdGhPbGRDYWNoZUltcGxlbWVudGF0aW9uIiwiYXBwUm91dGVyU3RhdGUiLCJnZXRDdXJyZW50QXBwUm91dGVyU3RhdGUiLCJ0cmVlQXRUaW1lT2ZQcmVmZXRjaCIsInRyZWUiLCJuZXh0VXJsIiwiY2FjaGVLZXkiLCJjcmVhdGVDYWNoZUtleSIsInNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayIsInJlc2NoZWR1bGVQcmVmZXRjaFRhc2siLCJ0YXNrIiwiaXNQcmVmZXRjaFRhc2tEaXJ0eSIsIndpbmRvdyIsImRvUHJlZmV0Y2giLCJwcmVmZXRjaEtpbmQiLCJQUFIiLCJQcmVmZXRjaEtpbmQiLCJBVVRPIiwiRlVMTCIsIlBQUlJ1bnRpbWUiLCJJbnZhcmlhbnRFcnJvciIsInByZWZldGNoIiwia2luZCIsImNhdGNoIiwiZXJyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/links.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/match-segments.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"matchSegment\", ({\n enumerable: true,\n get: function() {\n return matchSegment;\n }\n}));\nconst matchSegment = (existingSegment, segment)=>{\n // segment is either Array or string\n if (typeof existingSegment === 'string') {\n if (typeof segment === 'string') {\n // Common case: segment is just a string\n return existingSegment === segment;\n }\n return false;\n }\n if (typeof segment === 'string') {\n return false;\n }\n return existingSegment[0] === segment[0] && existingSegment[1] === segment[1];\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=match-segments.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWF0Y2gtc2VnbWVudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztnREFFYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsZUFBZSxDQUMxQkMsaUJBQ0FDO0lBRUEsb0NBQW9DO0lBQ3BDLElBQUksT0FBT0Qsb0JBQW9CLFVBQVU7UUFDdkMsSUFBSSxPQUFPQyxZQUFZLFVBQVU7WUFDL0Isd0NBQXdDO1lBQ3hDLE9BQU9ELG9CQUFvQkM7UUFDN0I7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxJQUFJLE9BQU9BLFlBQVksVUFBVTtRQUMvQixPQUFPO0lBQ1Q7SUFDQSxPQUFPRCxlQUFlLENBQUMsRUFBRSxLQUFLQyxPQUFPLENBQUMsRUFBRSxJQUFJRCxlQUFlLENBQUMsRUFBRSxLQUFLQyxPQUFPLENBQUMsRUFBRTtBQUMvRSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL21hdGNoLXNlZ21lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgbWF0Y2hTZWdtZW50ID0gKFxuICBleGlzdGluZ1NlZ21lbnQ6IFNlZ21lbnQsXG4gIHNlZ21lbnQ6IFNlZ21lbnRcbik6IGJvb2xlYW4gPT4ge1xuICAvLyBzZWdtZW50IGlzIGVpdGhlciBBcnJheSBvciBzdHJpbmdcbiAgaWYgKHR5cGVvZiBleGlzdGluZ1NlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gQ29tbW9uIGNhc2U6IHNlZ21lbnQgaXMganVzdCBhIHN0cmluZ1xuICAgICAgcmV0dXJuIGV4aXN0aW5nU2VnbWVudCA9PT0gc2VnbWVudFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gZXhpc3RpbmdTZWdtZW50WzBdID09PSBzZWdtZW50WzBdICYmIGV4aXN0aW5nU2VnbWVudFsxXSA9PT0gc2VnbWVudFsxXVxufVxuIl0sIm5hbWVzIjpbIm1hdGNoU2VnbWVudCIsImV4aXN0aW5nU2VnbWVudCIsInNlZ21lbnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/nav-failure-handler.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/client/components/nav-failure-handler.js ***! \*************************************************************************/ /***/ ((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 handleHardNavError: function() {\n return handleHardNavError;\n },\n useNavFailureHandler: function() {\n return useNavFailureHandler;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nfunction handleHardNavError(error) {\n if (error && \"object\" !== 'undefined' && window.next.__pendingUrl && (0, _createhreffromurl.createHrefFromUrl)(new URL(window.location.href)) !== (0, _createhreffromurl.createHrefFromUrl)(window.next.__pendingUrl)) {\n console.error(\"Error occurred during navigation, falling back to hard navigation\", error);\n window.location.href = window.next.__pendingUrl.toString();\n return true;\n }\n return false;\n}\nfunction useNavFailureHandler() {\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=nav-failure-handler.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2LWZhaWx1cmUtaGFuZGxlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFHZ0JBLGtCQUFrQjtlQUFsQkE7O0lBa0JBQyxvQkFBb0I7ZUFBcEJBOzs7bUNBckJVOytDQUNRO0FBRTNCLFNBQVNELG1CQUFtQkUsS0FBYztJQUMvQyxJQUNFQSxTQUNBLE9BQU9DLE1BQVcsZUFDbEJBLE9BQU9DLElBQUksQ0FBQ0MsWUFBWSxJQUN4QkMsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQixJQUFJQyxJQUFJSixPQUFPSyxRQUFRLENBQUNDLElBQUksT0FDNUNILENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JILE9BQU9DLElBQUksQ0FBQ0MsWUFBWSxHQUM1QztRQUNBSyxRQUFRUixLQUFLLENBQ1YscUVBQ0RBO1FBRUZDLE9BQU9LLFFBQVEsQ0FBQ0MsSUFBSSxHQUFHTixPQUFPQyxJQUFJLENBQUNDLFlBQVksQ0FBQ00sUUFBUTtRQUN4RCxPQUFPO0lBQ1Q7SUFDQSxPQUFPO0FBQ1Q7QUFFTyxTQUFTVjtJQUNkLElBQUlXLEtBQXdDLEVBQUUsRUF1QjdDO0FBQ0giLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9uYXYtZmFpbHVyZS1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlSGFyZE5hdkVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChcbiAgICBlcnJvciAmJlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgd2luZG93Lm5leHQuX19wZW5kaW5nVXJsICYmXG4gICAgY3JlYXRlSHJlZkZyb21VcmwobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpICE9PVxuICAgICAgY3JlYXRlSHJlZkZyb21Vcmwod2luZG93Lm5leHQuX19wZW5kaW5nVXJsKVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYEVycm9yIG9jY3VycmVkIGR1cmluZyBuYXZpZ2F0aW9uLCBmYWxsaW5nIGJhY2sgdG8gaGFyZCBuYXZpZ2F0aW9uYCxcbiAgICAgIGVycm9yXG4gICAgKVxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93Lm5leHQuX19wZW5kaW5nVXJsLnRvU3RyaW5nKClcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTmF2RmFpbHVyZUhhbmRsZXIoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgLy8gdGhpcyBpZiBpcyBvbmx5IGZvciBEQ0Ugb2YgdGhlIGZlYXR1cmUgZmxhZyBub3QgY29uZGl0aW9uYWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyID0gKFxuICAgICAgICBldnQ6IEVycm9yRXZlbnQgfCBQcm9taXNlUmVqZWN0aW9uRXZlbnRcbiAgICAgICkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9ICdyZWFzb24nIGluIGV2dCA/IGV2dC5yZWFzb24gOiBldnQuZXJyb3JcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uL3JlamVjdGlvbiBkdXJpbmdcbiAgICAgICAgLy8gYSBuYXZpZ2F0aW9uIHdlIGZhbGwgYmFjayB0byBhIGhhcmQgbmF2aWdhdGlvbiB0b1xuICAgICAgICAvLyBhdHRlbXB0IHJlY292ZXJpbmcgdG8gYSBnb29kIHN0YXRlXG4gICAgICAgIGhhbmRsZUhhcmROYXZFcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd1bmhhbmRsZWRyZWplY3Rpb24nLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICd1bmhhbmRsZWRyZWplY3Rpb24nLFxuICAgICAgICAgIHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlclxuICAgICAgICApXG4gICAgICB9XG4gICAgfSwgW10pXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJoYW5kbGVIYXJkTmF2RXJyb3IiLCJ1c2VOYXZGYWlsdXJlSGFuZGxlciIsImVycm9yIiwid2luZG93IiwibmV4dCIsIl9fcGVuZGluZ1VybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiVVJMIiwibG9jYXRpb24iLCJocmVmIiwiY29uc29sZSIsInRvU3RyaW5nIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9BUFBfTkFWX0ZBSUxfSEFORExJTkciLCJ1c2VFZmZlY3QiLCJ1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiLCJldnQiLCJyZWFzb24iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/nav-failure-handler.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/navigation-untracked.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation-untracked.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useUntrackedPathname\", ({\n enumerable: true,\n get: function() {\n return useUntrackedPathname;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\n/**\n * This checks to see if the current render has any unknown route parameters.\n * It's used to trigger a different render path in the error boundary.\n *\n * @returns true if there are any unknown route parameters, false otherwise\n */ function hasFallbackRouteParams() {\n if (false) {}\n return false;\n}\nfunction useUntrackedPathname() {\n // If there are any unknown route parameters we would typically throw\n // an error, but this internal method allows us to return a null value instead\n // for components that do not propagate the pathname to the static shell (like\n // the error boundary).\n if (hasFallbackRouteParams()) {\n return null;\n }\n // This shouldn't cause any issues related to conditional rendering because\n // the environment will be consistent for the render.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\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=navigation-untracked.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQuanMiLCJtYXBwaW5ncyI6Ijs7Ozt3REFvRGdCQTs7O2VBQUFBOzs7bUNBcERXOzZEQUNLO0FBRWhDOzs7OztDQUtDLEdBQ0QsU0FBU0M7SUFDUCxJQUFJLEtBQTZCLEVBQUUsRUEwQmxDO0lBRUQsT0FBTztBQUNUO0FBYU8sU0FBU0Q7SUFDZCxxRUFBcUU7SUFDckUsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSx1QkFBdUI7SUFDdkIsSUFBSUMsMEJBQTBCO1FBQzVCLE9BQU87SUFDVDtJQUVBLDJFQUEyRTtJQUMzRSxxREFBcUQ7SUFDckQsc0RBQXNEO0lBQ3RELE9BQU9VLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLGlDQUFBQSxlQUFlO0FBQ25DIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUGF0aG5hbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dC5zaGFyZWQtcnVudGltZSdcblxuLyoqXG4gKiBUaGlzIGNoZWNrcyB0byBzZWUgaWYgdGhlIGN1cnJlbnQgcmVuZGVyIGhhcyBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLlxuICogSXQncyB1c2VkIHRvIHRyaWdnZXIgYSBkaWZmZXJlbnQgcmVuZGVyIHBhdGggaW4gdGhlIGVycm9yIGJvdW5kYXJ5LlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIGFueSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBoYXNGYWxsYmFja1JvdXRlUGFyYW1zKCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBjbGllbnQgYnVuZGxlLlxuICAgIGNvbnN0IHsgd29ya1VuaXRBc3luY1N0b3JhZ2UgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3dvcmstdW5pdC1hc3luYy1zdG9yYWdlLmV4dGVybmFsJylcblxuICAgIGNvbnN0IHdvcmtVbml0U3RvcmUgPSB3b3JrVW5pdEFzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gICAgaWYgKCF3b3JrVW5pdFN0b3JlKSByZXR1cm4gZmFsc2VcblxuICAgIHN3aXRjaCAod29ya1VuaXRTdG9yZS50eXBlKSB7XG4gICAgICBjYXNlICdwcmVyZW5kZXInOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLWNsaWVudCc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcHByJzpcbiAgICAgICAgY29uc3QgZmFsbGJhY2tQYXJhbXMgPSB3b3JrVW5pdFN0b3JlLmZhbGxiYWNrUm91dGVQYXJhbXNcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrUGFyYW1zID8gZmFsbGJhY2tQYXJhbXMuc2l6ZSA+IDAgOiBmYWxzZVxuICAgICAgY2FzZSAncHJlcmVuZGVyLWxlZ2FjeSc6XG4gICAgICBjYXNlICdyZXF1ZXN0JzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1ydW50aW1lJzpcbiAgICAgIGNhc2UgJ2NhY2hlJzpcbiAgICAgIGNhc2UgJ3ByaXZhdGUtY2FjaGUnOlxuICAgICAgY2FzZSAndW5zdGFibGUtY2FjaGUnOlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgd29ya1VuaXRTdG9yZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIFRoaXMgcmV0dXJucyBhIGBudWxsYCB2YWx1ZSBpZiB0aGVyZSBhcmUgYW55IHVua25vd24gcm91dGUgcGFyYW1ldGVycywgYW5kXG4gKiBvdGhlcndpc2UgcmV0dXJucyB0aGUgcGF0aG5hbWUgZnJvbSB0aGUgY29udGV4dC4gVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0b1xuICogYHVzZVBhdGhuYW1lYCB0aGF0IGlzIHVzZWQgaW4gdGhlIGVycm9yIGJvdW5kYXJ5IHRvIGF2b2lkIHJlbmRlcmluZyB0aGVcbiAqIGVycm9yIGJvdW5kYXJ5IHdoZW4gdGhlcmUgYXJlIHVua25vd24gcm91dGUgcGFyYW1ldGVycy4gVGhpcyBkb2Vzbid0IHRocm93XG4gKiB3aGVuIGFjY2Vzc2VkIHdpdGggdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLlxuICpcbiAqIEByZXR1cm5zXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVbnRyYWNrZWRQYXRobmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gSWYgdGhlcmUgYXJlIGFueSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMgd2Ugd291bGQgdHlwaWNhbGx5IHRocm93XG4gIC8vIGFuIGVycm9yLCBidXQgdGhpcyBpbnRlcm5hbCBtZXRob2QgYWxsb3dzIHVzIHRvIHJldHVybiBhIG51bGwgdmFsdWUgaW5zdGVhZFxuICAvLyBmb3IgY29tcG9uZW50cyB0aGF0IGRvIG5vdCBwcm9wYWdhdGUgdGhlIHBhdGhuYW1lIHRvIHRoZSBzdGF0aWMgc2hlbGwgKGxpa2VcbiAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5KS5cbiAgaWYgKGhhc0ZhbGxiYWNrUm91dGVQYXJhbXMoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBUaGlzIHNob3VsZG4ndCBjYXVzZSBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gY29uZGl0aW9uYWwgcmVuZGVyaW5nIGJlY2F1c2VcbiAgLy8gdGhlIGVudmlyb25tZW50IHdpbGwgYmUgY29uc2lzdGVudCBmb3IgdGhlIHJlbmRlci5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gIHJldHVybiB1c2VDb250ZXh0KFBhdGhuYW1lQ29udGV4dClcbn1cbiJdLCJuYW1lcyI6WyJ1c2VVbnRyYWNrZWRQYXRobmFtZSIsImhhc0ZhbGxiYWNrUm91dGVQYXJhbXMiLCJ3aW5kb3ciLCJ3b3JrVW5pdEFzeW5jU3RvcmFnZSIsInJlcXVpcmUiLCJ3b3JrVW5pdFN0b3JlIiwiZ2V0U3RvcmUiLCJ0eXBlIiwiZmFsbGJhY2tQYXJhbXMiLCJmYWxsYmFja1JvdXRlUGFyYW1zIiwic2l6ZSIsInVzZUNvbnRleHQiLCJQYXRobmFtZUNvbnRleHQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/navigation-untracked.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation.js ***! \****************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $RefreshSig$();\n\"use strict\";\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 ReadonlyURLSearchParams: function() {\n return _navigationreactserver.ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _navigationreactserver.RedirectType;\n },\n ServerInsertedHTMLContext: function() {\n return _serverinsertedhtmlsharedruntime.ServerInsertedHTMLContext;\n },\n forbidden: function() {\n return _navigationreactserver.forbidden;\n },\n notFound: function() {\n return _navigationreactserver.notFound;\n },\n permanentRedirect: function() {\n return _navigationreactserver.permanentRedirect;\n },\n redirect: function() {\n return _navigationreactserver.redirect;\n },\n unauthorized: function() {\n return _navigationreactserver.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return _unrecognizedactionerror.unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _navigationreactserver.unstable_rethrow;\n },\n useParams: function() {\n return useParams;\n },\n usePathname: function() {\n return usePathname;\n },\n useRouter: function() {\n return useRouter;\n },\n useSearchParams: function() {\n return useSearchParams;\n },\n useSelectedLayoutSegment: function() {\n return useSelectedLayoutSegment;\n },\n useSelectedLayoutSegments: function() {\n return useSelectedLayoutSegments;\n },\n useServerInsertedHTML: function() {\n return _serverinsertedhtmlsharedruntime.useServerInsertedHTML;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _getsegmentvalue = __webpack_require__(/*! ./router-reducer/reducers/get-segment-value */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _navigationreactserver = __webpack_require__(/*! ./navigation.react-server */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation.react-server.js\");\nconst _serverinsertedhtmlsharedruntime = __webpack_require__(/*! ../../shared/lib/server-inserted-html.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ./unrecognized-action-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst useDynamicRouteParams = false ? 0 : undefined;\nfunction useSearchParams() {\n const searchParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.SearchParamsContext);\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = (0, _react.useMemo)(()=>{\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null;\n }\n return new _navigationreactserver.ReadonlyURLSearchParams(searchParams);\n }, [\n searchParams\n ]);\n if (false) {}\n return readonlySearchParams;\n}\nfunction usePathname() {\n _s();\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('usePathname()');\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n}\n_s(usePathname, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\nfunction useRouter() {\n const router = (0, _react.useContext)(_approutercontextsharedruntime.AppRouterContext);\n if (router === null) {\n throw Object.defineProperty(new Error('invariant expected app router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E238\",\n enumerable: false,\n configurable: true\n });\n }\n return router;\n}\nfunction useParams() {\n _s1();\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useParams()');\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathParamsContext);\n}\n_s1(useParams, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\n/** Get the canonical parameters from the current level to the leaf node. */ // Client components API\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first, segmentPath) {\n if (first === void 0) first = true;\n if (segmentPath === void 0) segmentPath = [];\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n var _parallelRoutes_children;\n node = (_parallelRoutes_children = parallelRoutes.children) != null ? _parallelRoutes_children : Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = (0, _getsegmentvalue.getSegmentValue)(segment);\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nfunction useSelectedLayoutSegments(parallelRouteKey) {\n _s2();\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegments()');\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null;\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey);\n}\n_s2(useSelectedLayoutSegments, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\nfunction useSelectedLayoutSegment(parallelRouteKey) {\n _s3();\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegment()');\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey);\n if (!selectedLayoutSegments || selectedLayoutSegments.length === 0) {\n return null;\n }\n const selectedLayoutSegment = parallelRouteKey === 'children' ? selectedLayoutSegments[0] : selectedLayoutSegments[selectedLayoutSegments.length - 1];\n // if the default slot is showing, we return null since it's not technically \"selected\" (it's a fallback)\n // and returning an internal value like `__DEFAULT__` would be confusing.\n return selectedLayoutSegment === _segment.DEFAULT_SEGMENT_KEY ? null : selectedLayoutSegment;\n}\n_s3(useSelectedLayoutSegment, \"GQkIYFIXjatgPrznv5JwL5TXjn8=\", false, function() {\n return [\n useDynamicRouteParams,\n useSelectedLayoutSegments\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=navigation.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQTRSRUEsdUJBQXVCO2VBQXZCQSx1QkFBQUEsdUJBQXVCOztJQUR2QkMsWUFBWTtlQUFaQSx1QkFBQUEsWUFBWTs7SUF0TFpDLHlCQUF5QjtlQUF6QkEsaUNBQUFBLHlCQUF5Qjs7SUFrTHpCQyxTQUFTO2VBQVRBLHVCQUFBQSxTQUFTOztJQURUQyxRQUFRO2VBQVJBLHVCQUFBQSxRQUFROztJQUlSQyxpQkFBaUI7ZUFBakJBLHVCQUFBQSxpQkFBaUI7O0lBRGpCQyxRQUFRO2VBQVJBLHVCQUFBQSxRQUFROztJQURSQyxZQUFZO2VBQVpBLHVCQUFBQSxZQUFZOztJQU5MQyxrQ0FBa0M7ZUFBbENBLHlCQUFBQSxrQ0FBa0M7O0lBV3pDQyxnQkFBZ0I7ZUFBaEJBLHVCQUFBQSxnQkFBZ0I7O0lBdElGQyxTQUFTO2VBQVRBOztJQTVEQUMsV0FBVztlQUFYQTs7SUFpQ0FDLFNBQVM7ZUFBVEE7O0lBOUVBQyxlQUFlO2VBQWZBOztJQTZNQUMsd0JBQXdCO2VBQXhCQTs7SUEvQkFDLHlCQUF5QjtlQUF6QkE7O0lBdEhkQyxxQkFBcUI7ZUFBckJBLGlDQUFBQSxxQkFBcUI7OzttQ0FuR2E7MkRBSzdCOzZEQUtBOzZDQUN5QjtxQ0FDc0I7bURBQ2Q7NkRBdUZqQztxREEySzRDO0FBaFFuRCxNQUFNQyx3QkFDSixNQUE2QixHQUV2QkUsQ0FDcUIsR0FDdkJDO0FBdUJDLFNBQVNQO0lBQ2QsTUFBTVEsZUFBZUMsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0MsaUNBQUFBLG1CQUFtQjtJQUVuRCw4REFBOEQ7SUFDOUQsMEVBQTBFO0lBQzFFLGtCQUFrQjtJQUNsQixNQUFNQyx1QkFBdUJDLENBQUFBLEdBQUFBLE9BQUFBLE9BQUFBLEVBQVE7UUFDbkMsSUFBSSxDQUFDSixjQUFjO1lB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O0lBQ3pFLE9BQU9DLDBCQUEwQkMsU0FBQUEsbUJBQW1CLEdBQ2hELE9BQ0FEO0FBQ047SUFyQmdCdkM7O1FBR2RHO1FBRStCRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXJhbXMgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvcmVxdWVzdC9wYXJhbXMnXG5cbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIEFwcFJvdXRlckNvbnRleHQsXG4gIExheW91dFJvdXRlckNvbnRleHQsXG4gIHR5cGUgQXBwUm91dGVySW5zdGFuY2UsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHtcbiAgU2VhcmNoUGFyYW1zQ29udGV4dCxcbiAgUGF0aG5hbWVDb250ZXh0LFxuICBQYXRoUGFyYW1zQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGdldFNlZ21lbnRWYWx1ZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZ2V0LXNlZ21lbnQtdmFsdWUnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZLCBERUZBVUxUX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMgfSBmcm9tICcuL25hdmlnYXRpb24ucmVhY3Qtc2VydmVyJ1xuXG5jb25zdCB1c2VEeW5hbWljUm91dGVQYXJhbXMgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZycpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2R5bmFtaWMtcmVuZGVyaW5nJylcbiAgICAgICkudXNlRHluYW1pY1JvdXRlUGFyYW1zXG4gICAgOiB1bmRlZmluZWRcblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgKnJlYWQqIHRoZSBjdXJyZW50IFVSTCdzIHNlYXJjaCBwYXJhbWV0ZXJzLlxuICpcbiAqIExlYXJuIG1vcmUgYWJvdXQgW2BVUkxTZWFyY2hQYXJhbXNgIG9uIE1ETl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1VSTFNlYXJjaFBhcmFtcylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFnZSgpIHtcbiAqICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKClcbiAqICAgc2VhcmNoUGFyYW1zLmdldCgnZm9vJykgLy8gcmV0dXJucyAnYmFyJyB3aGVuID9mb289YmFyXG4gKiAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlU2VhcmNoUGFyYW1zYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWFyY2hQYXJhbXMoKTogUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMge1xuICBjb25zdCBzZWFyY2hQYXJhbXMgPSB1c2VDb250ZXh0KFNlYXJjaFBhcmFtc0NvbnRleHQpXG5cbiAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBpcyBgbnVsbGAsIHRoZSBjb21wYXQgdHlwZXMgYWRkZWQgaW5cbiAgLy8gYG5leHQtZW52LmQudHNgIHdpbGwgYWRkIGEgbmV3IG92ZXJsb2FkIHRoYXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgdG9cbiAgLy8gaW5jbHVkZSBgbnVsbGAuXG4gIGNvbnN0IHJlYWRvbmx5U2VhcmNoUGFyYW1zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hQYXJhbXMpIHtcbiAgICAgIC8vIFdoZW4gdGhlIHJvdXRlciBpcyBub3QgcmVhZHkgaW4gcGFnZXMsIHdlIHdvbid0IGhhdmUgdGhlIHNlYXJjaCBwYXJhbXNcbiAgICAgIC8vIGF2YWlsYWJsZS5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyhzZWFyY2hQYXJhbXMpXG4gIH0sIFtzZWFyY2hQYXJhbXNdKSBhcyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc1xuXG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGNsaWVudCBidW5kbGUuXG4gICAgY29uc3QgeyBiYWlsb3V0VG9DbGllbnRSZW5kZXJpbmcgfSA9XG4gICAgICByZXF1aXJlKCcuL2JhaWxvdXQtdG8tY2xpZW50LXJlbmRlcmluZycpIGFzIHR5cGVvZiBpbXBvcnQoJy4vYmFpbG91dC10by1jbGllbnQtcmVuZGVyaW5nJylcbiAgICAvLyBUT0RPLUFQUDogaGFuZGxlIGR5bmFtaWMgPSAnZm9yY2Utc3RhdGljJyBoZXJlIGFuZCBvbiB0aGUgY2xpZW50XG4gICAgYmFpbG91dFRvQ2xpZW50UmVuZGVyaW5nKCd1c2VTZWFyY2hQYXJhbXMoKScpXG4gIH1cblxuICByZXR1cm4gcmVhZG9ubHlTZWFyY2hQYXJhbXNcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgY3VycmVudCBVUkwncyBwYXRobmFtZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKSAvLyByZXR1cm5zIFwiL2Rhc2hib2FyZFwiIG9uIC9kYXNoYm9hcmQ/Zm9vPWJhclxuICogIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlUGF0aG5hbWVgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXBhdGhuYW1lKVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VQYXRobmFtZSgpOiBzdHJpbmcge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlUGF0aG5hbWUoKScpXG5cbiAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBpcyBgbnVsbGAsIHRoZSBjb21wYXQgdHlwZXMgYWRkZWQgaW4gYG5leHQtZW52LmQudHNgXG4gIC8vIHdpbGwgYWRkIGEgbmV3IG92ZXJsb2FkIHRoYXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgdG8gaW5jbHVkZSBgbnVsbGAuXG4gIHJldHVybiB1c2VDb250ZXh0KFBhdGhuYW1lQ29udGV4dCkgYXMgc3RyaW5nXG59XG5cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IHtcbiAgU2VydmVySW5zZXJ0ZWRIVE1MQ29udGV4dCxcbiAgdXNlU2VydmVySW5zZXJ0ZWRIVE1MLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3NlcnZlci1pbnNlcnRlZC1odG1sLnNoYXJlZC1ydW50aW1lJ1xuXG4vKipcbiAqXG4gKiBUaGlzIGhvb2sgYWxsb3dzIHlvdSB0byBwcm9ncmFtbWF0aWNhbGx5IGNoYW5nZSByb3V0ZXMgaW5zaWRlIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogXCJ1c2UgY2xpZW50XCJcbiAqIGltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYWdlKCkge1xuICogIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gKiAgLy8gLi4uXG4gKiAgcm91dGVyLnB1c2goJy9kYXNoYm9hcmQnKSAvLyBOYXZpZ2F0ZSB0byAvZGFzaGJvYXJkXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VSb3V0ZXJgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXJvdXRlcilcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlUm91dGVyKCk6IEFwcFJvdXRlckluc3RhbmNlIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlQ29udGV4dChBcHBSb3V0ZXJDb250ZXh0KVxuICBpZiAocm91dGVyID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgZXhwZWN0ZWQgYXBwIHJvdXRlciB0byBiZSBtb3VudGVkJylcbiAgfVxuXG4gIHJldHVybiByb3V0ZXJcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCBhIHJvdXRlJ3MgZHluYW1pYyBwYXJhbXMgZmlsbGVkIGluIGJ5IHRoZSBjdXJyZW50IFVSTC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VQYXJhbXMgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFnZSgpIHtcbiAqICAgLy8gb24gL2Rhc2hib2FyZC9bdGVhbV0gd2hlcmUgcGF0aG5hbWUgaXMgL2Rhc2hib2FyZC9uZXh0anNcbiAqICAgY29uc3QgeyB0ZWFtIH0gPSB1c2VQYXJhbXMoKSAvLyB0ZWFtID09PSBcIm5leHRqc1wiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VQYXJhbXNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXBhcmFtcylcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFyYW1zPFQgZXh0ZW5kcyBQYXJhbXMgPSBQYXJhbXM+KCk6IFQge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlUGFyYW1zKCknKVxuXG4gIHJldHVybiB1c2VDb250ZXh0KFBhdGhQYXJhbXNDb250ZXh0KSBhcyBUXG59XG5cbi8qKiBHZXQgdGhlIGNhbm9uaWNhbCBwYXJhbWV0ZXJzIGZyb20gdGhlIGN1cnJlbnQgbGV2ZWwgdG8gdGhlIGxlYWYgbm9kZS4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZnVuY3Rpb24gZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aChcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyxcbiAgZmlyc3QgPSB0cnVlLFxuICBzZWdtZW50UGF0aDogc3RyaW5nW10gPSBbXVxuKTogc3RyaW5nW10ge1xuICBsZXQgbm9kZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgaWYgKGZpcnN0KSB7XG4gICAgLy8gVXNlIHRoZSBwcm92aWRlZCBwYXJhbGxlbCByb3V0ZSBrZXkgb24gdGhlIGZpcnN0IHBhcmFsbGVsIHJvdXRlXG4gICAgbm9kZSA9IHRyZWVbMV1bcGFyYWxsZWxSb3V0ZUtleV1cbiAgfSBlbHNlIHtcbiAgICAvLyBBZnRlciBmaXJzdCBwYXJhbGxlbCByb3V0ZSBwcmVmZXIgY2hpbGRyZW4sIGlmIHRoZXJlJ3Mgbm8gY2hpbGRyZW4gcGljayB0aGUgZmlyc3QgcGFyYWxsZWwgcm91dGUuXG4gICAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSB0cmVlWzFdXG4gICAgbm9kZSA9IHBhcmFsbGVsUm91dGVzLmNoaWxkcmVuID8/IE9iamVjdC52YWx1ZXMocGFyYWxsZWxSb3V0ZXMpWzBdXG4gIH1cblxuICBpZiAoIW5vZGUpIHJldHVybiBzZWdtZW50UGF0aFxuICBjb25zdCBzZWdtZW50ID0gbm9kZVswXVxuXG4gIGxldCBzZWdtZW50VmFsdWUgPSBnZXRTZWdtZW50VmFsdWUoc2VnbWVudClcblxuICBpZiAoIXNlZ21lbnRWYWx1ZSB8fCBzZWdtZW50VmFsdWUuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkge1xuICAgIHJldHVybiBzZWdtZW50UGF0aFxuICB9XG5cbiAgc2VnbWVudFBhdGgucHVzaChzZWdtZW50VmFsdWUpXG5cbiAgcmV0dXJuIGdldFNlbGVjdGVkTGF5b3V0U2VnbWVudFBhdGgoXG4gICAgbm9kZSxcbiAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgIGZhbHNlLFxuICAgIHNlZ21lbnRQYXRoXG4gIClcbn1cblxuLyoqXG4gKiBBIFtDbGllbnQgQ29tcG9uZW50XShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvY2xpZW50LWNvbXBvbmVudHMpIGhvb2tcbiAqIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgYWN0aXZlIHJvdXRlIHNlZ21lbnRzICoqYmVsb3cqKiB0aGUgTGF5b3V0IGl0IGlzIGNhbGxlZCBmcm9tLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogJ3VzZSBjbGllbnQnXG4gKlxuICogaW1wb3J0IHsgdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFeGFtcGxlQ2xpZW50Q29tcG9uZW50KCkge1xuICogICBjb25zdCBzZWdtZW50cyA9IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoKVxuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8dWw+XG4gKiAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpbmRleCkgPT4gKFxuICogICAgICAgICA8bGkga2V5PXtpbmRleH0+e3NlZ21lbnR9PC9saT5cbiAqICAgICAgICkpfVxuICogICAgIDwvdWw+XG4gKiAgIClcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHNgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlbGVjdGVkLWxheW91dC1zZWdtZW50cylcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyhcbiAgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gJ2NoaWxkcmVuJ1xuKTogc3RyaW5nW10ge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cygpJylcblxuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChMYXlvdXRSb3V0ZXJDb250ZXh0KVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIFRoaXMgb25seSBoYXBwZW5zIGluIGBwYWdlc2AuIFR5cGUgaXMgb3ZlcndyaXR0ZW4gaW4gbmF2aWdhdGlvbi5kLnRzXG4gIGlmICghY29udGV4dCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aChjb250ZXh0LnBhcmVudFRyZWUsIHBhcmFsbGVsUm91dGVLZXkpXG59XG5cbi8qKlxuICogQSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKSBob29rXG4gKiB0aGF0IGxldHMgeW91IHJlYWQgdGhlIGFjdGl2ZSByb3V0ZSBzZWdtZW50ICoqb25lIGxldmVsIGJlbG93KiogdGhlIExheW91dCBpdCBpcyBjYWxsZWQgZnJvbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqICd1c2UgY2xpZW50J1xuICogaW1wb3J0IHsgdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50IH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4YW1wbGVDbGllbnRDb21wb25lbnQoKSB7XG4gKiAgIGNvbnN0IHNlZ21lbnQgPSB1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoKVxuICpcbiAqICAgcmV0dXJuIDxwPkFjdGl2ZSBzZWdtZW50OiB7c2VnbWVudH08L3A+XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlbGVjdGVkLWxheW91dC1zZWdtZW50KVxuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyA9ICdjaGlsZHJlbidcbik6IHN0cmluZyB8IG51bGwge1xuICB1c2VEeW5hbWljUm91dGVQYXJhbXM/LigndXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50KCknKVxuXG4gIGNvbnN0IHNlbGVjdGVkTGF5b3V0U2VnbWVudHMgPSB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzKHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgaWYgKCFzZWxlY3RlZExheW91dFNlZ21lbnRzIHx8IHNlbGVjdGVkTGF5b3V0U2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTGF5b3V0U2VnbWVudCA9XG4gICAgcGFyYWxsZWxSb3V0ZUtleSA9PT0gJ2NoaWxkcmVuJ1xuICAgICAgPyBzZWxlY3RlZExheW91dFNlZ21lbnRzWzBdXG4gICAgICA6IHNlbGVjdGVkTGF5b3V0U2VnbWVudHNbc2VsZWN0ZWRMYXlvdXRTZWdtZW50cy5sZW5ndGggLSAxXVxuXG4gIC8vIGlmIHRoZSBkZWZhdWx0IHNsb3QgaXMgc2hvd2luZywgd2UgcmV0dXJuIG51bGwgc2luY2UgaXQncyBub3QgdGVjaG5pY2FsbHkgXCJzZWxlY3RlZFwiIChpdCdzIGEgZmFsbGJhY2spXG4gIC8vIGFuZCByZXR1cm5pbmcgYW4gaW50ZXJuYWwgdmFsdWUgbGlrZSBgX19ERUZBVUxUX19gIHdvdWxkIGJlIGNvbmZ1c2luZy5cbiAgcmV0dXJuIHNlbGVjdGVkTGF5b3V0U2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWVxuICAgID8gbnVsbFxuICAgIDogc2VsZWN0ZWRMYXlvdXRTZWdtZW50XG59XG5cbmV4cG9ydCB7IHVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IgfSBmcm9tICcuL3VucmVjb2duaXplZC1hY3Rpb24tZXJyb3InXG5cbi8vIFNoYXJlZCBjb21wb25lbnRzIEFQSXNcbmV4cG9ydCB7XG4gIG5vdEZvdW5kLFxuICBmb3JiaWRkZW4sXG4gIHVuYXV0aG9yaXplZCxcbiAgcmVkaXJlY3QsXG4gIHBlcm1hbmVudFJlZGlyZWN0LFxuICBSZWRpcmVjdFR5cGUsXG4gIFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zLFxuICB1bnN0YWJsZV9yZXRocm93LFxufSBmcm9tICcuL25hdmlnYXRpb24ucmVhY3Qtc2VydmVyJ1xuIl0sIm5hbWVzIjpbIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIiwiUmVkaXJlY3RUeXBlIiwiU2VydmVySW5zZXJ0ZWRIVE1MQ29udGV4dCIsImZvcmJpZGRlbiIsIm5vdEZvdW5kIiwicGVybWFuZW50UmVkaXJlY3QiLCJyZWRpcmVjdCIsInVuYXV0aG9yaXplZCIsInVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJ1bnN0YWJsZV9yZXRocm93IiwidXNlUGFyYW1zIiwidXNlUGF0aG5hbWUiLCJ1c2VSb3V0ZXIiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VTZWxlY3RlZExheW91dFNlZ21lbnQiLCJ1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzIiwidXNlU2VydmVySW5zZXJ0ZWRIVE1MIiwidXNlRHluYW1pY1JvdXRlUGFyYW1zIiwid2luZG93IiwicmVxdWlyZSIsInVuZGVmaW5lZCIsInNlYXJjaFBhcmFtcyIsInVzZUNvbnRleHQiLCJTZWFyY2hQYXJhbXNDb250ZXh0IiwicmVhZG9ubHlTZWFyY2hQYXJhbXMiLCJ1c2VNZW1vIiwiYmFpbG91dFRvQ2xpZW50UmVuZGVyaW5nIiwiUGF0aG5hbWVDb250ZXh0Iiwicm91dGVyIiwiQXBwUm91dGVyQ29udGV4dCIsIkVycm9yIiwiUGF0aFBhcmFtc0NvbnRleHQiLCJnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoIiwidHJlZSIsInBhcmFsbGVsUm91dGVLZXkiLCJmaXJzdCIsInNlZ21lbnRQYXRoIiwibm9kZSIsInBhcmFsbGVsUm91dGVzIiwiY2hpbGRyZW4iLCJPYmplY3QiLCJ2YWx1ZXMiLCJzZWdtZW50Iiwic2VnbWVudFZhbHVlIiwiZ2V0U2VnbWVudFZhbHVlIiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJwdXNoIiwiY29udGV4dCIsIkxheW91dFJvdXRlckNvbnRleHQiLCJwYXJlbnRUcmVlIiwic2VsZWN0ZWRMYXlvdXRTZWdtZW50cyIsImxlbmd0aCIsInNlbGVjdGVkTGF5b3V0U2VnbWVudCIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/navigation.react-server.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/components/navigation.react-server.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/** @internal */ \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 ReadonlyURLSearchParams: function() {\n return ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _redirecterror.RedirectType;\n },\n forbidden: function() {\n return _forbidden.forbidden;\n },\n notFound: function() {\n return _notfound.notFound;\n },\n permanentRedirect: function() {\n return _redirect.permanentRedirect;\n },\n redirect: function() {\n return _redirect.redirect;\n },\n unauthorized: function() {\n return _unauthorized.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _unstablerethrow.unstable_rethrow;\n }\n});\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst _notfound = __webpack_require__(/*! ./not-found */ \"(app-pages-browser)/./node_modules/next/dist/client/components/not-found.js\");\nconst _forbidden = __webpack_require__(/*! ./forbidden */ \"(app-pages-browser)/./node_modules/next/dist/client/components/forbidden.js\");\nconst _unauthorized = __webpack_require__(/*! ./unauthorized */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unauthorized.js\");\nconst _unstablerethrow = __webpack_require__(/*! ./unstable-rethrow */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.js\");\nclass ReadonlyURLSearchParamsError extends Error {\n constructor(){\n super('Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams');\n }\n}\nclass ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ append() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ delete() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ set() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ sort() {\n throw new ReadonlyURLSearchParamsError();\n }\n}\nfunction unstable_isUnrecognizedActionError() {\n throw Object.defineProperty(new Error('`unstable_isUnrecognizedActionError` can only be used on the client.'), \"__NEXT_ERROR_CODE\", {\n value: \"E776\",\n enumerable: false,\n configurable: true\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=navigation.react-server.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsY0FBYzs7Ozs7Ozs7Ozs7O0lBd0NMQSx1QkFBdUI7ZUFBdkJBOztJQUxBQyxZQUFZO2VBQVpBLGVBQUFBLFlBQVk7O0lBRVpDLFNBQVM7ZUFBVEEsV0FBQUEsU0FBUzs7SUFEVEMsUUFBUTtlQUFSQSxVQUFBQSxRQUFROztJQUZFQyxpQkFBaUI7ZUFBakJBLFVBQUFBLGlCQUFpQjs7SUFBM0JDLFFBQVE7ZUFBUkEsVUFBQUEsUUFBUTs7SUFJUkMsWUFBWTtlQUFaQSxjQUFBQSxZQUFZOztJQVZMQyxrQ0FBa0M7ZUFBbENBOztJQVdQQyxnQkFBZ0I7ZUFBaEJBLGlCQUFBQSxnQkFBZ0I7OztzQ0FMbUI7MkNBQ2Y7c0NBQ0o7dUNBQ0M7MENBQ0c7NkNBQ0k7QUF0Q2pDLE1BQU1DLHFDQUFxQ0M7SUFDekNDLGFBQWM7UUFDWixLQUFLLENBQ0g7SUFFSjtBQUNGO0FBRUEsTUFBTVgsZ0NBQWdDWTtJQUNwQyx3S0FBd0ssR0FDeEtDLFNBQVM7UUFDUCxNQUFNLElBQUlKO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtLLFNBQVM7UUFDUCxNQUFNLElBQUlMO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtNLE1BQU07UUFDSixNQUFNLElBQUlOO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtPLE9BQU87UUFDTCxNQUFNLElBQUlQO0lBQ1o7QUFDRjtBQUVPLFNBQVNGO0lBQ2QsTUFBTSxxQkFFTCxDQUZLLElBQUlHLE1BQ1IseUVBREk7ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9uYXZpZ2F0aW9uLnJlYWN0LXNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGludGVybmFsICovXG5jbGFzcyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgICdNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zJ1xuICAgIClcbiAgfVxufVxuXG5jbGFzcyBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyBleHRlbmRzIFVSTFNlYXJjaFBhcmFtcyB7XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIGFwcGVuZCgpIHtcbiAgICB0aHJvdyBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvcigpXG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkIE1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMgKi9cbiAgZGVsZXRlKCkge1xuICAgIHRocm93IG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yKClcbiAgfVxuICAvKiogQGRlcHJlY2F0ZWQgTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcyAqL1xuICBzZXQoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIHNvcnQoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKCk6IGJvb2xlYW4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ2B1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yYCBjYW4gb25seSBiZSB1c2VkIG9uIHRoZSBjbGllbnQuJ1xuICApXG59XG5cbmV4cG9ydCB7IHJlZGlyZWN0LCBwZXJtYW5lbnRSZWRpcmVjdCB9IGZyb20gJy4vcmVkaXJlY3QnXG5leHBvcnQgeyBSZWRpcmVjdFR5cGUgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuZXhwb3J0IHsgbm90Rm91bmQgfSBmcm9tICcuL25vdC1mb3VuZCdcbmV4cG9ydCB7IGZvcmJpZGRlbiB9IGZyb20gJy4vZm9yYmlkZGVuJ1xuZXhwb3J0IHsgdW5hdXRob3JpemVkIH0gZnJvbSAnLi91bmF1dGhvcml6ZWQnXG5leHBvcnQgeyB1bnN0YWJsZV9yZXRocm93IH0gZnJvbSAnLi91bnN0YWJsZS1yZXRocm93J1xuZXhwb3J0IHsgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMgfVxuIl0sIm5hbWVzIjpbIlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIiwiUmVkaXJlY3RUeXBlIiwiZm9yYmlkZGVuIiwibm90Rm91bmQiLCJwZXJtYW5lbnRSZWRpcmVjdCIsInJlZGlyZWN0IiwidW5hdXRob3JpemVkIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInVuc3RhYmxlX3JldGhyb3ciLCJSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImRlbGV0ZSIsInNldCIsInNvcnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/navigation.react-server.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/not-found.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/components/not-found.js ***! \***************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"notFound\", ({\n enumerable: true,\n get: function() {\n return notFound;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";404\";\nfunction notFound() {\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=not-found.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7NENBc0JnQkE7OztlQUFBQTs7O2dEQW5CVDtBQUVQOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FFRCxNQUFNQyxTQUFVLEtBQUVDLG9CQUFBQSw4QkFBOEIsR0FBQztBQUUxQyxTQUFTRjtJQUNkLDRDQUE0QztJQUM1QyxNQUFNRyxRQUFRLHFCQUFpQixDQUFqQixJQUFJQyxNQUFNSCxTQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBZ0I7SUFDNUJFLE1BQWtDRSxNQUFNLEdBQUdKO0lBRTdDLE1BQU1FO0FBQ1IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFLFxuICB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yLFxufSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrJ1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZW5kZXIgdGhlIFtub3QtZm91bmQuanMgZmlsZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZmlsZS1jb252ZW50aW9ucy9ub3QtZm91bmQpXG4gKiB3aXRoaW4gYSByb3V0ZSBzZWdtZW50IGFzIHdlbGwgYXMgaW5qZWN0IGEgdGFnLlxuICpcbiAqIGBub3RGb3VuZCgpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogLSBJbiBhIFNlcnZlciBDb21wb25lbnQsIHRoaXMgd2lsbCBpbnNlcnQgYSBgPG1ldGEgbmFtZT1cInJvYm90c1wiIGNvbnRlbnQ9XCJub2luZGV4XCIgLz5gIG1ldGEgdGFnIGFuZCBzZXQgdGhlIHN0YXR1cyBjb2RlIHRvIDQwNC5cbiAqIC0gSW4gYSBSb3V0ZSBIYW5kbGVyIG9yIFNlcnZlciBBY3Rpb24sIGl0IHdpbGwgc2VydmUgYSA0MDQgdG8gdGhlIGNhbGxlci5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGBub3RGb3VuZGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9ub3QtZm91bmQpXG4gKi9cblxuY29uc3QgRElHRVNUID0gYCR7SFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTs0MDRgXG5cbmV4cG9ydCBmdW5jdGlvbiBub3RGb3VuZCgpOiBuZXZlciB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG5cbiAgdGhyb3cgZXJyb3Jcbn1cbiJdLCJuYW1lcyI6WyJub3RGb3VuZCIsIkRJR0VTVCIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsImVycm9yIiwiRXJyb3IiLCJkaWdlc3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/not-found.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/promise-queue.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/components/promise-queue.js ***! \*******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/*\n This is a simple promise queue that allows you to limit the number of concurrent promises\n that are running at any given time. It's used to limit the number of concurrent\n prefetch requests that are being made to the server but could be used for other\n things as well.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"PromiseQueue\", ({\n enumerable: true,\n get: function() {\n return PromiseQueue;\n }\n}));\nconst _class_private_field_loose_base = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_base */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\");\nconst _class_private_field_loose_key = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_key */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\");\nvar _maxConcurrency = /*#__PURE__*/ _class_private_field_loose_key._(\"_maxConcurrency\"), _runningCount = /*#__PURE__*/ _class_private_field_loose_key._(\"_runningCount\"), _queue = /*#__PURE__*/ _class_private_field_loose_key._(\"_queue\"), _processNext = /*#__PURE__*/ _class_private_field_loose_key._(\"_processNext\");\nclass PromiseQueue {\n enqueue(promiseFn) {\n let taskResolve;\n let taskReject;\n const taskPromise = new Promise((resolve, reject)=>{\n taskResolve = resolve;\n taskReject = reject;\n });\n const task = async ()=>{\n try {\n _class_private_field_loose_base._(this, _runningCount)[_runningCount]++;\n const result = await promiseFn();\n taskResolve(result);\n } catch (error) {\n taskReject(error);\n } finally{\n _class_private_field_loose_base._(this, _runningCount)[_runningCount]--;\n _class_private_field_loose_base._(this, _processNext)[_processNext]();\n }\n };\n const enqueueResult = {\n promiseFn: taskPromise,\n task\n };\n // wonder if we should take a LIFO approach here\n _class_private_field_loose_base._(this, _queue)[_queue].push(enqueueResult);\n _class_private_field_loose_base._(this, _processNext)[_processNext]();\n return taskPromise;\n }\n bump(promiseFn) {\n const index = _class_private_field_loose_base._(this, _queue)[_queue].findIndex((item)=>item.promiseFn === promiseFn);\n if (index > -1) {\n const bumpedItem = _class_private_field_loose_base._(this, _queue)[_queue].splice(index, 1)[0];\n _class_private_field_loose_base._(this, _queue)[_queue].unshift(bumpedItem);\n _class_private_field_loose_base._(this, _processNext)[_processNext](true);\n }\n }\n constructor(maxConcurrency = 5){\n Object.defineProperty(this, _processNext, {\n value: processNext\n });\n Object.defineProperty(this, _maxConcurrency, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _runningCount, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _queue, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base._(this, _maxConcurrency)[_maxConcurrency] = maxConcurrency;\n _class_private_field_loose_base._(this, _runningCount)[_runningCount] = 0;\n _class_private_field_loose_base._(this, _queue)[_queue] = [];\n }\n}\nfunction processNext(forced) {\n if (forced === void 0) forced = false;\n if ((_class_private_field_loose_base._(this, _runningCount)[_runningCount] < _class_private_field_loose_base._(this, _maxConcurrency)[_maxConcurrency] || forced) && _class_private_field_loose_base._(this, _queue)[_queue].length > 0) {\n var _class_private_field_loose_base__queue_shift;\n (_class_private_field_loose_base__queue_shift = _class_private_field_loose_base._(this, _queue)[_queue].shift()) == null ? void 0 : _class_private_field_loose_base__queue_shift.task();\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=promise-queue.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcHJvbWlzZS1xdWV1ZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7OztnREFDYUE7OztlQUFBQTs7Ozs7SUFDWCxxRkFDQSxpRkFDQSxtRUFtREE7QUF0REssTUFBTUE7SUFjWEMsUUFBV0MsU0FBMkIsRUFBYztRQUNsRCxJQUFJQztRQUNKLElBQUlDO1FBRUosTUFBTUMsY0FBYyxJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1lBQ3hDTCxjQUFjSTtZQUNkSCxhQUFhSTtRQUNmO1FBRUEsTUFBTUMsT0FBTztZQUNYLElBQUk7Z0JBQ0Ysc0NBQUksRUFBQztnQkFDTCxNQUFNQyxTQUFTLE1BQU1SO2dCQUNyQkMsWUFBWU87WUFDZCxFQUFFLE9BQU9DLE9BQU87Z0JBQ2RQLFdBQVdPO1lBQ2IsU0FBVTtnQkFDUixzQ0FBSSxFQUFDO2dCQUNMLHNDQUFJLEVBQUM7WUFDUDtRQUNGO1FBRUEsTUFBTUMsZ0JBQWdCO1lBQUVWLFdBQVdHO1lBQWFJO1FBQUs7UUFDckQsZ0RBQWdEO1FBQ2hELHNDQUFJLEVBQUMsZ0JBQU9JLElBQUksQ0FBQ0Q7UUFDakIsc0NBQUksRUFBQztRQUVMLE9BQU9QO0lBQ1Q7SUFFQVMsS0FBS1osU0FBdUIsRUFBRTtRQUM1QixNQUFNYSxRQUFRLHNDQUFJLEVBQUMsZ0JBQU9DLFNBQVMsQ0FBQyxDQUFDQyxPQUFTQSxLQUFLZixTQUFTLEtBQUtBO1FBRWpFLElBQUlhLFFBQVEsQ0FBQyxHQUFHO1lBQ2QsTUFBTUcsYUFBYSxzQ0FBSSxFQUFDLGdCQUFPQyxNQUFNLENBQUNKLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDbEQsc0NBQUksRUFBQyxnQkFBT0ssT0FBTyxDQUFDRjtZQUNwQixzQ0FBSSxFQUFDLDRCQUFhO1FBQ3BCO0lBQ0Y7SUE1Q0FHLFlBQVlDLGlCQUFpQixDQUFDLENBQUU7UUE4Q2hDO21CQUFBOztRQXJEQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUNBOzttQkFBQTs7UUFNRSxzQ0FBSSxFQUFDLG9DQUFrQkE7UUFDdkIsc0NBQUksRUFBQyxnQ0FBZ0I7UUFDckIsc0NBQUksRUFBQyxrQkFBUyxFQUFFO0lBQ2xCO0FBa0RGO0FBUkUscUJBQWFDLE1BQWM7SUFBZEEsSUFBQUEsV0FBQUEsS0FBQUEsR0FBQUEsU0FBUztJQUNwQixJQUNHLHVDQUFJLEVBQUMsZ0NBQWdCLHNDQUFJLEVBQUMscUNBQW1CQSxNQUFBQSxDQUFLLElBQ25ELHNDQUFJLEVBQUMsZ0JBQU9DLE1BQU0sR0FBRyxHQUNyQjtZQUNBO1NBQUEscUZBQUksRUFBQyxnQkFBT0MsS0FBSyx1QkFBakIsNkNBQXFCaEIsSUFBSTtJQUMzQjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvcHJvbWlzZS1xdWV1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIFRoaXMgaXMgYSBzaW1wbGUgcHJvbWlzZSBxdWV1ZSB0aGF0IGFsbG93cyB5b3UgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IHByb21pc2VzXG4gICAgdGhhdCBhcmUgcnVubmluZyBhdCBhbnkgZ2l2ZW4gdGltZS4gSXQncyB1c2VkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudFxuICAgIHByZWZldGNoIHJlcXVlc3RzIHRoYXQgYXJlIGJlaW5nIG1hZGUgdG8gdGhlIHNlcnZlciBidXQgY291bGQgYmUgdXNlZCBmb3Igb3RoZXJcbiAgICB0aGluZ3MgYXMgd2VsbC5cbiovXG5leHBvcnQgY2xhc3MgUHJvbWlzZVF1ZXVlIHtcbiAgI21heENvbmN1cnJlbmN5OiBudW1iZXJcbiAgI3J1bm5pbmdDb3VudDogbnVtYmVyXG4gICNxdWV1ZTogQXJyYXk8e1xuICAgIHByb21pc2VGbjogUHJvbWlzZTxhbnk+XG4gICAgdGFzazogKCkgPT4gdm9pZFxuICB9PlxuXG4gIGNvbnN0cnVjdG9yKG1heENvbmN1cnJlbmN5ID0gNSkge1xuICAgIHRoaXMuI21heENvbmN1cnJlbmN5ID0gbWF4Q29uY3VycmVuY3lcbiAgICB0aGlzLiNydW5uaW5nQ291bnQgPSAwXG4gICAgdGhpcy4jcXVldWUgPSBbXVxuICB9XG5cbiAgZW5xdWV1ZTxUPihwcm9taXNlRm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgdGFza1Jlc29sdmU6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkXG4gICAgbGV0IHRhc2tSZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWRcblxuICAgIGNvbnN0IHRhc2tQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGFza1Jlc29sdmUgPSByZXNvbHZlXG4gICAgICB0YXNrUmVqZWN0ID0gcmVqZWN0XG4gICAgfSkgYXMgUHJvbWlzZTxUPlxuXG4gICAgY29uc3QgdGFzayA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuI3J1bm5pbmdDb3VudCsrXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2VGbigpXG4gICAgICAgIHRhc2tSZXNvbHZlKHJlc3VsdClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRhc2tSZWplY3QoZXJyb3IpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLiNydW5uaW5nQ291bnQtLVxuICAgICAgICB0aGlzLiNwcm9jZXNzTmV4dCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5xdWV1ZVJlc3VsdCA9IHsgcHJvbWlzZUZuOiB0YXNrUHJvbWlzZSwgdGFzayB9XG4gICAgLy8gd29uZGVyIGlmIHdlIHNob3VsZCB0YWtlIGEgTElGTyBhcHByb2FjaCBoZXJlXG4gICAgdGhpcy4jcXVldWUucHVzaChlbnF1ZXVlUmVzdWx0KVxuICAgIHRoaXMuI3Byb2Nlc3NOZXh0KClcblxuICAgIHJldHVybiB0YXNrUHJvbWlzZVxuICB9XG5cbiAgYnVtcChwcm9taXNlRm46IFByb21pc2U8YW55Pikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy4jcXVldWUuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnByb21pc2VGbiA9PT0gcHJvbWlzZUZuKVxuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGJ1bXBlZEl0ZW0gPSB0aGlzLiNxdWV1ZS5zcGxpY2UoaW5kZXgsIDEpWzBdXG4gICAgICB0aGlzLiNxdWV1ZS51bnNoaWZ0KGJ1bXBlZEl0ZW0pXG4gICAgICB0aGlzLiNwcm9jZXNzTmV4dCh0cnVlKVxuICAgIH1cbiAgfVxuXG4gICNwcm9jZXNzTmV4dChmb3JjZWQgPSBmYWxzZSkge1xuICAgIGlmIChcbiAgICAgICh0aGlzLiNydW5uaW5nQ291bnQgPCB0aGlzLiNtYXhDb25jdXJyZW5jeSB8fCBmb3JjZWQpICYmXG4gICAgICB0aGlzLiNxdWV1ZS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLiNxdWV1ZS5zaGlmdCgpPy50YXNrKClcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJQcm9taXNlUXVldWUiLCJlbnF1ZXVlIiwicHJvbWlzZUZuIiwidGFza1Jlc29sdmUiLCJ0YXNrUmVqZWN0IiwidGFza1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInRhc2siLCJyZXN1bHQiLCJlcnJvciIsImVucXVldWVSZXN1bHQiLCJwdXNoIiwiYnVtcCIsImluZGV4IiwiZmluZEluZGV4IiwiaXRlbSIsImJ1bXBlZEl0ZW0iLCJzcGxpY2UiLCJ1bnNoaWZ0IiwiY29uc3RydWN0b3IiLCJtYXhDb25jdXJyZW5jeSIsImZvcmNlZCIsImxlbmd0aCIsInNoaWZ0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/promise-queue.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/redirect-boundary.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-boundary.js ***! \***********************************************************************/ /***/ ((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 RedirectBoundary: function() {\n return RedirectBoundary;\n },\n RedirectErrorBoundary: function() {\n return RedirectErrorBoundary;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _navigation = __webpack_require__(/*! ./navigation */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nfunction HandleRedirect(param) {\n let { redirect, reset, redirectType } = param;\n const router = (0, _navigation.useRouter)();\n (0, _react.useEffect)(()=>{\n _react.default.startTransition(()=>{\n if (redirectType === _redirecterror.RedirectType.push) {\n router.push(redirect, {});\n } else {\n router.replace(redirect, {});\n }\n reset();\n });\n }, [\n redirect,\n redirectType,\n reset,\n router\n ]);\n return null;\n}\n_c = HandleRedirect;\nclass RedirectErrorBoundary extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _redirecterror.isRedirectError)(error)) {\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n return {\n redirect: url,\n redirectType\n };\n }\n // Re-throw if error is not for redirect\n throw error;\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n const { redirect, redirectType } = this.state;\n if (redirect !== null && redirectType !== null) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HandleRedirect, {\n redirect: redirect,\n redirectType: redirectType,\n reset: ()=>this.setState({\n redirect: null\n })\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props);\n this.state = {\n redirect: null,\n redirectType: null\n };\n }\n}\nfunction RedirectBoundary(param) {\n let { children } = param;\n const router = (0, _navigation.useRouter)();\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(RedirectErrorBoundary, {\n router: router,\n children: children\n });\n}\n_c1 = RedirectBoundary;\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=redirect-boundary.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"HandleRedirect\");\n$RefreshReg$(_c1, \"RedirectBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBeUVnQkEsZ0JBQWdCO2VBQWhCQTs7SUFwQ0hDLHFCQUFxQjtlQUFyQkE7Ozs7OzZFQXBDb0I7d0NBRVA7c0NBQ3dDOzJDQUNwQjtBQU85Qyx3QkFBd0IsS0FRdkI7SUFSdUIsTUFDdEJFLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxZQUFZLEVBS2IsR0FSdUI7SUFTdEIsTUFBTUMsU0FBU0MsQ0FBQUEsR0FBQUEsWUFBQUEsU0FBQUE7SUFFZkMsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSQyxPQUFBQSxPQUFLLENBQUNDLGVBQWUsQ0FBQztZQUNwQixJQUFJTCxpQkFBaUJNLGVBQUFBLFlBQVksQ0FBQ0MsSUFBSSxFQUFFO2dCQUN0Q04sT0FBT00sSUFBSSxDQUFDVCxVQUFVLENBQUM7WUFDekIsT0FBTztnQkFDTEcsT0FBT08sT0FBTyxDQUFDVixVQUFVLENBQUM7WUFDNUI7WUFDQUM7UUFDRjtJQUNGLEdBQUc7UUFBQ0Q7UUFBVUU7UUFBY0Q7UUFBT0U7S0FBTztJQUUxQyxPQUFPO0FBQ1Q7S0F2QlNKO0FBeUJGLE1BQU1ELDhCQUE4QlEsT0FBQUEsT0FBSyxDQUFDSyxTQUFTO0lBU3hELE9BQU9DLHlCQUF5QkMsS0FBVSxFQUFFO1FBQzFDLElBQUlDLENBQUFBLEdBQUFBLGVBQUFBLGVBQWUsRUFBQ0QsUUFBUTtZQUMxQixNQUFNRSxNQUFNQyxDQUFBQSxHQUFBQSxVQUFBQSx1QkFBQUEsRUFBd0JIO1lBQ3BDLE1BQU1YLGVBQWVlLENBQUFBLEdBQUFBLFVBQUFBLHdCQUFBQSxFQUF5Qko7WUFDOUMsT0FBTztnQkFBRWIsVUFBVWU7Z0JBQUtiO1lBQWE7UUFDdkM7UUFDQSx3Q0FBd0M7UUFDeEMsTUFBTVc7SUFDUjtJQUVBLHlJQUF5STtJQUN6SUssU0FBMEI7UUFDeEIsTUFBTSxFQUFFbEIsUUFBUSxFQUFFRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUNpQixLQUFLO1FBQzdDLElBQUluQixhQUFhLFFBQVFFLGlCQUFpQixNQUFNO1lBQzlDLHFCQUNFLHFCQUFDSCxnQkFBQUE7Z0JBQ0NDLFVBQVVBO2dCQUNWRSxjQUFjQTtnQkFDZEQsT0FBTyxJQUFNLElBQUksQ0FBQ21CLFFBQVEsQ0FBQzt3QkFBRXBCLFVBQVU7b0JBQUs7O1FBR2xEO1FBRUEsT0FBTyxJQUFJLENBQUNxQixLQUFLLENBQUNDLFFBQVE7SUFDNUI7SUE3QkFDLFlBQVlGLEtBQTRCLENBQUU7UUFDeEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0YsS0FBSyxHQUFHO1lBQUVuQixVQUFVO1lBQU1FLGNBQWM7UUFBSztJQUNwRDtBQTJCRjtBQUVPLDBCQUEwQixLQUEyQztJQUEzQyxNQUFFb0IsUUFBUSxFQUFpQyxHQUEzQztJQUMvQixNQUFNbkIsU0FBU0MsQ0FBQUEsR0FBQUEsWUFBQUEsU0FBQUE7SUFDZixxQkFDRSxxQkFBQ04sdUJBQUFBO1FBQXNCSyxRQUFRQTtrQkFBU21COztBQUU1QztNQUxnQnpCIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnLi9uYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yLCBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciB9IGZyb20gJy4vcmVkaXJlY3QnXG5pbXBvcnQgeyBSZWRpcmVjdFR5cGUsIGlzUmVkaXJlY3RFcnJvciB9IGZyb20gJy4vcmVkaXJlY3QtZXJyb3InXG5cbmludGVyZmFjZSBSZWRpcmVjdEJvdW5kYXJ5UHJvcHMge1xuICByb3V0ZXI6IEFwcFJvdXRlckluc3RhbmNlXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuZnVuY3Rpb24gSGFuZGxlUmVkaXJlY3Qoe1xuICByZWRpcmVjdCxcbiAgcmVzZXQsXG4gIHJlZGlyZWN0VHlwZSxcbn06IHtcbiAgcmVkaXJlY3Q6IHN0cmluZ1xuICByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZVxuICByZXNldDogKCkgPT4gdm9pZFxufSkge1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgUmVhY3Quc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGlmIChyZWRpcmVjdFR5cGUgPT09IFJlZGlyZWN0VHlwZS5wdXNoKSB7XG4gICAgICAgIHJvdXRlci5wdXNoKHJlZGlyZWN0LCB7fSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvdXRlci5yZXBsYWNlKHJlZGlyZWN0LCB7fSlcbiAgICAgIH1cbiAgICAgIHJlc2V0KClcbiAgICB9KVxuICB9LCBbcmVkaXJlY3QsIHJlZGlyZWN0VHlwZSwgcmVzZXQsIHJvdXRlcl0pXG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0RXJyb3JCb3VuZGFyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgUmVkaXJlY3RCb3VuZGFyeVByb3BzLFxuICB7IHJlZGlyZWN0OiBzdHJpbmcgfCBudWxsOyByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZSB8IG51bGwgfVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBSZWRpcmVjdEJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLnN0YXRlID0geyByZWRpcmVjdDogbnVsbCwgcmVkaXJlY3RUeXBlOiBudWxsIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGlmIChpc1JlZGlyZWN0RXJyb3IoZXJyb3IpKSB7XG4gICAgICBjb25zdCB1cmwgPSBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcilcbiAgICAgIGNvbnN0IHJlZGlyZWN0VHlwZSA9IGdldFJlZGlyZWN0VHlwZUZyb21FcnJvcihlcnJvcilcbiAgICAgIHJldHVybiB7IHJlZGlyZWN0OiB1cmwsIHJlZGlyZWN0VHlwZSB9XG4gICAgfVxuICAgIC8vIFJlLXRocm93IGlmIGVycm9yIGlzIG5vdCBmb3IgcmVkaXJlY3RcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgLy8gRXhwbGljaXQgdHlwZSBpcyBuZWVkZWQgdG8gYXZvaWQgdGhlIGdlbmVyYXRlZCBgLmQudHNgIGhhdmluZyBhIHdpZGUgcmV0dXJuIHR5cGUgdGhhdCBjb3VsZCBiZSBzcGVjaWZpYyB0byB0aGUgYEB0eXBlcy9yZWFjdGAgdmVyc2lvbi5cbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgY29uc3QgeyByZWRpcmVjdCwgcmVkaXJlY3RUeXBlIH0gPSB0aGlzLnN0YXRlXG4gICAgaWYgKHJlZGlyZWN0ICE9PSBudWxsICYmIHJlZGlyZWN0VHlwZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEhhbmRsZVJlZGlyZWN0XG4gICAgICAgICAgcmVkaXJlY3Q9e3JlZGlyZWN0fVxuICAgICAgICAgIHJlZGlyZWN0VHlwZT17cmVkaXJlY3RUeXBlfVxuICAgICAgICAgIHJlc2V0PXsoKSA9PiB0aGlzLnNldFN0YXRlKHsgcmVkaXJlY3Q6IG51bGwgfSl9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVkaXJlY3RCb3VuZGFyeSh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIHJldHVybiAoXG4gICAgPFJlZGlyZWN0RXJyb3JCb3VuZGFyeSByb3V0ZXI9e3JvdXRlcn0+e2NoaWxkcmVufTwvUmVkaXJlY3RFcnJvckJvdW5kYXJ5PlxuICApXG59XG4iXSwibmFtZXMiOlsiUmVkaXJlY3RCb3VuZGFyeSIsIlJlZGlyZWN0RXJyb3JCb3VuZGFyeSIsIkhhbmRsZVJlZGlyZWN0IiwicmVkaXJlY3QiLCJyZXNldCIsInJlZGlyZWN0VHlwZSIsInJvdXRlciIsInVzZVJvdXRlciIsInVzZUVmZmVjdCIsIlJlYWN0Iiwic3RhcnRUcmFuc2l0aW9uIiwiUmVkaXJlY3RUeXBlIiwicHVzaCIsInJlcGxhY2UiLCJDb21wb25lbnQiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJlcnJvciIsImlzUmVkaXJlY3RFcnJvciIsInVybCIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwiZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yIiwicmVuZGVyIiwic3RhdGUiLCJzZXRTdGF0ZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjb25zdHJ1Y3RvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/redirect-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-error.js ***! \********************************************************************/ /***/ ((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 REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n RedirectType: function() {\n return RedirectType;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nvar RedirectType = /*#__PURE__*/ function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n return RedirectType;\n}({});\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\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=redirect-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLG1CQUFtQjtlQUFuQkE7O0lBRURDLFlBQVk7ZUFBWkE7O0lBZ0JJQyxlQUFlO2VBQWZBOzs7Z0RBcEJtQjtBQUU1QixNQUFNRixzQkFBc0I7QUFFNUIsSUFBS0MsZUFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsWUFBQUE7OztXQUFBQTs7QUFnQkwsU0FBU0MsZ0JBQWdCQyxLQUFjO0lBQzVDLElBQ0UsT0FBT0EsVUFBVSxZQUNqQkEsVUFBVSxRQUNWLENBQUUsYUFBWUEsS0FBQUEsQ0FBSSxJQUNsQixPQUFPQSxNQUFNQyxNQUFNLEtBQUssVUFDeEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNQSxTQUFTRCxNQUFNQyxNQUFNLENBQUNDLEtBQUssQ0FBQztJQUNsQyxNQUFNLENBQUNDLFdBQVdDLEtBQUssR0FBR0g7SUFDMUIsTUFBTUksY0FBY0osT0FBT0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxJQUFJLENBQUM7SUFDN0MsTUFBTUMsU0FBU1AsT0FBT1EsRUFBRSxDQUFDLENBQUM7SUFFMUIsTUFBTUMsYUFBYUMsT0FBT0g7SUFFMUIsT0FDRUwsY0FBY04sdUJBQ2JPLENBQUFBLFNBQVMsYUFBYUEsU0FBUyxPQUFLLElBQ3JDLE9BQU9DLGdCQUFnQixZQUN2QixDQUFDTyxNQUFNRixlQUNQQSxjQUFjRyxvQkFBQUEsa0JBQWtCO0FBRXBDIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSAnLi9yZWRpcmVjdC1zdGF0dXMtY29kZSdcblxuZXhwb3J0IGNvbnN0IFJFRElSRUNUX0VSUk9SX0NPREUgPSAnTkVYVF9SRURJUkVDVCdcblxuZXhwb3J0IGVudW0gUmVkaXJlY3RUeXBlIHtcbiAgcHVzaCA9ICdwdXNoJyxcbiAgcmVwbGFjZSA9ICdyZXBsYWNlJyxcbn1cblxuZXhwb3J0IHR5cGUgUmVkaXJlY3RFcnJvciA9IEVycm9yICYge1xuICBkaWdlc3Q6IGAke3R5cGVvZiBSRURJUkVDVF9FUlJPUl9DT0RFfTske1JlZGlyZWN0VHlwZX07JHtzdHJpbmd9OyR7UmVkaXJlY3RTdGF0dXNDb2RlfTtgXG59XG5cbi8qKlxuICogQ2hlY2tzIGFuIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCdzIGFuIGVycm9yIGdlbmVyYXRlZCBieSB0aGVcbiAqIGByZWRpcmVjdCh1cmwpYCBoZWxwZXIuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSByZWZlcmVuY2UgYSByZWRpcmVjdCBlcnJvclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZXJyb3IgaXMgYSByZWRpcmVjdCBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWRpcmVjdEVycm9yKGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVkaXJlY3RFcnJvciB7XG4gIGlmIChcbiAgICB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnIHx8XG4gICAgZXJyb3IgPT09IG51bGwgfHxcbiAgICAhKCdkaWdlc3QnIGluIGVycm9yKSB8fFxuICAgIHR5cGVvZiBlcnJvci5kaWdlc3QgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgZGlnZXN0ID0gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JylcbiAgY29uc3QgW2Vycm9yQ29kZSwgdHlwZV0gPSBkaWdlc3RcbiAgY29uc3QgZGVzdGluYXRpb24gPSBkaWdlc3Quc2xpY2UoMiwgLTIpLmpvaW4oJzsnKVxuICBjb25zdCBzdGF0dXMgPSBkaWdlc3QuYXQoLTIpXG5cbiAgY29uc3Qgc3RhdHVzQ29kZSA9IE51bWJlcihzdGF0dXMpXG5cbiAgcmV0dXJuIChcbiAgICBlcnJvckNvZGUgPT09IFJFRElSRUNUX0VSUk9SX0NPREUgJiZcbiAgICAodHlwZSA9PT0gJ3JlcGxhY2UnIHx8IHR5cGUgPT09ICdwdXNoJykgJiZcbiAgICB0eXBlb2YgZGVzdGluYXRpb24gPT09ICdzdHJpbmcnICYmXG4gICAgIWlzTmFOKHN0YXR1c0NvZGUpICYmXG4gICAgc3RhdHVzQ29kZSBpbiBSZWRpcmVjdFN0YXR1c0NvZGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJFRElSRUNUX0VSUk9SX0NPREUiLCJSZWRpcmVjdFR5cGUiLCJpc1JlZGlyZWN0RXJyb3IiLCJlcnJvciIsImRpZ2VzdCIsInNwbGl0IiwiZXJyb3JDb2RlIiwidHlwZSIsImRlc3RpbmF0aW9uIiwic2xpY2UiLCJqb2luIiwic3RhdHVzIiwiYXQiLCJzdGF0dXNDb2RlIiwiTnVtYmVyIiwiaXNOYU4iLCJSZWRpcmVjdFN0YXR1c0NvZGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/redirect-status-code.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect-status-code.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\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=redirect-status-code.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGUuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFBWUE7OztlQUFBQTs7O0FBQUwsSUFBS0EscUJBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLGtCQUFBQTs7OztXQUFBQSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LXN0YXR1cy1jb2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlZGlyZWN0U3RhdHVzQ29kZSB7XG4gIFNlZU90aGVyID0gMzAzLFxuICBUZW1wb3JhcnlSZWRpcmVjdCA9IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG59XG4iXSwibmFtZXMiOlsiUmVkaXJlY3RTdGF0dXNDb2RlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/redirect-status-code.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/components/redirect.js ***! \**************************************************************/ /***/ ((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 getRedirectError: function() {\n return getRedirectError;\n },\n getRedirectStatusCodeFromError: function() {\n return getRedirectStatusCodeFromError;\n },\n getRedirectTypeFromError: function() {\n return getRedirectTypeFromError;\n },\n getURLFromRedirectError: function() {\n return getURLFromRedirectError;\n },\n permanentRedirect: function() {\n return permanentRedirect;\n },\n redirect: function() {\n return redirect;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst actionAsyncStorage = false ? 0 : undefined;\nfunction getRedirectError(url, type, statusCode) {\n if (statusCode === void 0) statusCode = _redirectstatuscode.RedirectStatusCode.TemporaryRedirect;\n const error = Object.defineProperty(new Error(_redirecterror.REDIRECT_ERROR_CODE), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = _redirecterror.REDIRECT_ERROR_CODE + \";\" + type + \";\" + url + \";\" + statusCode + \";\";\n return error;\n}\nfunction redirect(/** The URL to redirect to */ url, type) {\n var _actionAsyncStorage_getStore;\n type != null ? type : type = (actionAsyncStorage == null ? void 0 : (_actionAsyncStorage_getStore = actionAsyncStorage.getStore()) == null ? void 0 : _actionAsyncStorage_getStore.isAction) ? _redirecterror.RedirectType.push : _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.TemporaryRedirect);\n}\nfunction permanentRedirect(/** The URL to redirect to */ url, type) {\n if (type === void 0) type = _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.PermanentRedirect);\n}\nfunction getURLFromRedirectError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) return null;\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';');\n}\nfunction getRedirectTypeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return error.digest.split(';', 2)[1];\n}\nfunction getRedirectStatusCodeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return Number(error.digest.split(';').at(-2));\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=redirect.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWdCQSxnQkFBZ0I7ZUFBaEJBOztJQTZFQUMsOEJBQThCO2VBQTlCQTs7SUFSQUMsd0JBQXdCO2VBQXhCQTs7SUFSQUMsdUJBQXVCO2VBQXZCQTs7SUFoQkFDLGlCQUFpQjtlQUFqQkE7O0lBdkJBQyxRQUFRO2VBQVJBOzs7Z0RBckNtQjsyQ0FNNUI7QUFFUCxNQUFNQyxxQkFDSixNQUE2QixHQUV2QkUsQ0FDa0IsR0FDcEJDO0FBRUMsU0FBU1QsaUJBQ2RVLEdBQVcsRUFDWEMsSUFBa0IsRUFDbEJDLFVBQXFFO0lBQXJFQSxJQUFBQSxlQUFBQSxLQUFBQSxHQUFBQSxhQUFpQ0Msb0JBQUFBLGtCQUFrQixDQUFDQyxpQkFBaUI7SUFFckUsTUFBTUMsUUFBUSxxQkFBOEIsQ0FBOUIsSUFBSUMsTUFBTUMsZUFBQUEsbUJBQW1CLEdBQTdCO2VBQUE7b0JBQUE7c0JBQUE7SUFBNkI7SUFDM0NGLE1BQU1HLE1BQU0sR0FBTUQsZUFBQUEsbUJBQW1CLEdBQUMsTUFBR04sT0FBSyxNQUFHRCxNQUFJLE1BQUdFLGFBQVc7SUFDbkUsT0FBT0c7QUFDVDtBQWNPLFNBQVNWLFNBQ2QsMkJBQTJCLEdBQzNCSyxHQUFXLEVBQ1hDLElBQW1CO1FBRVZMO0lBQVRLLFFBQUFBLE9BQUFBLE9BQUFBLE9BQVNMLENBQUFBLHNCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSwrQkFBQUEsbUJBQW9CYSxRQUFRLHVCQUE1QmIsNkJBQWdDYyxRQUFBQSxJQUNyQ0MsZUFBQUEsWUFBWSxDQUFDQyxJQUFJLEdBQ2pCRCxlQUFBQSxZQUFZLENBQUNFLE9BQU87SUFFeEIsTUFBTXZCLGlCQUFpQlUsS0FBS0MsTUFBTUUsb0JBQUFBLGtCQUFrQixDQUFDQyxpQkFBaUI7QUFDeEU7QUFhTyxTQUFTVixrQkFDZCwyQkFBMkIsR0FDM0JNLEdBQVcsRUFDWEMsSUFBeUM7SUFBekNBLElBQUFBLFNBQUFBLEtBQUFBLEdBQUFBLE9BQXFCVSxlQUFBQSxZQUFZLENBQUNFLE9BQU87SUFFekMsTUFBTXZCLGlCQUFpQlUsS0FBS0MsTUFBTUUsb0JBQUFBLGtCQUFrQixDQUFDVyxpQkFBaUI7QUFDeEU7QUFVTyxTQUFTckIsd0JBQXdCWSxLQUFjO0lBQ3BELElBQUksQ0FBQ1UsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JWLFFBQVEsT0FBTztJQUVwQyx3RUFBd0U7SUFDeEUsa0JBQWtCO0lBQ2xCLE9BQU9BLE1BQU1HLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDLEtBQUtDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDO0FBQ25EO0FBRU8sU0FBUzFCLHlCQUF5QmEsS0FBb0I7SUFDM0QsSUFBSSxDQUFDVSxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQlYsUUFBUTtRQUMzQixNQUFNLHFCQUFpQyxDQUFqQyxJQUFJQyxNQUFNLHlCQUFWO21CQUFBO3dCQUFBOzBCQUFBO1FBQWdDO0lBQ3hDO0lBRUEsT0FBT0QsTUFBTUcsTUFBTSxDQUFDUSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUN0QztBQUVPLFNBQVN6QiwrQkFBK0JjLEtBQW9CO0lBQ2pFLElBQUksQ0FBQ1UsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JWLFFBQVE7UUFDM0IsTUFBTSxxQkFBaUMsQ0FBakMsSUFBSUMsTUFBTSx5QkFBVjttQkFBQTt3QkFBQTswQkFBQTtRQUFnQztJQUN4QztJQUVBLE9BQU9hLE9BQU9kLE1BQU1HLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDLEtBQUtJLEVBQUUsQ0FBQyxDQUFDO0FBQzVDIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSAnLi9yZWRpcmVjdC1zdGF0dXMtY29kZSdcbmltcG9ydCB7XG4gIFJlZGlyZWN0VHlwZSxcbiAgdHlwZSBSZWRpcmVjdEVycm9yLFxuICBpc1JlZGlyZWN0RXJyb3IsXG4gIFJFRElSRUNUX0VSUk9SX0NPREUsXG59IGZyb20gJy4vcmVkaXJlY3QtZXJyb3InXG5cbmNvbnN0IGFjdGlvbkFzeW5jU3RvcmFnZSA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvYWN0aW9uLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKVxuICAgICAgKS5hY3Rpb25Bc3luY1N0b3JhZ2VcbiAgICA6IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVkaXJlY3RFcnJvcihcbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGU6IFJlZGlyZWN0VHlwZSxcbiAgc3RhdHVzQ29kZTogUmVkaXJlY3RTdGF0dXNDb2RlID0gUmVkaXJlY3RTdGF0dXNDb2RlLlRlbXBvcmFyeVJlZGlyZWN0XG4pOiBSZWRpcmVjdEVycm9yIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoUkVESVJFQ1RfRVJST1JfQ09ERSkgYXMgUmVkaXJlY3RFcnJvclxuICBlcnJvci5kaWdlc3QgPSBgJHtSRURJUkVDVF9FUlJPUl9DT0RFfTske3R5cGV9OyR7dXJsfTske3N0YXR1c0NvZGV9O2BcbiAgcmV0dXJuIGVycm9yXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvIGFub3RoZXIgVVJMLiBJdCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogLSBJbiBhIFNlcnZlciBDb21wb25lbnQsIHRoaXMgd2lsbCBpbnNlcnQgYSBtZXRhIHRhZyB0byByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdGFyZ2V0IHBhZ2UuXG4gKiAtIEluIGEgUm91dGUgSGFuZGxlciBvciBTZXJ2ZXIgQWN0aW9uLCBpdCB3aWxsIHNlcnZlIGEgMzA3LzMwMyB0byB0aGUgY2FsbGVyLlxuICogLSBJbiBhIFNlcnZlciBBY3Rpb24sIHR5cGUgZGVmYXVsdHMgdG8gJ3B1c2gnIGFuZCAncmVwbGFjZScgZWxzZXdoZXJlLlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHJlZGlyZWN0YF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3JlZGlyZWN0KVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3QoXG4gIC8qKiBUaGUgVVJMIHRvIHJlZGlyZWN0IHRvICovXG4gIHVybDogc3RyaW5nLFxuICB0eXBlPzogUmVkaXJlY3RUeXBlXG4pOiBuZXZlciB7XG4gIHR5cGUgPz89IGFjdGlvbkFzeW5jU3RvcmFnZT8uZ2V0U3RvcmUoKT8uaXNBY3Rpb25cbiAgICA/IFJlZGlyZWN0VHlwZS5wdXNoXG4gICAgOiBSZWRpcmVjdFR5cGUucmVwbGFjZVxuXG4gIHRocm93IGdldFJlZGlyZWN0RXJyb3IodXJsLCB0eXBlLCBSZWRpcmVjdFN0YXR1c0NvZGUuVGVtcG9yYXJ5UmVkaXJlY3QpXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlZGlyZWN0IHRoZSB1c2VyIHRvIGFub3RoZXIgVVJMLiBJdCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogLSBJbiBhIFNlcnZlciBDb21wb25lbnQsIHRoaXMgd2lsbCBpbnNlcnQgYSBtZXRhIHRhZyB0byByZWRpcmVjdCB0aGUgdXNlciB0byB0aGUgdGFyZ2V0IHBhZ2UuXG4gKiAtIEluIGEgUm91dGUgSGFuZGxlciBvciBTZXJ2ZXIgQWN0aW9uLCBpdCB3aWxsIHNlcnZlIGEgMzA4LzMwMyB0byB0aGUgY2FsbGVyLlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHJlZGlyZWN0YF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3JlZGlyZWN0KVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVybWFuZW50UmVkaXJlY3QoXG4gIC8qKiBUaGUgVVJMIHRvIHJlZGlyZWN0IHRvICovXG4gIHVybDogc3RyaW5nLFxuICB0eXBlOiBSZWRpcmVjdFR5cGUgPSBSZWRpcmVjdFR5cGUucmVwbGFjZVxuKTogbmV2ZXIge1xuICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgUmVkaXJlY3RTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGVuY29kZWQgVVJMIGZyb20gdGhlIGVycm9yIGlmIGl0J3MgYSBSZWRpcmVjdEVycm9yLCBudWxsXG4gKiBvdGhlcndpc2UuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHZhbGlkYXRlIHRoZSBVUkwgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0aGF0IG1heSBiZSBhIHJlZGlyZWN0IGVycm9yXG4gKiBAcmV0dXJuIHRoZSB1cmwgaWYgdGhlIGVycm9yIHdhcyBhIHJlZGlyZWN0IGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcjogUmVkaXJlY3RFcnJvcik6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVSTEZyb21SZWRpcmVjdEVycm9yKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghaXNSZWRpcmVjdEVycm9yKGVycm9yKSkgcmV0dXJuIG51bGxcblxuICAvLyBTbGljZXMgb2ZmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRpZ2VzdCB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlIGFuZCB0aGVcbiAgLy8gc2VwYXJhdGluZyAnOycuXG4gIHJldHVybiBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKS5zbGljZSgyLCAtMikuam9pbignOycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBSZWRpcmVjdFR5cGUge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHJlZGlyZWN0IGVycm9yJylcbiAgfVxuXG4gIHJldHVybiBlcnJvci5kaWdlc3Quc3BsaXQoJzsnLCAyKVsxXSBhcyBSZWRpcmVjdFR5cGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0U3RhdHVzQ29kZUZyb21FcnJvcihlcnJvcjogUmVkaXJlY3RFcnJvcik6IG51bWJlciB7XG4gIGlmICghaXNSZWRpcmVjdEVycm9yKGVycm9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgcmVkaXJlY3QgZXJyb3InKVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihlcnJvci5kaWdlc3Quc3BsaXQoJzsnKS5hdCgtMikpXG59XG4iXSwibmFtZXMiOlsiZ2V0UmVkaXJlY3RFcnJvciIsImdldFJlZGlyZWN0U3RhdHVzQ29kZUZyb21FcnJvciIsImdldFJlZGlyZWN0VHlwZUZyb21FcnJvciIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwicGVybWFuZW50UmVkaXJlY3QiLCJyZWRpcmVjdCIsImFjdGlvbkFzeW5jU3RvcmFnZSIsIndpbmRvdyIsInJlcXVpcmUiLCJ1bmRlZmluZWQiLCJ1cmwiLCJ0eXBlIiwic3RhdHVzQ29kZSIsIlJlZGlyZWN0U3RhdHVzQ29kZSIsIlRlbXBvcmFyeVJlZGlyZWN0IiwiZXJyb3IiLCJFcnJvciIsIlJFRElSRUNUX0VSUk9SX0NPREUiLCJkaWdlc3QiLCJnZXRTdG9yZSIsImlzQWN0aW9uIiwiUmVkaXJlY3RUeXBlIiwicHVzaCIsInJlcGxhY2UiLCJQZXJtYW5lbnRSZWRpcmVjdCIsImlzUmVkaXJlY3RFcnJvciIsInNwbGl0Iiwic2xpY2UiLCJqb2luIiwiTnVtYmVyIiwiYXQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js": /*!*************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js ***! \*************************************************************************************************/ /***/ ((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 addSearchParamsToPageSegments: function() {\n return addSearchParamsToPageSegments;\n },\n handleAliasedPrefetchEntry: function() {\n return handleAliasedPrefetchEntry;\n }\n});\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _approuter = __webpack_require__(/*! ../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ./apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _fillcachewithnewsubtreedata = __webpack_require__(/*! ./fill-cache-with-new-subtree-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\");\nconst _handlemutable = __webpack_require__(/*! ./handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nfunction handleAliasedPrefetchEntry(navigatedAt, state, flightData, url, mutable) {\n let currentTree = state.tree;\n let currentCache = state.cache;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n let applied;\n let scrollableSegments = [];\n if (typeof flightData === 'string') {\n return false;\n }\n for (const normalizedFlightData of flightData){\n // If the segment doesn't have a loading component, we don't need to do anything.\n if (!hasLoadingComponentInSeedData(normalizedFlightData.seedData)) {\n continue;\n }\n let treePatch = normalizedFlightData.tree;\n // Segments are keyed by searchParams (e.g. __PAGE__?{\"foo\":\"bar\"}). We might return a less specific, param-less entry,\n // so we ensure that the final tree contains the correct searchParams (reflected in the URL) are provided in the updated FlightRouterState tree.\n // We only do this on the first read, as otherwise we'd be overwriting the searchParams that may have already been set\n treePatch = addSearchParamsToPageSegments(treePatch, Object.fromEntries(url.searchParams));\n const { seedData, isRootRender, pathToSegment } = normalizedFlightData;\n // TODO-APP: remove ''\n const flightSegmentPathWithLeadingEmpty = [\n '',\n ...pathToSegment\n ];\n // Segments are keyed by searchParams (e.g. __PAGE__?{\"foo\":\"bar\"}). We might return a less specific, param-less entry,\n // so we ensure that the final tree contains the correct searchParams (reflected in the URL) are provided in the updated FlightRouterState tree.\n // We only do this on the first read, as otherwise we'd be overwriting the searchParams that may have already been set\n treePatch = addSearchParamsToPageSegments(treePatch, Object.fromEntries(url.searchParams));\n let newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, currentTree, treePatch, href);\n const newCache = (0, _approuter.createEmptyCacheNode)();\n // The prefetch cache entry was aliased -- this signals that we only fill in the cache with the\n // loading state and not the actual parallel route seed data.\n if (isRootRender && seedData) {\n // Fill in the cache with the new loading / rsc data\n const rsc = seedData[1];\n const loading = seedData[3];\n newCache.loading = loading;\n newCache.rsc = rsc;\n // Construct a new tree and apply the aliased loading state for each parallel route\n fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCache, currentCache, treePatch, seedData);\n } else {\n // Copy rsc for the root node of the cache.\n newCache.rsc = currentCache.rsc;\n newCache.prefetchRsc = currentCache.prefetchRsc;\n newCache.loading = currentCache.loading;\n newCache.parallelRoutes = new Map(currentCache.parallelRoutes);\n // copy the loading state only into the leaf node (the part that changed)\n (0, _fillcachewithnewsubtreedata.fillCacheWithNewSubTreeDataButOnlyLoading)(navigatedAt, newCache, currentCache, normalizedFlightData);\n }\n // If we don't have an updated tree, there's no reason to update the cache, as the tree\n // dictates what cache nodes to render.\n if (newTree) {\n currentTree = newTree;\n currentCache = newCache;\n applied = true;\n }\n for (const subSegment of (0, _navigatereducer.generateSegmentsFromPatch)(treePatch)){\n const scrollableSegmentPath = [\n ...normalizedFlightData.pathToSegment,\n ...subSegment\n ];\n // Filter out the __DEFAULT__ paths as they shouldn't be scrolled to in this case.\n if (scrollableSegmentPath[scrollableSegmentPath.length - 1] !== _segment.DEFAULT_SEGMENT_KEY) {\n scrollableSegments.push(scrollableSegmentPath);\n }\n }\n }\n if (!applied) {\n return false;\n }\n mutable.patchedTree = currentTree;\n mutable.cache = currentCache;\n mutable.canonicalUrl = href;\n mutable.hashFragment = url.hash;\n mutable.scrollableSegments = scrollableSegments;\n return (0, _handlemutable.handleMutable)(state, mutable);\n}\nfunction hasLoadingComponentInSeedData(seedData) {\n if (!seedData) return false;\n const parallelRoutes = seedData[2];\n const loading = seedData[3];\n if (loading) {\n return true;\n }\n for(const key in parallelRoutes){\n if (hasLoadingComponentInSeedData(parallelRoutes[key])) {\n return true;\n }\n }\n return false;\n}\nfunction fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCache, existingCache, routerState, cacheNodeSeedData) {\n const isLastSegment = Object.keys(routerState[1]).length === 0;\n if (isLastSegment) {\n return;\n }\n for(const key in routerState[1]){\n const parallelRouteState = routerState[1][key];\n const segmentForParallelRoute = parallelRouteState[0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n const parallelSeedData = cacheNodeSeedData !== null && cacheNodeSeedData[2][key] !== undefined ? cacheNodeSeedData[2][key] : null;\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const rsc = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n // copy the layout but null the page segment as that's not meant to be used\n rsc: segmentForParallelRoute.includes(_segment.PAGE_SEGMENT_KEY) ? null : rsc,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading,\n navigatedAt\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n };\n }\n const existingParallelRoutes = newCache.parallelRoutes.get(key);\n if (existingParallelRoutes) {\n existingParallelRoutes.set(cacheKey, newCacheNode);\n } else {\n newCache.parallelRoutes.set(key, new Map([\n [\n cacheKey,\n newCacheNode\n ]\n ]));\n }\n fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCacheNode, existingCache, parallelRouteState, parallelSeedData);\n }\n}\nfunction addSearchParamsToPageSegments(flightRouterState, searchParams) {\n const [segment, parallelRoutes, ...rest] = flightRouterState;\n // If it's a page segment, modify the segment by adding search params\n if (segment.includes(_segment.PAGE_SEGMENT_KEY)) {\n const newSegment = (0, _segment.addSearchParamsIfPageSegment)(segment, searchParams);\n return [\n newSegment,\n parallelRoutes,\n ...rest\n ];\n }\n // Otherwise, recurse through the parallel routes and return a new tree\n const updatedParallelRoutes = {};\n for (const [key, parallelRoute] of Object.entries(parallelRoutes)){\n updatedParallelRoutes[key] = addSearchParamsToPageSegments(parallelRoute, searchParams);\n }\n return [\n segment,\n updatedParallelRoutes,\n ...rest\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=aliased-prefetch-navigations.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYWxpYXNlZC1wcmVmZXRjaC1uYXZpZ2F0aW9ucy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFzUGdCQSw2QkFBNkI7ZUFBN0JBOztJQTFOQUMsMEJBQTBCO2VBQTFCQTs7O3FDQWxCVDt1Q0FFOEI7eURBQ087K0NBQ1Y7a0RBQ0c7eURBQ3FCOzJDQUM1Qjs2Q0FDWTtBQVVuQyxTQUFTQSwyQkFDZEMsV0FBbUIsRUFDbkJDLEtBQTJCLEVBQzNCQyxVQUEyQyxFQUMzQ0MsR0FBUSxFQUNSQyxPQUFnQjtJQUVoQixJQUFJQyxjQUFjSixNQUFNSyxJQUFJO0lBQzVCLElBQUlDLGVBQWVOLE1BQU1PLEtBQUs7SUFDOUIsTUFBTUMsT0FBT0MsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQlA7SUFDL0IsSUFBSVE7SUFDSixJQUFJQyxxQkFBMEMsRUFBRTtJQUVoRCxJQUFJLE9BQU9WLGVBQWUsVUFBVTtRQUNsQyxPQUFPO0lBQ1Q7SUFFQSxLQUFLLE1BQU1XLHdCQUF3QlgsV0FBWTtRQUM3QyxpRkFBaUY7UUFDakYsSUFBSSxDQUFDWSw4QkFBOEJELHFCQUFxQkUsUUFBUSxHQUFHO1lBQ2pFO1FBQ0Y7UUFFQSxJQUFJQyxZQUFZSCxxQkFBcUJQLElBQUk7UUFDekMsdUhBQXVIO1FBQ3ZILGdKQUFnSjtRQUNoSixzSEFBc0g7UUFDdEhVLFlBQVlsQiw4QkFDVmtCLFdBQ0FDLE9BQU9DLFdBQVcsQ0FBQ2YsSUFBSWdCLFlBQVk7UUFHckMsTUFBTSxFQUFFSixRQUFRLEVBQUVLLFlBQVksRUFBRUMsYUFBYSxFQUFFLEdBQUdSO1FBQ2xELHNCQUFzQjtRQUN0QixNQUFNUyxvQ0FBb0M7WUFBQztlQUFPRDtTQUFjO1FBRWhFLHVIQUF1SDtRQUN2SCxnSkFBZ0o7UUFDaEosc0hBQXNIO1FBQ3RITCxZQUFZbEIsOEJBQ1Zr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M0QsTUFBTSxDQUFDZ0QsU0FBU3BDLGdCQUFnQixHQUFHcUMsS0FBSyxHQUFHRjtJQUUzQyxxRUFBcUU7SUFDckUsSUFBSUMsUUFBUVIsUUFBUSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRztRQUN0QyxNQUFNUyxhQUFhQyxDQUFBQSxHQUFBQSxTQUFBQSw0QkFBQUEsRUFBNkJILFNBQVNoRDtRQUN6RCxPQUFPO1lBQUNrRDtZQUFZdEM7ZUFBbUJxQztTQUFLO0lBQzlDO0lBRUEsdUVBQXVFO0lBQ3ZFLE1BQU1HLHdCQUE4RCxDQUFDO0lBRXJFLEtBQUssTUFBTSxDQUFDMUIsS0FBSzJCLGNBQWMsSUFBSXZELE9BQU93RCxPQUFPLENBQUMxQyxnQkFBaUI7UUFDakV3QyxxQkFBcUIsQ0FBQzFCLElBQUksR0FBRy9DLDhCQUMzQjBFLGVBQ0FyRDtJQUVKO0lBRUEsT0FBTztRQUFDZ0Q7UUFBU0k7V0FBMEJIO0tBQUs7QUFDbEQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYWxpYXNlZC1wcmVmZXRjaC1uYXZpZ2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIENhY2hlTm9kZVNlZWREYXRhLFxuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgRmxpZ2h0U2VnbWVudFBhdGgsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7XG4gIGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQsXG4gIERFRkFVTFRfU0VHTUVOVF9LRVksXG4gIFBBR0VfU0VHTUVOVF9LRVksXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZEZsaWdodERhdGEgfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlDYWNoZU5vZGUgfSBmcm9tICcuLi9hcHAtcm91dGVyJ1xuaW1wb3J0IHsgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIH0gZnJvbSAnLi9hcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSdcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcbmltcG9ydCB7IGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YUJ1dE9ubHlMb2FkaW5nIH0gZnJvbSAnLi9maWxsLWNhY2hlLXdpdGgtbmV3LXN1YnRyZWUtZGF0YSdcbmltcG9ydCB7IGhhbmRsZU11dGFibGUgfSBmcm9tICcuL2hhbmRsZS1tdXRhYmxlJ1xuaW1wb3J0IHsgZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCB9IGZyb20gJy4vcmVkdWNlcnMvbmF2aWdhdGUtcmVkdWNlcidcbmltcG9ydCB0eXBlIHsgTXV0YWJsZSwgUmVhZG9ubHlSZWR1Y2VyU3RhdGUgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuXG4vKipcbiAqIFRoaXMgaXMgYSBzdG9wLWdhcCB1bnRpbCBwZXItc2VnbWVudCBjYWNoaW5nIGlzIGltcGxlbWVudGVkLiBJdCBsZXZlcmFnZXMgdGhlIGBhbGlhc2VkYCBmbGFnIHRoYXQgaXMgYWRkZWRcbiAqIHRvIHByZWZldGNoIGVudHJpZXMgd2hlbiBpdCdzIGRldGVybWluZWQgdGhhdCB0aGUgbG9hZGluZyBzdGF0ZSBmcm9tIHRoYXQgZW50cnkgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgbmF2aWdhdGlvbi5cbiAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGFsaWFzZWQgZW50cnkgYW5kIG9ubHkgYXBwbGllcyB0aGUgbG9hZGluZyBzdGF0ZSB0byB0aGUgdXBkYXRlZCBjYWNoZSBub2RlLlxuICogV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIG9uY2UgcGVyLXNlZ21lbnQgZmV0Y2hpbmcgaXMgaW1wbGVtZW50ZWQgYXMgaWRlYWxseSB0aGUgcHJlZmV0Y2ggY2FjaGUgd2lsbCBjb250YWluIGFcbiAqIG1vcmUgZ3JhbnVsYXIgc2VnbWVudCBtYXAgYW5kIHNvIHRoZSByb3V0ZXIgd2lsbCBiZSBhYmxlIHRvIHNpbXBseSByZS11c2UgdGhlIGxvYWRpbmcgc2VnbWVudCBmb3IgdGhlIG5ldyBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQWxpYXNlZFByZWZldGNoRW50cnkoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgZmxpZ2h0RGF0YTogc3RyaW5nIHwgTm9ybWFsaXplZEZsaWdodERhdGFbXSxcbiAgdXJsOiBVUkwsXG4gIG11dGFibGU6IE11dGFibGVcbikge1xuICBsZXQgY3VycmVudFRyZWUgPSBzdGF0ZS50cmVlXG4gIGxldCBjdXJyZW50Q2FjaGUgPSBzdGF0ZS5jYWNoZVxuICBjb25zdCBocmVmID0gY3JlYXRlSHJlZkZyb21VcmwodXJsKVxuICBsZXQgYXBwbGllZFxuICBsZXQgc2Nyb2xsYWJsZVNlZ21lbnRzOiBGbGlnaHRTZWdtZW50UGF0aFtdID0gW11cblxuICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhIG9mIGZsaWdodERhdGEpIHtcbiAgICAvLyBJZiB0aGUgc2VnbWVudCBkb2Vzbid0IGhhdmUgYSBsb2FkaW5nIGNvbXBvbmVudCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy5cbiAgICBpZiAoIWhhc0xvYWRpbmdDb21wb25lbnRJblNlZWREYXRhKG5vcm1hbGl6ZWRGbGlnaHREYXRhLnNlZWREYXRhKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBsZXQgdHJlZVBhdGNoID0gbm9ybWFsaXplZEZsaWdodERhdGEudHJlZVxuICAgIC8vIFNlZ21lbnRzIGFyZSBrZXllZCBieSBzZWFyY2hQYXJhbXMgKGUuZy4gX19QQUdFX18/e1wiZm9vXCI6XCJiYXJcIn0pLiBXZSBtaWdodCByZXR1cm4gYSBsZXNzIHNwZWNpZmljLCBwYXJhbS1sZXNzIGVudHJ5LFxuICAgIC8vIHNvIHdlIGVuc3VyZSB0aGF0IHRoZSBmaW5hbCB0cmVlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IHNlYXJjaFBhcmFtcyAocmVmbGVjdGVkIGluIHRoZSBVUkwpIGFyZSBwcm92aWRlZCBpbiB0aGUgdXBkYXRlZCBGbGlnaHRSb3V0ZXJTdGF0ZSB0cmVlLlxuICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBvbiB0aGUgZmlyc3QgcmVhZCwgYXMgb3RoZXJ3aXNlIHdlJ2QgYmUgb3ZlcndyaXRpbmcgdGhlIHNlYXJjaFBhcmFtcyB0aGF0IG1heSBoYXZlIGFscmVhZHkgYmVlbiBzZXRcbiAgICB0cmVlUGF0Y2ggPSBhZGRTZWFyY2hQYXJhbXNUb1BhZ2VTZWdtZW50cyhcbiAgICAgIHRyZWVQYXRjaCxcbiAgICAgIE9iamVjdC5mcm9tRW50cmllcyh1cmwuc2VhcmNoUGFyYW1zKVxuICAgIClcblxuICAgIGNvbnN0IHsgc2VlZERhdGEsIGlzUm9vdFJlbmRlciwgcGF0aFRvU2VnbWVudCB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgY29uc3QgZmxpZ2h0U2VnbWVudFBhdGhXaXRoTGVhZGluZ0VtcHR5ID0gWycnLCAuLi5wYXRoVG9TZWdtZW50XVxuXG4gICAgLy8gU2VnbWVudHMgYXJlIGtleWVkIGJ5IHNlYXJjaFBhcmFtcyAoZS5nLiBfX1BBR0VfXz97XCJmb29cIjpcImJhclwifSkuIFdlIG1pZ2h0IHJldHVybiBhIGxlc3Mgc3BlY2lmaWMsIHBhcmFtLWxlc3MgZW50cnksXG4gICAgLy8gc28gd2UgZW5zdXJlIHRoYXQgdGhlIGZpbmFsIHRyZWUgY29udGFpbnMgdGhlIGNvcnJlY3Qgc2VhcmNoUGFyYW1zIChyZWZsZWN0ZWQgaW4gdGhlIFVSTCkgYXJlIHByb3ZpZGVkIGluIHRoZSB1cGRhdGVkIEZsaWdodFJvdXRlclN0YXRlIHRyZWUuXG4gICAgLy8gV2Ugb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCByZWFkLCBhcyBvdGhlcndpc2Ugd2UnZCBiZSBvdmVyd3JpdGluZyB0aGUgc2VhcmNoUGFyYW1zIHRoYXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHNldFxuICAgIHRyZWVQYXRjaCA9IGFkZFNlYXJjaFBhcmFtc1RvUGFnZVNlZ21lbnRzKFxuICAgICAgdHJlZVBhdGNoLFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKHVybC5zZWFyY2hQYXJhbXMpXG4gICAgKVxuXG4gICAgbGV0IG5ld1RyZWUgPSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUoXG4gICAgICBmbGlnaHRTZWdtZW50UGF0aFdpdGhMZWFkaW5nRW1wdHksXG4gICAgICBjdXJyZW50VHJlZSxcbiAgICAgIHRyZWVQYXRjaCxcbiAgICAgIGhyZWZcbiAgICApXG5cbiAgICBjb25zdCBuZXdDYWNoZSA9IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKClcblxuICAgIC8vIFRoZSBwcmVmZXRjaCBjYWNoZSBlbnRyeSB3YXMgYWxpYXNlZCAtLSB0aGlzIHNpZ25hbHMgdGhhdCB3ZSBvbmx5IGZpbGwgaW4gdGhlIGNhY2hlIHdpdGggdGhlXG4gICAgLy8gbG9hZGluZyBzdGF0ZSBhbmQgbm90IHRoZSBhY3R1YWwgcGFyYWxsZWwgcm91dGUgc2VlZCBkYXRhLlxuICAgIGlmIChpc1Jvb3RSZW5kZXIgJiYgc2VlZERhdGEpIHtcbiAgICAgIC8vIEZpbGwgaW4gdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBsb2FkaW5nIC8gcnNjIGRhdGFcbiAgICAgIGNvbnN0IHJzYyA9IHNlZWREYXRhWzFdXG4gICAgICBjb25zdCBsb2FkaW5nID0gc2VlZERhdGFbM11cbiAgICAgIG5ld0NhY2hlLmxvYWRpbmcgPSBsb2FkaW5nXG4gICAgICBuZXdDYWNoZS5yc2MgPSByc2NcblxuICAgICAgLy8gQ29uc3RydWN0IGEgbmV3IHRyZWUgYW5kIGFwcGx5IHRoZSBhbGlhc2VkIGxvYWRpbmcgc3RhdGUgZm9yIGVhY2ggcGFyYWxsZWwgcm91dGVcbiAgICAgIGZpbGxOZXdUcmVlV2l0aE9ubHlMb2FkaW5nU2VnbWVudHMoXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICBuZXdDYWNoZSxcbiAgICAgICAgY3VycmVudENhY2hlLFxuICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgIHNlZWREYXRhXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvcHkgcnNjIGZvciB0aGUgcm9vdCBub2RlIG9mIHRoZSBjYWNoZS5cbiAgICAgIG5ld0NhY2hlLnJzYyA9IGN1cnJlbnRDYWNoZS5yc2NcbiAgICAgIG5ld0NhY2hlLnByZWZldGNoUnNjID0gY3VycmVudENhY2hlLnByZWZldGNoUnNjXG4gICAgICBuZXdDYWNoZS5sb2FkaW5nID0gY3VycmVudENhY2hlLmxvYWRpbmdcbiAgICAgIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzID0gbmV3IE1hcChjdXJyZW50Q2FjaGUucGFyYWxsZWxSb3V0ZXMpXG5cbiAgICAgIC8vIGNvcHkgdGhlIGxvYWRpbmcgc3RhdGUgb25seSBpbnRvIHRoZSBsZWFmIG5vZGUgKHRoZSBwYXJ0IHRoYXQgY2hhbmdlZClcbiAgICAgIGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YUJ1dE9ubHlMb2FkaW5nKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgbmV3Q2FjaGUsXG4gICAgICAgIGN1cnJlbnRDYWNoZSxcbiAgICAgICAgbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIHVwZGF0ZWQgdHJlZSwgdGhlcmUncyBubyByZWFzb24gdG8gdXBkYXRlIHRoZSBjYWNoZSwgYXMgdGhlIHRyZWVcbiAgICAvLyBkaWN0YXRlcyB3aGF0IGNhY2hlIG5vZGVzIHRvIHJlbmRlci5cbiAgICBpZiAobmV3VHJlZSkge1xuICAgICAgY3VycmVudFRyZWUgPSBuZXdUcmVlXG4gICAgICBjdXJyZW50Q2FjaGUgPSBuZXdDYWNoZVxuICAgICAgYXBwbGllZCA9IHRydWVcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN1YlNlZ21lbnQgb2YgZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCh0cmVlUGF0Y2gpKSB7XG4gICAgICBjb25zdCBzY3JvbGxhYmxlU2VnbWVudFBhdGggPSBbXG4gICAgICAgIC4uLm5vcm1hbGl6ZWRGbGlnaHREYXRhLnBhdGhUb1NlZ21lbnQsXG4gICAgICAgIC4uLnN1YlNlZ21lbnQsXG4gICAgICBdXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSBfX0RFRkFVTFRfXyBwYXRocyBhcyB0aGV5IHNob3VsZG4ndCBiZSBzY3JvbGxlZCB0byBpbiB0aGlzIGNhc2UuXG4gICAgICBpZiAoXG4gICAgICAgIHNjcm9sbGFibGVTZWdtZW50UGF0aFtzY3JvbGxhYmxlU2VnbWVudFBhdGgubGVuZ3RoIC0gMV0gIT09XG4gICAgICAgIERFRkFVTFRfU0VHTUVOVF9LRVlcbiAgICAgICkge1xuICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHMucHVzaChzY3JvbGxhYmxlU2VnbWVudFBhdGgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhcHBsaWVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBtdXRhYmxlLnBhdGNoZWRUcmVlID0gY3VycmVudFRyZWVcbiAgbXV0YWJsZS5jYWNoZSA9IGN1cnJlbnRDYWNoZVxuICBtdXRhYmxlLmNhbm9uaWNhbFVybCA9IGhyZWZcbiAgbXV0YWJsZS5oYXNoRnJhZ21lbnQgPSB1cmwuaGFzaFxuICBtdXRhYmxlLnNjcm9sbGFibGVTZWdtZW50cyA9IHNjcm9sbGFibGVTZWdtZW50c1xuXG4gIHJldHVybiBoYW5kbGVNdXRhYmxlKHN0YXRlLCBtdXRhYmxlKVxufVxuXG5mdW5jdGlvbiBoYXNMb2FkaW5nQ29tcG9uZW50SW5TZWVkRGF0YShzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsKSB7XG4gIGlmICghc2VlZERhdGEpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gc2VlZERhdGFbMl1cbiAgY29uc3QgbG9hZGluZyA9IHNlZWREYXRhWzNdXG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICBpZiAoaGFzTG9hZGluZ0NvbXBvbmVudEluU2VlZERhdGEocGFyYWxsZWxSb3V0ZXNba2V5XSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGZpbGxOZXdUcmVlV2l0aE9ubHlMb2FkaW5nU2VnbWVudHMoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG5ld0NhY2hlOiBDYWNoZU5vZGUsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgcm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBjYWNoZU5vZGVTZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsXG4pIHtcbiAgY29uc3QgaXNMYXN0U2VnbWVudCA9IE9iamVjdC5rZXlzKHJvdXRlclN0YXRlWzFdKS5sZW5ndGggPT09IDBcbiAgaWYgKGlzTGFzdFNlZ21lbnQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IGluIHJvdXRlclN0YXRlWzFdKSB7XG4gICAgY29uc3QgcGFyYWxsZWxSb3V0ZVN0YXRlID0gcm91dGVyU3RhdGVbMV1ba2V5XVxuICAgIGNvbnN0IHNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlID0gcGFyYWxsZWxSb3V0ZVN0YXRlWzBdXG4gICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZSlcblxuICAgIGNvbnN0IHBhcmFsbGVsU2VlZERhdGEgPVxuICAgICAgY2FjaGVOb2RlU2VlZERhdGEgIT09IG51bGwgJiYgY2FjaGVOb2RlU2VlZERhdGFbMl1ba2V5XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gY2FjaGVOb2RlU2VlZERhdGFbMl1ba2V5XVxuICAgICAgICA6IG51bGxcblxuICAgIGxldCBuZXdDYWNoZU5vZGU6IENhY2hlTm9kZVxuICAgIGlmIChwYXJhbGxlbFNlZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAvLyBOZXcgZGF0YSB3YXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICBjb25zdCByc2MgPSBwYXJhbGxlbFNlZWREYXRhWzFdXG4gICAgICBjb25zdCBsb2FkaW5nID0gcGFyYWxsZWxTZWVkRGF0YVszXVxuICAgICAgbmV3Q2FjaGVOb2RlID0ge1xuICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgLy8gY29weSB0aGUgbGF5b3V0IGJ1dCBudWxsIHRoZSBwYWdlIHNlZ21lbnQgYXMgdGhhdCdzIG5vdCBtZWFudCB0byBiZSB1c2VkXG4gICAgICAgIHJzYzogc2VnbWVudEZvclBhcmFsbGVsUm91dGUuaW5jbHVkZXMoUEFHRV9TRUdNRU5UX0tFWSkgPyBudWxsIDogcnNjLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gZGF0YSBhdmFpbGFibGUgZm9yIHRoaXMgbm9kZS4gVGhpcyB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoXG4gICAgICAvLyBkdXJpbmcgcmVuZGVyLlxuICAgICAgbmV3Q2FjaGVOb2RlID0ge1xuICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgcnNjOiBudWxsLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nOiBudWxsLFxuICAgICAgICBuYXZpZ2F0ZWRBdDogLTEsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdQYXJhbGxlbFJvdXRlcyA9IG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChrZXkpXG4gICAgaWYgKGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgIGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXMuc2V0KGNhY2hlS2V5LCBuZXdDYWNoZU5vZGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLnNldChrZXksIG5ldyBNYXAoW1tjYWNoZUtleSwgbmV3Q2FjaGVOb2RlXV0pKVxuICAgIH1cblxuICAgIGZpbGxOZXdUcmVlV2l0aE9ubHlMb2FkaW5nU2VnbWVudHMoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIG5ld0NhY2hlTm9kZSxcbiAgICAgIGV4aXN0aW5nQ2FjaGUsXG4gICAgICBwYXJhbGxlbFJvdXRlU3RhdGUsXG4gICAgICBwYXJhbGxlbFNlZWREYXRhXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQWRkIHNlYXJjaCBwYXJhbXMgdG8gdGhlIHBhZ2Ugc2VnbWVudHMgaW4gdGhlIGZsaWdodCByb3V0ZXIgc3RhdGVcbiAqIFBhZ2Ugc2VnbWVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHNlYXJjaCBwYXJhbXMgaGF2ZSBhIHBhZ2Ugc2VnbWVudCBrZXlcbiAqIGZvbGxvd2VkIGJ5IGEgcXVlcnkgc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIHRob3NlIHBhcmFtcyB0byB0aGUgcGFnZSBzZWdtZW50LlxuICogVGhpcyBpcyB1c2VmdWwgaWYgd2UgcmV0dXJuIGFuIGFsaWFzZWQgcHJlZmV0Y2ggZW50cnkgKGllLCB3b24ndCBoYXZlIHNlYXJjaCBwYXJhbXMpXG4gKiBidXQgdGhlIGNhbm9uaWNhbCByb3V0ZXIgVVJMIGhhcyBzZWFyY2ggcGFyYW1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2VhcmNoUGFyYW1zVG9QYWdlU2VnbWVudHMoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgc2VhcmNoUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5cbik6IEZsaWdodFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzLCAuLi5yZXN0XSA9IGZsaWdodFJvdXRlclN0YXRlXG5cbiAgLy8gSWYgaXQncyBhIHBhZ2Ugc2VnbWVudCwgbW9kaWZ5IHRoZSBzZWdtZW50IGJ5IGFkZGluZyBzZWFyY2ggcGFyYW1zXG4gIGlmIChzZWdtZW50LmluY2x1ZGVzKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgY29uc3QgbmV3U2VnbWVudCA9IGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQoc2VnbWVudCwgc2VhcmNoUGFyYW1zKVxuICAgIHJldHVybiBbbmV3U2VnbWVudCwgcGFyYWxsZWxSb3V0ZXMsIC4uLnJlc3RdXG4gIH1cblxuICAvLyBPdGhlcndpc2UsIHJlY3Vyc2UgdGhyb3VnaCB0aGUgcGFyYWxsZWwgcm91dGVzIGFuZCByZXR1cm4gYSBuZXcgdHJlZVxuICBjb25zdCB1cGRhdGVkUGFyYWxsZWxSb3V0ZXM6IHsgW2tleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGUgfSA9IHt9XG5cbiAgZm9yIChjb25zdCBba2V5LCBwYXJhbGxlbFJvdXRlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbGxlbFJvdXRlcykpIHtcbiAgICB1cGRhdGVkUGFyYWxsZWxSb3V0ZXNba2V5XSA9IGFkZFNlYXJjaFBhcmFtc1RvUGFnZVNlZ21lbnRzKFxuICAgICAgcGFyYWxsZWxSb3V0ZSxcbiAgICAgIHNlYXJjaFBhcmFtc1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBbc2VnbWVudCwgdXBkYXRlZFBhcmFsbGVsUm91dGVzLCAuLi5yZXN0XVxufVxuIl0sIm5hbWVzIjpbImFkZFNlYXJjaFBhcmFtc1RvUGFnZVNlZ21lbnRzIiwiaGFuZGxlQWxpYXNlZFByZWZldGNoRW50cnkiLCJuYXZpZ2F0ZWRBdCIsInN0YXRlIiwiZmxpZ2h0RGF0YSIsInVybCIsIm11dGFibGUiLCJjdXJyZW50VHJlZSIsInRyZWUiLCJjdXJyZW50Q2FjaGUiLCJjYWNoZSIsImhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsImFwcGxpZWQiLCJzY3JvbGxhYmxlU2VnbWVudHMiLCJub3JtYWxpemVkRmxpZ2h0RGF0YSIsImhhc0xvYWRpbmdDb21wb25lbnRJblNlZWREYXRhIiwic2VlZERhdGEiLCJ0cmVlUGF0Y2giLCJPYmplY3QiLCJmcm9tRW50cmllcyIsInNlYXJjaFBhcmFtcyIsImlzUm9vdFJlbmRlciIsInBhdGhUb1NlZ21lbnQiLCJmbGlnaHRTZWdtZW50UGF0aFdpdGhMZWFkaW5nRW1wdHkiLCJuZXdUcmVlIiwiYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIiwibmV3Q2FjaGUiLCJjcmVhdGVFbXB0eUNhY2hlTm9kZSIsInJzYyIsImxvYWRpbmciLCJmaWxsTmV3VHJlZVdpdGhPbmx5TG9hZGluZ1NlZ21lbnRzIiwicHJlZmV0Y2hSc2MiLCJwYXJhbGxlbFJvdXRlcyIsIk1hcCIsImZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YUJ1dE9ubHlMb2FkaW5nIiwic3ViU2VnbWVudCIsImdlbmVyYXRlU2VnbWVudHNGcm9tUGF0Y2giLCJzY3JvbGxhYmxlU2VnbWVudFBhdGgiLCJsZW5ndGgiLCJERUZBVUxUX1NFR01FTlRfS0VZIiwicHVzaCIsInBhdGNoZWRUcmVlIiwiY2Fub25pY2FsVXJsIiwiaGFzaEZyYWdtZW50IiwiaGFzaCIsImhhbmRsZU11dGFibGUiLCJrZXkiLCJleGlzdGluZ0NhY2hlIiwicm91dGVyU3RhdGUiLCJjYWNoZU5vZGVTZWVkRGF0YSIsImlzTGFzdFNlZ21lbnQiLCJrZXlzIiwicGFyYWxsZWxSb3V0ZVN0YXRlIiwic2VnbWVudEZvclBhcmFsbGVsUm91dGUiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwicGFyYWxsZWxTZWVkRGF0YSIsInVuZGVmaW5lZCIsIm5ld0NhY2hlTm9kZSIsImxhenlEYXRhIiwiaW5jbHVkZXMiLCJQQUdFX1NFR01FTlRfS0VZIiwiaGVhZCIsInByZWZldGNoSGVhZCIsImV4aXN0aW5nUGFyYWxsZWxSb3V0ZXMiLCJnZXQiLCJzZXQiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsInNlZ21lbnQiLCJyZXN0IiwibmV3U2VnbWVudCIsImFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQiLCJ1cGRhdGVkUGFyYWxsZWxSb3V0ZXMiLCJwYXJhbGxlbFJvdXRlIiwiZW50cmllcyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js": /*!**************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js ***! \**************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"applyFlightData\", ({\n enumerable: true,\n get: function() {\n return applyFlightData;\n }\n}));\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _fillcachewithnewsubtreedata = __webpack_require__(/*! ./fill-cache-with-new-subtree-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\");\nfunction applyFlightData(navigatedAt, existingCache, cache, flightData, prefetchEntry) {\n // The one before last item is the router state tree patch\n const { tree: treePatch, seedData, head, isRootRender } = flightData;\n // Handles case where prefetch only returns the router tree patch without rendered components.\n if (seedData === null) {\n return false;\n }\n if (isRootRender) {\n const rsc = seedData[1];\n const loading = seedData[3];\n cache.loading = loading;\n cache.rsc = rsc;\n // This is a PPR-only field. When PPR is enabled, we shouldn't hit\n // this path during a navigation, but until PPR is fully implemented\n // yet it's possible the existing node does have a non-null\n // `prefetchRsc`. As an incremental step, we'll just de-opt to the\n // old behavior — no PPR value.\n cache.prefetchRsc = null;\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, existingCache, treePatch, seedData, head, prefetchEntry);\n } else {\n // Copy rsc for the root node of the cache.\n cache.rsc = existingCache.rsc;\n // This is a PPR-only field. Unlike the previous branch, since we're\n // just cloning the existing cache node, we might as well keep the\n // PPR value, if it exists.\n cache.prefetchRsc = existingCache.prefetchRsc;\n cache.parallelRoutes = new Map(existingCache.parallelRoutes);\n cache.loading = existingCache.loading;\n // Create a copy of the existing cache with the rsc applied.\n (0, _fillcachewithnewsubtreedata.fillCacheWithNewSubTreeData)(navigatedAt, cache, existingCache, flightData, prefetchEntry);\n }\n return true;\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=apply-flight-data.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYXBwbHktZmxpZ2h0LWRhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OzttREFNZ0JBOzs7ZUFBQUE7OzsyREFMOEI7eURBQ0Y7QUFJckMsU0FBU0EsZ0JBQ2RDLFdBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsS0FBZ0IsRUFDaEJDLFVBQWdDLEVBQ2hDQyxhQUFrQztJQUVsQywwREFBMEQ7SUFDMUQsTUFBTSxFQUFFQyxNQUFNQyxTQUFTLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxZQUFZLEVBQUUsR0FBR047SUFFMUQsOEZBQThGO0lBQzlGLElBQUlJLGFBQWEsTUFBTTtRQUNyQixPQUFPO0lBQ1Q7SUFFQSxJQUFJRSxjQUFjO1FBQ2hCLE1BQU1DLE1BQU1ILFFBQVEsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU1JLFVBQVVKLFFBQVEsQ0FBQyxFQUFFO1FBQzNCTCxNQUFNUyxPQUFPLEdBQUdBO1FBQ2hCVCxNQUFNUSxHQUFHLEdBQUdBO1FBQ1osa0VBQWtFO1FBQ2xFLG9FQUFvRTtRQUNwRSwyREFBMkQ7UUFDM0Qsa0VBQWtFO1FBQ2xFLCtCQUErQjtRQUMvQlIsTUFBTVUsV0FBVyxHQUFHO1FBQ3BCQyxDQUFBQSxHQUFBQSwrQkFBQUEsNkJBQUFBLEVBQ0ViLGFBQ0FFLE9BQ0FELGVBQ0FLLFdBQ0FDLFVBQ0FDLE1BQ0FKO0lBRUosT0FBTztRQUNMLDJDQUEyQztRQUMzQ0YsTUFBTVEsR0FBRyxHQUFHVCxjQUFjUyxHQUFHO1FBQzdCLG9FQUFvRTtRQUNwRSxrRUFBa0U7UUFDbEUsMkJBQTJCO1FBQzNCUixNQUFNVSxXQUFXLEdBQUdYLGNBQWNXLFdBQVc7UUFDN0NWLE1BQU1ZLGNBQWMsR0FBRyxJQUFJQyxJQUFJZCxjQUFjYSxjQUFjO1FBQzNEWixNQUFNUyxPQUFPLEdBQUdWLGNBQWNVLE9BQU87UUFDckMsNERBQTREO1FBQzVESyxDQUFBQSxHQUFBQSw2QkFBQUEsMkJBQUFBLEVBQ0VoQixhQUNBRSxPQUNBRCxlQUNBRSxZQUNBQztJQUVKO0lBRUEsT0FBTztBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2FwcGx5LWZsaWdodC1kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCB9IGZyb20gJy4vZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQnXG5pbXBvcnQgeyBmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGEgfSBmcm9tICcuL2ZpbGwtY2FjaGUtd2l0aC1uZXctc3VidHJlZS1kYXRhJ1xuaW1wb3J0IHR5cGUgeyBQcmVmZXRjaENhY2hlRW50cnkgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkRmxpZ2h0RGF0YSB9IGZyb20gJy4uLy4uL2ZsaWdodC1kYXRhLWhlbHBlcnMnXG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZsaWdodERhdGEoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgY2FjaGU6IENhY2hlTm9kZSxcbiAgZmxpZ2h0RGF0YTogTm9ybWFsaXplZEZsaWdodERhdGEsXG4gIHByZWZldGNoRW50cnk/OiBQcmVmZXRjaENhY2hlRW50cnlcbik6IGJvb2xlYW4ge1xuICAvLyBUaGUgb25lIGJlZm9yZSBsYXN0IGl0ZW0gaXMgdGhlIHJvdXRlciBzdGF0ZSB0cmVlIHBhdGNoXG4gIGNvbnN0IHsgdHJlZTogdHJlZVBhdGNoLCBzZWVkRGF0YSwgaGVhZCwgaXNSb290UmVuZGVyIH0gPSBmbGlnaHREYXRhXG5cbiAgLy8gSGFuZGxlcyBjYXNlIHdoZXJlIHByZWZldGNoIG9ubHkgcmV0dXJucyB0aGUgcm91dGVyIHRyZWUgcGF0Y2ggd2l0aG91dCByZW5kZXJlZCBjb21wb25lbnRzLlxuICBpZiAoc2VlZERhdGEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChpc1Jvb3RSZW5kZXIpIHtcbiAgICBjb25zdCByc2MgPSBzZWVkRGF0YVsxXVxuICAgIGNvbnN0IGxvYWRpbmcgPSBzZWVkRGF0YVszXVxuICAgIGNhY2hlLmxvYWRpbmcgPSBsb2FkaW5nXG4gICAgY2FjaGUucnNjID0gcnNjXG4gICAgLy8gVGhpcyBpcyBhIFBQUi1vbmx5IGZpZWxkLiBXaGVuIFBQUiBpcyBlbmFibGVkLCB3ZSBzaG91bGRuJ3QgaGl0XG4gICAgLy8gdGhpcyBwYXRoIGR1cmluZyBhIG5hdmlnYXRpb24sIGJ1dCB1bnRpbCBQUFIgaXMgZnVsbHkgaW1wbGVtZW50ZWRcbiAgICAvLyB5ZXQgaXQncyBwb3NzaWJsZSB0aGUgZXhpc3Rpbmcgbm9kZSBkb2VzIGhhdmUgYSBub24tbnVsbFxuICAgIC8vIGBwcmVmZXRjaFJzY2AuIEFzIGFuIGluY3JlbWVudGFsIHN0ZXAsIHdlJ2xsIGp1c3QgZGUtb3B0IHRvIHRoZVxuICAgIC8vIG9sZCBiZWhhdmlvciDigJQgbm8gUFBSIHZhbHVlLlxuICAgIGNhY2hlLnByZWZldGNoUnNjID0gbnVsbFxuICAgIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICBjYWNoZSxcbiAgICAgIGV4aXN0aW5nQ2FjaGUsXG4gICAgICB0cmVlUGF0Y2gsXG4gICAgICBzZWVkRGF0YSxcbiAgICAgIGhlYWQsXG4gICAgICBwcmVmZXRjaEVudHJ5XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIC8vIENvcHkgcnNjIGZvciB0aGUgcm9vdCBub2RlIG9mIHRoZSBjYWNoZS5cbiAgICBjYWNoZS5yc2MgPSBleGlzdGluZ0NhY2hlLnJzY1xuICAgIC8vIFRoaXMgaXMgYSBQUFItb25seSBmaWVsZC4gVW5saWtlIHRoZSBwcmV2aW91cyBicmFuY2gsIHNpbmNlIHdlJ3JlXG4gICAgLy8ganVzdCBjbG9uaW5nIHRoZSBleGlzdGluZyBjYWNoZSBub2RlLCB3ZSBtaWdodCBhcyB3ZWxsIGtlZXAgdGhlXG4gICAgLy8gUFBSIHZhbHVlLCBpZiBpdCBleGlzdHMuXG4gICAgY2FjaGUucHJlZmV0Y2hSc2MgPSBleGlzdGluZ0NhY2hlLnByZWZldGNoUnNjXG4gICAgY2FjaGUucGFyYWxsZWxSb3V0ZXMgPSBuZXcgTWFwKGV4aXN0aW5nQ2FjaGUucGFyYWxsZWxSb3V0ZXMpXG4gICAgY2FjaGUubG9hZGluZyA9IGV4aXN0aW5nQ2FjaGUubG9hZGluZ1xuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGV4aXN0aW5nIGNhY2hlIHdpdGggdGhlIHJzYyBhcHBsaWVkLlxuICAgIGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YShcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgY2FjaGUsXG4gICAgICBleGlzdGluZ0NhY2hlLFxuICAgICAgZmxpZ2h0RGF0YSxcbiAgICAgIHByZWZldGNoRW50cnlcbiAgICApXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuIl0sIm5hbWVzIjpbImFwcGx5RmxpZ2h0RGF0YSIsIm5hdmlnYXRlZEF0IiwiZXhpc3RpbmdDYWNoZSIsImNhY2hlIiwiZmxpZ2h0RGF0YSIsInByZWZldGNoRW50cnkiLCJ0cmVlIiwidHJlZVBhdGNoIiwic2VlZERhdGEiLCJoZWFkIiwiaXNSb290UmVuZGVyIiwicnNjIiwibG9hZGluZyIsInByZWZldGNoUnNjIiwiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiLCJwYXJhbGxlbFJvdXRlcyIsIk1hcCIsImZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js ***! \*****************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"applyRouterStatePatchToTree\", ({\n enumerable: true,\n get: function() {\n return applyRouterStatePatchToTree;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ./refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\n/**\n * Deep merge of the two router states. Parallel route keys are preserved if the patch doesn't have them.\n */ function applyPatch(initialTree, patchTree) {\n const [initialSegment, initialParallelRoutes] = initialTree;\n const [patchSegment, patchParallelRoutes] = patchTree;\n // if the applied patch segment is __DEFAULT__ then it can be ignored in favor of the initial tree\n // this is because the __DEFAULT__ segment is used as a placeholder on navigation\n if (patchSegment === _segment.DEFAULT_SEGMENT_KEY && initialSegment !== _segment.DEFAULT_SEGMENT_KEY) {\n return initialTree;\n }\n if ((0, _matchsegments.matchSegment)(initialSegment, patchSegment)) {\n const newParallelRoutes = {};\n for(const key in initialParallelRoutes){\n const isInPatchTreeParallelRoutes = typeof patchParallelRoutes[key] !== 'undefined';\n if (isInPatchTreeParallelRoutes) {\n newParallelRoutes[key] = applyPatch(initialParallelRoutes[key], patchParallelRoutes[key]);\n } else {\n newParallelRoutes[key] = initialParallelRoutes[key];\n }\n }\n for(const key in patchParallelRoutes){\n if (newParallelRoutes[key]) {\n continue;\n }\n newParallelRoutes[key] = patchParallelRoutes[key];\n }\n const tree = [\n initialSegment,\n newParallelRoutes\n ];\n // Copy over the existing tree\n if (initialTree[2]) {\n tree[2] = initialTree[2];\n }\n if (initialTree[3]) {\n tree[3] = initialTree[3];\n }\n if (initialTree[4]) {\n tree[4] = initialTree[4];\n }\n return tree;\n }\n return patchTree;\n}\nfunction applyRouterStatePatchToTree(flightSegmentPath, flightRouterState, treePatch, path) {\n const [segment, parallelRoutes, url, refetch, isRootLayout] = flightRouterState;\n // Root refresh\n if (flightSegmentPath.length === 1) {\n const tree = applyPatch(flightRouterState, treePatch);\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(tree, path);\n return tree;\n }\n const [currentSegment, parallelRouteKey] = flightSegmentPath;\n // Tree path returned from the server should always match up with the current tree in the browser\n if (!(0, _matchsegments.matchSegment)(currentSegment, segment)) {\n return null;\n }\n const lastSegment = flightSegmentPath.length === 2;\n let parallelRoutePatch;\n if (lastSegment) {\n parallelRoutePatch = applyPatch(parallelRoutes[parallelRouteKey], treePatch);\n } else {\n parallelRoutePatch = applyRouterStatePatchToTree((0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath), parallelRoutes[parallelRouteKey], treePatch, path);\n if (parallelRoutePatch === null) {\n return null;\n }\n }\n const tree = [\n flightSegmentPath[0],\n {\n ...parallelRoutes,\n [parallelRouteKey]: parallelRoutePatch\n },\n url,\n refetch\n ];\n // Current segment is the root layout\n if (isRootLayout) {\n tree[4] = true;\n }\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(tree, path);\n return tree;\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=apply-router-state-patch-to-tree.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYXBwbHktcm91dGVyLXN0YXRlLXBhdGNoLXRvLXRyZWUuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREE2RWdCQTs7O2VBQUFBOzs7cUNBekVvQjsrQ0FDSzsyQ0FDWjs2REFDNEI7QUFFekQ7O0NBRUMsR0FDRCxTQUFTQyxXQUNQQyxXQUE4QixFQUM5QkMsU0FBNEI7SUFFNUIsTUFBTSxDQUFDQyxnQkFBZ0JDLHNCQUFzQixHQUFHSDtJQUNoRCxNQUFNLENBQUNJLGNBQWNDLG9CQUFvQixHQUFHSjtJQUU1QyxrR0FBa0c7SUFDbEcsaUZBQWlGO0lBQ2pGLElBQ0VHLGlCQUFpQkUsU0FBQUEsbUJBQW1CLElBQ3BDSixtQkFBbUJJLFNBQUFBLG1CQUFtQixFQUN0QztRQUNBLE9BQU9OO0lBQ1Q7SUFFQSxJQUFJTyxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhTCxnQkFBZ0JFLGVBQWU7UUFDOUMsTUFBTUksb0JBQTBDLENBQUM7UUFDakQsSUFBSyxNQUFNQyxPQUFPTixzQkFBdUI7WUFDdkMsTUFBTU8sOEJBQ0osT0FBT0wsbUJBQW1CLENBQUNJLElBQUksS0FBSztZQUN0QyxJQUFJQyw2QkFBNkI7Z0JBQy9CRixpQkFBaUIsQ0FBQ0MsSUFBSSxHQUFHVixXQUN2QkkscUJBQXFCLENBQUNNLElBQUksRUFDMUJKLG1CQUFtQixDQUFDSSxJQUFJO1lBRTVCLE9BQU87Z0JBQ0xELGlCQUFpQixDQUFDQyxJQUFJLEdBQUdOLHFCQUFxQixDQUFDTSxJQUFJO1lBQ3JEO1FBQ0Y7UUFFQSxJQUFLLE1BQU1BLE9BQU9KLG9CQUFxQjtZQUNyQyxJQUFJRyxpQkFBaUIsQ0FBQ0MsSUFBSSxFQUFFO2dCQUMxQjtZQUNGO1lBRUFELGlCQUFpQixDQUFDQyxJQUFJLEdBQUdKLG1CQUFtQixDQUFDSSxJQUFJO1FBQ25EO1FBRUEsTUFBTUUsT0FBMEI7WUFBQ1Q7WUFBZ0JNO1NBQWtCO1FBRW5FLDhCQUE4QjtRQUM5QixJQUFJUixXQUFXLENBQUMsRUFBRSxFQUFFO1lBQ2xCVyxJQUFJLENBQUMsRUFBRSxHQUFHWCxXQUFXLENBQUMsRUFBRTtRQUMxQjtRQUVBLElBQUlBLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDbEJXLElBQUksQ0FBQyxFQUFFLEdBQUdYLFdBQVcsQ0FBQyxFQUFFO1FBQzFCO1FBRUEsSUFBSUEsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUNsQlcsSUFBSSxDQUFDLEVBQUUsR0FBR1gsV0FBVyxDQUFDLEVBQUU7UUFDMUI7UUFFQSxPQUFPVztJQUNUO0lBRUEsT0FBT1Y7QUFDVDtBQU9PLFNBQVNILDRCQUNkYyxpQkFBb0MsRUFDcENDLGlCQUFvQyxFQUNwQ0MsU0FBNEIsRUFDNUJDLElBQVk7SUFFWixNQUFNLENBQUNDLFNBQVNDLGdCQUFnQkMsS0FBS0MsU0FBU0MsYUFBYSxHQUN6RFA7SUFFRixlQUFlO0lBQ2YsSUFBSUQsa0JBQWtCUyxNQUFNLEtBQUssR0FBRztRQUNsQyxNQUFNVixPQUEwQlosV0FBV2MsbUJBQW1CQztRQUU5RFEsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q1gsTUFBTUk7UUFFL0MsT0FBT0o7SUFDVDtJQUVBLE1BQU0sQ0FBQ1ksZ0JBQWdCQyxpQkFBaUIsR0FBR1o7SUFFM0MsaUdBQWlHO0lBQ2pHLElBQUksQ0FBQ0wsQ0FBQUEsR0FBQUEsZUFBQUEsWUFBQUEsRUFBYWdCLGdCQUFnQlAsVUFBVTtRQUMxQyxPQUFPO0lBQ1Q7SUFFQSxNQUFNUyxjQUFjYixrQkFBa0JTLE1BQU0sS0FBSztJQUVqRCxJQUFJSztJQUNKLElBQUlELGFBQWE7UUFDZkMscUJBQXFCM0IsV0FBV2tCLGNBQWMsQ0FBQ08saUJBQWlCLEVBQUVWO0lBQ3BFLE9BQU87UUFDTFkscUJBQXFCNUIsNEJBQ25CNkIsQ0FBQUEsR0FBQUEsbUJBQUFBLHdCQUFBQSxFQUF5QmYsb0JBQ3pCSyxjQUFjLENBQUNPLGlCQUFpQixFQUNoQ1YsV0FDQUM7UUFHRixJQUFJVyx1QkFBdUIsTUFBTTtZQUMvQixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU1mLE9BQTBCO1FBQzlCQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3BCO1lBQ0UsR0FBR0ssY0FBYztZQUNqQixDQUFDTyxpQkFBaUIsRUFBRUU7UUFDdEI7UUFDQVI7UUFDQUM7S0FDRDtJQUVELHFDQUFxQztJQUNyQyxJQUFJQyxjQUFjO1FBQ2hCVCxJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1o7SUFFQVcsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q1gsTUFBTUk7SUFFL0MsT0FBT0o7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9hcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBERUZBVUxUX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IG1hdGNoU2VnbWVudCB9IGZyb20gJy4uL21hdGNoLXNlZ21lbnRzJ1xuaW1wb3J0IHsgYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cyB9IGZyb20gJy4vcmVmZXRjaC1pbmFjdGl2ZS1wYXJhbGxlbC1zZWdtZW50cydcblxuLyoqXG4gKiBEZWVwIG1lcmdlIG9mIHRoZSB0d28gcm91dGVyIHN0YXRlcy4gUGFyYWxsZWwgcm91dGUga2V5cyBhcmUgcHJlc2VydmVkIGlmIHRoZSBwYXRjaCBkb2Vzbid0IGhhdmUgdGhlbS5cbiAqL1xuZnVuY3Rpb24gYXBwbHlQYXRjaChcbiAgaW5pdGlhbFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXRjaFRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IFtpbml0aWFsU2VnbWVudCwgaW5pdGlhbFBhcmFsbGVsUm91dGVzXSA9IGluaXRpYWxUcmVlXG4gIGNvbnN0IFtwYXRjaFNlZ21lbnQsIHBhdGNoUGFyYWxsZWxSb3V0ZXNdID0gcGF0Y2hUcmVlXG5cbiAgLy8gaWYgdGhlIGFwcGxpZWQgcGF0Y2ggc2VnbWVudCBpcyBfX0RFRkFVTFRfXyB0aGVuIGl0IGNhbiBiZSBpZ25vcmVkIGluIGZhdm9yIG9mIHRoZSBpbml0aWFsIHRyZWVcbiAgLy8gdGhpcyBpcyBiZWNhdXNlIHRoZSBfX0RFRkFVTFRfXyBzZWdtZW50IGlzIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBvbiBuYXZpZ2F0aW9uXG4gIGlmIChcbiAgICBwYXRjaFNlZ21lbnQgPT09IERFRkFVTFRfU0VHTUVOVF9LRVkgJiZcbiAgICBpbml0aWFsU2VnbWVudCAhPT0gREVGQVVMVF9TRUdNRU5UX0tFWVxuICApIHtcbiAgICByZXR1cm4gaW5pdGlhbFRyZWVcbiAgfVxuXG4gIGlmIChtYXRjaFNlZ21lbnQoaW5pdGlhbFNlZ21lbnQsIHBhdGNoU2VnbWVudCkpIHtcbiAgICBjb25zdCBuZXdQYXJhbGxlbFJvdXRlczogRmxpZ2h0Um91dGVyU3RhdGVbMV0gPSB7fVxuICAgIGZvciAoY29uc3Qga2V5IGluIGluaXRpYWxQYXJhbGxlbFJvdXRlcykge1xuICAgICAgY29uc3QgaXNJblBhdGNoVHJlZVBhcmFsbGVsUm91dGVzID1cbiAgICAgICAgdHlwZW9mIHBhdGNoUGFyYWxsZWxSb3V0ZXNba2V5XSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgIGlmIChpc0luUGF0Y2hUcmVlUGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgICAgbmV3UGFyYWxsZWxSb3V0ZXNba2V5XSA9IGFwcGx5UGF0Y2goXG4gICAgICAgICAgaW5pdGlhbFBhcmFsbGVsUm91dGVzW2tleV0sXG4gICAgICAgICAgcGF0Y2hQYXJhbGxlbFJvdXRlc1trZXldXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1BhcmFsbGVsUm91dGVzW2tleV0gPSBpbml0aWFsUGFyYWxsZWxSb3V0ZXNba2V5XVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhdGNoUGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgIGlmIChuZXdQYXJhbGxlbFJvdXRlc1trZXldKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIG5ld1BhcmFsbGVsUm91dGVzW2tleV0gPSBwYXRjaFBhcmFsbGVsUm91dGVzW2tleV1cbiAgICB9XG5cbiAgICBjb25zdCB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtpbml0aWFsU2VnbWVudCwgbmV3UGFyYWxsZWxSb3V0ZXNdXG5cbiAgICAvLyBDb3B5IG92ZXIgdGhlIGV4aXN0aW5nIHRyZWVcbiAgICBpZiAoaW5pdGlhbFRyZWVbMl0pIHtcbiAgICAgIHRyZWVbMl0gPSBpbml0aWFsVHJlZVsyXVxuICAgIH1cblxuICAgIGlmIChpbml0aWFsVHJlZVszXSkge1xuICAgICAgdHJlZVszXSA9IGluaXRpYWxUcmVlWzNdXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxUcmVlWzRdKSB7XG4gICAgICB0cmVlWzRdID0gaW5pdGlhbFRyZWVbNF1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgcmV0dXJuIHBhdGNoVHJlZVxufVxuXG4vKipcbiAqIEFwcGx5IHRoZSByb3V0ZXIgc3RhdGUgZnJvbSB0aGUgRmxpZ2h0IHJlc3BvbnNlLCBidXQgc2tpcCBwYXRjaGluZyBkZWZhdWx0IHNlZ21lbnRzLlxuICogVXNlZnVsIGZvciBwYXRjaGluZyB0aGUgcm91dGVyIGNhY2hlIHdoZW4gbmF2aWdhdGluZywgd2hlcmUgd2UgcGVyc2lzdCB0aGUgZXhpc3RpbmcgZGVmYXVsdCBzZWdtZW50IGlmIHRoZXJlIGlzbid0IGEgbmV3IG9uZS5cbiAqIENyZWF0ZXMgYSBuZXcgcm91dGVyIHN0YXRlIHRyZWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUoXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICB0cmVlUGF0Y2g6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXRoOiBzdHJpbmdcbik6IEZsaWdodFJvdXRlclN0YXRlIHwgbnVsbCB7XG4gIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlcywgdXJsLCByZWZldGNoLCBpc1Jvb3RMYXlvdXRdID1cbiAgICBmbGlnaHRSb3V0ZXJTdGF0ZVxuXG4gIC8vIFJvb3QgcmVmcmVzaFxuICBpZiAoZmxpZ2h0U2VnbWVudFBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBhcHBseVBhdGNoKGZsaWdodFJvdXRlclN0YXRlLCB0cmVlUGF0Y2gpXG5cbiAgICBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzKHRyZWUsIHBhdGgpXG5cbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgY29uc3QgW2N1cnJlbnRTZWdtZW50LCBwYXJhbGxlbFJvdXRlS2V5XSA9IGZsaWdodFNlZ21lbnRQYXRoXG5cbiAgLy8gVHJlZSBwYXRoIHJldHVybmVkIGZyb20gdGhlIHNlcnZlciBzaG91bGQgYWx3YXlzIG1hdGNoIHVwIHdpdGggdGhlIGN1cnJlbnQgdHJlZSBpbiB0aGUgYnJvd3NlclxuICBpZiAoIW1hdGNoU2VnbWVudChjdXJyZW50U2VnbWVudCwgc2VnbWVudCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBmbGlnaHRTZWdtZW50UGF0aC5sZW5ndGggPT09IDJcblxuICBsZXQgcGFyYWxsZWxSb3V0ZVBhdGNoXG4gIGlmIChsYXN0U2VnbWVudCkge1xuICAgIHBhcmFsbGVsUm91dGVQYXRjaCA9IGFwcGx5UGF0Y2gocGFyYWxsZWxSb3V0ZXNbcGFyYWxsZWxSb3V0ZUtleV0sIHRyZWVQYXRjaClcbiAgfSBlbHNlIHtcbiAgICBwYXJhbGxlbFJvdXRlUGF0Y2ggPSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUoXG4gICAgICBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgoZmxpZ2h0U2VnbWVudFBhdGgpLFxuICAgICAgcGFyYWxsZWxSb3V0ZXNbcGFyYWxsZWxSb3V0ZUtleV0sXG4gICAgICB0cmVlUGF0Y2gsXG4gICAgICBwYXRoXG4gICAgKVxuXG4gICAgaWYgKHBhcmFsbGVsUm91dGVQYXRjaCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICBjb25zdCB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtcbiAgICBmbGlnaHRTZWdtZW50UGF0aFswXSxcbiAgICB7XG4gICAgICAuLi5wYXJhbGxlbFJvdXRlcyxcbiAgICAgIFtwYXJhbGxlbFJvdXRlS2V5XTogcGFyYWxsZWxSb3V0ZVBhdGNoLFxuICAgIH0sXG4gICAgdXJsLFxuICAgIHJlZmV0Y2gsXG4gIF1cblxuICAvLyBDdXJyZW50IHNlZ21lbnQgaXMgdGhlIHJvb3QgbGF5b3V0XG4gIGlmIChpc1Jvb3RMYXlvdXQpIHtcbiAgICB0cmVlWzRdID0gdHJ1ZVxuICB9XG5cbiAgYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cyh0cmVlLCBwYXRoKVxuXG4gIHJldHVybiB0cmVlXG59XG4iXSwibmFtZXMiOlsiYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIiwiYXBwbHlQYXRjaCIsImluaXRpYWxUcmVlIiwicGF0Y2hUcmVlIiwiaW5pdGlhbFNlZ21lbnQiLCJpbml0aWFsUGFyYWxsZWxSb3V0ZXMiLCJwYXRjaFNlZ21lbnQiLCJwYXRjaFBhcmFsbGVsUm91dGVzIiwiREVGQVVMVF9TRUdNRU5UX0tFWSIsIm1hdGNoU2VnbWVudCIsIm5ld1BhcmFsbGVsUm91dGVzIiwia2V5IiwiaXNJblBhdGNoVHJlZVBhcmFsbGVsUm91dGVzIiwidHJlZSIsImZsaWdodFNlZ21lbnRQYXRoIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJ0cmVlUGF0Y2giLCJwYXRoIiwic2VnbWVudCIsInBhcmFsbGVsUm91dGVzIiwidXJsIiwicmVmZXRjaCIsImlzUm9vdExheW91dCIsImxlbmd0aCIsImFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMiLCJjdXJyZW50U2VnbWVudCIsInBhcmFsbGVsUm91dGVLZXkiLCJsYXN0U2VnbWVudCIsInBhcmFsbGVsUm91dGVQYXRjaCIsImdldE5leHRGbGlnaHRTZWdtZW50UGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js": /*!***********************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js ***! \***********************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"clearCacheNodeDataForSegmentPath\", ({\n enumerable: true,\n get: function() {\n return clearCacheNodeDataForSegmentPath;\n }\n}));\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction clearCacheNodeDataForSegmentPath(newCache, existingCache, flightSegmentPath) {\n const isLastEntry = flightSegmentPath.length <= 2;\n const [parallelRouteKey, segment] = flightSegmentPath;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCache.parallelRoutes.get(parallelRouteKey);\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n const existingChildCacheNode = existingChildSegmentMap == null ? void 0 : existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n // In case of last segment start off the fetch at this level and don't copy further down.\n if (isLastEntry) {\n if (!childCacheNode || !childCacheNode.lazyData || childCacheNode === existingChildCacheNode) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n });\n }\n return;\n }\n if (!childCacheNode || !existingChildCacheNode) {\n // Start fetch in the place where the existing cache doesn't have the data yet.\n if (!childCacheNode) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n });\n }\n return;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n loading: childCacheNode.loading\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n return clearCacheNodeDataForSegmentPath(childCacheNode, existingChildCacheNode, (0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath));\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=clear-cache-node-data-for-segment-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY2xlYXItY2FjaGUtbm9kZS1kYXRhLWZvci1zZWdtZW50LXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OztvRUFRZ0JBOzs7ZUFBQUE7OzsrQ0FOeUI7a0RBQ0o7QUFLOUIsU0FBU0EsaUNBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsaUJBQW9DO0lBRXBDLE1BQU1DLGNBQWNELGtCQUFrQkUsTUFBTSxJQUFJO0lBRWhELE1BQU0sQ0FBQ0Msa0JBQWtCQyxRQUFRLEdBQUdKO0lBQ3BDLE1BQU1LLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO0lBRXRDLE1BQU1HLDBCQUNKUixjQUFjUyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbkMsSUFBSU8sa0JBQWtCWixTQUFTVSxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbEQsSUFBSSxDQUFDTyxtQkFBbUJBLG9CQUFvQkgseUJBQXlCO1FBQ25FRyxrQkFBa0IsSUFBSUMsSUFBSUo7UUFDMUJULFNBQVNVLGNBQWMsQ0FBQ0ksR0FBRyxDQUFDVCxrQkFBa0JPO0lBQ2hEO0lBRUEsTUFBTUcseUJBQXlCTiwyQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsd0JBQXlCRSxHQUFHLENBQUNKO0lBQzVELElBQUlTLGlCQUFpQkosZ0JBQWdCRCxHQUFHLENBQUNKO0lBRXpDLHlGQUF5RjtJQUN6RixJQUFJSixhQUFhO1FBQ2YsSUFDRSxDQUFDYSxrQkFDRCxDQUFDQSxlQUFlQyxRQUFRLElBQ3hCRCxtQkFBbUJELHdCQUNuQjtZQUNBSCxnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVTtnQkFDNUJVLFVBQVU7Z0JBQ1ZDLEtBQUs7Z0JBQ0xDLGFBQWE7Z0JBQ2JDLE1BQU07Z0JBQ05DLGNBQWM7Z0JBQ2RYLGdCQUFnQixJQUFJRztnQkFDcEJTLFNBQVM7Z0JBQ1RDLGFBQWEsQ0FBQztZQUNoQjtRQUNGO1FBQ0E7SUFDRjtJQUVBLElBQUksQ0FBQ1Asa0JBQWtCLENBQUNELHdCQUF3QjtRQUM5QywrRUFBK0U7UUFDL0UsSUFBSSxDQUFDQyxnQkFBZ0I7WUFDbkJKLGdCQUFnQkUsR0FBRyxDQUFDUCxVQUFVO2dCQUM1QlUsVUFBVTtnQkFDVkMsS0FBSztnQkFDTEMsYUFBYTtnQkFDYkMsTUFBTTtnQkFDTkMsY0FBYztnQkFDZFgsZ0JBQWdCLElBQUlHO2dCQUNwQlMsU0FBUztnQkFDVEMsYUFBYSxDQUFDO1lBQ2hCO1FBQ0Y7UUFDQTtJQUNGO0lBRUEsSUFBSVAsbUJBQW1CRCx3QkFBd0I7UUFDN0NDLGlCQUFpQjtZQUNmQyxVQUFVRCxlQUFlQyxRQUFRO1lBQ2pDQyxLQUFLRixlQUFlRSxHQUFHO1lBQ3ZCQyxhQUFhSCxlQUFlRyxXQUFXO1lBQ3ZDQyxNQUFNSixlQUFlSSxJQUFJO1lBQ3pCQyxjQUFjTCxlQUFlSyxZQUFZO1lBQ3pDWCxnQkFBZ0IsSUFBSUcsSUFBSUcsZUFBZU4sY0FBYztZQUNyRFksU0FBU04sZUFBZU0sT0FBTztRQUNqQztRQUNBVixnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVM7SUFDaEM7SUFFQSxPQUFPakIsaUNBQ0xpQixnQkFDQUQsd0JBQ0FTLENBQUFBLEdBQUFBLG1CQUFBQSx3QkFBQUEsRUFBeUJ0QjtBQUU3QiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jbGVhci1jYWNoZS1ub2RlLWRhdGEtZm9yLXNlZ21lbnQtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcblxuLyoqXG4gKiBUaGlzIHdpbGwgY2xlYXIgdGhlIENhY2hlTm9kZSBkYXRhIGZvciBhIHBhcnRpY3VsYXIgc2VnbWVudCBwYXRoLiBUaGlzIHdpbGwgY2F1c2UgYSBsYXp5LWZldGNoIGluIGxheW91dCByb3V0ZXIgdG8gZmlsbCBpbiBuZXcgZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ2FjaGVOb2RlRGF0YUZvclNlZ21lbnRQYXRoKFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBleGlzdGluZ0NhY2hlOiBDYWNoZU5vZGUsXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuKTogdm9pZCB7XG4gIGNvbnN0IGlzTGFzdEVudHJ5ID0gZmxpZ2h0U2VnbWVudFBhdGgubGVuZ3RoIDw9IDJcblxuICBjb25zdCBbcGFyYWxsZWxSb3V0ZUtleSwgc2VnbWVudF0gPSBmbGlnaHRTZWdtZW50UGF0aFxuICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQpXG5cbiAgY29uc3QgZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXAgPVxuICAgIGV4aXN0aW5nQ2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgbGV0IGNoaWxkU2VnbWVudE1hcCA9IG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuXG4gIGlmICghY2hpbGRTZWdtZW50TWFwIHx8IGNoaWxkU2VnbWVudE1hcCA9PT0gZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXApIHtcbiAgICBjaGlsZFNlZ21lbnRNYXAgPSBuZXcgTWFwKGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwKVxuICAgIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLnNldChwYXJhbGxlbFJvdXRlS2V5LCBjaGlsZFNlZ21lbnRNYXApXG4gIH1cblxuICBjb25zdCBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlID0gZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXA/LmdldChjYWNoZUtleSlcbiAgbGV0IGNoaWxkQ2FjaGVOb2RlID0gY2hpbGRTZWdtZW50TWFwLmdldChjYWNoZUtleSlcblxuICAvLyBJbiBjYXNlIG9mIGxhc3Qgc2VnbWVudCBzdGFydCBvZmYgdGhlIGZldGNoIGF0IHRoaXMgbGV2ZWwgYW5kIGRvbid0IGNvcHkgZnVydGhlciBkb3duLlxuICBpZiAoaXNMYXN0RW50cnkpIHtcbiAgICBpZiAoXG4gICAgICAhY2hpbGRDYWNoZU5vZGUgfHxcbiAgICAgICFjaGlsZENhY2hlTm9kZS5sYXp5RGF0YSB8fFxuICAgICAgY2hpbGRDYWNoZU5vZGUgPT09IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGVcbiAgICApIHtcbiAgICAgIGNoaWxkU2VnbWVudE1hcC5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgbGF6eURhdGE6IG51bGwsXG4gICAgICAgIHJzYzogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgICAgIGhlYWQ6IG51bGwsXG4gICAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoKSxcbiAgICAgICAgbG9hZGluZzogbnVsbCxcbiAgICAgICAgbmF2aWdhdGVkQXQ6IC0xLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWNoaWxkQ2FjaGVOb2RlIHx8ICFleGlzdGluZ0NoaWxkQ2FjaGVOb2RlKSB7XG4gICAgLy8gU3RhcnQgZmV0Y2ggaW4gdGhlIHBsYWNlIHdoZXJlIHRoZSBleGlzdGluZyBjYWNoZSBkb2Vzbid0IGhhdmUgdGhlIGRhdGEgeWV0LlxuICAgIGlmICghY2hpbGRDYWNoZU5vZGUpIHtcbiAgICAgIGNoaWxkU2VnbWVudE1hcC5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgbGF6eURhdGE6IG51bGwsXG4gICAgICAgIHJzYzogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgICAgIGhlYWQ6IG51bGwsXG4gICAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoKSxcbiAgICAgICAgbG9hZGluZzogbnVsbCxcbiAgICAgICAgbmF2aWdhdGVkQXQ6IC0xLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoY2hpbGRDYWNoZU5vZGUgPT09IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUpIHtcbiAgICBjaGlsZENhY2hlTm9kZSA9IHtcbiAgICAgIGxhenlEYXRhOiBjaGlsZENhY2hlTm9kZS5sYXp5RGF0YSxcbiAgICAgIHJzYzogY2hpbGRDYWNoZU5vZGUucnNjLFxuICAgICAgcHJlZmV0Y2hSc2M6IGNoaWxkQ2FjaGVOb2RlLnByZWZldGNoUnNjLFxuICAgICAgaGVhZDogY2hpbGRDYWNoZU5vZGUuaGVhZCxcbiAgICAgIHByZWZldGNoSGVhZDogY2hpbGRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkLFxuICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoY2hpbGRDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMpLFxuICAgICAgbG9hZGluZzogY2hpbGRDYWNoZU5vZGUubG9hZGluZyxcbiAgICB9IGFzIENhY2hlTm9kZVxuICAgIGNoaWxkU2VnbWVudE1hcC5zZXQoY2FjaGVLZXksIGNoaWxkQ2FjaGVOb2RlKVxuICB9XG5cbiAgcmV0dXJuIGNsZWFyQ2FjaGVOb2RlRGF0YUZvclNlZ21lbnRQYXRoKFxuICAgIGNoaWxkQ2FjaGVOb2RlLFxuICAgIGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUsXG4gICAgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoKGZsaWdodFNlZ21lbnRQYXRoKVxuICApXG59XG4iXSwibmFtZXMiOlsiY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGgiLCJuZXdDYWNoZSIsImV4aXN0aW5nQ2FjaGUiLCJmbGlnaHRTZWdtZW50UGF0aCIsImlzTGFzdEVudHJ5IiwibGVuZ3RoIiwicGFyYWxsZWxSb3V0ZUtleSIsInNlZ21lbnQiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwiZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXAiLCJwYXJhbGxlbFJvdXRlcyIsImdldCIsImNoaWxkU2VnbWVudE1hcCIsIk1hcCIsInNldCIsImV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUiLCJjaGlsZENhY2hlTm9kZSIsImxhenlEYXRhIiwicnNjIiwicHJlZmV0Y2hSc2MiLCJoZWFkIiwicHJlZmV0Y2hIZWFkIiwibG9hZGluZyIsIm5hdmlnYXRlZEF0IiwiZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js ***! \*****************************************************************************************/ /***/ ((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 computeChangedPath: function() {\n return computeChangedPath;\n },\n extractPathFromFlightRouterState: function() {\n return extractPathFromFlightRouterState;\n },\n getSelectedParams: function() {\n return getSelectedParams;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ../../../shared/lib/router/utils/interception-routes */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\");\nconst removeLeadingSlash = (segment)=>{\n return segment[0] === '/' ? segment.slice(1) : segment;\n};\nconst segmentToPathname = (segment)=>{\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return '';\n return segment;\n }\n return segment[1];\n};\nfunction normalizeSegments(segments) {\n return segments.reduce((acc, segment)=>{\n segment = removeLeadingSlash(segment);\n if (segment === '' || (0, _segment.isGroupSegment)(segment)) {\n return acc;\n }\n return acc + \"/\" + segment;\n }, '') || '/';\n}\nfunction extractPathFromFlightRouterState(flightRouterState) {\n const segment = Array.isArray(flightRouterState[0]) ? flightRouterState[0][1] : flightRouterState[0];\n if (segment === _segment.DEFAULT_SEGMENT_KEY || _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m))) return undefined;\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) return '';\n const segments = [\n segmentToPathname(segment)\n ];\n var _flightRouterState_;\n const parallelRoutes = (_flightRouterState_ = flightRouterState[1]) != null ? _flightRouterState_ : {};\n const childrenPath = parallelRoutes.children ? extractPathFromFlightRouterState(parallelRoutes.children) : undefined;\n if (childrenPath !== undefined) {\n segments.push(childrenPath);\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)){\n if (key === 'children') continue;\n const childPath = extractPathFromFlightRouterState(value);\n if (childPath !== undefined) {\n segments.push(childPath);\n }\n }\n }\n return normalizeSegments(segments);\n}\nfunction computeChangedPathImpl(treeA, treeB) {\n const [segmentA, parallelRoutesA] = treeA;\n const [segmentB, parallelRoutesB] = treeB;\n const normalizedSegmentA = segmentToPathname(segmentA);\n const normalizedSegmentB = segmentToPathname(segmentB);\n if (_interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m))) {\n return '';\n }\n if (!(0, _matchsegments.matchSegment)(segmentA, segmentB)) {\n var _extractPathFromFlightRouterState;\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return (_extractPathFromFlightRouterState = extractPathFromFlightRouterState(treeB)) != null ? _extractPathFromFlightRouterState : '';\n }\n for(const parallelRouterKey in parallelRoutesA){\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(parallelRoutesA[parallelRouterKey], parallelRoutesB[parallelRouterKey]);\n if (changedPath !== null) {\n return segmentToPathname(segmentB) + \"/\" + changedPath;\n }\n }\n }\n return null;\n}\nfunction computeChangedPath(treeA, treeB) {\n const changedPath = computeChangedPathImpl(treeA, treeB);\n if (changedPath == null || changedPath === '/') {\n return changedPath;\n }\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'));\n}\nfunction getSelectedParams(currentTree, params) {\n if (params === void 0) params = {};\n const parallelRoutes = currentTree[1];\n for (const parallelRoute of Object.values(parallelRoutes)){\n const segment = parallelRoute[0];\n const isDynamicParameter = Array.isArray(segment);\n const segmentValue = isDynamicParameter ? segment[1] : segment;\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) continue;\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll = isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc');\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/');\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1];\n }\n params = getSelectedParams(parallelRoute, params);\n }\n return params;\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=compute-changed-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY29tcHV0ZS1jaGFuZ2VkLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd0hnQkEsa0JBQWtCO2VBQWxCQTs7SUE5RUFDLGdDQUFnQztlQUFoQ0E7O0lBK0ZBQyxpQkFBaUI7ZUFBakJBOzs7Z0RBckkyQjtxQ0FNcEM7MkNBQ3NCO0FBRTdCLE1BQU1DLHFCQUFxQixDQUFDQztJQUMxQixPQUFPQSxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU1BLFFBQVFDLEtBQUssQ0FBQyxLQUFLRDtBQUNqRDtBQUVBLE1BQU1FLG9CQUFvQixDQUFDRjtJQUN6QixJQUFJLE9BQU9BLFlBQVksVUFBVTtRQUMvQix1SEFBdUg7UUFDdkgsZ0hBQWdIO1FBQ2hILElBQUlBLFlBQVksWUFBWSxPQUFPO1FBRW5DLE9BQU9BO0lBQ1Q7SUFFQSxPQUFPQSxPQUFPLENBQUMsRUFBRTtBQUNuQjtBQUVBLFNBQVNHLGtCQUFrQkMsUUFBa0I7SUFDM0MsT0FDRUEsU0FBU0MsTUFBTSxDQUFDLENBQUNDLEtBQUtOO1FBQ3BCQSxVQUFVRCxtQkFBbUJDO1FBQzdCLElBQUlBLFlBQVksTUFBTU8sQ0FBQUEsR0FBQUEsU0FBQUEsY0FBQUEsRUFBZVAsVUFBVTtZQUM3QyxPQUFPTTtRQUNUO1FBRUEsT0FBVUEsTUFBSSxNQUFHTjtJQUNuQixHQUFHLE9BQU87QUFFZDtBQUVPLFNBQVNILGlDQUNkVyxpQkFBb0M7SUFFcEMsTUFBTVIsVUFBVVMsTUFBTUMsT0FBTyxDQUFDRixpQkFBaUIsQ0FBQyxFQUFFLElBQzlDQSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUN2QkEsaUJBQWlCLENBQUMsRUFBRTtJQUV4QixJQUNFUixZQUFZVyxTQUFBQSxtQkFBbUIsSUFDL0JDLG9CQUFBQSwwQkFBMEIsQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLElBQU1k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QyxFQUFFLEtBQUssS0FBRztRQUVqRSxJQUFJOEMsWUFBWTtZQUNkTCxNQUFNLENBQUN6QyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUdBLE9BQU8sQ0FBQyxFQUFFLENBQUN1QyxLQUFLLENBQUM7UUFDeEMsT0FBTyxJQUFJSyxvQkFBb0I7WUFDN0JILE1BQU0sQ0FBQ3pDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBR0EsT0FBTyxDQUFDLEVBQUU7UUFDakM7UUFFQXlDLFNBQVMzQyxrQkFBa0I0QyxlQUFlRDtJQUM1QztJQUVBLE9BQU9BO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY29tcHV0ZS1jaGFuZ2VkLXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgU2VnbWVudCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMnXG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9yZXF1ZXN0L3BhcmFtcydcbmltcG9ydCB7XG4gIGlzR3JvdXBTZWdtZW50LFxuICBERUZBVUxUX1NFR01FTlRfS0VZLFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBtYXRjaFNlZ21lbnQgfSBmcm9tICcuLi9tYXRjaC1zZWdtZW50cydcblxuY29uc3QgcmVtb3ZlTGVhZGluZ1NsYXNoID0gKHNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBzZWdtZW50WzBdID09PSAnLycgPyBzZWdtZW50LnNsaWNlKDEpIDogc2VnbWVudFxufVxuXG5jb25zdCBzZWdtZW50VG9QYXRobmFtZSA9IChzZWdtZW50OiBTZWdtZW50KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgIC8vICdjaGlsZHJlbicgaXMgbm90IGEgdmFsaWQgcGF0aCAtLSBpdCdzIHRlY2huaWNhbGx5IGEgcGFyYWxsZWwgcm91dGUgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSBjdXJyZW50IHNlZ21lbnQncyBwYWdlXG4gICAgLy8gaWYgd2UgZG9uJ3Qgc2tpcCBpdCwgdGhlbiB0aGUgY29tcHV0ZWQgcGF0aG5hbWUgbWlnaHQgYmUgc29tZXRoaW5nIGxpa2UgYC9jaGlsZHJlbmAgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlLlxuICAgIGlmIChzZWdtZW50ID09PSAnY2hpbGRyZW4nKSByZXR1cm4gJydcblxuICAgIHJldHVybiBzZWdtZW50XG4gIH1cblxuICByZXR1cm4gc2VnbWVudFsxXVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTZWdtZW50cyhzZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIHNlZ21lbnRzLnJlZHVjZSgoYWNjLCBzZWdtZW50KSA9PiB7XG4gICAgICBzZWdtZW50ID0gcmVtb3ZlTGVhZGluZ1NsYXNoKHNlZ21lbnQpXG4gICAgICBpZiAoc2VnbWVudCA9PT0gJycgfHwgaXNHcm91cFNlZ21lbnQoc2VnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7YWNjfS8ke3NlZ21lbnR9YFxuICAgIH0sICcnKSB8fCAnLydcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc2VnbWVudCA9IEFycmF5LmlzQXJyYXkoZmxpZ2h0Um91dGVyU3RhdGVbMF0pXG4gICAgPyBmbGlnaHRSb3V0ZXJTdGF0ZVswXVsxXVxuICAgIDogZmxpZ2h0Um91dGVyU3RhdGVbMF1cblxuICBpZiAoXG4gICAgc2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSB8fFxuICAgIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLnNvbWUoKG0pID0+IHNlZ21lbnQuc3RhcnRzV2l0aChtKSlcbiAgKVxuICAgIHJldHVybiB1bmRlZmluZWRcblxuICBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSByZXR1cm4gJydcblxuICBjb25zdCBzZWdtZW50cyA9IFtzZWdtZW50VG9QYXRobmFtZShzZWdtZW50KV1cbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSBmbGlnaHRSb3V0ZXJTdGF0ZVsxXSA/PyB7fVxuXG4gIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHBhcmFsbGVsUm91dGVzLmNoaWxkcmVuXG4gICAgPyBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZShwYXJhbGxlbFJvdXRlcy5jaGlsZHJlbilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIGlmIChjaGlsZHJlblBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIHNlZ21lbnRzLnB1c2goY2hpbGRyZW5QYXRoKVxuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NoaWxkcmVuJykgY29udGludWVcblxuICAgICAgY29uc3QgY2hpbGRQYXRoID0gZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUodmFsdWUpXG5cbiAgICAgIGlmIChjaGlsZFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWdtZW50cy5wdXNoKGNoaWxkUGF0aClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplU2VnbWVudHMoc2VnbWVudHMpXG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDaGFuZ2VkUGF0aEltcGwoXG4gIHRyZWVBOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgdHJlZUI6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgW3NlZ21lbnRBLCBwYXJhbGxlbFJvdXRlc0FdID0gdHJlZUFcbiAgY29uc3QgW3NlZ21lbnRCLCBwYXJhbGxlbFJvdXRlc0JdID0gdHJlZUJcblxuICBjb25zdCBub3JtYWxpemVkU2VnbWVudEEgPSBzZWdtZW50VG9QYXRobmFtZShzZWdtZW50QSlcbiAgY29uc3Qgbm9ybWFsaXplZFNlZ21lbnRCID0gc2VnbWVudFRvUGF0aG5hbWUoc2VnbWVudEIpXG5cbiAgaWYgKFxuICAgIElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTLnNvbWUoXG4gICAgICAobSkgPT5cbiAgICAgICAgbm9ybWFsaXplZFNlZ21lbnRBLnN0YXJ0c1dpdGgobSkgfHwgbm9ybWFsaXplZFNlZ21lbnRCLnN0YXJ0c1dpdGgobSlcbiAgICApXG4gICkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFtYXRjaFNlZ21lbnQoc2VnbWVudEEsIHNlZ21lbnRCKSkge1xuICAgIC8vIG9uY2Ugd2UgZmluZCB3aGVyZSB0aGUgdHJlZSBjaGFuZ2VkLCB3ZSBjb21wdXRlIHRoZSByZXN0IG9mIHRoZSBwYXRoIGJ5IHRyYXZlcnNpbmcgdGhlIHRyZWVcbiAgICByZXR1cm4gZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUodHJlZUIpID8/ICcnXG4gIH1cblxuICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVyS2V5IGluIHBhcmFsbGVsUm91dGVzQSkge1xuICAgIGlmIChwYXJhbGxlbFJvdXRlc0JbcGFyYWxsZWxSb3V0ZXJLZXldKSB7XG4gICAgICBjb25zdCBjaGFuZ2VkUGF0aCA9IGNvbXB1dGVDaGFuZ2VkUGF0aEltcGwoXG4gICAgICAgIHBhcmFsbGVsUm91dGVzQVtwYXJhbGxlbFJvdXRlcktleV0sXG4gICAgICAgIHBhcmFsbGVsUm91dGVzQltwYXJhbGxlbFJvdXRlcktleV1cbiAgICAgIClcbiAgICAgIGlmIChjaGFuZ2VkUGF0aCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYCR7c2VnbWVudFRvUGF0aG5hbWUoc2VnbWVudEIpfS8ke2NoYW5nZWRQYXRofWBcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUNoYW5nZWRQYXRoKFxuICB0cmVlQTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHRyZWVCOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGNoYW5nZWRQYXRoID0gY29tcHV0ZUNoYW5nZWRQYXRoSW1wbCh0cmVlQSwgdHJlZUIpXG5cbiAgaWYgKGNoYW5nZWRQYXRoID09IG51bGwgfHwgY2hhbmdlZFBhdGggPT09ICcvJykge1xuICAgIHJldHVybiBjaGFuZ2VkUGF0aFxuICB9XG5cbiAgLy8gbGlnaHR3ZWlnaHQgbm9ybWFsaXphdGlvbiB0byByZW1vdmUgcm91dGUgZ3JvdXBzXG4gIHJldHVybiBub3JtYWxpemVTZWdtZW50cyhjaGFuZ2VkUGF0aC5zcGxpdCgnLycpKVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGV4dHJhY3RzIGR5bmFtaWMgcGFyYW1ldGVycyBmcm9tIEZsaWdodFJvdXRlclN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRQYXJhbXMoXG4gIGN1cnJlbnRUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGFyYW1zOiBQYXJhbXMgPSB7fVxuKTogUGFyYW1zIHtcbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSBjdXJyZW50VHJlZVsxXVxuXG4gIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZSBvZiBPYmplY3QudmFsdWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgIGNvbnN0IHNlZ21lbnQgPSBwYXJhbGxlbFJvdXRlWzBdXG4gICAgY29uc3QgaXNEeW5hbWljUGFyYW1ldGVyID0gQXJyYXkuaXNBcnJheShzZWdtZW50KVxuICAgIGNvbnN0IHNlZ21lbnRWYWx1ZSA9IGlzRHluYW1pY1BhcmFtZXRlciA/IHNlZ21lbnRbMV0gOiBzZWdtZW50XG4gICAgaWYgKCFzZWdtZW50VmFsdWUgfHwgc2VnbWVudFZhbHVlLnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSkpIGNvbnRpbnVlXG5cbiAgICAvLyBFbnN1cmUgY2F0Y2hBbGwgYW5kIG9wdGlvbmFsIGNhdGNoYWxsIGFyZSB0dXJuZWQgaW50byBhbiBhcnJheVxuICAgIGNvbnN0IGlzQ2F0Y2hBbGwgPVxuICAgICAgaXNEeW5hbWljUGFyYW1ldGVyICYmIChzZWdtZW50WzJdID09PSAnYycgfHwgc2VnbWVudFsyXSA9PT0gJ29jJylcblxuICAgIGlmIChpc0NhdGNoQWxsKSB7XG4gICAgICBwYXJhbXNbc2VnbWVudFswXV0gPSBzZWdtZW50WzFdLnNwbGl0KCcvJylcbiAgICB9IGVsc2UgaWYgKGlzRHluYW1pY1BhcmFtZXRlcikge1xuICAgICAgcGFyYW1zW3NlZ21lbnRbMF1dID0gc2VnbWVudFsxXVxuICAgIH1cblxuICAgIHBhcmFtcyA9IGdldFNlbGVjdGVkUGFyYW1zKHBhcmFsbGVsUm91dGUsIHBhcmFtcylcbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cbiJdLCJuYW1lcyI6WyJjb21wdXRlQ2hhbmdlZFBhdGgiLCJleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSIsImdldFNlbGVjdGVkUGFyYW1zIiwicmVtb3ZlTGVhZGluZ1NsYXNoIiwic2VnbWVudCIsInNsaWNlIiwic2VnbWVudFRvUGF0aG5hbWUiLCJub3JtYWxpemVTZWdtZW50cyIsInNlZ21lbnRzIiwicmVkdWNlIiwiYWNjIiwiaXNHcm91cFNlZ21lbnQiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUyIsInNvbWUiLCJtIiwic3RhcnRzV2l0aCIsInVuZGVmaW5lZCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJwYXJhbGxlbFJvdXRlcyIsImNoaWxkcmVuUGF0aCIsImNoaWxkcmVuIiwicHVzaCIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsImNoaWxkUGF0aCIsImNvbXB1dGVDaGFuZ2VkUGF0aEltcGwiLCJ0cmVlQSIsInRyZWVCIiwic2VnbWVudEEiLCJwYXJhbGxlbFJvdXRlc0EiLCJzZWdtZW50QiIsInBhcmFsbGVsUm91dGVzQiIsIm5vcm1hbGl6ZWRTZWdtZW50QSIsIm5vcm1hbGl6ZWRTZWdtZW50QiIsIm1hdGNoU2VnbWVudCIsInBhcmFsbGVsUm91dGVyS2V5IiwiY2hhbmdlZFBhdGgiLCJzcGxpdCIsImN1cnJlbnRUcmVlIiwicGFyYW1zIiwicGFyYWxsZWxSb3V0ZSIsInZhbHVlcyIsImlzRHluYW1pY1BhcmFtZXRlciIsInNlZ21lbnRWYWx1ZSIsImlzQ2F0Y2hBbGwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createHrefFromUrl\", ({\n enumerable: true,\n get: function() {\n return createHrefFromUrl;\n }\n}));\nfunction createHrefFromUrl(url, includeHash) {\n if (includeHash === void 0) includeHash = true;\n return url.pathname + url.search + (includeHash ? url.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=create-href-from-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLWhyZWYtZnJvbS11cmwuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGtCQUNkQyxHQUE4QyxFQUM5Q0MsV0FBMkI7SUFBM0JBLElBQUFBLGdCQUFBQSxLQUFBQSxHQUFBQSxjQUF1QjtJQUV2QixPQUFPRCxJQUFJRSxRQUFRLEdBQUdGLElBQUlHLE1BQU0sR0FBSUYsQ0FBQUEsY0FBY0QsSUFBSUksSUFBSSxHQUFHLEdBQUM7QUFDaEUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLWhyZWYtZnJvbS11cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhyZWZGcm9tVXJsKFxuICB1cmw6IFBpY2s8VVJMLCAncGF0aG5hbWUnIHwgJ3NlYXJjaCcgfCAnaGFzaCc+LFxuICBpbmNsdWRlSGFzaDogYm9vbGVhbiA9IHRydWVcbik6IHN0cmluZyB7XG4gIHJldHVybiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoICsgKGluY2x1ZGVIYXNoID8gdXJsLmhhc2ggOiAnJylcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVIcmVmRnJvbVVybCIsInVybCIsImluY2x1ZGVIYXNoIiwicGF0aG5hbWUiLCJzZWFyY2giLCJoYXNoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js": /*!************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js ***! \************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createInitialRouterState\", ({\n enumerable: true,\n get: function() {\n return createInitialRouterState;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ./create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _computechangedpath = __webpack_require__(/*! ./compute-changed-path */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ./prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ./refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nfunction createInitialRouterState(param) {\n let { navigatedAt, initialFlightData, initialCanonicalUrlParts, initialParallelRoutes, location, couldBeIntercepted, postponed, prerendered } = param;\n // When initialized on the server, the canonical URL is provided as an array of parts.\n // This is to ensure that when the RSC payload streamed to the client, crawlers don't interpret it\n // as a URL that should be crawled.\n const initialCanonicalUrl = initialCanonicalUrlParts.join('/');\n const normalizedFlightData = (0, _flightdatahelpers.getFlightDataPartsFromPath)(initialFlightData[0]);\n const { tree: initialTree, seedData: initialSeedData, head: initialHead } = normalizedFlightData;\n // For the SSR render, seed data should always be available (we only send back a `null` response\n // in the case of a `loading` segment, pre-PPR.)\n const rsc = initialSeedData == null ? void 0 : initialSeedData[1];\n var _initialSeedData_;\n const loading = (_initialSeedData_ = initialSeedData == null ? void 0 : initialSeedData[3]) != null ? _initialSeedData_ : null;\n const cache = {\n lazyData: null,\n rsc,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n // The cache gets seeded during the first render. `initialParallelRoutes` ensures the cache from the first render is there during the second render.\n parallelRoutes: initialParallelRoutes,\n loading,\n navigatedAt\n };\n const canonicalUrl = // This is safe to do as canonicalUrl can't be rendered, it's only used to control the history updates in the useEffect further down in this file.\n location ? (0, _createhreffromurl.createHrefFromUrl)(location) : initialCanonicalUrl;\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(initialTree, canonicalUrl);\n const prefetchCache = new Map();\n // When the cache hasn't been seeded yet we fill the cache with the head.\n if (initialParallelRoutes === null || initialParallelRoutes.size === 0) {\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, initialTree, initialSeedData, initialHead, undefined);\n }\n var _ref;\n const initialState = {\n tree: initialTree,\n cache,\n prefetchCache,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // First render needs to preserve the previous window.history.state\n // to avoid it being overwritten on navigation back/forward with MPA Navigation.\n preserveCustomHistoryState: true\n },\n focusAndScrollRef: {\n apply: false,\n onlyHashChange: false,\n hashFragment: null,\n segmentPaths: []\n },\n canonicalUrl,\n nextUrl: (_ref = (0, _computechangedpath.extractPathFromFlightRouterState)(initialTree) || (location == null ? void 0 : location.pathname)) != null ? _ref : null\n };\n if (false) {}\n return initialState;\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=create-initial-router-state.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLWluaXRpYWwtcm91dGVyLXN0YXRlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NERBeUJnQkE7OztlQUFBQTs7OytDQXRCa0I7MkRBQ1k7Z0RBQ0c7Z0RBSTFDO2dEQUMrQzs2REFDRzsrQ0FDZDtBQWFwQyxTQUFTQSx5QkFBeUIsS0FTVjtJQVRVLE1BQ3ZDQyxXQUFXLEVBQ1hDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxxQkFBcUIsRUFDckJDLFFBQVEsRUFDUkMsa0JBQWtCLEVBQ2xCQyxTQUFTLEVBQ1RDLFdBQVcsRUFDa0IsR0FUVTtJQVV2QyxzRkFBc0Y7SUFDdEYsa0dBQWtHO0lBQ2xHLG1DQUFtQztJQUNuQyxNQUFNQyxzQkFBc0JOLHlCQUF5Qk8sSUFBSSxDQUFDO0lBRTFELE1BQU1DLHVCQUF1QkMsQ0FBQUEsR0FBQUEsbUJBQUFBLDBCQUFBQSxFQUEyQlYsaUJBQWlCLENBQUMsRUFBRTtJQUM1RSxNQUFNLEVBQ0pXLE1BQU1DLFdBQVcsRUFDakJDLFVBQVVDLGVBQWUsRUFDekJDLE1BQU1DLFdBQVcsRUFDbEIsR0FBR1A7SUFDSixnR0FBZ0c7SUFDaEcsZ0RBQWdEO0lBQ2hELE1BQU1RLE1BQU1ILG1CQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxlQUFpQixDQUFDLEVBQUU7UUFDaEJBO0lBQWhCLE1BQU1JLFVBQVVKLENBQUFBLG9CQUFBQSxtQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBaUIsQ0FBQyxPQUFFLE9BQXBCQSxvQkFBd0I7SUFFeEMsTUFBTUssUUFBbUI7UUFDdkJDLFVBQVU7UUFDVkg7UUFDQUksYUFBYTtRQUNiTixNQUFNO1FBQ05PLGNBQWM7UUFDZCxvSkFBb0o7UUFDcEpDLGdCQUFnQnJCO1FBQ2hCZ0I7UUFDQW5CO0lBQ0Y7SUFFQSxNQUFNeUIsZUFDSiw2RUFBNkUscUVBQ3FFO0lBQ2xKckIsV0FFSXNCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBaUIsRUFBQ3RCLFlBQ2xCSTtJQUVObUIsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q2QsYUFBYVk7SUFFdEQsTUFBTUcsZ0JBQWdCLElBQUlDO0lBRTFCLHlFQUF5RTtJQUN6RSxJQUFJMUIsMEJBQTBCLFFBQVFBLHNCQUFzQjJCLElBQUksS0FBSyxHQUFHO1FBQ3RFQyxDQUFBQSxHQUFBQSwrQkFBQUEsNkJBQUFBLEVBQ0UvQixhQUNBb0IsT0FDQVksV0FDQW5CLGFBQ0FFLGlCQUNBRSxhQUNBZTtJQUVKO1FBc0JLQztJQXBCTCxNQUFNQyxlQUFlO1FBQ25CdEIsTUFBTUM7UUFDTk87UUFDQVE7UUFDQU8sU0FBUztZQUNQQyxhQUFhO1lBQ2JDLGVBQWU7WUFDZixtRUFBbUU7WUFDbkUsZ0ZBQWdGO1lBQ2hGQyw0QkFBNEI7UUFDOUI7UUFDQUMsbUJBQW1CO1lBQ2pCQyxPQUFPO1lBQ1BDLGdCQUFnQjtZQUNoQkMsY0FBYztZQUNkQyxjQUFjLEVBQUU7UUFDbEI7UUFDQWxCO1FBQ0FtQixTQUVFLENBQUNYLE9BQUFBLENBQUFBLEdBQUFBLG9CQUFBQSxnQ0FBZ0MsRUFBQ3BCLGlCQUFnQlQsWUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsU0FBVXlDLFFBQUFBLENBQVEsWUFBbkVaLE9BQ0Q7SUFDSjtJQUVBLElBQUlhLEtBQWtEMUMsRUFBRSxFQXVDdkQ7SUFFRCxPQUFPOEI7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaW5pdGlhbC1yb3V0ZXItc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgRmxpZ2h0RGF0YVBhdGggfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcblxuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuaW1wb3J0IHsgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQgfSBmcm9tICcuL2ZpbGwtbGF6eS1pdGVtcy10aWxsLWxlYWYtd2l0aC1oZWFkJ1xuaW1wb3J0IHsgZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuL2NvbXB1dGUtY2hhbmdlZC1wYXRoJ1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5LFxuICBTVEFUSUNfU1RBTEVUSU1FX01TLFxufSBmcm9tICcuL3ByZWZldGNoLWNhY2hlLXV0aWxzJ1xuaW1wb3J0IHsgUHJlZmV0Y2hLaW5kLCB0eXBlIFByZWZldGNoQ2FjaGVFbnRyeSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzIH0gZnJvbSAnLi9yZWZldGNoLWluYWN0aXZlLXBhcmFsbGVsLXNlZ21lbnRzJ1xuaW1wb3J0IHsgZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGggfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYWxSb3V0ZXJTdGF0ZVBhcmFtZXRlcnMge1xuICBuYXZpZ2F0ZWRBdDogbnVtYmVyXG4gIGluaXRpYWxDYW5vbmljYWxVcmxQYXJ0czogc3RyaW5nW11cbiAgaW5pdGlhbFBhcmFsbGVsUm91dGVzOiBDYWNoZU5vZGVbJ3BhcmFsbGVsUm91dGVzJ11cbiAgaW5pdGlhbEZsaWdodERhdGE6IEZsaWdodERhdGFQYXRoW11cbiAgbG9jYXRpb246IExvY2F0aW9uIHwgbnVsbFxuICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGJvb2xlYW5cbiAgcG9zdHBvbmVkOiBib29sZWFuXG4gIHByZXJlbmRlcmVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0aWFsUm91dGVyU3RhdGUoe1xuICBuYXZpZ2F0ZWRBdCxcbiAgaW5pdGlhbEZsaWdodERhdGEsXG4gIGluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyxcbiAgaW5pdGlhbFBhcmFsbGVsUm91dGVzLFxuICBsb2NhdGlvbixcbiAgY291bGRCZUludGVyY2VwdGVkLFxuICBwb3N0cG9uZWQsXG4gIHByZXJlbmRlcmVkLFxufTogSW5pdGlhbFJvdXRlclN0YXRlUGFyYW1ldGVycykge1xuICAvLyBXaGVuIGluaXRpYWxpemVkIG9uIHRoZSBzZXJ2ZXIsIHRoZSBjYW5vbmljYWwgVVJMIGlzIHByb3ZpZGVkIGFzIGFuIGFycmF5IG9mIHBhcnRzLlxuICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHdoZW4gdGhlIFJTQyBwYXlsb2FkIHN0cmVhbWVkIHRvIHRoZSBjbGllbnQsIGNyYXdsZXJzIGRvbid0IGludGVycHJldCBpdFxuICAvLyBhcyBhIFVSTCB0aGF0IHNob3VsZCBiZSBjcmF3bGVkLlxuICBjb25zdCBpbml0aWFsQ2Fub25pY2FsVXJsID0gaW5pdGlhbENhbm9uaWNhbFVybFBhcnRzLmpvaW4oJy8nKVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhID0gZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgoaW5pdGlhbEZsaWdodERhdGFbMF0pXG4gIGNvbnN0IHtcbiAgICB0cmVlOiBpbml0aWFsVHJlZSxcbiAgICBzZWVkRGF0YTogaW5pdGlhbFNlZWREYXRhLFxuICAgIGhlYWQ6IGluaXRpYWxIZWFkLFxuICB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcbiAgLy8gRm9yIHRoZSBTU1IgcmVuZGVyLCBzZWVkIGRhdGEgc2hvdWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgKHdlIG9ubHkgc2VuZCBiYWNrIGEgYG51bGxgIHJlc3BvbnNlXG4gIC8vIGluIHRoZSBjYXNlIG9mIGEgYGxvYWRpbmdgIHNlZ21lbnQsIHByZS1QUFIuKVxuICBjb25zdCByc2MgPSBpbml0aWFsU2VlZERhdGE/LlsxXVxuICBjb25zdCBsb2FkaW5nID0gaW5pdGlhbFNlZWREYXRhPy5bM10gPz8gbnVsbFxuXG4gIGNvbnN0IGNhY2hlOiBDYWNoZU5vZGUgPSB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcnNjLFxuICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgIGhlYWQ6IG51bGwsXG4gICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgIC8vIFRoZSBjYWNoZSBnZXRzIHNlZWRlZCBkdXJpbmcgdGhlIGZpcnN0IHJlbmRlci4gYGluaXRpYWxQYXJhbGxlbFJvdXRlc2AgZW5zdXJlcyB0aGUgY2FjaGUgZnJvbSB0aGUgZmlyc3QgcmVuZGVyIGlzIHRoZXJlIGR1cmluZyB0aGUgc2Vjb25kIHJlbmRlci5cbiAgICBwYXJhbGxlbFJvdXRlczogaW5pdGlhbFBhcmFsbGVsUm91dGVzLFxuICAgIGxvYWRpbmcsXG4gICAgbmF2aWdhdGVkQXQsXG4gIH1cblxuICBjb25zdCBjYW5vbmljYWxVcmwgPVxuICAgIC8vIGxvY2F0aW9uLmhyZWYgaXMgcmVhZCBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgY2Fub25pY2FsVXJsIGluIHRoZSBicm93c2VyXG4gICAgLy8gVGhpcyBpcyBzYWZlIHRvIGRvIGFzIGNhbm9uaWNhbFVybCBjYW4ndCBiZSByZW5kZXJlZCwgaXQncyBvbmx5IHVzZWQgdG8gY29udHJvbCB0aGUgaGlzdG9yeSB1cGRhdGVzIGluIHRoZSB1c2VFZmZlY3QgZnVydGhlciBkb3duIGluIHRoaXMgZmlsZS5cbiAgICBsb2NhdGlvblxuICAgICAgPyAvLyB3aW5kb3cubG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIFVSTCBidXQgaGFzIGFsbCB0aGUgZmllbGRzIGNyZWF0ZUhyZWZGcm9tVXJsIG5lZWRzLlxuICAgICAgICBjcmVhdGVIcmVmRnJvbVVybChsb2NhdGlvbilcbiAgICAgIDogaW5pdGlhbENhbm9uaWNhbFVybFxuXG4gIGFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMoaW5pdGlhbFRyZWUsIGNhbm9uaWNhbFVybClcblxuICBjb25zdCBwcmVmZXRjaENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFByZWZldGNoQ2FjaGVFbnRyeT4oKVxuXG4gIC8vIFdoZW4gdGhlIGNhY2hlIGhhc24ndCBiZWVuIHNlZWRlZCB5ZXQgd2UgZmlsbCB0aGUgY2FjaGUgd2l0aCB0aGUgaGVhZC5cbiAgaWYgKGluaXRpYWxQYXJhbGxlbFJvdXRlcyA9PT0gbnVsbCB8fCBpbml0aWFsUGFyYWxsZWxSb3V0ZXMuc2l6ZSA9PT0gMCkge1xuICAgIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICBjYWNoZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGluaXRpYWxUcmVlLFxuICAgICAgaW5pdGlhbFNlZWREYXRhLFxuICAgICAgaW5pdGlhbEhlYWQsXG4gICAgICB1bmRlZmluZWRcbiAgICApXG4gIH1cblxuICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgdHJlZTogaW5pdGlhbFRyZWUsXG4gICAgY2FjaGUsXG4gICAgcHJlZmV0Y2hDYWNoZSxcbiAgICBwdXNoUmVmOiB7XG4gICAgICBwZW5kaW5nUHVzaDogZmFsc2UsXG4gICAgICBtcGFOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIC8vIEZpcnN0IHJlbmRlciBuZWVkcyB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgd2luZG93Lmhpc3Rvcnkuc3RhdGVcbiAgICAgIC8vIHRvIGF2b2lkIGl0IGJlaW5nIG92ZXJ3cml0dGVuIG9uIG5hdmlnYXRpb24gYmFjay9mb3J3YXJkIHdpdGggTVBBIE5hdmlnYXRpb24uXG4gICAgICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIGZvY3VzQW5kU2Nyb2xsUmVmOiB7XG4gICAgICBhcHBseTogZmFsc2UsXG4gICAgICBvbmx5SGFzaENoYW5nZTogZmFsc2UsXG4gICAgICBoYXNoRnJhZ21lbnQ6IG51bGwsXG4gICAgICBzZWdtZW50UGF0aHM6IFtdLFxuICAgIH0sXG4gICAgY2Fub25pY2FsVXJsLFxuICAgIG5leHRVcmw6XG4gICAgICAvLyB0aGUgfHwgb3BlcmF0b3IgaXMgaW50ZW50aW9uYWwsIHRoZSBwYXRobmFtZSBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nXG4gICAgICAoZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUoaW5pdGlhbFRyZWUpIHx8IGxvY2F0aW9uPy5wYXRobmFtZSkgPz9cbiAgICAgIG51bGwsXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCcgJiYgbG9jYXRpb24pIHtcbiAgICAvLyBTZWVkIHRoZSBwcmVmZXRjaCBjYWNoZSB3aXRoIHRoaXMgcGFnZSdzIGRhdGEuXG4gICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IG5lZWRsZXNzbHkgcmUtcHJlZmV0Y2hpbmcgYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSByZXVzYWJsZSxcbiAgICAvLyBhbmQgd2lsbCBhdm9pZCB0cmlnZ2VyaW5nIGEgbG9hZGluZyBzdGF0ZS9kYXRhIGZldGNoIHN0YWxsIHdoZW4gbmF2aWdhdGluZyBiYWNrIHRvIHRoZSBwYWdlLlxuICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBkbyB0aGlzIGluIGRldmVsb3BtZW50IGJlY2F1c2UgbGlua3MgYXJlbid0IHByZWZldGNoZWQgaW4gZGV2ZWxvcG1lbnRcbiAgICAvLyBzbyBoYXZpbmcgYSBtaXNtYXRjaCBiZXR3ZWVuIHByZWZldGNoL25vIHByZWZldGNoIHByb3ZpZGVzIGluY29uc2lzdGVudCBiZWhhdmlvciBiYXNlZCBvbiB3aGljaCBwYWdlXG4gICAgLy8gd2FzIGxvYWRlZCBmaXJzdC5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKFxuICAgICAgYCR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9YCxcbiAgICAgIGxvY2F0aW9uLm9yaWdpblxuICAgIClcblxuICAgIGNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSh7XG4gICAgICB1cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGZsaWdodERhdGE6IFtub3JtYWxpemVkRmxpZ2h0RGF0YV0sXG4gICAgICAgIGNhbm9uaWNhbFVybDogdW5kZWZpbmVkLFxuICAgICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQ6ICEhY291bGRCZUludGVyY2VwdGVkLFxuICAgICAgICBwcmVyZW5kZXJlZCxcbiAgICAgICAgcG9zdHBvbmVkLFxuICAgICAgICAvLyBUT0RPOiBUaGUgaW5pdGlhbCBSU0MgcGF5bG9hZCBpbmNsdWRlcyBib3RoIHN0YXRpYyBhbmQgZHluYW1pYyBkYXRhXG4gICAgICAgIC8vIGluIHRoZSBzYW1lIHJlc3BvbnNlLCBldmVuIGlmIFBQUiBpcyBlbmFibGVkLiBTbyBpZiB0aGVyZSdzIGFueVxuICAgICAgICAvLyBkeW5hbWljIGRhdGEgYXQgYWxsLCB3ZSBjYW4ndCBzZXQgYSBzdGFsZSB0aW1lLiBJbiB0aGUgZnV0dXJlIHdlIG1heVxuICAgICAgICAvLyBhZGQgYSB3YXkgdG8gc3BsaXQgYSBzaW5nbGUgRmxpZ2h0IHN0cmVhbSBpbnRvIHN0YXRpYyBhbmQgZHluYW1pY1xuICAgICAgICAvLyBwYXJ0cy4gQnV0IGluIHRoZSBtZWFudGltZSB3ZSBzaG91bGQgYXQgbGVhc3QgbWFrZSB0aGlzIHdvcmsgZm9yXG4gICAgICAgIC8vIGZ1bGx5IHN0YXRpYyBwYWdlcy5cbiAgICAgICAgc3RhbGVUaW1lOlxuICAgICAgICAgIC8vIEluIHRoZSBvbGQgcm91dGVyLCB0aGVyZSB3YXMgb25seSBhIHNpbmdsZSBjb25maWd1cmFibGUgc3RhbGVUaW1lIChleHBlcmltZW50YWwuc3RhbGVUaW1lcylcbiAgICAgICAgICAvLyBBcyBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgdGhpcyB3aWxsIG9ubHkgc2V0IHRoZSBpbml0aWFsIHN0YWxlVGltZSB0byB0aGUgY29uZmlndXJlZCB2YWx1ZVxuICAgICAgICAgIC8vIGlmIHdlJ3JlIG5vdCBsZXZlcmFnaW5nIHRoZSBzZWdtZW50IGNhY2hlLCB3aGljaCBoYXMgaXRzIG93biBwcmVmZXRjaGluZyBzZW1hbnRpY3MuXG4gICAgICAgICAgcHJlcmVuZGVyZWQgJiYgIXByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgICAgICAgICAgPyBTVEFUSUNfU1RBTEVUSU1FX01TXG4gICAgICAgICAgICA6IC0xLFxuICAgICAgfSxcbiAgICAgIHRyZWU6IGluaXRpYWxTdGF0ZS50cmVlLFxuICAgICAgcHJlZmV0Y2hDYWNoZTogaW5pdGlhbFN0YXRlLnByZWZldGNoQ2FjaGUsXG4gICAgICBuZXh0VXJsOiBpbml0aWFsU3RhdGUubmV4dFVybCxcbiAgICAgIGtpbmQ6IHByZXJlbmRlcmVkID8gUHJlZmV0Y2hLaW5kLkZVTEwgOiBQcmVmZXRjaEtpbmQuQVVUTyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSIsIm5hdmlnYXRlZEF0IiwiaW5pdGlhbEZsaWdodERhdGEiLCJpbml0aWFsQ2Fub25pY2FsVXJsUGFydHMiLCJpbml0aWFsUGFyYWxsZWxSb3V0ZXMiLCJsb2NhdGlvbiIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInBvc3Rwb25lZCIsInByZXJlbmRlcmVkIiwiaW5pdGlhbENhbm9uaWNhbFVybCIsImpvaW4iLCJub3JtYWxpemVkRmxpZ2h0RGF0YSIsImdldEZsaWdodERhdGFQYXJ0c0Zyb21QYXRoIiwidHJlZSIsImluaXRpYWxUcmVlIiwic2VlZERhdGEiLCJpbml0aWFsU2VlZERhdGEiLCJoZWFkIiwiaW5pdGlhbEhlYWQiLCJyc2MiLCJsb2FkaW5nIiwiY2FjaGUiLCJsYXp5RGF0YSIsInByZWZldGNoUnNjIiwicHJlZmV0Y2hIZWFkIiwicGFyYWxsZWxSb3V0ZXMiLCJjYW5vbmljYWxVcmwiLCJjcmVhdGVIcmVmRnJvbVVybCIsImFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMiLCJwcmVmZXRjaENhY2hlIiwiTWFwIiwic2l6ZSIsImZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIiwidW5kZWZpbmVkIiwiZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJtcGFOYXZpZ2F0aW9uIiwicHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUiLCJmb2N1c0FuZFNjcm9sbFJlZiIsImFwcGx5Iiwib25seUhhc2hDaGFuZ2UiLCJoYXNoRnJhZ21lbnQiLCJzZWdtZW50UGF0aHMiLCJuZXh0VXJsIiwicGF0aG5hbWUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ1cmwiLCJVUkwiLCJzZWFyY2giLCJvcmlnaW4iLCJjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnkiLCJkYXRhIiwiZmxpZ2h0RGF0YSIsInN0YWxlVGltZSIsIl9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSIsIlNUQVRJQ19TVEFMRVRJTUVfTVMiLCJraW5kIiwiUHJlZmV0Y2hLaW5kIiwiRlVMTCIsIkFVVE8iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js ***! \********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createRouterCacheKey\", ({\n enumerable: true,\n get: function() {\n return createRouterCacheKey;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction createRouterCacheKey(segment, withoutSearchParameters) {\n if (withoutSearchParameters === void 0) withoutSearchParameters = false;\n // if the segment is an array, it means it's a dynamic segment\n // for example, ['lang', 'en', 'd']. We need to convert it to a string to store it as a cache node key.\n if (Array.isArray(segment)) {\n return segment[0] + \"|\" + segment[1] + \"|\" + segment[2];\n }\n // Page segments might have search parameters, ie __PAGE__?foo=bar\n // When `withoutSearchParameters` is true, we only want to return the page segment\n if (withoutSearchParameters && segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\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=create-router-cache-key.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLXJvdXRlci1jYWNoZS1rZXkuanMiLCJtYXBwaW5ncyI6Ijs7Ozt3REFHZ0JBOzs7ZUFBQUE7OztxQ0FGaUI7QUFFMUIsU0FBU0EscUJBQ2RDLE9BQWdCLEVBQ2hCQyx1QkFBd0M7SUFBeENBLElBQUFBLDRCQUFBQSxLQUFBQSxHQUFBQSwwQkFBbUM7SUFFbkMsOERBQThEO0lBQzlELHVHQUF1RztJQUN2RyxJQUFJQyxNQUFNQyxPQUFPLENBQUNILFVBQVU7UUFDMUIsT0FBVUEsT0FBTyxDQUFDLEVBQUUsR0FBQyxNQUFHQSxPQUFPLENBQUMsRUFBRSxHQUFDLE1BQUdBLE9BQU8sQ0FBQyxFQUFFO0lBQ2xEO0lBRUEsa0VBQWtFO0lBQ2xFLGtGQUFrRjtJQUNsRixJQUFJQywyQkFBMkJELFFBQVFJLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUc7UUFDbkUsT0FBT0EsU0FBQUEsZ0JBQWdCO0lBQ3pCO0lBRUEsT0FBT0w7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jcmVhdGUtcm91dGVyLWNhY2hlLWtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IFBBR0VfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZXJDYWNoZUtleShcbiAgc2VnbWVudDogU2VnbWVudCxcbiAgd2l0aG91dFNlYXJjaFBhcmFtZXRlcnM6IGJvb2xlYW4gPSBmYWxzZVxuKSB7XG4gIC8vIGlmIHRoZSBzZWdtZW50IGlzIGFuIGFycmF5LCBpdCBtZWFucyBpdCdzIGEgZHluYW1pYyBzZWdtZW50XG4gIC8vIGZvciBleGFtcGxlLCBbJ2xhbmcnLCAnZW4nLCAnZCddLiBXZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcgdG8gc3RvcmUgaXQgYXMgYSBjYWNoZSBub2RlIGtleS5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VnbWVudCkpIHtcbiAgICByZXR1cm4gYCR7c2VnbWVudFswXX18JHtzZWdtZW50WzFdfXwke3NlZ21lbnRbMl19YFxuICB9XG5cbiAgLy8gUGFnZSBzZWdtZW50cyBtaWdodCBoYXZlIHNlYXJjaCBwYXJhbWV0ZXJzLCBpZSBfX1BBR0VfXz9mb289YmFyXG4gIC8vIFdoZW4gYHdpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzYCBpcyB0cnVlLCB3ZSBvbmx5IHdhbnQgdG8gcmV0dXJuIHRoZSBwYWdlIHNlZ21lbnRcbiAgaWYgKHdpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzICYmIHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkge1xuICAgIHJldHVybiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cblxuICByZXR1cm4gc2VnbWVudFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJvdXRlckNhY2hlS2V5Iiwic2VnbWVudCIsIndpdGhvdXRTZWFyY2hQYXJhbWV0ZXJzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js": /*!******************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js ***! \******************************************************************************************/ /***/ ((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 createFetch: function() {\n return createFetch;\n },\n createFromNextReadableStream: function() {\n return createFromNextReadableStream;\n },\n fetchServerResponse: function() {\n return fetchServerResponse;\n }\n});\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _appcallserver = __webpack_require__(/*! ../../app-call-server */ \"(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../app-find-source-map-url */ \"(app-pages-browser)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _appbuildid = __webpack_require__(/*! ../../app-build-id */ \"(app-pages-browser)/./node_modules/next/dist/client/app-build-id.js\");\nconst _setcachebustingsearchparam = __webpack_require__(/*! ./set-cache-busting-search-param */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(app-pages-browser)/./node_modules/next/dist/client/route-params.js\");\nconst createFromReadableStream = _client.createFromReadableStream;\nfunction doMpaNavigation(url) {\n return {\n flightData: (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(url, location.origin)).toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n}\nlet abortController = new AbortController();\nif (true) {\n // Abort any in-flight requests when the page is unloaded, e.g. due to\n // reloading the page or performing hard navigations. This allows us to ignore\n // what would otherwise be a thrown TypeError when the browser cancels the\n // requests.\n window.addEventListener('pagehide', ()=>{\n abortController.abort();\n });\n // Use a fresh AbortController instance on pageshow, e.g. when navigating back\n // and the JavaScript execution context is restored by the browser.\n window.addEventListener('pageshow', ()=>{\n abortController = new AbortController();\n });\n}\nasync function fetchServerResponse(url, options) {\n const { flightRouterState, nextUrl, prefetchKind } = options;\n const headers = {\n // Enable flight response\n [_approuterheaders.RSC_HEADER]: '1',\n // Provide the current router state\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(flightRouterState, options.isHmrRefresh)\n };\n /**\n * Three cases:\n * - `prefetchKind` is `undefined`, it means it's a normal navigation, so we want to prefetch the page data fully\n * - `prefetchKind` is `full` - we want to prefetch the whole page so same as above\n * - `prefetchKind` is `auto` - if the page is dynamic, prefetch the page data partially, if static prefetch the page data fully\n */ if (prefetchKind === _routerreducertypes.PrefetchKind.AUTO) {\n headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '1';\n }\n if ( true && options.isHmrRefresh) {\n headers[_approuterheaders.NEXT_HMR_REFRESH_HEADER] = '1';\n }\n if (nextUrl) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n try {\n var _res_headers_get;\n // When creating a \"temporary\" prefetch (the \"on-demand\" prefetch that gets created on navigation, if one doesn't exist)\n // we send the request with a \"high\" priority as it's in response to a user interaction that could be blocking a transition.\n // Otherwise, all other prefetches are sent with a \"low\" priority.\n // We use \"auto\" for in all other cases to match the existing default, as this function is shared outside of prefetching.\n const fetchPriority = prefetchKind ? prefetchKind === _routerreducertypes.PrefetchKind.TEMPORARY ? 'high' : 'low' : 'auto';\n if (false) {}\n const res = await createFetch(url, headers, fetchPriority, abortController.signal);\n const responseUrl = (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(res.url));\n const canonicalUrl = res.redirected ? responseUrl : undefined;\n const contentType = res.headers.get('content-type') || '';\n const interception = !!((_res_headers_get = res.headers.get('vary')) == null ? void 0 : _res_headers_get.includes(_approuterheaders.NEXT_URL));\n const postponed = !!res.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER);\n const staleTimeHeaderSeconds = res.headers.get(_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER);\n const staleTime = staleTimeHeaderSeconds !== null ? parseInt(staleTimeHeaderSeconds, 10) * 1000 : -1;\n let isFlightResponse = contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);\n if (false) {}\n // If fetch returns something different than flight response handle it like a mpa navigation\n // If the fetch was not 200, we also handle it like a mpa navigation\n if (!isFlightResponse || !res.ok || !res.body) {\n // in case the original URL came with a hash, preserve it before redirecting to the new URL\n if (url.hash) {\n responseUrl.hash = url.hash;\n }\n return doMpaNavigation(responseUrl.toString());\n }\n // We may navigate to a page that requires a different Webpack runtime.\n // In prod, every page will have the same Webpack runtime.\n // In dev, the Webpack runtime is minimal for each page.\n // We need to ensure the Webpack runtime is updated before executing client-side JS of the new page.\n if (true) {\n await (__webpack_require__(/*! ../../dev/hot-reloader/app/hot-reloader-app */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\").waitForWebpackRuntimeHotUpdate)();\n }\n // Handle the `fetch` readable stream that can be unwrapped by `React.use`.\n const flightStream = postponed ? createUnclosingPrefetchStream(res.body) : res.body;\n const response = await createFromNextReadableStream(flightStream);\n if ((0, _appbuildid.getAppBuildId)() !== response.b) {\n return doMpaNavigation(res.url);\n }\n return {\n flightData: (0, _flightdatahelpers.normalizeFlightData)(response.f),\n canonicalUrl: canonicalUrl,\n couldBeIntercepted: interception,\n prerendered: response.S,\n postponed,\n staleTime\n };\n } catch (err) {\n if (!abortController.signal.aborted) {\n console.error(\"Failed to fetch RSC payload for \" + url + \". Falling back to browser navigation.\", err);\n }\n // If fetch fails handle it like a mpa navigation\n // TODO-APP: Add a test for the case where a CORS request fails, e.g. external url redirect coming from the response.\n // See https://github.com/vercel/next.js/issues/43605#issuecomment-1451617521 for a reproduction.\n return {\n flightData: url.toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n }\n}\nasync function createFetch(url, headers, fetchPriority, signal) {\n // TODO: In output: \"export\" mode, the headers do nothing. Omit them (and the\n // cache busting search param) from the request so they're\n // maximally cacheable.\n if (false) {}\n if (false) {}\n const fetchOptions = {\n // Backwards compat for older browsers. `same-origin` is the default in modern browsers.\n credentials: 'same-origin',\n headers,\n priority: fetchPriority || undefined,\n signal\n };\n // `fetchUrl` is slightly different from `url` because we add a cache-busting\n // search param to it. This should not leak outside of this function, so we\n // track them separately.\n let fetchUrl = new URL(url);\n (0, _setcachebustingsearchparam.setCacheBustingSearchParam)(fetchUrl, headers);\n let browserResponse = await fetch(fetchUrl, fetchOptions);\n // If the server responds with a redirect (e.g. 307), and the redirected\n // location does not contain the cache busting search param set in the\n // original request, the response is likely invalid — when following the\n // redirect, the browser forwards the request headers, but since the cache\n // busting search param is missing, the server will reject the request due to\n // a mismatch.\n //\n // Ideally, we would be able to intercept the redirect response and perform it\n // manually, instead of letting the browser automatically follow it, but this\n // is not allowed by the fetch API.\n //\n // So instead, we must \"replay\" the redirect by fetching the new location\n // again, but this time we'll append the cache busting search param to prevent\n // a mismatch.\n //\n // TODO: We can optimize Next.js's built-in middleware APIs by returning a\n // custom status code, to prevent the browser from automatically following it.\n //\n // This does not affect Server Action-based redirects; those are encoded\n // differently, as part of the Flight body. It only affects redirects that\n // occur in a middleware or a third-party proxy.\n let redirected = browserResponse.redirected;\n if (false) {}\n // Remove the cache busting search param from the response URL, to prevent it\n // from leaking outside of this function.\n const responseUrl = new URL(browserResponse.url, fetchUrl);\n responseUrl.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n const rscResponse = {\n url: responseUrl.href,\n // This is true if any redirects occurred, either automatically by the\n // browser, or manually by us. So it's different from\n // `browserResponse.redirected`, which only tells us whether the browser\n // followed a redirect, and only for the last response in the chain.\n redirected,\n // These can be copied from the last browser response we received. We\n // intentionally only expose the subset of fields that are actually used\n // elsewhere in the codebase.\n ok: browserResponse.ok,\n headers: browserResponse.headers,\n body: browserResponse.body,\n status: browserResponse.status\n };\n return rscResponse;\n}\nfunction createFromNextReadableStream(flightStream) {\n return createFromReadableStream(flightStream, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n });\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\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=fetch-server-response.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmV0Y2gtc2VydmVyLXJlc3BvbnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJRc0JBLFdBQVc7ZUFBWEE7O0lBcUhOQyw0QkFBNEI7ZUFBNUJBOztJQTNSTUMsbUJBQW1CO2VBQW5CQTs7O29DQWpHc0Q7OENBa0JyRTsyQ0FDb0I7aURBQ007Z0RBQ0o7K0NBS3RCO3dDQUN1Qjt3REFDYTt5Q0FDQztBQUU1QyxNQUFNQywyQkFDSkMsUUFBQUEsd0JBQStCO0FBOEJqQyxTQUFTQyxnQkFBZ0JDLEdBQVc7SUFDbEMsT0FBTztRQUNMQyxZQUFZQyxDQUFBQSxHQUFBQSxhQUFBQSwyQkFBQUEsRUFDVixJQUFJQyxJQUFJSCxLQUFLSSxTQUFTQyxNQUFNLEdBQzVCQyxRQUFRO1FBQ1ZDLGNBQWNDO1FBQ2RDLG9CQUFvQjtRQUNwQkMsYUFBYTtRQUNiQyxXQUFXO1FBQ1hDLFdBQVcsQ0FBQztJQUNkO0FBQ0Y7QUFFQSxJQUFJQyxrQkFBa0IsSUFBSUM7QUFFMUIsSUFBSSxJQUE2QixFQUFFO0lBQ2pDLHNFQUFzRTtJQUN0RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLFlBQVk7SUFDWkMsT0FBT0MsZ0JBQWdCLENBQUMsWUFBWTtRQUNsQ0gsZ0JBQWdCSSxLQUFLO0lBQ3ZCO0lBRUEsOEVBQThFO0lBQzlFLG1FQUFtRTtJQUNuRUYsT0FBT0MsZ0JBQWdCLENBQUMsWUFBWTtRQUNsQ0gsa0JBQWtCLElBQUlDO0lBQ3hCO0FBQ0Y7QUFNTyxlQUFlbEIsb0JBQ3BCSSxHQUFRLEVBQ1JrQixPQUFtQztJQUVuQyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRSxHQUFHSDtJQUVyRCxNQUFNSSxVQUEwQjtRQUM5Qix5QkFBeUI7UUFDekIsQ0FBQ0Msa0JBQUFBLFVBQVUsQ0FBQyxFQUFFO1FB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LEtBQU07Z0JBQ1gsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHLE1BQU1OLE9BQU9PLElBQUk7Z0JBQ3pDLElBQUksQ0FBQ0YsTUFBTTtvQkFDVCxtRUFBbUU7b0JBQ25FLG1CQUFtQjtvQkFDbkJELFdBQVdJLE9BQU8sQ0FBQ0Y7b0JBQ25CO2dCQUNGO2dCQUNBLHFFQUFxRTtnQkFDckUscUJBQXFCO2dCQUNyQjtZQUNGO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLy8gVE9ETzogRXhwbGljaXRseSBpbXBvcnQgZnJvbSBjbGllbnQuYnJvd3NlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIGFzIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIgfSBmcm9tICdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBOYXZpZ2F0aW9uRmxpZ2h0UmVzcG9uc2UsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIH0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHtcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9SU0NfVU5JT05fUVVFUlksXG4gIE5FWFRfVVJMLFxuICBSU0NfSEVBREVSLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfRElEX1BPU1RQT05FX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIsXG59IGZyb20gJy4uL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB7IGNhbGxTZXJ2ZXIgfSBmcm9tICcuLi8uLi9hcHAtY2FsbC1zZXJ2ZXInXG5pbXBvcnQgeyBmaW5kU291cmNlTWFwVVJMIH0gZnJvbSAnLi4vLi4vYXBwLWZpbmQtc291cmNlLW1hcC11cmwnXG5pbXBvcnQgeyBQcmVmZXRjaEtpbmQgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGdldEFwcEJ1aWxkSWQgfSBmcm9tICcuLi8uLi9hcHAtYnVpbGQtaWQnXG5pbXBvcnQgeyBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSB9IGZyb20gJy4vc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtJ1xuaW1wb3J0IHsgdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIH0gZnJvbSAnLi4vLi4vcm91dGUtcGFyYW1zJ1xuXG5jb25zdCBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0gPVxuICBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIGFzICh0eXBlb2YgaW1wb3J0KCdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50LmJyb3dzZXInKSlbJ2NyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSddXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hTZXJ2ZXJSZXNwb25zZU9wdGlvbnMge1xuICByZWFkb25seSBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgcmVhZG9ubHkgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuICByZWFkb25seSBwcmVmZXRjaEtpbmQ/OiBQcmVmZXRjaEtpbmRcbiAgcmVhZG9ubHkgaXNIbXJSZWZyZXNoPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0ID0ge1xuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nXG4gIGNhbm9uaWNhbFVybDogVVJMIHwgdW5kZWZpbmVkXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuICBwcmVyZW5kZXJlZDogYm9vbGVhblxuICBwb3N0cG9uZWQ6IGJvb2xlYW5cbiAgc3RhbGVUaW1lOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7XG4gIFtSU0NfSEVBREVSXT86ICcxJ1xuICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdPzogc3RyaW5nXG4gIFtORVhUX1VSTF0/OiBzdHJpbmdcbiAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0/OiAnMScgfCAnMidcbiAgW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXT86IHN0cmluZ1xuICAneC1kZXBsb3ltZW50LWlkJz86IHN0cmluZ1xuICBbTkVYVF9ITVJfUkVGUkVTSF9IRUFERVJdPzogJzEnXG4gIC8vIEEgaGVhZGVyIHRoYXQgaXMgb25seSBhZGRlZCBpbiB0ZXN0IG1vZGUgdG8gYXNzZXJ0IG9uIGZldGNoIHByaW9yaXR5XG4gICdOZXh0LVRlc3QtRmV0Y2gtUHJpb3JpdHknPzogUmVxdWVzdEluaXRbJ3ByaW9yaXR5J11cbn1cblxuZnVuY3Rpb24gZG9NcGFOYXZpZ2F0aW9uKHVybDogc3RyaW5nKTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB7XG4gIHJldHVybiB7XG4gICAgZmxpZ2h0RGF0YTogdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKFxuICAgICAgbmV3IFVSTCh1cmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgICApLnRvU3RyaW5nKCksXG4gICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgY291bGRCZUludGVyY2VwdGVkOiBmYWxzZSxcbiAgICBwcmVyZW5kZXJlZDogZmFsc2UsXG4gICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICBzdGFsZVRpbWU6IC0xLFxuICB9XG59XG5cbmxldCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIEFib3J0IGFueSBpbi1mbGlnaHQgcmVxdWVzdHMgd2hlbiB0aGUgcGFnZSBpcyB1bmxvYWRlZCwgZS5nLiBkdWUgdG9cbiAgLy8gcmVsb2FkaW5nIHRoZSBwYWdlIG9yIHBlcmZvcm1pbmcgaGFyZCBuYXZpZ2F0aW9ucy4gVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlXG4gIC8vIHdoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGEgdGhyb3duIFR5cGVFcnJvciB3aGVuIHRoZSBicm93c2VyIGNhbmNlbHMgdGhlXG4gIC8vIHJlcXVlc3RzLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyLmFib3J0KClcbiAgfSlcblxuICAvLyBVc2UgYSBmcmVzaCBBYm9ydENvbnRyb2xsZXIgaW5zdGFuY2Ugb24gcGFnZXNob3csIGUuZy4gd2hlbiBuYXZpZ2F0aW5nIGJhY2tcbiAgLy8gYW5kIHRoZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlc3RvcmVkIGJ5IHRoZSBicm93c2VyLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gIH0pXG59XG5cbi8qKlxuICogRmV0Y2ggdGhlIGZsaWdodCBkYXRhIGZvciB0aGUgcHJvdmlkZWQgdXJsLiBUYWtlcyBpbiB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGVcbiAqIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlciBzZXJ2ZXItc2lkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2VydmVyUmVzcG9uc2UoXG4gIHVybDogVVJMLFxuICBvcHRpb25zOiBGZXRjaFNlcnZlclJlc3BvbnNlT3B0aW9uc1xuKTogUHJvbWlzZTxGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0PiB7XG4gIGNvbnN0IHsgZmxpZ2h0Um91dGVyU3RhdGUsIG5leHRVcmwsIHByZWZldGNoS2luZCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge1xuICAgIC8vIEVuYWJsZSBmbGlnaHQgcmVzcG9uc2VcbiAgICBbUlNDX0hFQURFUl06ICcxJyxcbiAgICAvLyBQcm92aWRlIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZVxuICAgIFtORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06IHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgIG9wdGlvbnMuaXNIbXJSZWZyZXNoXG4gICAgKSxcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlZSBjYXNlczpcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgdW5kZWZpbmVkYCwgaXQgbWVhbnMgaXQncyBhIG5vcm1hbCBuYXZpZ2F0aW9uLCBzbyB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgZnVsbGAgLSB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSB3aG9sZSBwYWdlIHNvIHNhbWUgYXMgYWJvdmVcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgYXV0b2AgLSBpZiB0aGUgcGFnZSBpcyBkeW5hbWljLCBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIHBhcnRpYWxseSwgaWYgc3RhdGljIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICovXG4gIGlmIChwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5BVVRPKSB7XG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdID0gJzEnXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgb3B0aW9ucy5pc0htclJlZnJlc2gpIHtcbiAgICBoZWFkZXJzW05FWFRfSE1SX1JFRlJFU0hfSEVBREVSXSA9ICcxJ1xuICB9XG5cbiAgaWYgKG5leHRVcmwpIHtcbiAgICBoZWFkZXJzW05FWFRfVVJMXSA9IG5leHRVcmxcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gV2hlbiBjcmVhdGluZyBhIFwidGVtcG9yYXJ5XCIgcHJlZmV0Y2ggKHRoZSBcIm9uLWRlbWFuZFwiIHByZWZldGNoIHRoYXQgZ2V0cyBjcmVhdGVkIG9uIG5hdmlnYXRpb24sIGlmIG9uZSBkb2Vzbid0IGV4aXN0KVxuICAgIC8vIHdlIHNlbmQgdGhlIHJlcXVlc3Qgd2l0aCBhIFwiaGlnaFwiIHByaW9yaXR5IGFzIGl0J3MgaW4gcmVzcG9uc2UgdG8gYSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY291bGQgYmUgYmxvY2tpbmcgYSB0cmFuc2l0aW9uLlxuICAgIC8vIE90aGVyd2lzZSwgYWxsIG90aGVyIHByZWZldGNoZXMgYXJlIHNlbnQgd2l0aCBhIFwibG93XCIgcHJpb3JpdHkuXG4gICAgLy8gV2UgdXNlIFwiYXV0b1wiIGZvciBpbiBhbGwgb3RoZXIgY2FzZXMgdG8gbWF0Y2ggdGhlIGV4aXN0aW5nIGRlZmF1bHQsIGFzIHRoaXMgZnVuY3Rpb24gaXMgc2hhcmVkIG91dHNpZGUgb2YgcHJlZmV0Y2hpbmcuXG4gICAgY29uc3QgZmV0Y2hQcmlvcml0eSA9IHByZWZldGNoS2luZFxuICAgICAgPyBwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5URU1QT1JBUllcbiAgICAgICAgPyAnaGlnaCdcbiAgICAgICAgOiAnbG93J1xuICAgICAgOiAnYXV0bydcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIC8vIEluIFwib3V0cHV0OiBleHBvcnRcIiBtb2RlLCB3ZSBjYW4ndCByZWx5IG9uIGhlYWRlcnMgdG8gZGlzdGluZ3Vpc2hcbiAgICAgICAgLy8gYmV0d2VlbiBIVE1MIGFuZCBSU0MgcmVxdWVzdHMuIEluc3RlYWQsIHdlIGFwcGVuZCBhbiBleHRyYSBwcmVmaXhcbiAgICAgICAgLy8gdG8gdGhlIHJlcXVlc3QuXG4gICAgICAgIHVybCA9IG5ldyBVUkwodXJsKVxuICAgICAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJ2luZGV4LnR4dCdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJy50eHQnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjcmVhdGVGZXRjaChcbiAgICAgIHVybCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBmZXRjaFByaW9yaXR5LFxuICAgICAgYWJvcnRDb250cm9sbGVyLnNpZ25hbFxuICAgIClcblxuICAgIGNvbnN0IHJlc3BvbnNlVXJsID0gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzLnVybCkpXG4gICAgY29uc3QgY2Fub25pY2FsVXJsID0gcmVzLnJlZGlyZWN0ZWQgPyByZXNwb25zZVVybCA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnXG4gICAgY29uc3QgaW50ZXJjZXB0aW9uID0gISFyZXMuaGVhZGVycy5nZXQoJ3ZhcnknKT8uaW5jbHVkZXMoTkVYVF9VUkwpXG4gICAgY29uc3QgcG9zdHBvbmVkID0gISFyZXMuaGVhZGVycy5nZXQoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSKVxuICAgIGNvbnN0IHN0YWxlVGltZUhlYWRlclNlY29uZHMgPSByZXMuaGVhZGVycy5nZXQoXG4gICAgICBORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUlxuICAgIClcbiAgICBjb25zdCBzdGFsZVRpbWUgPVxuICAgICAgc3RhbGVUaW1lSGVhZGVyU2Vjb25kcyAhPT0gbnVsbFxuICAgICAgICA/IHBhcnNlSW50KHN0YWxlVGltZUhlYWRlclNlY29uZHMsIDEwKSAqIDEwMDBcbiAgICAgICAgOiAtMVxuICAgIGxldCBpc0ZsaWdodFJlc3BvbnNlID0gY29udGVudFR5cGUuc3RhcnRzV2l0aChSU0NfQ09OVEVOVF9UWVBFX0hFQURFUilcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIGlmICghaXNGbGlnaHRSZXNwb25zZSkge1xuICAgICAgICAgIGlzRmxpZ2h0UmVzcG9uc2UgPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCd0ZXh0L3BsYWluJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIHJldHVybnMgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGZsaWdodCByZXNwb25zZSBoYW5kbGUgaXQgbGlrZSBhIG1wYSBuYXZpZ2F0aW9uXG4gICAgLy8gSWYgdGhlIGZldGNoIHdhcyBub3QgMjAwLCB3ZSBhbHNvIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICBpZiAoIWlzRmxpZ2h0UmVzcG9uc2UgfHwgIXJlcy5vayB8fCAhcmVzLmJvZHkpIHtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9yaWdpbmFsIFVSTCBjYW1lIHdpdGggYSBoYXNoLCBwcmVzZXJ2ZSBpdCBiZWZvcmUgcmVkaXJlY3RpbmcgdG8gdGhlIG5ldyBVUkxcbiAgICAgIGlmICh1cmwuaGFzaCkge1xuICAgICAgICByZXNwb25zZVVybC5oYXNoID0gdXJsLmhhc2hcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvTXBhTmF2aWdhdGlvbihyZXNwb25zZVVybC50b1N0cmluZygpKVxuICAgIH1cblxuICAgIC8vIFdlIG1heSBuYXZpZ2F0ZSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudCBXZWJwYWNrIHJ1bnRpbWUuXG4gICAgLy8gSW4gcHJvZCwgZXZlcnkgcGFnZSB3aWxsIGhhdmUgdGhlIHNhbWUgV2VicGFjayBydW50aW1lLlxuICAgIC8vIEluIGRldiwgdGhlIFdlYnBhY2sgcnVudGltZSBpcyBtaW5pbWFsIGZvciBlYWNoIHBhZ2UuXG4gICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIFdlYnBhY2sgcnVudGltZSBpcyB1cGRhdGVkIGJlZm9yZSBleGVjdXRpbmcgY2xpZW50LXNpZGUgSlMgb2YgdGhlIG5ldyBwYWdlLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vZGV2L2hvdC1yZWxvYWRlci9hcHAvaG90LXJlbG9hZGVyLWFwcCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKVxuICAgICAgKS53YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgYGZldGNoYCByZWFkYWJsZSBzdHJlYW0gdGhhdCBjYW4gYmUgdW53cmFwcGVkIGJ5IGBSZWFjdC51c2VgLlxuICAgIGNvbnN0IGZsaWdodFN0cmVhbSA9IHBvc3Rwb25lZFxuICAgICAgPyBjcmVhdGVVbmNsb3NpbmdQcmVmZXRjaFN0cmVhbShyZXMuYm9keSlcbiAgICAgIDogcmVzLmJvZHlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IChjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICAgICAgZmxpZ2h0U3RyZWFtXG4gICAgKSBhcyBQcm9taXNlPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4pXG5cbiAgICBpZiAoZ2V0QXBwQnVpbGRJZCgpICE9PSByZXNwb25zZS5iKSB7XG4gICAgICByZXR1cm4gZG9NcGFOYXZpZ2F0aW9uKHJlcy51cmwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IG5vcm1hbGl6ZUZsaWdodERhdGEocmVzcG9uc2UuZiksXG4gICAgICBjYW5vbmljYWxVcmw6IGNhbm9uaWNhbFVybCxcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogaW50ZXJjZXB0aW9uLFxuICAgICAgcHJlcmVuZGVyZWQ6IHJlc3BvbnNlLlMsXG4gICAgICBwb3N0cG9uZWQsXG4gICAgICBzdGFsZVRpbWUsXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBSU0MgcGF5bG9hZCBmb3IgJHt1cmx9LiBGYWxsaW5nIGJhY2sgdG8gYnJvd3NlciBuYXZpZ2F0aW9uLmAsXG4gICAgICAgIGVyclxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIGZhaWxzIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICAvLyBUT0RPLUFQUDogQWRkIGEgdGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBDT1JTIHJlcXVlc3QgZmFpbHMsIGUuZy4gZXh0ZXJuYWwgdXJsIHJlZGlyZWN0IGNvbWluZyBmcm9tIHRoZSByZXNwb25zZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2lzc3Vlcy80MzYwNSNpc3N1ZWNvbW1lbnQtMTQ1MTYxNzUyMSBmb3IgYSByZXByb2R1Y3Rpb24uXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IHVybC50b1N0cmluZygpLFxuICAgICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGZhbHNlLFxuICAgICAgcHJlcmVuZGVyZWQ6IGZhbHNlLFxuICAgICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICAgIHN0YWxlVGltZTogLTEsXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgaXMgYSBzdWJzZXQgb2YgdGhlIHN0YW5kYXJkIFJlc3BvbnNlIHR5cGUuIFdlIHVzZSBhIGN1c3RvbSB0eXBlIGZvclxuLy8gdGhpcyBzbyB3ZSBjYW4gbGltaXQgd2hpY2ggZGV0YWlscyBhYm91dCB0aGUgcmVzcG9uc2UgbGVhayBpbnRvIHRoZSByZXN0IG9mXG4vLyB0aGUgY29kZWJhc2UuIEZvciBleGFtcGxlLCB0aGVyZSdzIHNvbWUgY3VzdG9tIGxvZ2ljIGZvciBtYW51YWxseSBmb2xsb3dpbmdcbi8vIHJlZGlyZWN0cywgc28gXCJyZWRpcmVjdGVkXCIgaW4gdGhpcyB0eXBlIGNvdWxkIGJlIGEgY29tcG9zaXRlIG9mIG11bHRpcGxlXG4vLyBicm93c2VyIGZldGNoIGNhbGxzOyBob3dldmVyLCB0aGlzIGZhY3Qgc2hvdWxkIG5vdCBsZWFrIHRvIHRoZSBjYWxsZXIuXG5leHBvcnQgdHlwZSBSU0NSZXNwb25zZSA9IHtcbiAgb2s6IGJvb2xlYW5cbiAgcmVkaXJlY3RlZDogYm9vbGVhblxuICBoZWFkZXJzOiBIZWFkZXJzXG4gIGJvZHk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHwgbnVsbFxuICBzdGF0dXM6IG51bWJlclxuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRmV0Y2goXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyxcbiAgZmV0Y2hQcmlvcml0eTogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdycgfCBudWxsLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxSU0NSZXNwb25zZT4ge1xuICAvLyBUT0RPOiBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgdGhlIGhlYWRlcnMgZG8gbm90aGluZy4gT21pdCB0aGVtIChhbmQgdGhlXG4gIC8vIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtKSBmcm9tIHRoZSByZXF1ZXN0IHNvIHRoZXkncmVcbiAgLy8gbWF4aW1hbGx5IGNhY2hlYWJsZS5cblxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSAmJiBmZXRjaFByaW9yaXR5ICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1snTmV4dC1UZXN0LUZldGNoLVByaW9yaXR5J10gPSBmZXRjaFByaW9yaXR5XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgaGVhZGVyc1sneC1kZXBsb3ltZW50LWlkJ10gPSBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSURcbiAgfVxuXG4gIGNvbnN0IGZldGNoT3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3Igb2xkZXIgYnJvd3NlcnMuIGBzYW1lLW9yaWdpbmAgaXMgdGhlIGRlZmF1bHQgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIGhlYWRlcnMsXG4gICAgcHJpb3JpdHk6IGZldGNoUHJpb3JpdHkgfHwgdW5kZWZpbmVkLFxuICAgIHNpZ25hbCxcbiAgfVxuICAvLyBgZmV0Y2hVcmxgIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIGB1cmxgIGJlY2F1c2Ugd2UgYWRkIGEgY2FjaGUtYnVzdGluZ1xuICAvLyBzZWFyY2ggcGFyYW0gdG8gaXQuIFRoaXMgc2hvdWxkIG5vdCBsZWFrIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiwgc28gd2VcbiAgLy8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LlxuICBsZXQgZmV0Y2hVcmwgPSBuZXcgVVJMKHVybClcbiAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oZmV0Y2hVcmwsIGhlYWRlcnMpXG4gIGxldCBicm93c2VyUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmZXRjaFVybCwgZmV0Y2hPcHRpb25zKVxuXG4gIC8vIElmIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBhIHJlZGlyZWN0IChlLmcuIDMwNyksIGFuZCB0aGUgcmVkaXJlY3RlZFxuICAvLyBsb2NhdGlvbiBkb2VzIG5vdCBjb250YWluIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBzZXQgaW4gdGhlXG4gIC8vIG9yaWdpbmFsIHJlcXVlc3QsIHRoZSByZXNwb25zZSBpcyBsaWtlbHkgaW52YWxpZCDigJQgd2hlbiBmb2xsb3dpbmcgdGhlXG4gIC8vIHJlZGlyZWN0LCB0aGUgYnJvd3NlciBmb3J3YXJkcyB0aGUgcmVxdWVzdCBoZWFkZXJzLCBidXQgc2luY2UgdGhlIGNhY2hlXG4gIC8vIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtIGlzIG1pc3NpbmcsIHRoZSBzZXJ2ZXIgd2lsbCByZWplY3QgdGhlIHJlcXVlc3QgZHVlIHRvXG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIElkZWFsbHksIHdlIHdvdWxkIGJlIGFibGUgdG8gaW50ZXJjZXB0IHRoZSByZWRpcmVjdCByZXNwb25zZSBhbmQgcGVyZm9ybSBpdFxuICAvLyBtYW51YWxseSwgaW5zdGVhZCBvZiBsZXR0aW5nIHRoZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgZm9sbG93IGl0LCBidXQgdGhpc1xuICAvLyBpcyBub3QgYWxsb3dlZCBieSB0aGUgZmV0Y2ggQVBJLlxuICAvL1xuICAvLyBTbyBpbnN0ZWFkLCB3ZSBtdXN0IFwicmVwbGF5XCIgdGhlIHJlZGlyZWN0IGJ5IGZldGNoaW5nIHRoZSBuZXcgbG9jYXRpb25cbiAgLy8gYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2UnbGwgYXBwZW5kIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSB0byBwcmV2ZW50XG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIFRPRE86IFdlIGNhbiBvcHRpbWl6ZSBOZXh0LmpzJ3MgYnVpbHQtaW4gbWlkZGxld2FyZSBBUElzIGJ5IHJldHVybmluZyBhXG4gIC8vIGN1c3RvbSBzdGF0dXMgY29kZSwgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIGF1dG9tYXRpY2FsbHkgZm9sbG93aW5nIGl0LlxuICAvL1xuICAvLyBUaGlzIGRvZXMgbm90IGFmZmVjdCBTZXJ2ZXIgQWN0aW9uLWJhc2VkIHJlZGlyZWN0czsgdGhvc2UgYXJlIGVuY29kZWRcbiAgLy8gZGlmZmVyZW50bHksIGFzIHBhcnQgb2YgdGhlIEZsaWdodCBib2R5LiBJdCBvbmx5IGFmZmVjdHMgcmVkaXJlY3RzIHRoYXRcbiAgLy8gb2NjdXIgaW4gYSBtaWRkbGV3YXJlIG9yIGEgdGhpcmQtcGFydHkgcHJveHkuXG5cbiAgbGV0IHJlZGlyZWN0ZWQgPSBicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZFxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTKSB7XG4gICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IGEgcmVkaXJlY3QgbG9vcC4gU2FtZSBsaW1pdCB1c2VkIGJ5IENocm9tZS5cbiAgICBjb25zdCBNQVhfUkVESVJFQ1RTID0gMjBcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IE1BWF9SRURJUkVDVFM7IG4rKykge1xuICAgICAgaWYgKCFicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIGRpZCBub3QgcGVyZm9ybSBhIHJlZGlyZWN0LlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICAgICAgaWYgKHJlc3BvbnNlVXJsLm9yaWdpbiAhPT0gZmV0Y2hVcmwub3JpZ2luKSB7XG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgcmVkaXJlY3RlZCB0byBhbiBleHRlcm5hbCBVUkwuIFRoZSByZXN0IG9mIHRoZSBsb2dpYyBiZWxvd1xuICAgICAgICAvLyBpcyBub3QgcmVsZXZhbnQsIGJlY2F1c2UgaXQgb25seSBhcHBsaWVzIHRvIGludGVybmFsIHJlZGlyZWN0cy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2VVcmwuc2VhcmNoUGFyYW1zLmdldChORVhUX1JTQ19VTklPTl9RVUVSWSkgPT09XG4gICAgICAgIGZldGNoVXJsLnNlYXJjaFBhcmFtcy5nZXQoTkVYVF9SU0NfVU5JT05fUVVFUlkpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIHJlZGlyZWN0ZWQgVVJMIGFscmVhZHkgaW5jbHVkZXMgdGhlIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtLlxuICAgICAgICAvLyBUaGlzIHdhcyBwcm9iYWJseSBpbnRlbnRpb25hbC4gUmVnYXJkbGVzcywgdGhlcmUncyBubyByZWFzb24gdG9cbiAgICAgICAgLy8gaXNzdWUgYW5vdGhlciByZXF1ZXN0IHRvIHRoaXMgVVJMIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgdGhlIHBhcmFtXG4gICAgICAgIC8vIHZhbHVlIHRoYXQgd2Ugd291bGQgaGF2ZSBhZGRlZCBiZWxvdy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSBSU0MgcmVxdWVzdCB3YXMgcmVkaXJlY3RlZC4gQXNzdW1lIHRoZSByZXNwb25zZSBpcyBpbnZhbGlkLlxuICAgICAgLy9cbiAgICAgIC8vIEFwcGVuZCB0aGUgY2FjaGUgYnVzdGluZyBzZWFyY2ggcGFyYW0gdG8gdGhlIHJlZGlyZWN0ZWQgVVJMIGFuZFxuICAgICAgLy8gZmV0Y2ggYWdhaW4uXG4gICAgICBmZXRjaFVybCA9IG5ldyBVUkwocmVzcG9uc2VVcmwpXG4gICAgICBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbShmZXRjaFVybCwgaGVhZGVycylcbiAgICAgIGJyb3dzZXJSZXNwb25zZSA9IGF3YWl0IGZldGNoKGZldGNoVXJsLCBmZXRjaE9wdGlvbnMpXG4gICAgICAvLyBXZSBqdXN0IHBlcmZvcm1lZCBhIG1hbnVhbCByZWRpcmVjdCwgc28gdGhpcyBpcyBub3cgdHJ1ZS5cbiAgICAgIHJlZGlyZWN0ZWQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBmcm9tIHRoZSByZXNwb25zZSBVUkwsIHRvIHByZXZlbnQgaXRcbiAgLy8gZnJvbSBsZWFraW5nIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbi5cbiAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICByZXNwb25zZVVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKE5FWFRfUlNDX1VOSU9OX1FVRVJZKVxuXG4gIGNvbnN0IHJzY1Jlc3BvbnNlOiBSU0NSZXNwb25zZSA9IHtcbiAgICB1cmw6IHJlc3BvbnNlVXJsLmhyZWYsXG5cbiAgICAvLyBUaGlzIGlzIHRydWUgaWYgYW55IHJlZGlyZWN0cyBvY2N1cnJlZCwgZWl0aGVyIGF1dG9tYXRpY2FsbHkgYnkgdGhlXG4gICAgLy8gYnJvd3Nlciwgb3IgbWFudWFsbHkgYnkgdXMuIFNvIGl0J3MgZGlmZmVyZW50IGZyb21cbiAgICAvLyBgYnJvd3NlclJlc3BvbnNlLnJlZGlyZWN0ZWRgLCB3aGljaCBvbmx5IHRlbGxzIHVzIHdoZXRoZXIgdGhlIGJyb3dzZXJcbiAgICAvLyBmb2xsb3dlZCBhIHJlZGlyZWN0LCBhbmQgb25seSBmb3IgdGhlIGxhc3QgcmVzcG9uc2UgaW4gdGhlIGNoYWluLlxuICAgIHJlZGlyZWN0ZWQsXG5cbiAgICAvLyBUaGVzZSBjYW4gYmUgY29waWVkIGZyb20gdGhlIGxhc3QgYnJvd3NlciByZXNwb25zZSB3ZSByZWNlaXZlZC4gV2VcbiAgICAvLyBpbnRlbnRpb25hbGx5IG9ubHkgZXhwb3NlIHRoZSBzdWJzZXQgb2YgZmllbGRzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWRcbiAgICAvLyBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLlxuICAgIG9rOiBicm93c2VyUmVzcG9uc2Uub2ssXG4gICAgaGVhZGVyczogYnJvd3NlclJlc3BvbnNlLmhlYWRlcnMsXG4gICAgYm9keTogYnJvd3NlclJlc3BvbnNlLmJvZHksXG4gICAgc3RhdHVzOiBicm93c2VyUmVzcG9uc2Uuc3RhdHVzLFxuICB9XG5cbiAgcmV0dXJuIHJzY1Jlc3BvbnNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICBmbGlnaHRTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbShmbGlnaHRTdHJlYW0sIHtcbiAgICBjYWxsU2VydmVyLFxuICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKFxuICBvcmlnaW5hbEZsaWdodFN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgLy8gV2hlbiBQUFIgaXMgZW5hYmxlZCwgcHJlZmV0Y2ggc3RyZWFtcyBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRoYXQgbmV2ZXJcbiAgLy8gcmVzb2x2ZSwgYmVjYXVzZSB0aGF0J3MgaG93IHdlIGVuY29kZSBkeW5hbWljIGRhdGEgYWNjZXNzLiBJbiB0aGUgZGVjb2RlZFxuICAvLyBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIEZsaWdodCBjbGllbnQsIHRoZXNlIGFyZSByZWlmaWVkIGludG8gaGFuZ2luZ1xuICAvLyBwcm9taXNlcyB0aGF0IHN1c3BlbmQgZHVyaW5nIHJlbmRlciwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgd2hhdCB3ZSB3YW50LlxuICAvLyBUaGUgVUkgcmVzb2x2ZXMgd2hlbiBpdCBzd2l0Y2hlcyB0byB0aGUgZHluYW1pYyBkYXRhIHN0cmVhbVxuICAvLyAodmlhIHVzZURlZmVycmVkVmFsdWUoZHluYW1pYywgc3RhdGljKSkuXG4gIC8vXG4gIC8vIEhvd2V2ZXIsIHRoZSBGbGlnaHQgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGVycm9ycyBpZiB0aGUgc2VydmVyIGNsb3Nlc1xuICAvLyB0aGUgcmVzcG9uc2UgYmVmb3JlIGFsbCB0aGUgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQuIEFzIGEgY2hlYXQgdG8gd29ya1xuICAvLyBhcm91bmQgdGhpcywgd2Ugd3JhcCB0aGUgb3JpZ2luYWwgc3RyZWFtIGluIGEgbmV3IHN0cmVhbSB0aGF0IG5ldmVyIGNsb3NlcyxcbiAgLy8gYW5kIHRoZXJlZm9yZSBkb2Vzbid0IGVycm9yLlxuICBjb25zdCByZWFkZXIgPSBvcmlnaW5hbEZsaWdodFN0cmVhbS5nZXRSZWFkZXIoKVxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgLy8gUGFzcyB0byB0aGUgdGFyZ2V0IHN0cmVhbSBhbmQga2VlcCBjb25zdW1pbmcgdGhlIEZsaWdodCByZXNwb25zZVxuICAgICAgICAgIC8vIGZyb20gdGhlIHNlcnZlci5cbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgc2VydmVyIHN0cmVhbSBoYXMgY2xvc2VkLiBFeGl0LCBidXQgaW50ZW50aW9uYWxseSBkbyBub3QgY2xvc2VcbiAgICAgICAgLy8gdGhlIHRhcmdldCBzdHJlYW0uXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlRmV0Y2giLCJjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtIiwiZmV0Y2hTZXJ2ZXJSZXNwb25zZSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIiLCJkb01wYU5hdmlnYXRpb24iLCJ1cmwiLCJmbGlnaHREYXRhIiwidXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIiwiVVJMIiwibG9jYXRpb24iLCJvcmlnaW4iLCJ0b1N0cmluZyIsImNhbm9uaWNhbFVybCIsInVuZGVmaW5lZCIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInByZXJlbmRlcmVkIiwicG9zdHBvbmVkIiwic3RhbGVUaW1lIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImFib3J0Iiwib3B0aW9ucyIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsInByZWZldGNoS2luZCIsImhlYWRlcnMiLCJSU0NfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIiLCJwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0IiwiaXNIbXJSZWZyZXNoIiwiUHJlZmV0Y2hLaW5kIiwiQVVUTyIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIk5FWFRfSE1SX1JFRlJFU0hfSEVBREVSIiwiTkVYVF9VUkwiLCJyZXMiLCJmZXRjaFByaW9yaXR5IiwiVEVNUE9SQVJZIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJwYXRobmFtZSIsImVuZHNXaXRoIiwic2lnbmFsIiwicmVzcG9uc2VVcmwiLCJyZWRpcmVjdGVkIiwiY29udGVudFR5cGUiLCJnZXQiLCJpbnRlcmNlcHRpb24iLCJpbmNsdWRlcyIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsInN0YWxlVGltZUhlYWRlclNlY29uZHMiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsInBhcnNlSW50IiwiaXNGbGlnaHRSZXNwb25zZSIsInN0YXJ0c1dpdGgiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIm9rIiwiYm9keSIsImhhc2giLCJUVVJCT1BBQ0siLCJyZXF1aXJlIiwid2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlIiwiZmxpZ2h0U3RyZWFtIiwiY3JlYXRlVW5jbG9zaW5nUHJlZmV0Y2hTdHJlYW0iLCJyZXNwb25zZSIsImdldEFwcEJ1aWxkSWQiLCJiIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsImYiLCJTIiwiZXJyIiwiYWJvcnRlZCIsImNvbnNvbGUiLCJlcnJvciIsIl9fTkVYVF9URVNUX01PREUiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJmZXRjaE9wdGlvbnMiLCJjcmVkZW50aWFscyIsInByaW9yaXR5IiwiZmV0Y2hVcmwiLCJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsImJyb3dzZXJSZXNwb25zZSIsImZldGNoIiwiX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTIiwiTUFYX1JFRElSRUNUUyIsIm4iLCJzZWFyY2hQYXJhbXMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsImRlbGV0ZSIsInJzY1Jlc3BvbnNlIiwiaHJlZiIsInN0YXR1cyIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwib3JpZ2luYWxGbGlnaHRTdHJlYW0iLCJyZWFkZXIiLCJnZXRSZWFkZXIiLCJSZWFkYWJsZVN0cmVhbSIsInB1bGwiLCJjb250cm9sbGVyIiwiZG9uZSIsInZhbHVlIiwicmVhZCIsImVucXVldWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js ***! \*****************************************************************************************************/ /***/ ((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 fillCacheWithNewSubTreeData: function() {\n return fillCacheWithNewSubTreeData;\n },\n fillCacheWithNewSubTreeDataButOnlyLoading: function() {\n return fillCacheWithNewSubTreeDataButOnlyLoading;\n }\n});\nconst _invalidatecachebyrouterstate = __webpack_require__(/*! ./invalidate-cache-by-router-state */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\n/**\n * Common logic for filling cache with new sub tree data.\n */ function fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, fillLazyItems) {\n const { segmentPath, seedData: cacheNodeSeedData, tree: treePatch, head } = flightData;\n let newCacheNode = newCache;\n let existingCacheNode = existingCache;\n for(let i = 0; i < segmentPath.length; i += 2){\n const parallelRouteKey = segmentPath[i];\n const segment = segmentPath[i + 1];\n // segmentPath is a repeating tuple of parallelRouteKey and segment\n // we know we've hit the last entry we've reached our final pair\n const isLastEntry = i === segmentPath.length - 2;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCacheNode.parallelRoutes.get(parallelRouteKey);\n if (!existingChildSegmentMap) {\n continue;\n }\n let childSegmentMap = newCacheNode.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCacheNode.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n const existingChildCacheNode = existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n if (isLastEntry) {\n if (cacheNodeSeedData && (!childCacheNode || !childCacheNode.lazyData || childCacheNode === existingChildCacheNode)) {\n const incomingSegment = cacheNodeSeedData[0];\n const rsc = cacheNodeSeedData[1];\n const loading = cacheNodeSeedData[3];\n childCacheNode = {\n lazyData: null,\n // When `fillLazyItems` is false, we only want to fill the RSC data for the layout,\n // not the page segment.\n rsc: fillLazyItems || incomingSegment !== _segment.PAGE_SEGMENT_KEY ? rsc : null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n loading,\n parallelRoutes: fillLazyItems && existingChildCacheNode ? new Map(existingChildCacheNode.parallelRoutes) : new Map(),\n navigatedAt\n };\n if (existingChildCacheNode && fillLazyItems) {\n (0, _invalidatecachebyrouterstate.invalidateCacheByRouterState)(childCacheNode, existingChildCacheNode, treePatch);\n }\n if (fillLazyItems) {\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, childCacheNode, existingChildCacheNode, treePatch, cacheNodeSeedData, head, prefetchEntry);\n }\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n continue;\n }\n if (!childCacheNode || !existingChildCacheNode) {\n continue;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n loading: childCacheNode.loading\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n // Move deeper into the cache nodes\n newCacheNode = childCacheNode;\n existingCacheNode = existingChildCacheNode;\n }\n}\nfunction fillCacheWithNewSubTreeData(navigatedAt, newCache, existingCache, flightData, prefetchEntry) {\n fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, true);\n}\nfunction fillCacheWithNewSubTreeDataButOnlyLoading(navigatedAt, newCache, existingCache, flightData, prefetchEntry) {\n fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, 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=fill-cache-with-new-subtree-data.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1jYWNoZS13aXRoLW5ldy1zdWJ0cmVlLWRhdGEuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd0lnQkEsMkJBQTJCO2VBQTNCQTs7SUFpQkFDLHlDQUF5QztlQUF6Q0E7OzswREF2SjZCOzJEQUNDO2tEQUNUO3FDQUVKO0FBR2pDOztDQUVDLEdBQ0QsU0FBU0MsZ0JBQ1BDLFdBQW1CLEVBQ25CQyxRQUFtQixFQUNuQkMsYUFBd0IsRUFDeEJDLFVBQWdDLEVBQ2hDQyxhQUE2QyxFQUM3Q0MsYUFBc0I7SUFFdEIsTUFBTSxFQUNKQyxXQUFXLEVBQ1hDLFVBQVVDLGlCQUFpQixFQUMzQkMsTUFBTUMsU0FBUyxFQUNmQyxJQUFJLEVBQ0wsR0FBR1I7SUFDSixJQUFJUyxlQUFlWDtJQUNuQixJQUFJWSxvQkFBb0JYO0lBRXhCLElBQUssSUFBSVksSUFBSSxHQUFHQSxJQUFJUixZQUFZUyxNQUFNLEVBQUVELEtBQUssRUFBRztRQUM5QyxNQUFNRSxtQkFBMkJWLFdBQVcsQ0FBQ1EsRUFBRTtRQUMvQyxNQUFNRyxVQUFtQlgsV0FBVyxDQUFDUSxJQUFJLEVBQUU7UUFFM0MsbUVBQW1FO1FBQ25FLGdFQUFnRTtRQUNoRSxNQUFNSSxjQUFjSixNQUFNUixZQUFZUyxNQUFNLEdBQUc7UUFDL0MsTUFBTUksV0FBV0MsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQkg7UUFFdEMsTUFBTUksMEJBQ0pSLGtCQUFrQlMsY0FBYyxDQUFDQyxHQUFHLENBQUNQO1FBRXZDLElBQUksQ0FBQ0sseUJBQXlCO1lBRzVCO1FBQ0Y7UUFFQSxJQUFJRyxrQkFBa0JaLGFBQWFVLGNBQWMsQ0FBQ0MsR0FBRyxDQUFDUDtRQUN0RCxJQUFJLENBQUNRLG1CQUFtQkEsb0JBQW9CSCx5QkFBeUI7WUFDbkVHLGtCQUFrQixJQUFJQyxJQUFJSjtZQUMxQlQsYUFBYVUsY0FBYyxDQUFDSSxHQUFHLENBQUNWLGtCQUFrQlE7UUFDcEQ7UUFFQSxNQUFNRyx5QkFBeUJOLHdCQUF3QkUsR0FBRyxDQUFDSjtRQUMzRCxJQUFJUyxpQkFBaUJKLGdCQUFnQkQsR0FBRyxDQUFDSjtRQUV6QyxJQUFJRCxhQUFhO1lBQ2YsSUFDRVYscUJBQ0MsRUFBQ29CLGtCQUNBLENBQUNBLGVBQWVDLFFBQVEsSUFDeEJELG1CQUFtQkQsc0JBQUFBLENBQXFCLEVBQzFDO2dCQUNBLE1BQU1HLGtCQUFrQnRCLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU11QixNQUFNdkIsaUJBQWlCLENBQUMsRUFBRTtnQkFDaEMsTUFBTXdCLFVBQVV4QixpQkFBaUIsQ0FBQyxFQUFFO2dCQUVwQ29CLGlCQUFpQjtvQkFDZkMsVUFBVTtvQkFDVixtRkFBbUY7b0JBQ25GLHdCQUF3QjtvQkFDeEJFLEtBQ0UxQixpQkFBaUJ5QixvQkFBb0JHLFNBQUFBLGdCQUFnQixHQUFHRixNQUFNO29CQUNoRUcsYUFBYTtvQkFDYnZCLE1BQU07b0JBQ053QixjQUFjO29CQUNkSDtvQkFDQVYsZ0JBQ0VqQixpQkFBaUJzQix5QkFDYixJQUFJRixJQUFJRSx1QkFBdUJMLGNBQWMsSUFDN0MsSUFBSUc7b0JBQ1Z6QjtnQkFDRjtnQkFFQSxJQUFJMkIsMEJBQTBCdEIsZUFBZTtvQkFDM0MrQixDQUFBQSxHQUFBQSw4QkFBQUEsNEJBQUFBLEVBQ0VSLGdCQUNBRCx3QkFDQWpCO2dCQUVKO2dCQUNBLElBQUlMLGVBQWU7b0JBQ2pCZ0MsQ0FBQUEsR0FBQUEsK0JBQUFBLDZCQUFBQSxFQUNFckMsYUFDQTRCLGdCQUNBRCx3QkFDQWpCLFdBQ0FGLG1CQUNBRyxNQUNBUDtnQkFFSjtnQkFFQW9CLGdCQUFnQkUsR0FBRyxDQUFDUCxVQUFVUztZQUNoQztZQUNBO1FBQ0Y7UUFFQSxJQUFJLENBQUNBLGtCQUFrQixDQUFDRCx3QkFBd0I7WUFHOUM7UUFDRjtRQUVBLElBQUlDLG1CQUFtQkQsd0JBQXdCO1lBQzdDQyxpQkFBaUI7Z0JBQ2ZDLFVBQVVELGVBQWVDLFFBQVE7Z0JBQ2pDRSxLQUFLSCxlQUFlRyxHQUFHO2dCQUN2QkcsYUFBYU4sZUFBZU0sV0FBVztnQkFDdkN2QixNQUFNaUIsZUFBZWpCLElBQUk7Z0JBQ3pCd0IsY0FBY1AsZUFBZU8sWUFBWTtnQkFDekNiLGdCQUFnQixJQUFJRyxJQUFJRyxlQUFlTixjQUFjO2dCQUNyRFUsU0FBU0osZUFBZUksT0FBTztZQUNqQztZQUNBUixnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVM7UUFDaEM7UUFFQSxtQ0FBbUM7UUFDbkNoQixlQUFlZ0I7UUFDZmYsb0JBQW9CYztJQUN0QjtBQUNGO0FBS08sU0FBUzlCLDRCQUNkRyxXQUFtQixFQUNuQkMsUUFBbUIsRUFDbkJDLGFBQXdCLEVBQ3hCQyxVQUFnQyxFQUNoQ0MsYUFBa0M7SUFFbENMLGdCQUNFQyxhQUNBQyxVQUNBQyxlQUNBQyxZQUNBQyxlQUNBO0FBRUo7QUFFTyxTQUFTTiwwQ0FDZEUsV0FBbUIsRUFDbkJDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsVUFBZ0MsRUFDaENDLGFBQWtDO0lBRWxDTCxnQkFDRUMsYUFDQUMsVUFDQUMsZUFDQUMsWUFDQUMsZUFDQTtBQUVKIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZpbGwtY2FjaGUtd2l0aC1uZXctc3VidHJlZS1kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGludmFsaWRhdGVDYWNoZUJ5Um91dGVyU3RhdGUgfSBmcm9tICcuL2ludmFsaWRhdGUtY2FjaGUtYnktcm91dGVyLXN0YXRlJ1xuaW1wb3J0IHsgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQgfSBmcm9tICcuL2ZpbGwtbGF6eS1pdGVtcy10aWxsLWxlYWYtd2l0aC1oZWFkJ1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuaW1wb3J0IHR5cGUgeyBQcmVmZXRjaENhY2hlRW50cnkgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZEZsaWdodERhdGEgfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuXG4vKipcbiAqIENvbW1vbiBsb2dpYyBmb3IgZmlsbGluZyBjYWNoZSB3aXRoIG5ldyBzdWIgdHJlZSBkYXRhLlxuICovXG5mdW5jdGlvbiBmaWxsQ2FjaGVIZWxwZXIoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG5ld0NhY2hlOiBDYWNoZU5vZGUsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgZmxpZ2h0RGF0YTogTm9ybWFsaXplZEZsaWdodERhdGEsXG4gIHByZWZldGNoRW50cnk6IFByZWZldGNoQ2FjaGVFbnRyeSB8IHVuZGVmaW5lZCxcbiAgZmlsbExhenlJdGVtczogYm9vbGVhblxuKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBzZWdtZW50UGF0aCxcbiAgICBzZWVkRGF0YTogY2FjaGVOb2RlU2VlZERhdGEsXG4gICAgdHJlZTogdHJlZVBhdGNoLFxuICAgIGhlYWQsXG4gIH0gPSBmbGlnaHREYXRhXG4gIGxldCBuZXdDYWNoZU5vZGUgPSBuZXdDYWNoZVxuICBsZXQgZXhpc3RpbmdDYWNoZU5vZGUgPSBleGlzdGluZ0NhY2hlXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50UGF0aC5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyA9IHNlZ21lbnRQYXRoW2ldXG4gICAgY29uc3Qgc2VnbWVudDogU2VnbWVudCA9IHNlZ21lbnRQYXRoW2kgKyAxXVxuXG4gICAgLy8gc2VnbWVudFBhdGggaXMgYSByZXBlYXRpbmcgdHVwbGUgb2YgcGFyYWxsZWxSb3V0ZUtleSBhbmQgc2VnbWVudFxuICAgIC8vIHdlIGtub3cgd2UndmUgaGl0IHRoZSBsYXN0IGVudHJ5IHdlJ3ZlIHJlYWNoZWQgb3VyIGZpbmFsIHBhaXJcbiAgICBjb25zdCBpc0xhc3RFbnRyeSA9IGkgPT09IHNlZ21lbnRQYXRoLmxlbmd0aCAtIDJcbiAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQpXG5cbiAgICBjb25zdCBleGlzdGluZ0NoaWxkU2VnbWVudE1hcCA9XG4gICAgICBleGlzdGluZ0NhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcblxuICAgIGlmICghZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXApIHtcbiAgICAgIC8vIEJhaWxvdXQgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGUgZG9lcyBub3QgaGF2ZSB0aGUgcGF0aCB0byB0aGUgbGVhZiBub2RlXG4gICAgICAvLyBXaWxsIHRyaWdnZXIgbGF6eSBmZXRjaCBpbiBsYXlvdXQtcm91dGVyIGJlY2F1c2Ugb2YgbWlzc2luZyBzZWdtZW50XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxldCBjaGlsZFNlZ21lbnRNYXAgPSBuZXdDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG4gICAgaWYgKCFjaGlsZFNlZ21lbnRNYXAgfHwgY2hpbGRTZWdtZW50TWFwID09PSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcCkge1xuICAgICAgY2hpbGRTZWdtZW50TWFwID0gbmV3IE1hcChleGlzdGluZ0NoaWxkU2VnbWVudE1hcClcbiAgICAgIG5ld0NhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcy5zZXQocGFyYWxsZWxSb3V0ZUtleSwgY2hpbGRTZWdtZW50TWFwKVxuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUgPSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcC5nZXQoY2FjaGVLZXkpXG4gICAgbGV0IGNoaWxkQ2FjaGVOb2RlID0gY2hpbGRTZWdtZW50TWFwLmdldChjYWNoZUtleSlcblxuICAgIGlmIChpc0xhc3RFbnRyeSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYWNoZU5vZGVTZWVkRGF0YSAmJlxuICAgICAgICAoIWNoaWxkQ2FjaGVOb2RlIHx8XG4gICAgICAgICAgIWNoaWxkQ2FjaGVOb2RlLmxhenlEYXRhIHx8XG4gICAgICAgICAgY2hpbGRDYWNoZU5vZGUgPT09IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgaW5jb21pbmdTZWdtZW50ID0gY2FjaGVOb2RlU2VlZERhdGFbMF1cbiAgICAgICAgY29uc3QgcnNjID0gY2FjaGVOb2RlU2VlZERhdGFbMV1cbiAgICAgICAgY29uc3QgbG9hZGluZyA9IGNhY2hlTm9kZVNlZWREYXRhWzNdXG5cbiAgICAgICAgY2hpbGRDYWNoZU5vZGUgPSB7XG4gICAgICAgICAgbGF6eURhdGE6IG51bGwsXG4gICAgICAgICAgLy8gV2hlbiBgZmlsbExhenlJdGVtc2AgaXMgZmFsc2UsIHdlIG9ubHkgd2FudCB0byBmaWxsIHRoZSBSU0MgZGF0YSBmb3IgdGhlIGxheW91dCxcbiAgICAgICAgICAvLyBub3QgdGhlIHBhZ2Ugc2VnbWVudC5cbiAgICAgICAgICByc2M6XG4gICAgICAgICAgICBmaWxsTGF6eUl0ZW1zIHx8IGluY29taW5nU2VnbWVudCAhPT0gUEFHRV9TRUdNRU5UX0tFWSA/IHJzYyA6IG51bGwsXG4gICAgICAgICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgICAgbG9hZGluZyxcbiAgICAgICAgICBwYXJhbGxlbFJvdXRlczpcbiAgICAgICAgICAgIGZpbGxMYXp5SXRlbXMgJiYgZXhpc3RpbmdDaGlsZENhY2hlTm9kZVxuICAgICAgICAgICAgICA/IG5ldyBNYXAoZXhpc3RpbmdDaGlsZENhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcylcbiAgICAgICAgICAgICAgOiBuZXcgTWFwKCksXG4gICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhpc3RpbmdDaGlsZENhY2hlTm9kZSAmJiBmaWxsTGF6eUl0ZW1zKSB7XG4gICAgICAgICAgaW52YWxpZGF0ZUNhY2hlQnlSb3V0ZXJTdGF0ZShcbiAgICAgICAgICAgIGNoaWxkQ2FjaGVOb2RlLFxuICAgICAgICAgICAgZXhpc3RpbmdDaGlsZENhY2hlTm9kZSxcbiAgICAgICAgICAgIHRyZWVQYXRjaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsbExhenlJdGVtcykge1xuICAgICAgICAgIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgICBjaGlsZENhY2hlTm9kZSxcbiAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUsXG4gICAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgICBjYWNoZU5vZGVTZWVkRGF0YSxcbiAgICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgICBwcmVmZXRjaEVudHJ5XG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGRTZWdtZW50TWFwLnNldChjYWNoZUtleSwgY2hpbGRDYWNoZU5vZGUpXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICghY2hpbGRDYWNoZU5vZGUgfHwgIWV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUpIHtcbiAgICAgIC8vIEJhaWxvdXQgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGUgZG9lcyBub3QgaGF2ZSB0aGUgcGF0aCB0byB0aGUgbGVhZiBub2RlXG4gICAgICAvLyBXaWxsIHRyaWdnZXIgbGF6eSBmZXRjaCBpbiBsYXlvdXQtcm91dGVyIGJlY2F1c2Ugb2YgbWlzc2luZyBzZWdtZW50XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChjaGlsZENhY2hlTm9kZSA9PT0gZXhpc3RpbmdDaGlsZENhY2hlTm9kZSkge1xuICAgICAgY2hpbGRDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBjaGlsZENhY2hlTm9kZS5sYXp5RGF0YSxcbiAgICAgICAgcnNjOiBjaGlsZENhY2hlTm9kZS5yc2MsXG4gICAgICAgIHByZWZldGNoUnNjOiBjaGlsZENhY2hlTm9kZS5wcmVmZXRjaFJzYyxcbiAgICAgICAgaGVhZDogY2hpbGRDYWNoZU5vZGUuaGVhZCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBjaGlsZENhY2hlTm9kZS5wcmVmZXRjaEhlYWQsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKGNoaWxkQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzKSxcbiAgICAgICAgbG9hZGluZzogY2hpbGRDYWNoZU5vZGUubG9hZGluZyxcbiAgICAgIH0gYXMgQ2FjaGVOb2RlXG4gICAgICBjaGlsZFNlZ21lbnRNYXAuc2V0KGNhY2hlS2V5LCBjaGlsZENhY2hlTm9kZSlcbiAgICB9XG5cbiAgICAvLyBNb3ZlIGRlZXBlciBpbnRvIHRoZSBjYWNoZSBub2Rlc1xuICAgIG5ld0NhY2hlTm9kZSA9IGNoaWxkQ2FjaGVOb2RlXG4gICAgZXhpc3RpbmdDYWNoZU5vZGUgPSBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlXG4gIH1cbn1cblxuLyoqXG4gKiBGaWxsIGNhY2hlIHdpdGggcnNjIGJhc2VkIG9uIGZsaWdodERhdGFQYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGEoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG5ld0NhY2hlOiBDYWNoZU5vZGUsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgZmxpZ2h0RGF0YTogTm9ybWFsaXplZEZsaWdodERhdGEsXG4gIHByZWZldGNoRW50cnk/OiBQcmVmZXRjaENhY2hlRW50cnlcbik6IHZvaWQge1xuICBmaWxsQ2FjaGVIZWxwZXIoXG4gICAgbmF2aWdhdGVkQXQsXG4gICAgbmV3Q2FjaGUsXG4gICAgZXhpc3RpbmdDYWNoZSxcbiAgICBmbGlnaHREYXRhLFxuICAgIHByZWZldGNoRW50cnksXG4gICAgdHJ1ZVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGFCdXRPbmx5TG9hZGluZyhcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbiAgcHJlZmV0Y2hFbnRyeT86IFByZWZldGNoQ2FjaGVFbnRyeVxuKTogdm9pZCB7XG4gIGZpbGxDYWNoZUhlbHBlcihcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgICBuZXdDYWNoZSxcbiAgICBleGlzdGluZ0NhY2hlLFxuICAgIGZsaWdodERhdGEsXG4gICAgcHJlZmV0Y2hFbnRyeSxcbiAgICBmYWxzZVxuICApXG59XG4iXSwibmFtZXMiOlsiZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhIiwiZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhQnV0T25seUxvYWRpbmciLCJmaWxsQ2FjaGVIZWxwZXIiLCJuYXZpZ2F0ZWRBdCIsIm5ld0NhY2hlIiwiZXhpc3RpbmdDYWNoZSIsImZsaWdodERhdGEiLCJwcmVmZXRjaEVudHJ5IiwiZmlsbExhenlJdGVtcyIsInNlZ21lbnRQYXRoIiwic2VlZERhdGEiLCJjYWNoZU5vZGVTZWVkRGF0YSIsInRyZWUiLCJ0cmVlUGF0Y2giLCJoZWFkIiwibmV3Q2FjaGVOb2RlIiwiZXhpc3RpbmdDYWNoZU5vZGUiLCJpIiwibGVuZ3RoIiwicGFyYWxsZWxSb3V0ZUtleSIsInNlZ21lbnQiLCJpc0xhc3RFbnRyeSIsImNhY2hlS2V5IiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJleGlzdGluZ0NoaWxkU2VnbWVudE1hcCIsInBhcmFsbGVsUm91dGVzIiwiZ2V0IiwiY2hpbGRTZWdtZW50TWFwIiwiTWFwIiwic2V0IiwiZXhpc3RpbmdDaGlsZENhY2hlTm9kZSIsImNoaWxkQ2FjaGVOb2RlIiwibGF6eURhdGEiLCJpbmNvbWluZ1NlZ21lbnQiLCJyc2MiLCJsb2FkaW5nIiwiUEFHRV9TRUdNRU5UX0tFWSIsInByZWZldGNoUnNjIiwicHJlZmV0Y2hIZWFkIiwiaW52YWxpZGF0ZUNhY2hlQnlSb3V0ZXJTdGF0ZSIsImZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js": /*!********************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js ***! \********************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"fillLazyItemsTillLeafWithHead\", ({\n enumerable: true,\n get: function() {\n return fillLazyItemsTillLeafWithHead;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nfunction fillLazyItemsTillLeafWithHead(navigatedAt, newCache, existingCache, routerState, cacheNodeSeedData, head, prefetchEntry) {\n const isLastSegment = Object.keys(routerState[1]).length === 0;\n if (isLastSegment) {\n newCache.head = head;\n return;\n }\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for(const key in routerState[1]){\n const parallelRouteState = routerState[1][key];\n const segmentForParallelRoute = parallelRouteState[0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n // TODO: We should traverse the cacheNodeSeedData tree instead of the router\n // state tree. Ideally, they would always be the same shape, but because of\n // the loading.js pattern, cacheNodeSeedData sometimes only represents a\n // partial tree. That's why this node is sometimes null. Once PPR lands,\n // loading.js will no longer have special behavior and we can traverse the\n // data tree instead.\n //\n // We should also consider merging the router state tree and the data tree\n // in the response format, so that we don't have to send the keys twice.\n // Then the client can convert them into separate representations.\n const parallelSeedData = cacheNodeSeedData !== null && cacheNodeSeedData[2][key] !== undefined ? cacheNodeSeedData[2][key] : null;\n if (existingCache) {\n const existingParallelRoutesCacheNode = existingCache.parallelRoutes.get(key);\n if (existingParallelRoutesCacheNode) {\n const hasReusablePrefetch = (prefetchEntry == null ? void 0 : prefetchEntry.kind) === 'auto' && prefetchEntry.status === _routerreducertypes.PrefetchCacheEntryStatus.reusable;\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode);\n const existingCacheNode = parallelRouteCacheNode.get(cacheKey);\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n // This is a PPR-only field. When PPR is enabled, we shouldn't hit\n // this path during a navigation, but until PPR is fully implemented\n // yet it's possible the existing node does have a non-null\n // `prefetchRsc`. As an incremental step, we'll just de-opt to the\n // old behavior — no PPR value.\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n loading,\n parallelRoutes: new Map(existingCacheNode == null ? void 0 : existingCacheNode.parallelRoutes),\n navigatedAt\n };\n } else if (hasReusablePrefetch && existingCacheNode) {\n // No new data was sent from the server, but the existing cache node\n // was prefetched, so we should reuse that.\n newCacheNode = {\n lazyData: existingCacheNode.lazyData,\n rsc: existingCacheNode.rsc,\n // This is a PPR-only field. Unlike the previous branch, since we're\n // just cloning the existing cache node, we might as well keep the\n // PPR value, if it exists.\n prefetchRsc: existingCacheNode.prefetchRsc,\n head: existingCacheNode.head,\n prefetchHead: existingCacheNode.prefetchHead,\n parallelRoutes: new Map(existingCacheNode.parallelRoutes),\n loading: existingCacheNode.loading\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(existingCacheNode == null ? void 0 : existingCacheNode.parallelRoutes),\n loading: null,\n navigatedAt\n };\n }\n // Overrides the cache key with the new cache node.\n parallelRouteCacheNode.set(cacheKey, newCacheNode);\n // Traverse deeper to apply the head / fill lazy items till the head.\n fillLazyItemsTillLeafWithHead(navigatedAt, newCacheNode, existingCacheNode, parallelRouteState, parallelSeedData ? parallelSeedData : null, head, prefetchEntry);\n newCache.parallelRoutes.set(key, parallelRouteCacheNode);\n continue;\n }\n }\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading,\n navigatedAt\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt\n };\n }\n const existingParallelRoutes = newCache.parallelRoutes.get(key);\n if (existingParallelRoutes) {\n existingParallelRoutes.set(cacheKey, newCacheNode);\n } else {\n newCache.parallelRoutes.set(key, new Map([\n [\n cacheKey,\n newCacheNode\n ]\n ]));\n }\n fillLazyItemsTillLeafWithHead(navigatedAt, newCacheNode, undefined, parallelRouteState, parallelSeedData, head, prefetchEntry);\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=fill-lazy-items-till-leaf-with-head.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQuanMiLCJtYXBwaW5ncyI6Ijs7OztpRUFXZ0JBOzs7ZUFBQUE7OztrREFOcUI7Z0RBSTlCO0FBRUEsU0FBU0EsOEJBQ2RDLFdBQW1CLEVBQ25CQyxRQUFtQixFQUNuQkMsYUFBb0MsRUFDcENDLFdBQThCLEVBQzlCQyxpQkFBMkMsRUFDM0NDLElBQXFCLEVBQ3JCQyxhQUE2QztJQUU3QyxNQUFNQyxnQkFBZ0JDLE9BQU9DLElBQUksQ0FBQ04sV0FBVyxDQUFDLEVBQUUsRUFBRU8sTUFBTSxLQUFLO0lBQzdELElBQUlILGVBQWU7UUFDakJOLFNBQVNJLElBQUksR0FBR0E7UUFDaEI7SUFDRjtJQUNBLHVGQUF1RjtJQUN2RixJQUFLLE1BQU1NLE9BQU9SLFdBQVcsQ0FBQyxFQUFFLENBQUU7UUFDaEMsTUFBTVMscUJBQXFCVCxXQUFXLENBQUMsRUFBRSxDQUFDUSxJQUFJO1FBQzlDLE1BQU1FLDBCQUEwQkQsa0JBQWtCLENBQUMsRUFBRTtRQUNyRCxNQUFNRSxXQUFXQyxDQUFBQSxHQUFBQSxzQkFBQUEsb0JBQUFBLEVBQXFCRjtRQUV0Qyw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLHdFQUF3RTtRQUN4RSx3RUFBd0U7UUFDeEUsMEVBQTBFO1FBQzFFLHFCQUFxQjtRQUNyQixFQUFFO1FBQ0YsMEVBQTBFO1FBQzFFLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsTUFBTUcsbUJBQ0paLHNCQUFzQixRQUFRQSxpQkFBaUIsQ0FBQyxFQUFFLENBQUNPLElBQUksS0FBS00sWUFDeERiLGlCQUFpQixDQUFDLEVBQUUsQ0FBQ08sSUFBSSxHQUN6QjtRQUNOLElBQUlULGVBQWU7WUFDakIsTUFBTWdCLGtDQUNKaEIsY0FBY2lCLGNBQWMsQ0FBQ0MsR0FBRyxDQUFDVDtZ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QUN2QyxPQUFPO1lBQ0w1QixTQUFTa0IsY0FBYyxDQUFDaUIsR0FBRyxDQUFDekIsS0FBSyxJQUFJZ0IsSUFBSTtnQkFBQztvQkFBQ2I7b0JBQVVlO2lCQUFhO2FBQUM7UUFDckU7UUFFQTlCLDhCQUNFQyxhQUNBNkIsY0FDQVosV0FDQUwsb0JBQ0FJLGtCQUNBWCxNQUNBQztJQUVKO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHtcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIENhY2hlTm9kZVNlZWREYXRhLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcbmltcG9ydCB7XG4gIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyxcbiAgdHlwZSBQcmVmZXRjaENhY2hlRW50cnksXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZChcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlIHwgdW5kZWZpbmVkLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGNhY2hlTm9kZVNlZWREYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIGhlYWQ6IFJlYWN0LlJlYWN0Tm9kZSxcbiAgcHJlZmV0Y2hFbnRyeTogUHJlZmV0Y2hDYWNoZUVudHJ5IHwgdW5kZWZpbmVkXG4pOiB2b2lkIHtcbiAgY29uc3QgaXNMYXN0U2VnbWVudCA9IE9iamVjdC5rZXlzKHJvdXRlclN0YXRlWzFdKS5sZW5ndGggPT09IDBcbiAgaWYgKGlzTGFzdFNlZ21lbnQpIHtcbiAgICBuZXdDYWNoZS5oZWFkID0gaGVhZFxuICAgIHJldHVyblxuICB9XG4gIC8vIFJlbW92ZSBzZWdtZW50IHRoYXQgd2UgZ290IGRhdGEgZm9yIHNvIHRoYXQgaXQgaXMgZmlsbGVkIGluIGR1cmluZyByZW5kZXJpbmcgb2YgcnNjLlxuICBmb3IgKGNvbnN0IGtleSBpbiByb3V0ZXJTdGF0ZVsxXSkge1xuICAgIGNvbnN0IHBhcmFsbGVsUm91dGVTdGF0ZSA9IHJvdXRlclN0YXRlWzFdW2tleV1cbiAgICBjb25zdCBzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZSA9IHBhcmFsbGVsUm91dGVTdGF0ZVswXVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudEZvclBhcmFsbGVsUm91dGUpXG5cbiAgICAvLyBUT0RPOiBXZSBzaG91bGQgdHJhdmVyc2UgdGhlIGNhY2hlTm9kZVNlZWREYXRhIHRyZWUgaW5zdGVhZCBvZiB0aGUgcm91dGVyXG4gICAgLy8gc3RhdGUgdHJlZS4gSWRlYWxseSwgdGhleSB3b3VsZCBhbHdheXMgYmUgdGhlIHNhbWUgc2hhcGUsIGJ1dCBiZWNhdXNlIG9mXG4gICAgLy8gdGhlIGxvYWRpbmcuanMgcGF0dGVybiwgY2FjaGVOb2RlU2VlZERhdGEgc29tZXRpbWVzIG9ubHkgcmVwcmVzZW50cyBhXG4gICAgLy8gcGFydGlhbCB0cmVlLiBUaGF0J3Mgd2h5IHRoaXMgbm9kZSBpcyBzb21ldGltZXMgbnVsbC4gT25jZSBQUFIgbGFuZHMsXG4gICAgLy8gbG9hZGluZy5qcyB3aWxsIG5vIGxvbmdlciBoYXZlIHNwZWNpYWwgYmVoYXZpb3IgYW5kIHdlIGNhbiB0cmF2ZXJzZSB0aGVcbiAgICAvLyBkYXRhIHRyZWUgaW5zdGVhZC5cbiAgICAvL1xuICAgIC8vIFdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIG1lcmdpbmcgdGhlIHJvdXRlciBzdGF0ZSB0cmVlIGFuZCB0aGUgZGF0YSB0cmVlXG4gICAgLy8gaW4gdGhlIHJlc3BvbnNlIGZvcm1hdCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHNlbmQgdGhlIGtleXMgdHdpY2UuXG4gICAgLy8gVGhlbiB0aGUgY2xpZW50IGNhbiBjb252ZXJ0IHRoZW0gaW50byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbnMuXG4gICAgY29uc3QgcGFyYWxsZWxTZWVkRGF0YSA9XG4gICAgICBjYWNoZU5vZGVTZWVkRGF0YSAhPT0gbnVsbCAmJiBjYWNoZU5vZGVTZWVkRGF0YVsyXVtrZXldICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBjYWNoZU5vZGVTZWVkRGF0YVsyXVtrZXldXG4gICAgICAgIDogbnVsbFxuICAgIGlmIChleGlzdGluZ0NhY2hlKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1BhcmFsbGVsUm91dGVzQ2FjaGVOb2RlID1cbiAgICAgICAgZXhpc3RpbmdDYWNoZS5wYXJhbGxlbFJvdXRlcy5nZXQoa2V5KVxuICAgICAgaWYgKGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUpIHtcbiAgICAgICAgY29uc3QgaGFzUmV1c2FibGVQcmVmZXRjaCA9XG4gICAgICAgICAgcHJlZmV0Y2hFbnRyeT8ua2luZCA9PT0gJ2F1dG8nICYmXG4gICAgICAgICAgcHJlZmV0Y2hFbnRyeS5zdGF0dXMgPT09IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5yZXVzYWJsZVxuXG4gICAgICAgIGxldCBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlID0gbmV3IE1hcChleGlzdGluZ1BhcmFsbGVsUm91dGVzQ2FjaGVOb2RlKVxuICAgICAgICBjb25zdCBleGlzdGluZ0NhY2hlTm9kZSA9IHBhcmFsbGVsUm91dGVDYWNoZU5vZGUuZ2V0KGNhY2hlS2V5KVxuICAgICAgICBsZXQgbmV3Q2FjaGVOb2RlOiBDYWNoZU5vZGVcbiAgICAgICAgaWYgKHBhcmFsbGVsU2VlZERhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAvLyBOZXcgZGF0YSB3YXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgICAgY29uc3Qgc2VlZE5vZGUgPSBwYXJhbGxlbFNlZWREYXRhWzFdXG4gICAgICAgICAgY29uc3QgbG9hZGluZyA9IHBhcmFsbGVsU2VlZERhdGFbM11cbiAgICAgICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgICAgIHJzYzogc2VlZE5vZGUsXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGEgUFBSLW9ubHkgZmllbGQuIFdoZW4gUFBSIGlzIGVuYWJsZWQsIHdlIHNob3VsZG4ndCBoaXRcbiAgICAgICAgICAgIC8vIHRoaXMgcGF0aCBkdXJpbmcgYSBuYXZpZ2F0aW9uLCBidXQgdW50aWwgUFBSIGlzIGZ1bGx5IGltcGxlbWVudGVkXG4gICAgICAgICAgICAvLyB5ZXQgaXQncyBwb3NzaWJsZSB0aGUgZXhpc3Rpbmcgbm9kZSBkb2VzIGhhdmUgYSBub24tbnVsbFxuICAgICAgICAgICAgLy8gYHByZWZldGNoUnNjYC4gQXMgYW4gaW5jcmVtZW50YWwgc3RlcCwgd2UnbGwganVzdCBkZS1vcHQgdG8gdGhlXG4gICAgICAgICAgICAvLyBvbGQgYmVoYXZpb3Ig4oCUIG5vIFBQUiB2YWx1ZS5cbiAgICAgICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcChleGlzdGluZ0NhY2hlTm9kZT8ucGFyYWxsZWxSb3V0ZXMpLFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGhhc1JldXNhYmxlUHJlZmV0Y2ggJiYgZXhpc3RpbmdDYWNoZU5vZGUpIHtcbiAgICAgICAgICAvLyBObyBuZXcgZGF0YSB3YXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIsIGJ1dCB0aGUgZXhpc3RpbmcgY2FjaGUgbm9kZVxuICAgICAgICAgIC8vIHdhcyBwcmVmZXRjaGVkLCBzbyB3ZSBzaG91bGQgcmV1c2UgdGhhdC5cbiAgICAgICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgICAgICBsYXp5RGF0YTogZXhpc3RpbmdDYWNoZU5vZGUubGF6eURhdGEsXG4gICAgICAgICAgICByc2M6IGV4aXN0aW5nQ2FjaGVOb2RlLnJzYyxcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBQUFItb25seSBmaWVsZC4gVW5saWtlIHRoZSBwcmV2aW91cyBicmFuY2gsIHNpbmNlIHdlJ3JlXG4gICAgICAgICAgICAvLyBqdXN0IGNsb25pbmcgdGhlIGV4aXN0aW5nIGNhY2hlIG5vZGUsIHdlIG1pZ2h0IGFzIHdlbGwga2VlcCB0aGVcbiAgICAgICAgICAgIC8vIFBQUiB2YWx1ZSwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgICAgcHJlZmV0Y2hSc2M6IGV4aXN0aW5nQ2FjaGVOb2RlLnByZWZldGNoUnNjLFxuICAgICAgICAgICAgaGVhZDogZXhpc3RpbmdDYWNoZU5vZGUuaGVhZCxcbiAgICAgICAgICAgIHByZWZldGNoSGVhZDogZXhpc3RpbmdDYWNoZU5vZGUucHJlZmV0Y2hIZWFkLFxuICAgICAgICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoZXhpc3RpbmdDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMpLFxuICAgICAgICAgICAgbG9hZGluZzogZXhpc3RpbmdDYWNoZU5vZGUubG9hZGluZyxcbiAgICAgICAgICB9IGFzIENhY2hlTm9kZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIGRhdGEgYXZhaWxhYmxlIGZvciB0aGlzIG5vZGUuIFRoaXMgd2lsbCB0cmlnZ2VyIGEgbGF6eSBmZXRjaFxuICAgICAgICAgIC8vIGR1cmluZyByZW5kZXIuXG4gICAgICAgICAgbmV3Q2FjaGVOb2RlID0ge1xuICAgICAgICAgICAgbGF6eURhdGE6IG51bGwsXG4gICAgICAgICAgICByc2M6IG51bGwsXG4gICAgICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgICAgIGhlYWQ6IG51bGwsXG4gICAgICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcChleGlzdGluZ0NhY2hlTm9kZT8ucGFyYWxsZWxSb3V0ZXMpLFxuICAgICAgICAgICAgbG9hZGluZzogbnVsbCxcbiAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJyaWRlcyB0aGUgY2FjaGUga2V5IHdpdGggdGhlIG5ldyBjYWNoZSBub2RlLlxuICAgICAgICBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlLnNldChjYWNoZUtleSwgbmV3Q2FjaGVOb2RlKVxuICAgICAgICAvLyBUcmF2ZXJzZSBkZWVwZXIgdG8gYXBwbHkgdGhlIGhlYWQgLyBmaWxsIGxhenkgaXRlbXMgdGlsbCB0aGUgaGVhZC5cbiAgICAgICAgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQoXG4gICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgbmV3Q2FjaGVOb2RlLFxuICAgICAgICAgIGV4aXN0aW5nQ2FjaGVOb2RlLFxuICAgICAgICAgIHBhcmFsbGVsUm91dGVTdGF0ZSxcbiAgICAgICAgICBwYXJhbGxlbFNlZWREYXRhID8gcGFyYWxsZWxTZWVkRGF0YSA6IG51bGwsXG4gICAgICAgICAgaGVhZCxcbiAgICAgICAgICBwcmVmZXRjaEVudHJ5XG4gICAgICAgIClcblxuICAgICAgICBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5zZXQoa2V5LCBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXdDYWNoZU5vZGU6IENhY2hlTm9kZVxuICAgIGlmIChwYXJhbGxlbFNlZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAvLyBOZXcgZGF0YSB3YXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICBjb25zdCBzZWVkTm9kZSA9IHBhcmFsbGVsU2VlZERhdGFbMV1cbiAgICAgIGNvbnN0IGxvYWRpbmcgPSBwYXJhbGxlbFNlZWREYXRhWzNdXG4gICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICByc2M6IHNlZWROb2RlLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gZGF0YSBhdmFpbGFibGUgZm9yIHRoaXMgbm9kZS4gVGhpcyB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoXG4gICAgICAvLyBkdXJpbmcgcmVuZGVyLlxuICAgICAgbmV3Q2FjaGVOb2RlID0ge1xuICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgcnNjOiBudWxsLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nOiBudWxsLFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1BhcmFsbGVsUm91dGVzID0gbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KGtleSlcbiAgICBpZiAoZXhpc3RpbmdQYXJhbGxlbFJvdXRlcykge1xuICAgICAgZXhpc3RpbmdQYXJhbGxlbFJvdXRlcy5zZXQoY2FjaGVLZXksIG5ld0NhY2hlTm9kZSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuc2V0KGtleSwgbmV3IE1hcChbW2NhY2hlS2V5LCBuZXdDYWNoZU5vZGVdXSkpXG4gICAgfVxuXG4gICAgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIG5ld0NhY2hlTm9kZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHBhcmFsbGVsUm91dGVTdGF0ZSxcbiAgICAgIHBhcmFsbGVsU2VlZERhdGEsXG4gICAgICBoZWFkLFxuICAgICAgcHJlZmV0Y2hFbnRyeVxuICAgIClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIiwibmF2aWdhdGVkQXQiLCJuZXdDYWNoZSIsImV4aXN0aW5nQ2FjaGUiLCJyb3V0ZXJTdGF0ZSIsImNhY2hlTm9kZVNlZWREYXRhIiwiaGVhZCIsInByZWZldGNoRW50cnkiLCJpc0xhc3RTZWdtZW50IiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImtleSIsInBhcmFsbGVsUm91dGVTdGF0ZSIsInNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlIiwiY2FjaGVLZXkiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsInBhcmFsbGVsU2VlZERhdGEiLCJ1bmRlZmluZWQiLCJleGlzdGluZ1BhcmFsbGVsUm91dGVzQ2FjaGVOb2RlIiwicGFyYWxsZWxSb3V0ZXMiLCJnZXQiLCJoYXNSZXVzYWJsZVByZWZldGNoIiwia2luZCIsInN0YXR1cyIsIlByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyIsInJldXNhYmxlIiwicGFyYWxsZWxSb3V0ZUNhY2hlTm9kZSIsIk1hcCIsImV4aXN0aW5nQ2FjaGVOb2RlIiwibmV3Q2FjaGVOb2RlIiwic2VlZE5vZGUiLCJsb2FkaW5nIiwibGF6eURhdGEiLCJyc2MiLCJwcmVmZXRjaFJzYyIsInByZWZldGNoSGVhZCIsInNldCIsImV4aXN0aW5nUGFyYWxsZWxSb3V0ZXMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/handle-mutable.js ***! \***********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleMutable\", ({\n enumerable: true,\n get: function() {\n return handleMutable;\n }\n}));\nconst _computechangedpath = __webpack_require__(/*! ./compute-changed-path */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nfunction isNotUndefined(value) {\n return typeof value !== 'undefined';\n}\nfunction handleMutable(state, mutable) {\n var _mutable_shouldScroll;\n // shouldScroll is true by default, can override to false.\n const shouldScroll = (_mutable_shouldScroll = mutable.shouldScroll) != null ? _mutable_shouldScroll : true;\n let nextUrl = state.nextUrl;\n if (isNotUndefined(mutable.patchedTree)) {\n // If we received a patched tree, we need to compute the changed path.\n const changedPath = (0, _computechangedpath.computeChangedPath)(state.tree, mutable.patchedTree);\n if (changedPath) {\n // If the tree changed, we need to update the nextUrl\n nextUrl = changedPath;\n } else if (!nextUrl) {\n // if the tree ends up being the same (ie, no changed path), and we don't have a nextUrl, then we should use the canonicalUrl\n nextUrl = state.canonicalUrl;\n }\n // otherwise this will be a no-op and continue to use the existing nextUrl\n }\n var _mutable_scrollableSegments;\n return {\n // Set href.\n canonicalUrl: isNotUndefined(mutable.canonicalUrl) ? mutable.canonicalUrl === state.canonicalUrl ? state.canonicalUrl : mutable.canonicalUrl : state.canonicalUrl,\n pushRef: {\n pendingPush: isNotUndefined(mutable.pendingPush) ? mutable.pendingPush : state.pushRef.pendingPush,\n mpaNavigation: isNotUndefined(mutable.mpaNavigation) ? mutable.mpaNavigation : state.pushRef.mpaNavigation,\n preserveCustomHistoryState: isNotUndefined(mutable.preserveCustomHistoryState) ? mutable.preserveCustomHistoryState : state.pushRef.preserveCustomHistoryState\n },\n // All navigation requires scroll and focus management to trigger.\n focusAndScrollRef: {\n apply: shouldScroll ? isNotUndefined(mutable == null ? void 0 : mutable.scrollableSegments) ? true : state.focusAndScrollRef.apply : false,\n onlyHashChange: mutable.onlyHashChange || false,\n hashFragment: shouldScroll ? mutable.hashFragment && mutable.hashFragment !== '' ? decodeURIComponent(mutable.hashFragment.slice(1)) : state.focusAndScrollRef.hashFragment : null,\n segmentPaths: shouldScroll ? (_mutable_scrollableSegments = mutable == null ? void 0 : mutable.scrollableSegments) != null ? _mutable_scrollableSegments : state.focusAndScrollRef.segmentPaths : []\n },\n // Apply cache.\n cache: mutable.cache ? mutable.cache : state.cache,\n prefetchCache: mutable.prefetchCache ? mutable.prefetchCache : state.prefetchCache,\n // Apply patched router state.\n tree: isNotUndefined(mutable.patchedTree) ? mutable.patchedTree : state.tree,\n nextUrl\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=handle-mutable.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaGFuZGxlLW11dGFibGUuanMiLCJtYXBwaW5ncyI6Ijs7OztpREFXZ0JBOzs7ZUFBQUE7OztnREFYbUI7QUFPbkMsU0FBU0MsZUFBa0JDLEtBQVE7SUFDakMsT0FBTyxPQUFPQSxVQUFVO0FBQzFCO0FBRU8sU0FBU0YsY0FDZEcsS0FBMkIsRUFDM0JDLE9BQWdCO1FBR0tBO0lBRHJCLDBEQUEwRDtJQUMxRCxNQUFNQyxlQUFlRCxDQUFBQSx3QkFBQUEsUUFBUUMsWUFBQUEsS0FBWSxPQUFwQkQsd0JBQXdCO0lBRTdDLElBQUlFLFVBQVVILE1BQU1HLE9BQU87SUFFM0IsSUFBSUwsZUFBZUcsUUFBUUcsV0FBVyxHQUFHO1FBQ3ZDLHNFQUFzRTtRQUN0RSxNQUFNQyxjQUFjQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQW1CTixNQUFNTyxJQUFJLEVBQUVOLFFBQVFHLFdBQVc7UUFDdEUsSUFBSUMsYUFBYTtZQUNmLHFEQUFxRDtZQUNyREYsVUFBVUU7UUFDWixPQUFPLElBQUksQ0FBQ0YsU0FBUztZQUNuQiw2SEFBNkg7WUFDN0hBLFVBQVVILE1BQU1RLFlBQVk7UUFDOUI7SUFDQSwwRUFBMEU7SUFDNUU7UUF5Q1FQO0lBdkNSLE9BQU87UUFDTCxZQUFZO1FBQ1pPLGNBQWNWLGVBQWVHLFFBQVFPLFlBQVksSUFDN0NQLFFBQVFPLFlBQVksS0FBS1IsTUFBTVEsWUFBWSxHQUN6Q1IsTUFBTVEsWUFBWSxHQUNsQlAsUUFBUU8sWUFBWSxHQUN0QlIsTUFBTVEsWUFBWTtRQUN0QkMsU0FBUztZQUNQQyxhQUFhWixlQUFlRyxRQUFRUyxXQUFXLElBQzNDVCxRQUFRUyxXQUFXLEdBQ25CVixNQUFNUyxPQUFPLENBQUNDLFdBQVc7WUFDN0JDLGVBQWViLGVBQWVHLFFBQVFVLGFBQWEsSUFDL0NWLFFBQVFVLGFBQWEsR0FDckJYLE1BQU1TLE9BQU8sQ0FBQ0UsYUFBYTtZQUMvQkMsNEJBQTRCZCxlQUMxQkcsUUFBUVcsMEJBQTBCLElBRWhDWCxRQUFRVywwQkFBMEIsR0FDbENaLE1BQU1TLE9BQU8sQ0FBQ0csMEJBQTBCO1FBQzlDO1FBQ0Esa0VBQWtFO1FBQ2xFQyxtQkFBbUI7WUFDakJDLE9BQU9aLGVBQ0hKLGVBQWVHLFdBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFFBQVNjLGtCQUFrQixJQUN4QyxPQUNBZixNQUFNYSxpQkFBaUIsQ0FBQ0MsS0FBSyxHQUUvQjtZQUNKRSxnQkFBZ0JmLFFBQVFlLGNBQWMsSUFBSTtZQUMxQ0MsY0FBY2YsZUFFVixRQUNRZSxZQUFZLElBQUloQixRQUFRZ0IsSUFESSxRQUNRLEtBQUssS0FFL0NDLG1CQUFtQmpCLFFBQVFnQixZQUFZLENBQUNFLEtBQUssQ0FBQyxNQUM5Q25CLE1BQU1hLGlCQUFpQixDQUFDSSxZQUFZLEdBRXRDO1lBQ0pHLGNBQWNsQixlQUNWRCxDQUFBQSw4QkFBQUEsV0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsUUFBU2Msa0JBQUFBLEtBQWtCLE9BQTNCZCw4QkFBK0JELE1BQU1hLGlCQUFpQixDQUFDTyxZQUFZLEdBRW5FLEVBQUU7UUFDUjtRQUNBLGVBQWU7UUFDZkMsT0FBT3BCLFFBQVFvQixLQUFLLEdBQUdwQixRQUFRb0IsS0FBSyxHQUFHckIsTUFBTXFCLEtBQUs7UUFDbERDLGVBQWVyQixRQUFRcUIsYUFBYSxHQUNoQ3JCLFFBQVFxQixhQUFhLEdBQ3JCdEIsTUFBTXNCLGFBQWE7UUFDdkIsOEJBQThCO1FBQzlCZixNQUFNVCxlQUFlRyxRQUFRRyxXQUFXLElBQ3BDSCxRQUFRRyxXQUFXLEdBQ25CSixNQUFNTyxJQUFJO1FBQ2RKO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9oYW5kbGUtbXV0YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlQ2hhbmdlZFBhdGggfSBmcm9tICcuL2NvbXB1dGUtY2hhbmdlZC1wYXRoJ1xuaW1wb3J0IHR5cGUge1xuICBNdXRhYmxlLFxuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlclN0YXRlLFxufSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuXG5mdW5jdGlvbiBpc05vdFVuZGVmaW5lZDxUPih2YWx1ZTogVCk6IHZhbHVlIGlzIEV4Y2x1ZGU8VCwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVNdXRhYmxlKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIG11dGFibGU6IE11dGFibGVcbik6IFJlZHVjZXJTdGF0ZSB7XG4gIC8vIHNob3VsZFNjcm9sbCBpcyB0cnVlIGJ5IGRlZmF1bHQsIGNhbiBvdmVycmlkZSB0byBmYWxzZS5cbiAgY29uc3Qgc2hvdWxkU2Nyb2xsID0gbXV0YWJsZS5zaG91bGRTY3JvbGwgPz8gdHJ1ZVxuXG4gIGxldCBuZXh0VXJsID0gc3RhdGUubmV4dFVybFxuXG4gIGlmIChpc05vdFVuZGVmaW5lZChtdXRhYmxlLnBhdGNoZWRUcmVlKSkge1xuICAgIC8vIElmIHdlIHJlY2VpdmVkIGEgcGF0Y2hlZCB0cmVlLCB3ZSBuZWVkIHRvIGNvbXB1dGUgdGhlIGNoYW5nZWQgcGF0aC5cbiAgICBjb25zdCBjaGFuZ2VkUGF0aCA9IGNvbXB1dGVDaGFuZ2VkUGF0aChzdGF0ZS50cmVlLCBtdXRhYmxlLnBhdGNoZWRUcmVlKVxuICAgIGlmIChjaGFuZ2VkUGF0aCkge1xuICAgICAgLy8gSWYgdGhlIHRyZWUgY2hhbmdlZCwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIG5leHRVcmxcbiAgICAgIG5leHRVcmwgPSBjaGFuZ2VkUGF0aFxuICAgIH0gZWxzZSBpZiAoIW5leHRVcmwpIHtcbiAgICAgIC8vIGlmIHRoZSB0cmVlIGVuZHMgdXAgYmVpbmcgdGhlIHNhbWUgKGllLCBubyBjaGFuZ2VkIHBhdGgpLCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIG5leHRVcmwsIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgY2Fub25pY2FsVXJsXG4gICAgICBuZXh0VXJsID0gc3RhdGUuY2Fub25pY2FsVXJsXG4gICAgfVxuICAgIC8vIG90aGVyd2lzZSB0aGlzIHdpbGwgYmUgYSBuby1vcCBhbmQgY29udGludWUgdG8gdXNlIHRoZSBleGlzdGluZyBuZXh0VXJsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIFNldCBocmVmLlxuICAgIGNhbm9uaWNhbFVybDogaXNOb3RVbmRlZmluZWQobXV0YWJsZS5jYW5vbmljYWxVcmwpXG4gICAgICA/IG11dGFibGUuY2Fub25pY2FsVXJsID09PSBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICAgICAgPyBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICAgICAgOiBtdXRhYmxlLmNhbm9uaWNhbFVybFxuICAgICAgOiBzdGF0ZS5jYW5vbmljYWxVcmwsXG4gICAgcHVzaFJlZjoge1xuICAgICAgcGVuZGluZ1B1c2g6IGlzTm90VW5kZWZpbmVkKG11dGFibGUucGVuZGluZ1B1c2gpXG4gICAgICAgID8gbXV0YWJsZS5wZW5kaW5nUHVzaFxuICAgICAgICA6IHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2gsXG4gICAgICBtcGFOYXZpZ2F0aW9uOiBpc05vdFVuZGVmaW5lZChtdXRhYmxlLm1wYU5hdmlnYXRpb24pXG4gICAgICAgID8gbXV0YWJsZS5tcGFOYXZpZ2F0aW9uXG4gICAgICAgIDogc3RhdGUucHVzaFJlZi5tcGFOYXZpZ2F0aW9uLFxuICAgICAgcHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6IGlzTm90VW5kZWZpbmVkKFxuICAgICAgICBtdXRhYmxlLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlXG4gICAgICApXG4gICAgICAgID8gbXV0YWJsZS5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZVxuICAgICAgICA6IHN0YXRlLnB1c2hSZWYucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUsXG4gICAgfSxcbiAgICAvLyBBbGwgbmF2aWdhdGlvbiByZXF1aXJlcyBzY3JvbGwgYW5kIGZvY3VzIG1hbmFnZW1lbnQgdG8gdHJpZ2dlci5cbiAgICBmb2N1c0FuZFNjcm9sbFJlZjoge1xuICAgICAgYXBwbHk6IHNob3VsZFNjcm9sbFxuICAgICAgICA/IGlzTm90VW5kZWZpbmVkKG11dGFibGU/LnNjcm9sbGFibGVTZWdtZW50cylcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IHN0YXRlLmZvY3VzQW5kU2Nyb2xsUmVmLmFwcGx5XG4gICAgICAgIDogLy8gSWYgc2hvdWxkU2Nyb2xsIGlzIGZhbHNlIHRoZW4gd2Ugc2hvdWxkIG5vdCBhcHBseSBzY3JvbGwgYW5kIGZvY3VzIG1hbmFnZW1lbnQuXG4gICAgICAgICAgZmFsc2UsXG4gICAgICBvbmx5SGFzaENoYW5nZTogbXV0YWJsZS5vbmx5SGFzaENoYW5nZSB8fCBmYWxzZSxcbiAgICAgIGhhc2hGcmFnbWVudDogc2hvdWxkU2Nyb2xsXG4gICAgICAgID8gLy8gRW1wdHkgaGFzaCBzaG91bGQgdHJpZ2dlciBkZWZhdWx0IGJlaGF2aW9yIG9mIHNjcm9sbGluZyBsYXlvdXQgaW50byB2aWV3LlxuICAgICAgICAgIC8vICN0b3AgaXMgaGFuZGxlZCBpbiBsYXlvdXQtcm91dGVyLlxuICAgICAgICAgIG11dGFibGUuaGFzaEZyYWdtZW50ICYmIG11dGFibGUuaGFzaEZyYWdtZW50ICE9PSAnJ1xuICAgICAgICAgID8gLy8gUmVtb3ZlIGxlYWRpbmcgIyBhbmQgZGVjb2RlIGhhc2ggdG8gbWFrZSBub24tbGF0aW4gaGFzaGVzIHdvcmsuXG4gICAgICAgICAgICBkZWNvZGVVUklDb21wb25lbnQobXV0YWJsZS5oYXNoRnJhZ21lbnQuc2xpY2UoMSkpXG4gICAgICAgICAgOiBzdGF0ZS5mb2N1c0FuZFNjcm9sbFJlZi5oYXNoRnJhZ21lbnRcbiAgICAgICAgOiAvLyBJZiBzaG91bGRTY3JvbGwgaXMgZmFsc2UgdGhlbiB3ZSBzaG91bGQgbm90IGFwcGx5IHNjcm9sbCBhbmQgZm9jdXMgbWFuYWdlbWVudC5cbiAgICAgICAgICBudWxsLFxuICAgICAgc2VnbWVudFBhdGhzOiBzaG91bGRTY3JvbGxcbiAgICAgICAgPyBtdXRhYmxlPy5zY3JvbGxhYmxlU2VnbWVudHMgPz8gc3RhdGUuZm9jdXNBbmRTY3JvbGxSZWYuc2VnbWVudFBhdGhzXG4gICAgICAgIDogLy8gSWYgc2hvdWxkU2Nyb2xsIGlzIGZhbHNlIHRoZW4gd2Ugc2hvdWxkIG5vdCBhcHBseSBzY3JvbGwgYW5kIGZvY3VzIG1hbmFnZW1lbnQuXG4gICAgICAgICAgW10sXG4gICAgfSxcbiAgICAvLyBBcHBseSBjYWNoZS5cbiAgICBjYWNoZTogbXV0YWJsZS5jYWNoZSA/IG11dGFibGUuY2FjaGUgOiBzdGF0ZS5jYWNoZSxcbiAgICBwcmVmZXRjaENhY2hlOiBtdXRhYmxlLnByZWZldGNoQ2FjaGVcbiAgICAgID8gbXV0YWJsZS5wcmVmZXRjaENhY2hlXG4gICAgICA6IHN0YXRlLnByZWZldGNoQ2FjaGUsXG4gICAgLy8gQXBwbHkgcGF0Y2hlZCByb3V0ZXIgc3RhdGUuXG4gICAgdHJlZTogaXNOb3RVbmRlZmluZWQobXV0YWJsZS5wYXRjaGVkVHJlZSlcbiAgICAgID8gbXV0YWJsZS5wYXRjaGVkVHJlZVxuICAgICAgOiBzdGF0ZS50cmVlLFxuICAgIG5leHRVcmwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJoYW5kbGVNdXRhYmxlIiwiaXNOb3RVbmRlZmluZWQiLCJ2YWx1ZSIsInN0YXRlIiwibXV0YWJsZSIsInNob3VsZFNjcm9sbCIsIm5leHRVcmwiLCJwYXRjaGVkVHJlZSIsImNoYW5nZWRQYXRoIiwiY29tcHV0ZUNoYW5nZWRQYXRoIiwidHJlZSIsImNhbm9uaWNhbFVybCIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsIm1wYU5hdmlnYXRpb24iLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImZvY3VzQW5kU2Nyb2xsUmVmIiwiYXBwbHkiLCJzY3JvbGxhYmxlU2VnbWVudHMiLCJvbmx5SGFzaENoYW5nZSIsImhhc2hGcmFnbWVudCIsImRlY29kZVVSSUNvbXBvbmVudCIsInNsaWNlIiwic2VnbWVudFBhdGhzIiwiY2FjaGUiLCJwcmVmZXRjaENhY2hlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js ***! \********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleSegmentMismatch\", ({\n enumerable: true,\n get: function() {\n return handleSegmentMismatch;\n }\n}));\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nfunction handleSegmentMismatch(state, action, treePatch) {\n if (true) {\n console.warn('Performing hard navigation because your application experienced an unrecoverable error. If this keeps occurring, please file a Next.js issue.\\n\\n' + 'Reason: Segment mismatch\\n' + (\"Last Action: \" + action.type + \"\\n\\n\") + (\"Current Tree: \" + JSON.stringify(state.tree) + \"\\n\\n\") + (\"Tree Patch Payload: \" + JSON.stringify(treePatch)));\n }\n return (0, _navigatereducer.handleExternalUrl)(state, {}, state.canonicalUrl, true);\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=handle-segment-mismatch.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaGFuZGxlLXNlZ21lbnQtbWlzbWF0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozt5REFXZ0JBOzs7ZUFBQUE7Ozs2Q0FWa0I7QUFVM0IsU0FBU0Esc0JBQ2RDLEtBQTJCLEVBQzNCQyxNQUFzQixFQUN0QkMsU0FBNEI7SUFFNUIsSUFBSUMsSUFBb0IsRUFBb0I7UUFDMUNHLFFBQVFDLElBQUksQ0FDVixzSkFDRSwrQkFDQSxDQUFDLGtCQUFlTixPQUFPTyxJQUFJLEdBQUMsT0FBSSxJQUNoQyxtQkFBaUJDLEtBQUtDLFNBQVMsQ0FBQ1YsTUFBTVcsSUFBSSxJQUFFLE9BQUksSUFDaEQseUJBQXVCRixLQUFLQyxTQUFTLENBQUNSLFVBQUFBLENBQVc7SUFFdkQ7SUFFQSxPQUFPVSxDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQWtCWixPQUFPLENBQUMsR0FBR0EsTUFBTWEsWUFBWSxFQUFFO0FBQzFEIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2hhbmRsZS1zZWdtZW50LW1pc21hdGNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGhhbmRsZUV4dGVybmFsVXJsIH0gZnJvbSAnLi9yZWR1Y2Vycy9uYXZpZ2F0ZS1yZWR1Y2VyJ1xuaW1wb3J0IHR5cGUge1xuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlckFjdGlvbnMsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbi8qKlxuICogSGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgY2xpZW50IHJvdXRlciBhdHRlbXB0ZWQgdG8gcGF0Y2ggdGhlIHRyZWUgYnV0LCBkdWUgdG8gYSBtaXNtYXRjaCwgdGhlIHBhdGNoIGZhaWxlZC5cbiAqIFRoaXMgd2lsbCBwZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uIHRvIHJldHVybiB0aGUgcm91dGVyIHRvIGEgdmFsaWQgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVTZWdtZW50TWlzbWF0Y2goXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucyxcbiAgdHJlZVBhdGNoOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdQZXJmb3JtaW5nIGhhcmQgbmF2aWdhdGlvbiBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gZXhwZXJpZW5jZWQgYW4gdW5yZWNvdmVyYWJsZSBlcnJvci4gSWYgdGhpcyBrZWVwcyBvY2N1cnJpbmcsIHBsZWFzZSBmaWxlIGEgTmV4dC5qcyBpc3N1ZS5cXG5cXG4nICtcbiAgICAgICAgJ1JlYXNvbjogU2VnbWVudCBtaXNtYXRjaFxcbicgK1xuICAgICAgICBgTGFzdCBBY3Rpb246ICR7YWN0aW9uLnR5cGV9XFxuXFxuYCArXG4gICAgICAgIGBDdXJyZW50IFRyZWU6ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUudHJlZSl9XFxuXFxuYCArXG4gICAgICAgIGBUcmVlIFBhdGNoIFBheWxvYWQ6ICR7SlNPTi5zdHJpbmdpZnkodHJlZVBhdGNoKX1gXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCB7fSwgc3RhdGUuY2Fub25pY2FsVXJsLCB0cnVlKVxufVxuIl0sIm5hbWVzIjpbImhhbmRsZVNlZ21lbnRNaXNtYXRjaCIsInN0YXRlIiwiYWN0aW9uIiwidHJlZVBhdGNoIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIndhcm4iLCJ0eXBlIiwiSlNPTiIsInN0cmluZ2lmeSIsInRyZWUiLCJoYW5kbGVFeHRlcm5hbFVybCIsImNhbm9uaWNhbFVybCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js ***! \**************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"invalidateCacheBelowFlightSegmentPath\", ({\n enumerable: true,\n get: function() {\n return invalidateCacheBelowFlightSegmentPath;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nfunction invalidateCacheBelowFlightSegmentPath(newCache, existingCache, flightSegmentPath) {\n const isLastEntry = flightSegmentPath.length <= 2;\n const [parallelRouteKey, segment] = flightSegmentPath;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCache.parallelRoutes.get(parallelRouteKey);\n if (!existingChildSegmentMap) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return;\n }\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n // In case of last entry don't copy further down.\n if (isLastEntry) {\n childSegmentMap.delete(cacheKey);\n return;\n }\n const existingChildCacheNode = existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n if (!childCacheNode || !existingChildCacheNode) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes)\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n invalidateCacheBelowFlightSegmentPath(childCacheNode, existingChildCacheNode, (0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath));\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=invalidate-cache-below-flight-segmentpath.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1iZWxvdy1mbGlnaHQtc2VnbWVudHBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozt5RUFRZ0JBOzs7ZUFBQUE7OztrREFOcUI7K0NBQ0k7QUFLbEMsU0FBU0Esc0NBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsaUJBQW9DO0lBRXBDLE1BQU1DLGNBQWNELGtCQUFrQkUsTUFBTSxJQUFJO0lBQ2hELE1BQU0sQ0FBQ0Msa0JBQWtCQyxRQUFRLEdBQUdKO0lBRXBDLE1BQU1LLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO0lBRXRDLE1BQU1HLDBCQUNKUixjQUFjUyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbkMsSUFBSSxDQUFDSSx5QkFBeUI7UUFDNUIsNkVBQTZFO1FBQzdFLHNFQUFzRTtRQUN0RTtJQUNGO0lBRUEsSUFBSUcsa0JBQWtCWixTQUFTVSxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFDbEQsSUFBSSxDQUFDTyxtQkFBbUJBLG9CQUFvQkgseUJBQXlCO1FBQ25FRyxrQkFBa0IsSUFBSUMsSUFBSUo7UUFDMUJULFNBQVNVLGNBQWMsQ0FBQ0ksR0FBRyxDQUFDVCxrQkFBa0JPO0lBQ2hEO0lBRUEsaURBQWlEO0lBQ2pELElBQUlULGFBQWE7UUFDZlMsZ0JBQWdCRyxNQUFNLENBQUNSO1FBQ3ZCO0lBQ0Y7SUFFQSxNQUFNUyx5QkFBeUJQLHdCQUF3QkUsR0FBRyxDQUFDSjtJQUMzRCxJQUFJVSxpQkFBaUJMLGdCQUFnQkQsR0FBRyxDQUFDSjtJQUV6QyxJQUFJLENBQUNVLGtCQUFrQixDQUFDRCx3QkFBd0I7UUFDOUMsNkVBQTZFO1FBQzdFLHNFQUFzRTtRQUN0RTtJQUNGO0lBRUEsSUFBSUMsbUJBQW1CRCx3QkFBd0I7UUFDN0NDLGlCQUFpQjtZQUNmQyxVQUFVRCxlQUFlQyxRQUFRO1lBQ2pDQyxLQUFLRixlQUFlRSxHQUFHO1lBQ3ZCQyxhQUFhSCxlQUFlRyxXQUFXO1lBQ3ZDQyxNQUFNSixlQUFlSSxJQUFJO1lBQ3pCQyxjQUFjTCxlQUFlSyxZQUFZO1lBQ3pDWixnQkFBZ0IsSUFBSUcsSUFBSUksZUFBZVAsY0FBYztRQUN2RDtRQUNBRSxnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVU7SUFDaEM7SUFFQWxCLHNDQUNFa0IsZ0JBQ0FELHdCQUNBTyxDQUFBQSxHQUFBQSxtQkFBQUEsd0JBQUFBLEVBQXlCckI7QUFFN0IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1iZWxvdy1mbGlnaHQtc2VnbWVudHBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgRmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcbmltcG9ydCB7IGdldE5leHRGbGlnaHRTZWdtZW50UGF0aCB9IGZyb20gJy4uLy4uL2ZsaWdodC1kYXRhLWhlbHBlcnMnXG5cbi8qKlxuICogRmlsbCBjYWNoZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBmbGlnaHRTZWdtZW50UGF0aCwgaW52YWxpZGF0aW5nIGFueXRoaW5nIGJlbG93IGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aChcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICBmbGlnaHRTZWdtZW50UGF0aDogRmxpZ2h0U2VnbWVudFBhdGhcbik6IHZvaWQge1xuICBjb25zdCBpc0xhc3RFbnRyeSA9IGZsaWdodFNlZ21lbnRQYXRoLmxlbmd0aCA8PSAyXG4gIGNvbnN0IFtwYXJhbGxlbFJvdXRlS2V5LCBzZWdtZW50XSA9IGZsaWdodFNlZ21lbnRQYXRoXG5cbiAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50KVxuXG4gIGNvbnN0IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwID1cbiAgICBleGlzdGluZ0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuXG4gIGlmICghZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXApIHtcbiAgICAvLyBCYWlsb3V0IGJlY2F1c2UgdGhlIGV4aXN0aW5nIGNhY2hlIGRvZXMgbm90IGhhdmUgdGhlIHBhdGggdG8gdGhlIGxlYWYgbm9kZVxuICAgIC8vIFdpbGwgdHJpZ2dlciBsYXp5IGZldGNoIGluIGxheW91dC1yb3V0ZXIgYmVjYXVzZSBvZiBtaXNzaW5nIHNlZ21lbnRcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBjaGlsZFNlZ21lbnRNYXAgPSBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgaWYgKCFjaGlsZFNlZ21lbnRNYXAgfHwgY2hpbGRTZWdtZW50TWFwID09PSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcCkge1xuICAgIGNoaWxkU2VnbWVudE1hcCA9IG5ldyBNYXAoZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXApXG4gICAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVLZXksIGNoaWxkU2VnbWVudE1hcClcbiAgfVxuXG4gIC8vIEluIGNhc2Ugb2YgbGFzdCBlbnRyeSBkb24ndCBjb3B5IGZ1cnRoZXIgZG93bi5cbiAgaWYgKGlzTGFzdEVudHJ5KSB7XG4gICAgY2hpbGRTZWdtZW50TWFwLmRlbGV0ZShjYWNoZUtleSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUgPSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcC5nZXQoY2FjaGVLZXkpXG4gIGxldCBjaGlsZENhY2hlTm9kZSA9IGNoaWxkU2VnbWVudE1hcC5nZXQoY2FjaGVLZXkpXG5cbiAgaWYgKCFjaGlsZENhY2hlTm9kZSB8fCAhZXhpc3RpbmdDaGlsZENhY2hlTm9kZSkge1xuICAgIC8vIEJhaWxvdXQgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGUgZG9lcyBub3QgaGF2ZSB0aGUgcGF0aCB0byB0aGUgbGVhZiBub2RlXG4gICAgLy8gV2lsbCB0cmlnZ2VyIGxhenkgZmV0Y2ggaW4gbGF5b3V0LXJvdXRlciBiZWNhdXNlIG9mIG1pc3Npbmcgc2VnbWVudFxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKGNoaWxkQ2FjaGVOb2RlID09PSBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlKSB7XG4gICAgY2hpbGRDYWNoZU5vZGUgPSB7XG4gICAgICBsYXp5RGF0YTogY2hpbGRDYWNoZU5vZGUubGF6eURhdGEsXG4gICAgICByc2M6IGNoaWxkQ2FjaGVOb2RlLnJzYyxcbiAgICAgIHByZWZldGNoUnNjOiBjaGlsZENhY2hlTm9kZS5wcmVmZXRjaFJzYyxcbiAgICAgIGhlYWQ6IGNoaWxkQ2FjaGVOb2RlLmhlYWQsXG4gICAgICBwcmVmZXRjaEhlYWQ6IGNoaWxkQ2FjaGVOb2RlLnByZWZldGNoSGVhZCxcbiAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKGNoaWxkQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzKSxcbiAgICB9IGFzIENhY2hlTm9kZVxuICAgIGNoaWxkU2VnbWVudE1hcC5zZXQoY2FjaGVLZXksIGNoaWxkQ2FjaGVOb2RlKVxuICB9XG5cbiAgaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aChcbiAgICBjaGlsZENhY2hlTm9kZSxcbiAgICBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlLFxuICAgIGdldE5leHRGbGlnaHRTZWdtZW50UGF0aChmbGlnaHRTZWdtZW50UGF0aClcbiAgKVxufVxuIl0sIm5hbWVzIjpbImludmFsaWRhdGVDYWNoZUJlbG93RmxpZ2h0U2VnbWVudFBhdGgiLCJuZXdDYWNoZSIsImV4aXN0aW5nQ2FjaGUiLCJmbGlnaHRTZWdtZW50UGF0aCIsImlzTGFzdEVudHJ5IiwibGVuZ3RoIiwicGFyYWxsZWxSb3V0ZUtleSIsInNlZ21lbnQiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwiZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXAiLCJwYXJhbGxlbFJvdXRlcyIsImdldCIsImNoaWxkU2VnbWVudE1hcCIsIk1hcCIsInNldCIsImRlbGV0ZSIsImV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUiLCJjaGlsZENhY2hlTm9kZSIsImxhenlEYXRhIiwicnNjIiwicHJlZmV0Y2hSc2MiLCJoZWFkIiwicHJlZmV0Y2hIZWFkIiwiZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js ***! \*****************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"invalidateCacheByRouterState\", ({\n enumerable: true,\n get: function() {\n return invalidateCacheByRouterState;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction invalidateCacheByRouterState(newCache, existingCache, routerState) {\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for(const key in routerState[1]){\n const segmentForParallelRoute = routerState[1][key][0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n const existingParallelRoutesCacheNode = existingCache.parallelRoutes.get(key);\n if (existingParallelRoutesCacheNode) {\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode);\n parallelRouteCacheNode.delete(cacheKey);\n newCache.parallelRoutes.set(key, parallelRouteCacheNode);\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=invalidate-cache-by-router-state.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1ieS1yb3V0ZXItc3RhdGUuanMiLCJtYXBwaW5ncyI6Ijs7OztnRUFPZ0JBOzs7ZUFBQUE7OztrREFMcUI7QUFLOUIsU0FBU0EsNkJBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsV0FBOEI7SUFFOUIsdUZBQXVGO0lBQ3ZGLElBQUssTUFBTUMsT0FBT0QsV0FBVyxDQUFDLEVBQUUsQ0FBRTtRQUNoQyxNQUFNRSwwQkFBMEJGLFdBQVcsQ0FBQyxFQUFFLENBQUNDLElBQUksQ0FBQyxFQUFFO1FBQ3RELE1BQU1FLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO1FBQ3RDLE1BQU1HLGtDQUNKTixjQUFjTyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047UUFDbkMsSUFBSUksaUNBQWlDO1lBQ25DLElBQUlHLHlCQUF5QixJQUFJQyxJQUFJSjtZQUNyQ0csdUJBQXVCRSxNQUFNLENBQUNQO1lBQzlCTCxTQUFTUSxjQUFjLENBQUNLLEdBQUcsQ0FBQ1YsS0FBS087UUFDbkM7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ludmFsaWRhdGUtY2FjaGUtYnktcm91dGVyLXN0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBjcmVhdGVSb3V0ZXJDYWNoZUtleSB9IGZyb20gJy4vY3JlYXRlLXJvdXRlci1jYWNoZS1rZXknXG5cbi8qKlxuICogSW52YWxpZGF0ZSBjYWNoZSBvbmUgbGV2ZWwgZG93biBmcm9tIHRoZSByb3V0ZXIgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlQ2FjaGVCeVJvdXRlclN0YXRlKFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBleGlzdGluZ0NhY2hlOiBDYWNoZU5vZGUsXG4gIHJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogdm9pZCB7XG4gIC8vIFJlbW92ZSBzZWdtZW50IHRoYXQgd2UgZ290IGRhdGEgZm9yIHNvIHRoYXQgaXQgaXMgZmlsbGVkIGluIGR1cmluZyByZW5kZXJpbmcgb2YgcnNjLlxuICBmb3IgKGNvbnN0IGtleSBpbiByb3V0ZXJTdGF0ZVsxXSkge1xuICAgIGNvbnN0IHNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlID0gcm91dGVyU3RhdGVbMV1ba2V5XVswXVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudEZvclBhcmFsbGVsUm91dGUpXG4gICAgY29uc3QgZXhpc3RpbmdQYXJhbGxlbFJvdXRlc0NhY2hlTm9kZSA9XG4gICAgICBleGlzdGluZ0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChrZXkpXG4gICAgaWYgKGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUpIHtcbiAgICAgIGxldCBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlID0gbmV3IE1hcChleGlzdGluZ1BhcmFsbGVsUm91dGVzQ2FjaGVOb2RlKVxuICAgICAgcGFyYWxsZWxSb3V0ZUNhY2hlTm9kZS5kZWxldGUoY2FjaGVLZXkpXG4gICAgICBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5zZXQoa2V5LCBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImludmFsaWRhdGVDYWNoZUJ5Um91dGVyU3RhdGUiLCJuZXdDYWNoZSIsImV4aXN0aW5nQ2FjaGUiLCJyb3V0ZXJTdGF0ZSIsImtleSIsInNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlIiwiY2FjaGVLZXkiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsImV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUiLCJwYXJhbGxlbFJvdXRlcyIsImdldCIsInBhcmFsbGVsUm91dGVDYWNoZU5vZGUiLCJNYXAiLCJkZWxldGUiLCJzZXQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js ***! \*****************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNavigatingToNewRootLayout\", ({\n enumerable: true,\n get: function() {\n return isNavigatingToNewRootLayout;\n }\n}));\nfunction isNavigatingToNewRootLayout(currentTree, nextTree) {\n // Compare segments\n const currentTreeSegment = currentTree[0];\n const nextTreeSegment = nextTree[0];\n // If any segment is different before we find the root layout, the root layout has changed.\n // E.g. /same/(group1)/layout.js -> /same/(group2)/layout.js\n // First segment is 'same' for both, keep looking. (group1) changed to (group2) before the root layout was found, it must have changed.\n if (Array.isArray(currentTreeSegment) && Array.isArray(nextTreeSegment)) {\n // Compare dynamic param name and type but ignore the value, different values would not affect the current root layout\n // /[name] - /slug1 and /slug2, both values (slug1 & slug2) still has the same layout /[name]/layout.js\n if (currentTreeSegment[0] !== nextTreeSegment[0] || currentTreeSegment[2] !== nextTreeSegment[2]) {\n return true;\n }\n } else if (currentTreeSegment !== nextTreeSegment) {\n return true;\n }\n // Current tree root layout found\n if (currentTree[4]) {\n // If the next tree doesn't have the root layout flag, it must have changed.\n return !nextTree[4];\n }\n // Current tree didn't have its root layout here, must have changed.\n if (nextTree[4]) {\n return true;\n }\n // We can't assume it's `parallelRoutes.children` here in case the root layout is `app/@something/layout.js`\n // But it's not possible to be more than one parallelRoutes before the root layout is found\n // TODO-APP: change to traverse all parallel routes\n const currentTreeChild = Object.values(currentTree[1])[0];\n const nextTreeChild = Object.values(nextTree[1])[0];\n if (!currentTreeChild || !nextTreeChild) return true;\n return isNavigatingToNewRootLayout(currentTreeChild, nextTreeChild);\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=is-navigating-to-new-root-layout.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLDRCQUNkQyxXQUE4QixFQUM5QkMsUUFBMkI7SUFFM0IsbUJBQW1CO0lBQ25CLE1BQU1DLHFCQUFxQkYsV0FBVyxDQUFDLEVBQUU7SUFDekMsTUFBTUcsa0JBQWtCRixRQUFRLENBQUMsRUFBRTtJQUVuQywyRkFBMkY7SUFDM0YsNERBQTREO0lBQzVELHVJQUF1STtJQUN2SSxJQUFJRyxNQUFNQyxPQUFPLENBQUNILHVCQUF1QkUsTUFBTUMsT0FBTyxDQUFDRixrQkFBa0I7UUFDdkUsc0hBQXNIO1FBQ3RILHVHQUF1RztRQUN2RyxJQUNFRCxrQkFBa0IsQ0FBQyxFQUFFLEtBQUtDLGVBQWUsQ0FBQyxFQUFFLElBQzVDRCxrQkFBa0IsQ0FBQyxFQUFFLEtBQUtDLGVBQWUsQ0FBQyxFQUFFLEVBQzVDO1lBQ0EsT0FBTztRQUNUO0lBQ0YsT0FBTyxJQUFJRCx1QkFBdUJDLGlCQUFpQjtRQUNqRCxPQUFPO0lBQ1Q7SUFFQSxpQ0FBaUM7SUFDakMsSUFBSUgsV0FBVyxDQUFDLEVBQUUsRUFBRTtRQUNsQiw0RUFBNEU7UUFDNUUsT0FBTyxDQUFDQyxRQUFRLENBQUMsRUFBRTtJQUNyQjtJQUNBLG9FQUFvRTtJQUNwRSxJQUFJQSxRQUFRLENBQUMsRUFBRSxFQUFFO1FBQ2YsT0FBTztJQUNUO0lBQ0EsNEdBQTRHO0lBQzVHLDJGQUEyRjtJQUMzRixtREFBbUQ7SUFDbkQsTUFBTUssbUJBQW1CQyxPQUFPQyxNQUFNLENBQUNSLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pELE1BQU1TLGdCQUFnQkYsT0FBT0MsTUFBTSxDQUFDUCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLENBQUNLLG9CQUFvQixDQUFDRyxlQUFlLE9BQU87SUFDaEQsT0FBT1YsNEJBQTRCTyxrQkFBa0JHO0FBQ3ZEIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2lzLW5hdmlnYXRpbmctdG8tbmV3LXJvb3QtbGF5b3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChcbiAgY3VycmVudFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXh0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IGJvb2xlYW4ge1xuICAvLyBDb21wYXJlIHNlZ21lbnRzXG4gIGNvbnN0IGN1cnJlbnRUcmVlU2VnbWVudCA9IGN1cnJlbnRUcmVlWzBdXG4gIGNvbnN0IG5leHRUcmVlU2VnbWVudCA9IG5leHRUcmVlWzBdXG5cbiAgLy8gSWYgYW55IHNlZ21lbnQgaXMgZGlmZmVyZW50IGJlZm9yZSB3ZSBmaW5kIHRoZSByb290IGxheW91dCwgdGhlIHJvb3QgbGF5b3V0IGhhcyBjaGFuZ2VkLlxuICAvLyBFLmcuIC9zYW1lLyhncm91cDEpL2xheW91dC5qcyAtPiAvc2FtZS8oZ3JvdXAyKS9sYXlvdXQuanNcbiAgLy8gRmlyc3Qgc2VnbWVudCBpcyAnc2FtZScgZm9yIGJvdGgsIGtlZXAgbG9va2luZy4gKGdyb3VwMSkgY2hhbmdlZCB0byAoZ3JvdXAyKSBiZWZvcmUgdGhlIHJvb3QgbGF5b3V0IHdhcyBmb3VuZCwgaXQgbXVzdCBoYXZlIGNoYW5nZWQuXG4gIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRUcmVlU2VnbWVudCkgJiYgQXJyYXkuaXNBcnJheShuZXh0VHJlZVNlZ21lbnQpKSB7XG4gICAgLy8gQ29tcGFyZSBkeW5hbWljIHBhcmFtIG5hbWUgYW5kIHR5cGUgYnV0IGlnbm9yZSB0aGUgdmFsdWUsIGRpZmZlcmVudCB2YWx1ZXMgd291bGQgbm90IGFmZmVjdCB0aGUgY3VycmVudCByb290IGxheW91dFxuICAgIC8vIC9bbmFtZV0gLSAvc2x1ZzEgYW5kIC9zbHVnMiwgYm90aCB2YWx1ZXMgKHNsdWcxICYgc2x1ZzIpIHN0aWxsIGhhcyB0aGUgc2FtZSBsYXlvdXQgL1tuYW1lXS9sYXlvdXQuanNcbiAgICBpZiAoXG4gICAgICBjdXJyZW50VHJlZVNlZ21lbnRbMF0gIT09IG5leHRUcmVlU2VnbWVudFswXSB8fFxuICAgICAgY3VycmVudFRyZWVTZWdtZW50WzJdICE9PSBuZXh0VHJlZVNlZ21lbnRbMl1cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9IGVsc2UgaWYgKGN1cnJlbnRUcmVlU2VnbWVudCAhPT0gbmV4dFRyZWVTZWdtZW50KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEN1cnJlbnQgdHJlZSByb290IGxheW91dCBmb3VuZFxuICBpZiAoY3VycmVudFRyZWVbNF0pIHtcbiAgICAvLyBJZiB0aGUgbmV4dCB0cmVlIGRvZXNuJ3QgaGF2ZSB0aGUgcm9vdCBsYXlvdXQgZmxhZywgaXQgbXVzdCBoYXZlIGNoYW5nZWQuXG4gICAgcmV0dXJuICFuZXh0VHJlZVs0XVxuICB9XG4gIC8vIEN1cnJlbnQgdHJlZSBkaWRuJ3QgaGF2ZSBpdHMgcm9vdCBsYXlvdXQgaGVyZSwgbXVzdCBoYXZlIGNoYW5nZWQuXG4gIGlmIChuZXh0VHJlZVs0XSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgLy8gV2UgY2FuJ3QgYXNzdW1lIGl0J3MgYHBhcmFsbGVsUm91dGVzLmNoaWxkcmVuYCBoZXJlIGluIGNhc2UgdGhlIHJvb3QgbGF5b3V0IGlzIGBhcHAvQHNvbWV0aGluZy9sYXlvdXQuanNgXG4gIC8vIEJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBiZSBtb3JlIHRoYW4gb25lIHBhcmFsbGVsUm91dGVzIGJlZm9yZSB0aGUgcm9vdCBsYXlvdXQgaXMgZm91bmRcbiAgLy8gVE9ETy1BUFA6IGNoYW5nZSB0byB0cmF2ZXJzZSBhbGwgcGFyYWxsZWwgcm91dGVzXG4gIGNvbnN0IGN1cnJlbnRUcmVlQ2hpbGQgPSBPYmplY3QudmFsdWVzKGN1cnJlbnRUcmVlWzFdKVswXVxuICBjb25zdCBuZXh0VHJlZUNoaWxkID0gT2JqZWN0LnZhbHVlcyhuZXh0VHJlZVsxXSlbMF1cbiAgaWYgKCFjdXJyZW50VHJlZUNoaWxkIHx8ICFuZXh0VHJlZUNoaWxkKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KGN1cnJlbnRUcmVlQ2hpbGQsIG5leHRUcmVlQ2hpbGQpXG59XG4iXSwibmFtZXMiOlsiaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IiwiY3VycmVudFRyZWUiLCJuZXh0VHJlZSIsImN1cnJlbnRUcmVlU2VnbWVudCIsIm5leHRUcmVlU2VnbWVudCIsIkFycmF5IiwiaXNBcnJheSIsImN1cnJlbnRUcmVlQ2hpbGQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJuZXh0VHJlZUNoaWxkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js": /*!************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js ***! \************************************************************************************/ /***/ ((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 abortTask: function() {\n return abortTask;\n },\n listenForDynamicRequest: function() {\n return listenForDynamicRequest;\n },\n startPPRNavigation: function() {\n return startPPRNavigation;\n },\n updateCacheNodeOnPopstateRestoration: function() {\n return updateCacheNodeOnPopstateRestoration;\n }\n});\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ./is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ./prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst MPA_NAVIGATION_TASK = {\n route: null,\n node: null,\n dynamicRequestTree: null,\n children: null\n};\nfunction startPPRNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, scrollableSegmentsResult) {\n const segmentPath = [];\n return updateCacheNodeOnNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, false, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, segmentPath, scrollableSegmentsResult);\n}\nfunction updateCacheNodeOnNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, didFindRootLayout, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, segmentPath, scrollableSegmentsResult) {\n // Diff the old and new trees to reuse the shared layouts.\n const oldRouterStateChildren = oldRouterState[1];\n const newRouterStateChildren = newRouterState[1];\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n if (!didFindRootLayout) {\n // We're currently traversing the part of the tree that was also part of\n // the previous route. If we discover a root layout, then we don't need to\n // trigger an MPA navigation. See beginRenderingNewRouteTree for context.\n const isRootLayout = newRouterState[4] === true;\n if (isRootLayout) {\n // Found a matching root layout.\n didFindRootLayout = true;\n }\n }\n const oldParallelRoutes = oldCacheNode.parallelRoutes;\n // Clone the current set of segment children, even if they aren't active in\n // the new tree.\n // TODO: We currently retain all the inactive segments indefinitely, until\n // there's an explicit refresh, or a parent layout is lazily refreshed. We\n // rely on this for popstate navigations, which update the Router State Tree\n // but do not eagerly perform a data fetch, because they expect the segment\n // data to already be in the Cache Node tree. For highly static sites that\n // are mostly read-only, this may happen only rarely, causing memory to\n // leak. We should figure out a better model for the lifetime of inactive\n // segments, so we can maintain instant back/forward navigations without\n // leaking memory indefinitely.\n const prefetchParallelRoutes = new Map(oldParallelRoutes);\n // As we diff the trees, we may sometimes modify (copy-on-write, not mutate)\n // the Route Tree that was returned by the server — for example, in the case\n // of default parallel routes, we preserve the currently active segment. To\n // avoid mutating the original tree, we clone the router state children along\n // the return path.\n let patchedRouterStateChildren = {};\n let taskChildren = null;\n // Most navigations require a request to fetch additional data from the\n // server, either because the data was not already prefetched, or because the\n // target route contains dynamic data that cannot be prefetched.\n //\n // However, if the target route is fully static, and it's already completely\n // loaded into the segment cache, then we can skip the server request.\n //\n // This starts off as `false`, and is set to `true` if any of the child\n // routes requires a dynamic request.\n let needsDynamicRequest = false;\n // As we traverse the children, we'll construct a FlightRouterState that can\n // be sent to the server to request the dynamic data. If it turns out that\n // nothing in the subtree is dynamic (i.e. needsDynamicRequest is false at the\n // end), then this will be discarded.\n // TODO: We can probably optimize the format of this data structure to only\n // include paths that are dynamic. Instead of reusing the\n // FlightRouterState type.\n let dynamicRequestTreeChildren = {};\n for(let parallelRouteKey in newRouterStateChildren){\n const newRouterStateChild = newRouterStateChildren[parallelRouteKey];\n const oldRouterStateChild = oldRouterStateChildren[parallelRouteKey];\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey);\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const newSegmentChild = newRouterStateChild[0];\n const newSegmentPathChild = segmentPath.concat([\n parallelRouteKey,\n newSegmentChild\n ]);\n const newSegmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(newSegmentChild);\n const oldSegmentChild = oldRouterStateChild !== undefined ? oldRouterStateChild[0] : undefined;\n const oldCacheNodeChild = oldSegmentMapChild !== undefined ? oldSegmentMapChild.get(newSegmentKeyChild) : undefined;\n let taskChild;\n if (newSegmentChild === _segment.DEFAULT_SEGMENT_KEY) {\n // This is another kind of leaf segment — a default route.\n //\n // Default routes have special behavior. When there's no matching segment\n // for a parallel route, Next.js preserves the currently active segment\n // during a client navigation — but not for initial render. The server\n // leaves it to the client to account for this. So we need to handle\n // it here.\n if (oldRouterStateChild !== undefined) {\n // Reuse the existing Router State for this segment. We spawn a \"task\"\n // just to keep track of the updated router state; unlike most, it's\n // already fulfilled and won't be affected by the dynamic response.\n taskChild = spawnReusedTask(oldRouterStateChild);\n } else {\n // There's no currently active segment. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n } else if (isSamePageNavigation && // Check if this is a page segment.\n // TODO: We're not consistent about how we do this check. Some places\n // check if the segment starts with PAGE_SEGMENT_KEY, but most seem to\n // check if there any any children, which is why I'm doing it here. We\n // should probably encode an empty children set as `null` though. Either\n // way, we should update all the checks to be consistent.\n Object.keys(newRouterStateChild[1]).length === 0) {\n // We special case navigations to the exact same URL as the current\n // location. It's a common UI pattern for apps to refresh when you click a\n // link to the current page. So when this happens, we refresh the dynamic\n // data in the page segments.\n //\n // Note that this does not apply if the any part of the hash or search\n // query has changed. This might feel a bit weird but it makes more sense\n // when you consider that the way to trigger this behavior is to click\n // the same link multiple times.\n //\n // TODO: We should probably refresh the *entire* route when this case\n // occurs, not just the page segments. Essentially treating it the same as\n // a refresh() triggered by an action, which is the more explicit way of\n // modeling the UI pattern described above.\n //\n // Also note that this only refreshes the dynamic data, not static/\n // cached data. If the page segment is fully static and prefetched, the\n // request is skipped. (This is also how refresh() works.)\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n } else if (oldRouterStateChild !== undefined && oldSegmentChild !== undefined && (0, _matchsegments.matchSegment)(newSegmentChild, oldSegmentChild)) {\n if (oldCacheNodeChild !== undefined && oldRouterStateChild !== undefined) {\n // This segment exists in both the old and new trees. Recursively update\n // the children.\n taskChild = updateCacheNodeOnNavigation(navigatedAt, oldCacheNodeChild, oldRouterStateChild, newRouterStateChild, didFindRootLayout, prefetchDataChild, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, newSegmentPathChild, scrollableSegmentsResult);\n } else {\n // There's no existing Cache Node for this segment. Switch to the\n // \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n } else {\n // This is a new tree. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n if (taskChild !== null) {\n // Recursively propagate up the child tasks.\n if (taskChild.route === null) {\n // One of the child tasks discovered a change to the root layout.\n // Immediately unwind from this recursive traversal.\n return MPA_NAVIGATION_TASK;\n }\n if (taskChildren === null) {\n taskChildren = new Map();\n }\n taskChildren.set(parallelRouteKey, taskChild);\n const newCacheNodeChild = taskChild.node;\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild = new Map(oldSegmentMapChild);\n newSegmentMapChild.set(newSegmentKeyChild, newCacheNodeChild);\n prefetchParallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n // The child tree's route state may be different from the prefetched\n // route sent by the server. We need to clone it as we traverse back up\n // the tree.\n const taskChildRoute = taskChild.route;\n patchedRouterStateChildren[parallelRouteKey] = taskChildRoute;\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = taskChildRoute;\n }\n } else {\n // The child didn't change. We can use the prefetched router state.\n patchedRouterStateChildren[parallelRouteKey] = newRouterStateChild;\n dynamicRequestTreeChildren[parallelRouteKey] = newRouterStateChild;\n }\n }\n if (taskChildren === null) {\n // No new tasks were spawned.\n return null;\n }\n const newCacheNode = {\n lazyData: null,\n rsc: oldCacheNode.rsc,\n // We intentionally aren't updating the prefetchRsc field, since this node\n // is already part of the current tree, because it would be weird for\n // prefetch data to be newer than the final data. It probably won't ever be\n // observable anyway, but it could happen if the segment is unmounted then\n // mounted again, because LayoutRouter will momentarily switch to rendering\n // prefetchRsc, via useDeferredValue.\n prefetchRsc: oldCacheNode.prefetchRsc,\n head: oldCacheNode.head,\n prefetchHead: oldCacheNode.prefetchHead,\n loading: oldCacheNode.loading,\n // Everything is cloned except for the children, which we computed above.\n parallelRoutes: prefetchParallelRoutes,\n navigatedAt\n };\n return {\n // Return a cloned copy of the router state with updated children.\n route: patchRouterStateWithNewChildren(newRouterState, patchedRouterStateChildren),\n node: newCacheNode,\n dynamicRequestTree: needsDynamicRequest ? patchRouterStateWithNewChildren(newRouterState, dynamicRequestTreeChildren) : null,\n children: taskChildren\n };\n}\nfunction beginRenderingNewRouteTree(navigatedAt, oldRouterState, newRouterState, existingCacheNode, didFindRootLayout, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n if (!didFindRootLayout) {\n // The route tree changed before we reached a layout. (The highest-level\n // layout in a route tree is referred to as the \"root\" layout.) This could\n // mean that we're navigating between two different root layouts. When this\n // happens, we perform a full-page (MPA-style) navigation.\n //\n // However, the algorithm for deciding where to start rendering a route\n // (i.e. the one performed in order to reach this function) is stricter\n // than the one used to detect a change in the root layout. So just because\n // we're re-rendering a segment outside of the root layout does not mean we\n // should trigger a full-page navigation.\n //\n // Specifically, we handle dynamic parameters differently: two segments are\n // considered the same even if their parameter values are different.\n //\n // Refer to isNavigatingToNewRootLayout for details.\n //\n // Note that we only have to perform this extra traversal if we didn't\n // already discover a root layout in the part of the tree that is unchanged.\n // In the common case, this branch is skipped completely.\n if (oldRouterState === undefined || (0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(oldRouterState, newRouterState)) {\n // The root layout changed. Perform a full-page navigation.\n return MPA_NAVIGATION_TASK;\n }\n }\n return createCacheNodeOnNavigation(navigatedAt, newRouterState, existingCacheNode, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n}\nfunction createCacheNodeOnNavigation(navigatedAt, routerState, existingCacheNode, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n // Same traversal as updateCacheNodeNavigation, but we switch to this path\n // once we reach the part of the tree that was not in the previous route. We\n // don't need to diff against the old tree, we just need to create a new one.\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const routerStateChildren = routerState[1];\n const isLeafSegment = Object.keys(routerStateChildren).length === 0;\n // Even we're rendering inside the \"new\" part of the target tree, we may have\n // a locally cached segment that we can reuse. This may come from either 1)\n // the CacheNode tree, which lives in React state and is populated by previous\n // navigations; or 2) the prefetch cache, which is a separate cache that is\n // populated by prefetches.\n let rsc;\n let loading;\n let head;\n let cacheNodeNavigatedAt;\n if (existingCacheNode !== undefined && // DYNAMIC_STALETIME_MS defaults to 0, but it can be increased using\n // the experimental.staleTimes.dynamic config. When set, we'll avoid\n // refetching dynamic data if it was fetched within the given threshold.\n existingCacheNode.navigatedAt + _prefetchcacheutils.DYNAMIC_STALETIME_MS > navigatedAt) {\n // We have an existing CacheNode for this segment, and it's not stale. We\n // should reuse it rather than request a new one.\n rsc = existingCacheNode.rsc;\n loading = existingCacheNode.loading;\n head = existingCacheNode.head;\n // Don't update the navigatedAt timestamp, since we're reusing stale data.\n cacheNodeNavigatedAt = existingCacheNode.navigatedAt;\n } else if (prefetchData !== null) {\n // There's no existing CacheNode for this segment, but we do have prefetch\n // data. If the prefetch data is fully static (i.e. does not contain any\n // dynamic holes), we don't need to request it from the server.\n rsc = prefetchData[1];\n loading = prefetchData[3];\n head = isLeafSegment ? possiblyPartialPrefetchHead : null;\n // Even though we're accessing the data from the prefetch cache, this is\n // conceptually a new segment, not a reused one. So we should update the\n // navigatedAt timestamp.\n cacheNodeNavigatedAt = navigatedAt;\n const isPrefetchRscPartial = prefetchData[4];\n if (isPrefetchRscPartial || // Check if the head is partial (only relevant if this is a leaf segment)\n isPrefetchHeadPartial && isLeafSegment) {\n // We only have partial data from this segment. Like missing segments, we\n // must request the full data from the server.\n return spawnPendingTask(navigatedAt, routerState, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n } else {\n // The prefetch data is fully static, so we can omit it from the\n // navigation request.\n }\n } else {\n // There's no prefetch for this segment. Everything from this point will be\n // requested from the server, even if there are static children below it.\n // Create a terminal task node that will later be fulfilled by\n // server response.\n return spawnPendingTask(navigatedAt, routerState, null, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n }\n // We already have a full segment we can render, so we don't need to request a\n // new one from the server. Keep traversing down the tree until we reach\n // something that requires a dynamic request.\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n const taskChildren = new Map();\n const existingCacheNodeChildren = existingCacheNode !== undefined ? existingCacheNode.parallelRoutes : null;\n const cacheNodeChildren = new Map(existingCacheNodeChildren);\n let dynamicRequestTreeChildren = {};\n let needsDynamicRequest = false;\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath);\n } else {\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const existingSegmentMapChild = existingCacheNodeChildren !== null ? existingCacheNodeChildren.get(parallelRouteKey) : undefined;\n const segmentChild = routerStateChild[0];\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild\n ]);\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const existingCacheNodeChild = existingSegmentMapChild !== undefined ? existingSegmentMapChild.get(segmentKeyChild) : undefined;\n const taskChild = createCacheNodeOnNavigation(navigatedAt, routerStateChild, existingCacheNodeChild, prefetchDataChild, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPathChild, scrollableSegmentsResult);\n taskChildren.set(parallelRouteKey, taskChild);\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = routerStateChild;\n }\n const newCacheNodeChild = taskChild.node;\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild = new Map();\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n cacheNodeChildren.set(parallelRouteKey, newSegmentMapChild);\n }\n }\n }\n return {\n // Since we're inside a new route tree, unlike the\n // `updateCacheNodeOnNavigation` path, the router state on the children\n // tasks is always the same as the router state we pass in. So we don't need\n // to clone/modify it.\n route: routerState,\n node: {\n lazyData: null,\n // Since this segment is already full, we don't need to use the\n // `prefetchRsc` field.\n rsc,\n prefetchRsc: null,\n head,\n prefetchHead: null,\n loading,\n parallelRoutes: cacheNodeChildren,\n navigatedAt: cacheNodeNavigatedAt\n },\n dynamicRequestTree: needsDynamicRequest ? patchRouterStateWithNewChildren(routerState, dynamicRequestTreeChildren) : null,\n children: taskChildren\n };\n}\nfunction patchRouterStateWithNewChildren(baseRouterState, newChildren) {\n const clone = [\n baseRouterState[0],\n newChildren\n ];\n // Based on equivalent logic in apply-router-state-patch-to-tree, but should\n // confirm whether we need to copy all of these fields. Not sure the server\n // ever sends, e.g. the refetch marker.\n if (2 in baseRouterState) {\n clone[2] = baseRouterState[2];\n }\n if (3 in baseRouterState) {\n clone[3] = baseRouterState[3];\n }\n if (4 in baseRouterState) {\n clone[4] = baseRouterState[4];\n }\n return clone;\n}\nfunction spawnPendingTask(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n // Create a task that will later be fulfilled by data from the server.\n // Clone the prefetched route tree and the `refetch` marker to it. We'll send\n // this to the server so it knows where to start rendering.\n const dynamicRequestTree = patchRouterStateWithNewChildren(routerState, routerState[1]);\n dynamicRequestTree[3] = 'refetch';\n const newTask = {\n route: routerState,\n // Corresponds to the part of the route that will be rendered on the server.\n node: createPendingCacheNode(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult),\n // Because this is non-null, and it gets propagated up through the parent\n // tasks, the root task will know that it needs to perform a server request.\n dynamicRequestTree,\n children: null\n };\n return newTask;\n}\nfunction spawnReusedTask(reusedRouterState) {\n // Create a task that reuses an existing segment, e.g. when reusing\n // the current active segment in place of a default route.\n return {\n route: reusedRouterState,\n node: null,\n dynamicRequestTree: null,\n children: null\n };\n}\nfunction listenForDynamicRequest(task, responsePromise) {\n responsePromise.then((param)=>{\n let { flightData } = param;\n if (typeof flightData === 'string') {\n // Happens when navigating to page in `pages` from `app`. We shouldn't\n // get here because should have already handled this during\n // the prefetch.\n return;\n }\n for (const normalizedFlightData of flightData){\n const { segmentPath, tree: serverRouterState, seedData: dynamicData, head: dynamicHead } = normalizedFlightData;\n if (!dynamicData) {\n continue;\n }\n writeDynamicDataIntoPendingTask(task, segmentPath, serverRouterState, dynamicData, dynamicHead);\n }\n // Now that we've exhausted all the data we received from the server, if\n // there are any remaining pending tasks in the tree, abort them now.\n // If there's any missing data, it will trigger a lazy fetch.\n abortTask(task, null);\n }, (error)=>{\n // This will trigger an error during render\n abortTask(task, error);\n });\n}\nfunction writeDynamicDataIntoPendingTask(rootTask, segmentPath, serverRouterState, dynamicData, dynamicHead) {\n // The data sent by the server represents only a subtree of the app. We need\n // to find the part of the task tree that matches the server response, and\n // fulfill it using the dynamic data.\n //\n // segmentPath represents the parent path of subtree. It's a repeating pattern\n // of parallel route key and segment:\n //\n // [string, Segment, string, Segment, string, Segment, ...]\n //\n // Iterate through the path and finish any tasks that match this payload.\n let task = rootTask;\n for(let i = 0; i < segmentPath.length; i += 2){\n const parallelRouteKey = segmentPath[i];\n const segment = segmentPath[i + 1];\n const taskChildren = task.children;\n if (taskChildren !== null) {\n const taskChild = taskChildren.get(parallelRouteKey);\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0];\n if ((0, _matchsegments.matchSegment)(segment, taskSegment)) {\n // Found a match for this task. Keep traversing down the task tree.\n task = taskChild;\n continue;\n }\n }\n }\n // We didn't find a child task that matches the server data. Exit. We won't\n // abort the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n return;\n }\n finishTaskUsingDynamicDataPayload(task, serverRouterState, dynamicData, dynamicHead);\n}\nfunction finishTaskUsingDynamicDataPayload(task, serverRouterState, dynamicData, dynamicHead) {\n if (task.dynamicRequestTree === null) {\n // Everything in this subtree is already complete. Bail out.\n return;\n }\n // dynamicData may represent a larger subtree than the task. Before we can\n // finish the task, we need to line them up.\n const taskChildren = task.children;\n const taskNode = task.node;\n if (taskChildren === null) {\n // We've reached the leaf node of the pending task. The server data tree\n // lines up the pending Cache Node tree. We can now switch to the\n // normal algorithm.\n if (taskNode !== null) {\n finishPendingCacheNode(taskNode, task.route, serverRouterState, dynamicData, dynamicHead);\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null;\n }\n return;\n }\n // The server returned more data than we need to finish the task. Skip over\n // the extra segments until we reach the leaf task node.\n const serverChildren = serverRouterState[1];\n const dynamicDataChildren = dynamicData[2];\n for(const parallelRouteKey in serverRouterState){\n const serverRouterStateChild = serverChildren[parallelRouteKey];\n const dynamicDataChild = dynamicDataChildren[parallelRouteKey];\n const taskChild = taskChildren.get(parallelRouteKey);\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0];\n if ((0, _matchsegments.matchSegment)(serverRouterStateChild[0], taskSegment) && dynamicDataChild !== null && dynamicDataChild !== undefined) {\n // Found a match for this task. Keep traversing down the task tree.\n return finishTaskUsingDynamicDataPayload(taskChild, serverRouterStateChild, dynamicDataChild, dynamicHead);\n }\n }\n // We didn't find a child task that matches the server data. We won't abort\n // the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n }\n}\nfunction createPendingCacheNode(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n const routerStateChildren = routerState[1];\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n const parallelRoutes = new Map();\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const segmentChild = routerStateChild[0];\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild\n ]);\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const newCacheNodeChild = createPendingCacheNode(navigatedAt, routerStateChild, prefetchDataChild === undefined ? null : prefetchDataChild, prefetchHead, isPrefetchHeadPartial, segmentPathChild, scrollableSegmentsResult);\n const newSegmentMapChild = new Map();\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n parallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const isLeafSegment = parallelRoutes.size === 0;\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath);\n }\n const maybePrefetchRsc = prefetchData !== null ? prefetchData[1] : null;\n const maybePrefetchLoading = prefetchData !== null ? prefetchData[3] : null;\n return {\n lazyData: null,\n parallelRoutes: parallelRoutes,\n prefetchRsc: maybePrefetchRsc !== undefined ? maybePrefetchRsc : null,\n prefetchHead: isLeafSegment ? prefetchHead : [\n null,\n null\n ],\n // TODO: Technically, a loading boundary could contain dynamic data. We must\n // have separate `loading` and `prefetchLoading` fields to handle this, like\n // we do for the segment data and head.\n loading: maybePrefetchLoading !== undefined ? maybePrefetchLoading : null,\n // Create a deferred promise. This will be fulfilled once the dynamic\n // response is received from the server.\n rsc: createDeferredRsc(),\n head: isLeafSegment ? createDeferredRsc() : null,\n navigatedAt\n };\n}\nfunction finishPendingCacheNode(cacheNode, taskState, serverState, dynamicData, dynamicHead) {\n // Writes a dynamic response into an existing Cache Node tree. This does _not_\n // create a new tree, it updates the existing tree in-place. So it must follow\n // the Suspense rules of cache safety — it can resolve pending promises, but\n // it cannot overwrite existing data. It can add segments to the tree (because\n // a missing segment will cause the layout router to suspend).\n // but it cannot delete them.\n //\n // We must resolve every promise in the tree, or else it will suspend\n // indefinitely. If we did not receive data for a segment, we will resolve its\n // data promise to `null` to trigger a lazy fetch during render.\n const taskStateChildren = taskState[1];\n const serverStateChildren = serverState[1];\n const dataChildren = dynamicData[2];\n // The router state that we traverse the tree with (taskState) is the same one\n // that we used to construct the pending Cache Node tree. That way we're sure\n // to resolve all the pending promises.\n const parallelRoutes = cacheNode.parallelRoutes;\n for(let parallelRouteKey in taskStateChildren){\n const taskStateChild = taskStateChildren[parallelRouteKey];\n const serverStateChild = serverStateChildren[parallelRouteKey];\n const dataChild = dataChildren[parallelRouteKey];\n const segmentMapChild = parallelRoutes.get(parallelRouteKey);\n const taskSegmentChild = taskStateChild[0];\n const taskSegmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(taskSegmentChild);\n const cacheNodeChild = segmentMapChild !== undefined ? segmentMapChild.get(taskSegmentKeyChild) : undefined;\n if (cacheNodeChild !== undefined) {\n if (serverStateChild !== undefined && (0, _matchsegments.matchSegment)(taskSegmentChild, serverStateChild[0])) {\n if (dataChild !== undefined && dataChild !== null) {\n // This is the happy path. Recursively update all the children.\n finishPendingCacheNode(cacheNodeChild, taskStateChild, serverStateChild, dataChild, dynamicHead);\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render. This shouldn't happen because the Route Tree\n // and the Seed Data tree sent by the server should always be the same\n // shape when part of the same server response.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null);\n }\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null);\n }\n } else {\n // The server response matches what was expected to receive, but there's\n // no matching Cache Node in the task tree. This is a bug in the\n // implementation because we should have created a node for every\n // segment in the tree that's associated with this task.\n }\n }\n // Use the dynamic data from the server to fulfill the deferred RSC promise\n // on the Cache Node.\n const rsc = cacheNode.rsc;\n const dynamicSegmentData = dynamicData[1];\n if (rsc === null) {\n // This is a lazy cache node. We can overwrite it. This is only safe\n // because we know that the LayoutRouter suspends if `rsc` is `null`.\n cacheNode.rsc = dynamicSegmentData;\n } else if (isDeferredRsc(rsc)) {\n // This is a deferred RSC promise. We can fulfill it with the data we just\n // received from the server. If it was already resolved by a different\n // navigation, then this does nothing because we can't overwrite data.\n rsc.resolve(dynamicSegmentData);\n } else {\n // This is not a deferred RSC promise, nor is it empty, so it must have\n // been populated by a different navigation. We must not overwrite it.\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved with the dynamic head from\n // the server.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(dynamicHead);\n }\n}\nfunction abortTask(task, error) {\n const cacheNode = task.node;\n if (cacheNode === null) {\n // This indicates the task is already complete.\n return;\n }\n const taskChildren = task.children;\n if (taskChildren === null) {\n // Reached the leaf task node. This is the root of a pending cache\n // node tree.\n abortPendingCacheNode(task.route, cacheNode, error);\n } else {\n // This is an intermediate task node. Keep traversing until we reach a\n // task node with no children. That will be the root of the cache node tree\n // that needs to be resolved.\n for (const taskChild of taskChildren.values()){\n abortTask(taskChild, error);\n }\n }\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null;\n}\nfunction abortPendingCacheNode(routerState, cacheNode, error) {\n // For every pending segment in the tree, resolve its `rsc` promise to `null`\n // to trigger a lazy fetch during render.\n //\n // Or, if an error object is provided, it will error instead.\n const routerStateChildren = routerState[1];\n const parallelRoutes = cacheNode.parallelRoutes;\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const segmentMapChild = parallelRoutes.get(parallelRouteKey);\n if (segmentMapChild === undefined) {\n continue;\n }\n const segmentChild = routerStateChild[0];\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const cacheNodeChild = segmentMapChild.get(segmentKeyChild);\n if (cacheNodeChild !== undefined) {\n abortPendingCacheNode(routerStateChild, cacheNodeChild, error);\n } else {\n // This shouldn't happen because we're traversing the same tree that was\n // used to construct the cache nodes in the first place.\n }\n }\n const rsc = cacheNode.rsc;\n if (isDeferredRsc(rsc)) {\n if (error === null) {\n // This will trigger a lazy fetch during render.\n rsc.resolve(null);\n } else {\n // This will trigger an error during rendering.\n rsc.reject(error);\n }\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved. If an error was provided, we\n // will not resolve it with an error, since this is rendered at the root of\n // the app. We want the segment to error, not the entire app.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(null);\n }\n}\nfunction updateCacheNodeOnPopstateRestoration(oldCacheNode, routerState) {\n // A popstate navigation reads data from the local cache. It does not issue\n // new network requests (unless the cache entries have been evicted). So, we\n // update the cache to drop the prefetch data for any segment whose dynamic\n // data was already received. This prevents an unnecessary flash back to PPR\n // state during a back/forward navigation.\n //\n // This function clones the entire cache node tree and sets the `prefetchRsc`\n // field to `null` to prevent it from being rendered. We can't mutate the node\n // in place because this is a concurrent data structure.\n const routerStateChildren = routerState[1];\n const oldParallelRoutes = oldCacheNode.parallelRoutes;\n const newParallelRoutes = new Map(oldParallelRoutes);\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const segmentChild = routerStateChild[0];\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey);\n if (oldSegmentMapChild !== undefined) {\n const oldCacheNodeChild = oldSegmentMapChild.get(segmentKeyChild);\n if (oldCacheNodeChild !== undefined) {\n const newCacheNodeChild = updateCacheNodeOnPopstateRestoration(oldCacheNodeChild, routerStateChild);\n const newSegmentMapChild = new Map(oldSegmentMapChild);\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n newParallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n }\n }\n // Only show prefetched data if the dynamic data is still pending.\n //\n // Tehnically, what we're actually checking is whether the dynamic network\n // response was received. But since it's a streaming response, this does not\n // mean that all the dynamic data has fully streamed in. It just means that\n // _some_ of the dynamic data was received. But as a heuristic, we assume that\n // the rest dynamic data will stream in quickly, so it's still better to skip\n // the prefetch state.\n const rsc = oldCacheNode.rsc;\n const shouldUsePrefetch = isDeferredRsc(rsc) && rsc.status === 'pending';\n return {\n lazyData: null,\n rsc,\n head: oldCacheNode.head,\n prefetchHead: shouldUsePrefetch ? oldCacheNode.prefetchHead : [\n null,\n null\n ],\n prefetchRsc: shouldUsePrefetch ? oldCacheNode.prefetchRsc : null,\n loading: oldCacheNode.loading,\n // These are the cloned children we computed above\n parallelRoutes: newParallelRoutes,\n navigatedAt: oldCacheNode.navigatedAt\n };\n}\nconst DEFERRED = Symbol();\n// This type exists to distinguish a DeferredRsc from a Flight promise. It's a\n// compromise to avoid adding an extra field on every Cache Node, which would be\n// awkward because the pre-PPR parts of codebase would need to account for it,\n// too. We can remove it once type Cache Node type is more settled.\nfunction isDeferredRsc(value) {\n return value && value.tag === DEFERRED;\n}\nfunction createDeferredRsc() {\n let resolve;\n let reject;\n const pendingRsc = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n pendingRsc.status = 'pending';\n pendingRsc.resolve = (value)=>{\n if (pendingRsc.status === 'pending') {\n const fulfilledRsc = pendingRsc;\n fulfilledRsc.status = 'fulfilled';\n fulfilledRsc.value = value;\n resolve(value);\n }\n };\n pendingRsc.reject = (error)=>{\n if (pendingRsc.status === 'pending') {\n const rejectedRsc = pendingRsc;\n rejectedRsc.status = 'rejected';\n rejectedRsc.reason = error;\n reject(error);\n }\n };\n pendingRsc.tag = DEFERRED;\n return pendingRsc;\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=ppr-navigations.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHByLW5hdmlnYXRpb25zLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTBrQ2dCQSxTQUFTO2VBQVRBOztJQTFWQUMsdUJBQXVCO2VBQXZCQTs7SUF2cEJBQyxrQkFBa0I7ZUFBbEJBOztJQTZqQ0FDLG9DQUFvQztlQUFwQ0E7OztxQ0F6b0NvQjsyQ0FDUDtrREFDUTt5REFFTztnREFDUDtBQWlDckMsTUFBTUMsc0JBQXlDO0lBQzdDQyxPQUFPO0lBQ1BDLE1BQU07SUFDTkMsb0JBQW9CO0lBQ3BCQyxVQUFVO0FBQ1o7QUFpQ08sU0FBU04sbUJBQ2RPLFdBQW1CLEVBQ25CQyxZQUF1QixFQUN2QkMsY0FBaUMsRUFDakNDLGNBQWlDLEVBQ2pDQyxZQUFzQyxFQUN0Q0MsWUFBNkIsRUFDN0JDLHFCQUE4QixFQUM5QkMsb0JBQTZCLEVBQzdCQyx3QkFBa0Q7SUFFbEQsTUFBTUMsY0FBd0MsRUFBRTtJQUNoRCxPQUFPQyw0QkFDTFYsYUFDQUMsY0FDQUMsZ0JBQ0FDLGdCQUNBLE9BQ0FDLGNBQ0FDLGNBQ0FDLHVCQUNBQyxzQkFDQUUsYUFDQUQ7QUFFSjtBQUVBLFNBQVNFLDRCQUNQVixXQUFtQixFQUNuQkMsWUFBdUIsRUFDdkJDLGNBQWlDLEVBQ2pDQyxjQUFpQyxFQUNqQ1EsaUJBQTBCLEVBQzFCUCxZQUFzQyxFQUN0Q0MsWUFBNkIsRUFDN0JDLHFCQUE4QixFQUM5QkMsb0JBQTZCLEVBQzdCRSxXQUE4QixFQUM5QkQsd0JBQWtEO0lBRWxELDBEQUEwRDtJQUMxRCxNQUFNSSx5QkFBeUJWLGNBQWMsQ0FBQyxFQUFFO0lBQ2hELE1BQU1XLHlCQUF5QlYsY0FBYyxDQUFDLEVBQUU7SUFDaEQsTUFBTVcsdUJBQXVCVixpQkFBaUIsT0FBT0EsWUFBWSxDQUFDLEVBQUUsR0FBRztJQUV2RSxJQUFJLENBQUNPLG1CQUFtQjtRQUN0Qix3RUFBd0U7UUFDeEUsMEVBQTBFO1FBQzFFLHlFQUF5RTtRQUN6RSxNQUFNSSxlQUFlWixjQUFjLENBQUMsRUFBRSxLQUFLO1FBQzNDLElBQUlZLGNBQWM7WUFDaEIsZ0NBQWdDO1lBQ2hDSixvQkFBb0I7UUFDdEI7SUFDRjtJQUVBLE1BQU1LLG9CQUFvQmYsYUFBYWdCLGNBQWM7SUFFckQsMkVBQTJFO0lBQzNFLGdCQUFnQjtJQUNoQiwwRUFBMEU7SUFDMUUsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsMEVBQTBFO0lBQzFFLHVFQUF1RTtJQUN2RSx5RUFBeUU7SUFDekUsd0VBQXdFO0lBQ3hFLCtCQUErQjtJQUMvQixNQUFNQyx5QkFBeUIsSUFBSUMsSUFBSUg7SUFFdkMsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLG1CQUFtQjtJQUNuQixJQUFJSSw2QkFFQSxDQUFDO0lBQ0wsSUFBSUMsZUFBZTtJQUVuQix1RUFBdUU7SUFDdkUsNkVBQTZFO0lBQzdFLGdFQUFnRTtJQUNoRSxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHNFQUFzRTtJQUN0RSxFQUFFO0lBQ0YsdUVBQXVFO0lBQ3ZFLHFDQUFxQztJQUNyQyxJQUFJQyxzQkFBc0I7SUFDMUIsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSw4RUFBOEU7SUFDOUUscUNBQXFDO0lBQ3JDLDJFQUEyRTtJQUMzRSx5REFBeUQ7SUFDekQsMEJBQTBCO0lBQzFCLElBQUlDLDZCQUVBLENBQUM7SUFFTCxJQUFLLElBQUlDLG9CQUFvQlgsdUJBQXdCO1FBQ25ELE1BQU1ZLHNCQUNKWixzQkFBc0IsQ0FBQ1csaUJBQWlCO1FBQzFDLE1BQU1FLHNCQUNKZCxzQkFBc0IsQ0FBQ1ksaUJBQWlCO1FBQzFDLE1BQU1HLHFCQUFxQlgsa0JBQWtCWSxHQUFHLENBQUNKO1FBQ2pELE1BQU1LLG9CQUNKZix5QkFBeUIsT0FDckJBLG9CQUFvQixDQUFDVSxpQkFBaUIsR0FDdEM7UUFFTixNQUFNTSxrQkFBa0JMLG1CQUFtQixDQUFDLEVBQUU7UUFDOUMsTUFBTU0sc0JBQXNCdEIsWUFBWXVCLE1BQU0sQ0FBQztZQUM3Q1I7WUFDQU07U0FDRDtRQUNELE1BQU1HLHFCQUFxQkMsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFvQixFQUFDSjtRQUVoRCxNQUFNSyxrQkFDSlQsd0JBQXdCVSxZQUFZVixtQkFBbUIsQ0FBQyxFQUFFLEdBQUdVO1FBRS9ELE1BQU1DLG9CQUNKVix1QkFBdUJTLFlBQ25CVCxtQkFBbUJDLEdBQUcsQ0FBQ0ssc0JBQ3ZCRztRQUVOLElBQUlFO1FBQ0osSUFBSVIsb0JBQW9CUyxTQUFBQSxtQkFBbUIsRUFBRTtZQUMzQywwREFBMEQ7WUFDMUQsRUFBRTtZQUNGLHlFQUF5RTtZQUN6RSx1RUFBdUU7WUFDdkUsc0VBQXNFO1lBQ3RFLG9FQUFvRTtZQUNwRSxXQUFXO1lBQ1gsSUFBSWIsd0JBQXdCVSxXQUFXO2dCQUNyQyxzRUFBc0U7Z0JBQ3RFLG9FQUFvRTtnQkFDcEUsbUVBQW1FO2dCQUNuRUUsWUFBWUUsZ0JBQWdCZDtZQUM5QixPQUFPO2dCQUNMLG9FQUFvRTtnQkFDcEVZLFlBQVlHLDJCQUNWekMsYUFDQTBCLHFCQUNBRCxxQkFDQVksbUJBQ0ExQixtQkFDQWtCLHNCQUFzQk8sWUFBWVAsb0JBQW9CLE1BQ3REeEIsY0FDQUMsdUJBQ0F5QixxQkFDQXZCO1lBRUo7UUFDRixPQUFPLElBQ0xELHdCQUNBLG1DQUFtQztRQUNuQyxxRUFBcUU7UUFDckUsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSx3RUFBd0U7UUFDeEUseURBQXlEO1FBQ3pEbUMsT0FBT0MsSUFBSSxDQUFDbEIsbUJBQW1CLENBQUMsRUFBRSxFQUFFbUIsTUFBTSxLQUFLLEdBQy9DO1lBQ0EsbUVBQW1FO1lBQ25FLDBFQUEwRTtZQUMxRSx5RUFBeUU7WUFDekUsNkJBQTZCO1lBQzdCLEVBQUU7WUFDRixzRUFBc0U7WUFDdEUseUVBQXlFO1lBQ3pFLHNFQUFzRTtZQUN0RSxnQ0FBZ0M7WUFDaEMsRUFBRTtZQUNGLHFFQUFxRTtZQUNyRSwwRUFBMEU7WUFDMUUsd0VBQXdFO1lBQ3hFLDJDQUEyQztZQUMzQyxFQUFFO1lBQ0YsbUVBQW1FO1lBQ25FLHVFQUF1RTtZQUN2RSwwREFBMEQ7WUFDMUROLFlBQVlHLDJCQUNWekMsYUFDQTBCLHFCQUNBRCxxQkFDQVksbUJBQ0ExQixtQkFDQWtCLHNCQUFzQk8sWUFBWVAsb0JBQW9CLE1BQ3REeEIsY0FDQUMsdUJBQ0F5QixxQkFDQXZCO1FBRUosT0FBTyxJQUNMa0Isd0JBQXdCVSxhQUN4QkQsb0JBQW9CQyxhQUNwQlMsQ0FBQUEsR0FBQUEsZUFBQUEsWUFBQUEsRUFBYWYsaUJBQWlCSyxrQkFDOUI7WUFDQSxJQUNFRSxzQkFBc0JELGFBQ3RCVix3QkFBd0JVLFdBQ3hCO2dCQUNBLHdFQUF3RTtnQkFDeEUsZ0JBQWdCO2dCQUNoQkUsWUFBWTVCLDRCQUNWVixhQUNBcUMsbUJBQ0FYLHFCQUNBRCxxQkFDQWQsbUJBQ0FrQixtQkFDQXhCLGNBQ0FDLHVCQUNBQyxzQkFDQXdCLHFCQUNBdkI7WUFFSixPQUFPO2dCQUNMLGlFQUFpRTtnQkFDakUsaUJBQWlCO2dCQUNqQjhCLFlBQVlHLDJCQUNWekMsYUFDQTBCLHFCQUNBRCxxQkFDQVksbUJBQ0ExQixtQkFDQWtCLHNCQUFzQk8sWUFBWVAsb0JBQW9CLE1BQ3REeEIsY0FDQUMsdUJBQ0F5QixxQkFDQXZCO1lBRUo7UUFDRixPQUFPO1lBQ0wsbURBQW1EO1lBQ25EOEIsWUFBWUcsMkJBQ1Z6QyxhQUNBMEIscUJBQ0FELHFCQUNBWSxtQkFDQTFCLG1CQUNBa0Isc0JBQXNCTyxZQUFZUCxvQkFBb0IsTUFDdER4QixjQUNBQyx1QkFDQXlCLHFCQUNBdkI7UUFFSjtRQUVBLElBQUk4QixjQUFjLE1BQU07WUFDdEIsNENBQTRDO1lBRTVDLElBQUlBLFVBQVUxQyxLQUFLLEtBQUssTUFBTTtnQkFDNUIsaUVBQWlFO2dCQUNqRSxvREFBb0Q7Z0JBQ3BELE9BQU9EO1lBQ1Q7WUFFQSxJQUFJMEIsaUJBQWlCLE1BQU07Z0JBQ3pCQSxlQUFlLElBQUlGO1lBQ3JCO1lBQ0FFLGFBQWF5QixHQUFHLENBQUN0QixrQkFBa0JjO1lBQ25DLE1BQU1TLG9CQUFvQlQsVUFBVXpDLElBQUk7WUFDeEMsSUFBSWtELHNCQUFzQixNQUFNO2dCQUM5QixNQUFNQyxxQkFBc0MsSUFBSTdCLElBQUlRO2dCQUNwRHFCLG1CQUFtQkYsR0FBRyxDQUFDYixvQkFBb0JjO2dCQUMzQzdCLHVCQUF1QjRCLEdBQUcsQ0FBQ3RCLGtCQUFrQndCO1lBQy9DO1lBRUEsb0VBQW9FO1lBQ3BFLHVFQUF1RTtZQUN2RSxZQUFZO1lBQ1osTUFBTUMsaUJBQWlCWCxVQUFVMUMsS0FBSztZQUN0Q3dCLDBCQUEwQixDQUFDSSxpQkFBaUIsR0FBR3lCO1lBRS9DLE1BQU1DLDBCQUEwQlosVUFBVXhDLGtCQUFrQjtZQUM1RCxJQUFJb0QsNEJBQTRCLE1BQU07Z0JBQ3BDLDBDQUEwQztnQkFDMUM1QixzQkFBc0I7Z0JBQ3RCQywwQkFBMEIsQ0FBQ0MsaUJBQWlCLEdBQUcwQjtZQUNqRCxPQUFPO2dCQUNMM0IsMEJBQTBCLENBQUNDLGlCQUFpQixHQUFHeUI7WUFDakQ7UUFDRixPQUFPO1lBQ0wsbUVBQW1FO1lBQ25FN0IsMEJBQTBCLENBQUNJLGlCQUFpQixHQUFHQztZQUMvQ0YsMEJBQTBCLENBQUNDLGlCQUFpQixHQUFHQztRQUNqRDtJQUNGO0lBRUEsSUFBSUosaUJBQWlCLE1BQU07UUFDekIsNkJBQTZCO1FBQzdCLE9BQU87SUFDVDtJQUVBLE1BQU04QixlQUErQjtRQUNuQ0MsVUFBVTtRQUNWQyxLQUFLcEQsYUFBYW9ELEdBQUc7UUFDckIsMEVBQTBFO1FBQzFFLHFFQUFxRTtRQUNyRSwyRUFBMkU7UUFDM0UsMEVBQTBFO1FBQzFFLDJFQUEyRTtRQUMzRSxxQ0FBcUM7UUFDckNDLGFBQWFyRCxhQUFhcUQsV0FBVztRQUNyQ0MsTUFBTXRELGFBQWFzRCxJQUFJO1FBQ3ZCbEQsY0FBY0osYUFBYUksWUFBWTtRQUN2Q21ELFNBQVN2RCxhQUFhdUQsT0FBTztRQUU3Qix5RUFBeUU7UUFDekV2QyxnQkFBZ0JDO1FBRWhCbEI7SUFDRjtJQUVBLE9BQU87UUFDTCxrRUFBa0U7UUFDbEVKLE9BQU82RCxnQ0FDTHRELGdCQUNBaUI7UUFFRnZCLE1BQU1zRDtRQUNOckQsb0JBQW9Cd0Isc0JBQ2hCbUMsZ0NBQ0V0RCxnQkFDQW9CLDhCQUVGO1FBQ0p4QixVQUFVc0I7SUFDWjtBQUNGO0FBRUEsU0FBU29CLDJCQUNQekMsV0FBbUIsRUFDbkJFLGNBQXdDLEVBQ3hDQyxjQUFpQyxFQUNqQ3VELGlCQUFtQyxFQUNuQy9DLGlCQUEwQixFQUMxQlAsWUFBc0MsRUFDdEN1RCwyQkFBNEMsRUFDNUNyRCxxQkFBOEIsRUFDOUJHLFdBQThCLEVBQzlCRCx3QkFBa0Q7SUFFbEQsSUFBSSxDQUFDRyxtQkFBbUI7UUFDdEIsd0VBQXdFO1FBQ3hFLDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsMERBQTBEO1FBQzFELEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsdUVBQXVFO1FBQ3ZFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UseUNBQXlDO1FBQ3pDLEVBQUU7UUFDRiwyRUFBMkU7UUFDM0Usb0VBQW9FO1FBQ3BFLEVBQUU7UUFDRixvREFBb0Q7UUFDcEQsRUFBRTtRQUNGLHNFQUFzRTtRQUN0RSw0RUFBNEU7UUFDNUUseURBQXlEO1FBQ3pELElBQ0VULG1CQUFtQmtDLGFBQ25Cd0IsQ0FBQUEsR0FBQUEsNkJBQUFBLDJCQUFBQSxFQUE0QjFELGdCQUFnQkMsaUJBQzVDO1lBQ0EsMkRBQTJEO1lBQzNELE9BQU9SO1FBQ1Q7SUFDRjtJQUNBLE9BQU9rRSw0QkFDTDdELGFBQ0FHLGdCQUNBdUQsbUJBQ0F0RCxjQUNBdUQsNkJBQ0FyRCx1QkFDQUcsYUFDQUQ7QUFFSjtBQUVBLFNBQVNxRCw0QkFDUDdELFdBQW1CLEVBQ25COEQsV0FBOEIsRUFDOUJKLGlCQUFtQyxFQUNuQ3RELFlBQXNDLEVBQ3RDdUQsMkJBQTRDLEVBQzVDckQscUJBQThCLEVBQzlCRyxXQUE4QixFQUM5QkQsd0JBQWtEO0lBRWxELDBFQUEwRTtJQUMxRSw0RUFBNEU7SUFDNUUsNkVBQTZFO0lBRTdFLDRFQUE0RTtJQUM1RSxtRUFBbUU7SUFDbkUsTUFBTXVELHNCQUFzQkQsV0FBVyxDQUFDLEVBQUU7SUFDMUMsTUFBTUUsZ0JBQWdCdEIsT0FBT0MsSUFBSSxDQUFDb0IscUJBQXFCbkIsTUFBTSxLQUFLO0lBRWxFLDZFQUE2RTtJQUM3RSwyRUFBMkU7SUFDM0UsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSwyQkFBMkI7SUFDM0IsSUFBSVM7SUFDSixJQUFJRztJQUNKLElBQUlEO0lBQ0osSUFBSVU7SUFDSixJQUNFUCxzQkFBc0J0QixhQUN0QixvRUFBb0U7SUFDcEUsb0VBQW9FO0lBQ3BFLHdFQUF3RTtJQUN4RXNCLGtCQUFrQjFELFdBQVcsR0FBR2tFLG9CQUFBQSxvQkFBb0IsR0FBR2xFLGFBQ3ZEO1FBQ0EseUVBQXlFO1FBQ3pFLGlEQUFpRDtRQUNqRHFELE1BQU1LLGtCQUFrQkwsR0FBRztRQUMzQkcsVUFBVUUsa0JBQWtCRixPQUFPO1FBQ25DRCxPQUFPRyxrQkFBa0JILElBQUk7UUFFN0IsMEVBQTBFO1FBQzFFVSx1QkFBdUJQLGtCQUFrQjFELFdBQVc7SUFDdEQsT0FBTyxJQUFJSSxpQkFBaUIsTUFBTTtRQUNoQywwRUFBMEU7UUFDMUUsd0VBQXdFO1FBQ3hFLCtEQUErRDtRQUMvRGlELE1BQU1qRCxZQUFZLENBQUMsRUFBRTtRQUNyQm9ELFVBQVVwRCxZQUFZLENBQUMsRUFBRTtRQUN6Qm1ELE9BQU9TLGdCQUFnQkwsOEJBQThCO1FBQ3JELHdFQUF3RTtRQUN4RSx3RUFBd0U7UUFDeEUseUJBQXlCO1FBQ3pCTSx1QkFBdUJqRTtRQUN2QixNQUFNbUUsdUJBQXVCL0QsWUFBWSxDQUFDLEVBQUU7UUFDNUMsSUFDRSx3QkFFQSxlQUZ1QywwREFFa0M7UUFDeEVFLHlCQUF5QjBELGVBQzFCO1lBQ0EseUVBQXlFO1lBQ3pFLDhDQUE4QztZQUM5QyxPQUFPSSxpQkFDTHBFLGFBQ0E4RCxhQUNBMUQsY0FDQXVELDZCQUNBckQsdUJBQ0FHLGFBQ0FEO1FBRUosT0FBTztRQUNMLGdFQUFnRTtRQUNoRSxzQkFBc0I7UUFDeEI7SUFDRixPQUFPO1FBQ0wsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSw4REFBOEQ7UUFDOUQsbUJBQW1CO1FBQ25CLE9BQU80RCxpQkFDTHBFLGFBQ0E4RCxhQUNBLE1BQ0FILDZCQUNBckQsdUJBQ0FHLGFBQ0FEO0lBRUo7SUFFQSw4RUFBOEU7SUFDOUUsd0VBQXdFO0lBQ3hFLDZDQUE2QztJQUM3QyxNQUFNTSx1QkFBdUJWLGlCQUFpQixPQUFPQSxZQUFZLENBQUMsRUFBRSxHQUFHO0lBQ3ZFLE1BQU1pQixlQUFlLElBQUlGO0lBQ3pCLE1BQU1rRCw0QkFDSlgsc0JBQXNCdEIsWUFBWXNCLGtCQUFrQnpDLGNBQWMsR0FBRztJQUN2RSxNQUFNcUQsb0JBQW9CLElBQUluRCxJQUFJa0Q7SUFDbEMsSUFBSTlDLDZCQUVBLENBQUM7SUFDTCxJQUFJRCxzQkFBc0I7SUFDMUIsSUFBSTBDLGVBQWU7UUFDakIsdUVBQXVFO1FBQ3ZFLDRFQUE0RTtRQUM1RSw0Q0FBNEM7UUFDNUMsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSwyREFBMkQ7UUFDM0R4RCx5QkFBeUIrRCxJQUFJLENBQUM5RDtJQUNoQyxPQUFPO1FBQ0wsSUFBSyxJQUFJZSxvQkFBb0J1QyxvQkFBcUI7WUFDaEQsTUFBTVMsbUJBQ0pULG1CQUFtQixDQUFDdkMsaUJBQWlCO1lBQ3ZDLE1BQU1LLG9CQUNKZix5QkFBeUIsT0FDckJBLG9CQUFvQixDQUFDVSxpQkFBaUIsR0FDdEM7WUFDTixNQUFNaUQsMEJBQ0pKLDhCQUE4QixPQUMxQkEsMEJBQTBCekMsR0FBRyxDQUFDSixvQkFDOUJZO1lBQ04sTUFBTXNDLGVBQWVGLGdCQUFnQixDQUFDLEVBQUU7WUFDeEMsTUFBTUcsbUJBQW1CbEUsWUFBWXVCLE1BQU0sQ0FBQztnQkFDMUNSO2dCQUNBa0Q7YUFDRDtZQUNELE1BQU1FLGtCQUFrQjFDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJ3QztZQUU3QyxNQUFNRyx5QkFDSkosNEJBQTRCckMsWUFDeEJxQyx3QkFBd0I3QyxHQUFHLENBQUNnRCxtQkFDNUJ4QztZQUVOLE1BQU1FLFlBQVl1Qiw0QkFDaEI3RCxhQUNBd0Usa0JBQ0FLLHdCQUNBaEQsbUJBQ0E4Qiw2QkFDQXJELHVCQUNBcUUsa0JBQ0FuRTtZQUVGYSxhQUFheUIsR0FBRyxDQUFDdEIsa0JBQWtCYztZQUNuQyxNQUFNWSwwQkFBMEJaLFVBQVV4QyxrQkFBa0I7WUFDNUQsSUFBSW9ELDRCQUE0QixNQUFNO2dCQUNwQywwQ0FBMEM7Z0JBQzFDNUIsc0JBQXNCO2dCQUN0QkMsMEJBQTBCLENBQUNDLGlCQUFpQixHQUFHMEI7WUFDakQsT0FBTztnQkFDTDNCLDBCQUEwQixDQUFDQyxpQkFBaUIsR0FBR2dEO1lBQ2pEO1lBQ0EsTUFBTXpCLG9CQUFvQlQsVUFBVXpDLElBQUk7WUFDeEMsSUFBSWtELHNCQUFzQixNQUFNO2dCQUM5QixNQUFNQyxxQkFBc0MsSUFBSTdCO2dCQUNoRDZCLG1CQUFtQkYsR0FBRyxDQUFDOEIsaUJBQWlCN0I7Z0JBQ3hDdUIsa0JBQWtCeEIsR0FBRyxDQUFDdEIsa0JBQWtCd0I7WUFDMUM7UUFDRjtJQUNGO0lBRUEsT0FBTztRQUNMLGtEQUFrRDtRQUNsRCx1RUFBdUU7UUFDdkUsNEVBQTRFO1FBQzVFLHNCQUFzQjtRQUN0QnBELE9BQU9rRTtRQUNQakUsTUFBTTtZQUNKdUQsVUFBVTtZQUNWLCtEQUErRDtZQUMvRCx1QkFBdUI7WUFDdkJDO1lBQ0FDLGFBQWE7WUFDYkM7WUFDQWxELGNBQWM7WUFDZG1EO1lBQ0F2QyxnQkFBZ0JxRDtZQUNoQnRFLGFBQWFpRTtRQUNmO1FBQ0FuRSxvQkFBb0J3QixzQkFDaEJtQyxnQ0FBZ0NLLGFBQWF2Qyw4QkFDN0M7UUFDSnhCLFVBQVVzQjtJQUNaO0FBQ0Y7QUFFQSxTQUFTb0MsZ0NBQ1BxQixlQUFrQyxFQUNsQ0MsV0FBOEQ7SUFFOUQsTUFBTUMsUUFBMkI7UUFBQ0YsZUFBZSxDQUFDLEVBQUU7UUFBRUM7S0FBWTtJQUNsRSw0RUFBNEU7SUFDNUUsMkVBQTJFO0lBQzNFLHVDQUF1QztJQUN2QyxJQUFJLEtBQUtELGlCQUFpQjtRQUN4QkUsS0FBSyxDQUFDLEVBQUUsR0FBR0YsZUFBZSxDQUFDLEVBQUU7SUFDL0I7SUFDQSxJQUFJLEtBQUtBLGlCQUFpQjtRQUN4QkUsS0FBSyxDQUFDLEVBQUUsR0FBR0YsZUFBZSxDQUFDLEVBQUU7SUFDL0I7SUFDQSxJQUFJLEtBQUtBLGlCQUFpQjtRQUN4QkUsS0FBSyxDQUFDLEVBQUUsR0FBR0YsZUFBZSxDQUFDLEVBQUU7SUFDL0I7SUFDQSxPQUFPRTtBQUNUO0FBRUEsU0FBU1osaUJBQ1BwRSxXQUFtQixFQUNuQjhELFdBQThCLEVBQzlCMUQsWUFBc0MsRUFDdENDLFlBQTZCLEVBQzdCQyxxQkFBOEIsRUFDOUJHLFdBQThCLEVBQzlCRCx3QkFBa0Q7SUFFbEQsc0VBQXNFO0lBRXRFLDZFQUE2RTtJQUM3RSwyREFBMkQ7SUFDM0QsTUFBTVYscUJBQXFCMkQsZ0NBQ3pCSyxhQUNBQSxXQUFXLENBQUMsRUFBRTtJQUVoQmhFLGtCQUFrQixDQUFDLEVBQUUsR0FBRztJQUV4QixNQUFNbUYsVUFBZ0I7UUFDcEJyRixPQUFPa0U7UUFFUCw0RUFBNEU7UUFDNUVqRSxNQUFNcUYsdUJBQ0psRixhQUNBOEQsYUFDQTFELGNBQ0FDLGNBQ0FDLHVCQUNBRyxhQUNBRDtRQUVGLHlFQUF5RTtRQUN6RSw0RUFBNEU7UUFDNUVWO1FBQ0FDLFVBQVU7SUFDWjtJQUNBLE9BQU9rRjtBQUNUO0FBRUEsU0FBU3pDLGdCQUFnQjJDLGlCQUFvQztJQUMzRCxtRUFBbUU7SUFDbkUsMERBQTBEO0lBQzFELE9BQU87UUFDTHZGLE9BQU91RjtRQUNQdEYsTUFBTTtRQUNOQyxvQkFBb0I7UUFDcEJDLFVBQVU7SUFDWjtBQUNGO0FBaUJPLFNBQVNQLHdCQUNkNEYsSUFBdUIsRUFDdkJDLGVBQW1EO0lBRW5EQSxnQkFBZ0JDLElBQUksQ0FDbEI7WUFBQyxFQUFFQyxVQUFVLEVBQTZCO1FBQ3hDLElBQUksT0FBT0EsZUFBZSxVQUFVO1lBQ2xDLHNFQUFzRTtZQUN0RSwyREFBMkQ7WUFDM0QsZ0JBQWdCO1lBQ2hCO1FBQ0Y7UUFDQSxLQUFLLE1BQU1DLHdCQUF3QkQsV0FBWTtZQUM3QyxNQUFNLEVBQ0o5RSxXQUFXLEVBQ1hnRixNQUFNQyxpQkFBaUIsRUFDdkJDLFVBQVVDLFdBQVcsRUFDckJyQyxNQUFNc0MsV0FBVyxFQUNsQixHQUFHTDtZQUVKLElBQUksQ0FBQ0ksYUFBYTtnQkFJaEI7WUFDRjtZQUVBRSxnQ0FDRVYsTUFDQTNFLGFBQ0FpRixtQkFDQUUsYUFDQUM7UUFFSjtRQUVBLHdFQUF3RTtRQUN4RSxxRUFBcUU7UUFDckUsNkRBQTZEO1FBQzdEdEcsVUFBVTZGLE1BQU07SUFDbEIsR0FDQSxDQUFDVztRQUNDLDJDQUEyQztRQUMzQ3hHLFVBQVU2RixNQUFNVztJQUNsQjtBQUVKO0FBRUEsU0FBU0QsZ0NBQ1BFLFFBQTJCLEVBQzNCdkYsV0FBOEIsRUFDOUJpRixpQkFBb0MsRUFDcENFLFdBQThCLEVBQzlCQyxXQUFxQjtJQUVyQiw0RUFBNEU7SUFDNUUsMEVBQTBFO0lBQzFFLHFDQUFxQztJQUNyQyxFQUFFO0lBQ0YsOEVBQThFO0lBQzlFLHFDQUFxQztJQUNyQyxFQUFFO0lBQ0YsNkRBQTZEO0lBQzdELEVBQUU7SUFDRix5RUFBeUU7SUFDekUsSUFBSVQsT0FBT1k7SUFDWCxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSXhGLFlBQVltQyxNQUFNLEVBQUVxRCxLQUFLLEVBQUc7UUFDOUMsTUFBTXpFLG1CQUEyQmYsV0FBVyxDQUFDd0YsRUFBRTtRQUMvQyxNQUFNQyxVQUFtQnpGLFdBQVcsQ0FBQ3dGLElBQUksRUFBRTtRQUMzQyxNQUFNNUUsZUFBZStELEtBQUtyRixRQUFRO1FBQ2xDLElBQUlzQixpQkFBaUIsTUFBTTtZQUN6QixNQUFNaUIsWUFBWWpCLGFBQWFPLEdBQUcsQ0FBQ0o7WUFDbkMsSUFBSWMsY0FBY0YsV0FBVztnQkFDM0IsTUFBTStELGNBQWM3RCxVQUFVMUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RDLElBQUlpRCxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhcUQsU0FBU0MsY0FBYztvQkFDdEMsbUVBQW1FO29CQUNuRWYsT0FBTzlDO29CQUNQO2dCQUNGO1lBQ0Y7UUFDRjtRQUNBLDJFQUEyRTtRQUMzRSw0RUFBNEU7UUFDNUUsd0VBQXdFO1FBQ3hFLDhCQUE4QjtRQUM5QjtJQUNGO0lBRUE4RCxrQ0FDRWhCLE1BQ0FNLG1CQUNBRSxhQUNBQztBQUVKO0FBRUEsU0FBU08sa0NBQ1BoQixJQUF1QixFQUN2Qk0saUJBQW9DLEVBQ3BDRSxXQUE4QixFQUM5QkMsV0FBcUI7SUFFckIsSUFBSVQsS0FBS3RGLGtCQUFrQixLQUFLLE1BQU07UUFDcEMsNERBQTREO1FBQzVEO0lBQ0Y7SUFFQSwwRUFBMEU7SUFDMUUsNENBQTRDO0lBQzVDLE1BQU11QixlQUFlK0QsS0FBS3JGLFFBQVE7SUFDbEMsTUFBTXNHLFdBQVdqQixLQUFLdkYsSUFBSTtJQUMxQixJQUFJd0IsaUJBQWlCLE1BQU07UUFDekIsd0VBQXdFO1FBQ3hFLGlFQUFpRTtRQUNqRSxvQkFBb0I7UUFDcEIsSUFBSWdGLGFBQWEsTUFBTTtZQUNyQkMsdUJBQ0VELFVBQ0FqQixLQUFLeEYsS0FBSyxFQUNWOEYsbUJBQ0FFLGFBQ0FDO1lBRUYsK0RBQStEO1lBQy9EVCxLQUFLdEYsa0JBQWtCLEdBQUc7UUFDNUI7UUFDQTtJQUNGO0lBQ0EsMkVBQTJFO0lBQzNFLHdEQUF3RDtJQUN4RCxNQUFNeUcsaUJBQWlCYixpQkFBaUIsQ0FBQyxFQUFFO0lBQzNDLE1BQU1jLHNCQUFzQlosV0FBVyxDQUFDLEVBQUU7SUFFMUMsSUFBSyxNQUFNcEUsb0JBQW9Ca0Usa0JBQW1CO1FBQ2hELE1BQU1lLHlCQUNKRixjQUFjLENBQUMvRSxpQkFBaUI7UUFDbEMsTUFBTWtGLG1CQUNKRixtQkFBbUIsQ0FBQ2hGLGlCQUFpQjtRQUV2QyxNQUFNYyxZQUFZakIsYUFBYU8sR0FBRyxDQUFDSjtRQUNuQyxJQUFJYyxjQUFjRixXQUFXO1lBQzNCLE1BQU0rRCxjQUFjN0QsVUFBVTFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLElBQ0VpRCxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhNEQsc0JBQXNCLENBQUMsRUFBRSxFQUFFTixnQkFDeENPLHFCQUFxQixRQUNyQkEscUJBQXFCdEUsV0FDckI7Z0JBQ0EsbUVBQW1FO2dCQUNuRSxPQUFPZ0Usa0NBQ0w5RCxXQUNBbUUsd0JBQ0FDLGtCQUNBYjtZQUVKO1FBQ0Y7SUFDQSwyRUFBMkU7SUFDM0Usc0VBQXNFO0lBQ3RFLHdFQUF3RTtJQUN4RSw4QkFBOEI7SUFDaEM7QUFDRjtBQUVBLFNBQVNYLHVCQUNQbEYsV0FBbUIsRUFDbkI4RCxXQUE4QixFQUM5QjFELFlBQXNDLEVBQ3RDQyxZQUE2QixFQUM3QkMscUJBQThCLEVBQzlCRyxXQUE4QixFQUM5QkQsd0JBQWtEO0lBRWxELE1BQU11RCxzQkFBc0JELFdBQVcsQ0FBQyxFQUFFO0lBQzFDLE1BQU1oRCx1QkFBdUJWLGlCQUFpQixPQUFPQSxZQUFZLENBQUMsRUFBRSxHQUFHO0lBRXZFLE1BQU1hLGlCQUFpQixJQUFJRTtJQUMzQixJQUFLLElBQUlLLG9CQUFvQnVDLG9CQUFxQjtRQUNoRCxNQUFNUyxtQkFDSlQsbUJBQW1CLENBQUN2QyxpQkFBaUI7UUFDdkMsTUFBTUssb0JBQ0pmLHlCQUF5QixPQUNyQkEsb0JBQW9CLENBQUNVLGlCQUFpQixHQUN0QztRQUVOLE1BQU1rRCxlQUFlRixnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3hDLE1BQU1HLG1CQUFtQmxFLFlBQVl1QixNQUFNLENBQUM7WUFDMUNSO1lBQ0FrRDtTQUNEO1FBQ0QsTUFBTUUsa0JBQWtCMUMsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQndDO1FBRTdDLE1BQU0zQixvQkFBb0JtQyx1QkFDeEJsRixhQUNBd0Usa0JBQ0EzQyxzQkFBc0JPLFlBQVksT0FBT1AsbUJBQ3pDeEIsY0FDQUMsdUJBQ0FxRSxrQkFDQW5FO1FBR0YsTUFBTXdDLHFCQUFzQyxJQUFJN0I7UUFDaEQ2QixtQkFBbUJGLEdBQUcsQ0FBQzhCLGlCQUFpQjdCO1FBQ3hDOUIsZUFBZTZCLEdBQUcsQ0FBQ3RCLGtCQUFrQndCO0lBQ3ZDO0lBRUEsNEVBQTRFO0lBQzVFLG1FQUFtRTtJQUNuRSxNQUFNZ0IsZ0JBQWdCL0MsZUFBZTBGLElBQUksS0FBSztJQUU5QyxJQUFJM0MsZUFBZTtRQUNqQix1RUFBdUU7UUFDdkUsNEVBQTRFO1FBQzVFLDRDQUE0QztRQUM1Qyx3RUFBd0U7UUFDeEUscUVBQXFFO1FBQ3JFLDJEQUEyRDtRQUMzRHhELHlCQUF5QitELElBQUksQ0FBQzlEO0lBQ2hDO0lBRUEsTUFBTW1HLG1CQUFtQnhHLGlCQUFpQixPQUFPQSxZQUFZLENBQUMsRUFBRSxHQUFHO0lBQ25FLE1BQU15Ryx1QkFBdUJ6RyxpQkFBaUIsT0FBT0EsWUFBWSxDQUFDLEVBQUUsR0FBRztJQUN2RSxPQUFPO1FBQ0xnRCxVQUFVO1FBQ1ZuQyxnQkFBZ0JBO1FBRWhCcUMsYUFBYXNELHFCQUFxQnhFLFlBQVl3RSxtQkFBbUI7UUFDakV2RyxjQUFjMkQsZ0JBQWdCM0QsZUFBZTtZQUFDO1lBQU07U0FBSztRQUV6RCw0RUFBNEU7UUFDNUUsNEVBQTRFO1FBQzVFLHVDQUF1QztRQUN2Q21ELFNBQVNxRCx5QkFBeUJ6RSxZQUFZeUUsdUJBQXVCO1FBRXJFLHFFQUFxRTtRQUNyRSx3Q0FBd0M7UUFDeEN4RCxLQUFLeUQ7UUFDTHZELE1BQU1TLGdCQUFpQjhDLHNCQUEwQztRQUVqRTlHO0lBQ0Y7QUFDRjtBQUVBLFNBQVNzRyx1QkFDUFMsU0FBb0IsRUFDcEJDLFNBQTRCLEVBQzVCQyxXQUE4QixFQUM5QnJCLFdBQThCLEVBQzlCQyxXQUFxQjtJQUVyQiw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLDRFQUE0RTtJQUM1RSw4RUFBOEU7SUFDOUUsOERBQThEO0lBQzlELDZCQUE2QjtJQUM3QixFQUFFO0lBQ0YscUVBQXFFO0lBQ3JFLDhFQUE4RTtJQUM5RSxnRUFBZ0U7SUFDaEUsTUFBTXFCLG9CQUFvQkYsU0FBUyxDQUFDLEVBQUU7SUFDdEMsTUFBTUcsc0JBQXNCRixXQUFXLENBQUMsRUFBRTtJQUMxQyxNQUFNRyxlQUFleEIsV0FBVyxDQUFDLEVBQUU7SUFFbkMsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx1Q0FBdUM7SUFDdkMsTUFBTTNFLGlCQUFpQjhGLFVBQVU5RixjQUFjO0lBQy9DLElBQUssSUFBSU8sb0JBQW9CMEYsa0JBQW1CO1FBQzlDLE1BQU1HLGlCQUNKSCxpQkFBaUIsQ0FBQzFGLGlCQUFpQjtRQUNyQyxNQUFNOEYsbUJBQ0pILG1CQUFtQixDQUFDM0YsaUJBQWlCO1FBQ3ZDLE1BQU0rRixZQUNKSCxZQUFZLENBQUM1RixpQkFBaUI7UUFFaEMsTUFBTWdHLGtCQUFrQnZHLGVBQWVXLEdBQUcsQ0FBQ0o7UUFDM0MsTUFBTWlHLG1CQUFtQkosY0FBYyxDQUFDLEVBQUU7UUFDMUMsTUFBTUssc0JBQXNCeEYsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQnVGO1FBRWpELE1BQU1FLGlCQUNKSCxvQkFBb0JwRixZQUNoQm9GLGdCQUFnQjVGLEdBQUcsQ0FBQzhGLHVCQUNwQnRGO1FBRU4sSUFBSXVGLG1CQUFtQnZGLFdBQVc7WUFDaEMsSUFDRWtGLHFCQUFxQmxGLGFBQ3JCUyxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhNEUsa0JBQWtCSCxnQkFBZ0IsQ0FBQyxFQUFFLEdBQ2xEO2dCQUNBLElBQUlDLGNBQWNuRixhQUFhbUYsY0FBYyxNQUFNO29CQUNqRCwrREFBK0Q7b0JBQy9EakIsdUJBQ0VxQixnQkFDQU4sZ0JBQ0FDLGtCQUNBQyxXQUNBMUI7Z0JBRUosT0FBTztvQkFDTCxrRUFBa0U7b0JBQ2xFLG9FQUFvRTtvQkFDcEUsc0VBQXNFO29CQUN0RSwrQ0FBK0M7b0JBQy9DK0Isc0JBQXNCUCxnQkFBZ0JNLGdCQUFnQjtnQkFDeEQ7WUFDRixPQUFPO2dCQUNMLGtFQUFrRTtnQkFDbEUsdUJBQXVCO2dCQUN2QkMsc0JBQXNCUCxnQkFBZ0JNLGdCQUFnQjtZQUN4RDtRQUNGLE9BQU87UUFDTCx3RUFBd0U7UUFDeEUsZ0VBQWdFO1FBQ2hFLGlFQUFpRTtRQUNqRSx3REFBd0Q7UUFDMUQ7SUFDRjtJQUVBLDJFQUEyRTtJQUMzRSxxQkFBcUI7SUFDckIsTUFBTXRFLE1BQU0wRCxVQUFVMUQsR0FBRztJQUN6QixNQUFNd0UscUJBQXFCakMsV0FBVyxDQUFDLEVBQUU7SUFDekMsSUFBSXZDLFFBQVEsTUFBTTtRQUNoQixvRUFBb0U7UUFDcEUscUVBQXFFO1FBQ3JFMEQsVUFBVTFELEdBQUcsR0FBR3dFO0lBQ2xCLE9BQU8sSUFBSUMsY0FBY3pFLE1BQU07UUFDN0IsMEVBQTBFO1FBQzFFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEVBLElBQUkwRSxPQUFPLENBQUNGO0lBQ2QsT0FBTztJQUNMLHVFQUF1RTtJQUN2RSxzRUFBc0U7SUFDeEU7SUFFQSw4RUFBOEU7SUFDOUUseUVBQXlFO0lBQ3pFLGNBQWM7SUFDZCxNQUFNdEUsT0FBT3dELFVBQVV4RCxJQUFJO0lBQzNCLElBQUl1RSxjQUFjdkUsT0FBTztRQUN2QkEsS0FBS3dFLE9BQU8sQ0FBQ2xDO0lBQ2Y7QUFDRjtBQUVPLFNBQVN0RyxVQUFVNkYsSUFBdUIsRUFBRVcsS0FBVTtJQUMzRCxNQUFNZ0IsWUFBWTNCLEtBQUt2RixJQUFJO0lBQzNCLElBQUlrSCxjQUFjLE1BQU07UUFDdEIsK0NBQStDO1FBQy9DO0lBQ0Y7SUFFQSxNQUFNMUYsZUFBZStELEtBQUtyRixRQUFRO0lBQ2xDLElBQUlzQixpQkFBaUIsTUFBTTtRQUN6QixrRUFBa0U7UUFDbEUsYUFBYTtRQUNidUcsc0JBQXNCeEMsS0FBS3hGLEtBQUssRUFBRW1ILFdBQVdoQjtJQUMvQyxPQUFPO1FBQ0wsc0VBQXNFO1FBQ3RFLDJFQUEyRTtRQUMzRSw2QkFBNkI7UUFDN0IsS0FBSyxNQUFNekQsYUFBYWpCLGFBQWEyRyxNQUFNLEdBQUk7WUFDN0N6SSxVQUFVK0MsV0FBV3lEO1FBQ3ZCO0lBQ0Y7SUFFQSwrREFBK0Q7SUFDL0RYLEtBQUt0RixrQkFBa0IsR0FBRztBQUM1QjtBQUVBLFNBQVM4SCxzQkFDUDlELFdBQThCLEVBQzlCaUQsU0FBb0IsRUFDcEJoQixLQUFVO0lBRVYsNkVBQTZFO0lBQzdFLHlDQUF5QztJQUN6QyxFQUFFO0lBQ0YsNkRBQTZEO0lBQzdELE1BQU1oQyxzQkFBc0JELFdBQVcsQ0FBQyxFQUFFO0lBQzFDLE1BQU03QyxpQkFBaUI4RixVQUFVOUYsY0FBYztJQUMvQyxJQUFLLElBQUlPLG9CQUFvQnVDLG9CQUFxQjtRQUNoRCxNQUFNUyxtQkFDSlQsbUJBQW1CLENBQUN2QyxpQkFBaUI7UUFDdkMsTUFBTWdHLGtCQUFrQnZHLGVBQWVXLEdBQUcsQ0FBQ0o7UUFDM0MsSUFBSWdHLG9CQUFvQnBGLFdBQVc7WUFHakM7UUFDRjtRQUNBLE1BQU1zQyxlQUFlRixnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3hDLE1BQU1JLGtCQUFrQjFDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJ3QztRQUM3QyxNQUFNaUQsaUJBQWlCSCxnQkFBZ0I1RixHQUFHLENBQUNnRDtRQUMzQyxJQUFJK0MsbUJBQW1CdkYsV0FBVztZQUNoQ3dGLHNCQUFzQnBELGtCQUFrQm1ELGdCQUFnQjVCO1FBQzFELE9BQU87UUFDTCx3RUFBd0U7UUFDeEUsd0RBQXdEO1FBQzFEO0lBQ0Y7SUFDQSxNQUFNMUMsTUFBTTBELFVBQVUxRCxHQUFHO0lBQ3pCLElBQUl5RSxjQUFjekUsTUFBTTtRQUN0QixJQUFJMEMsVUFBVSxNQUFNO1lBQ2xCLGdEQUFnRDtZQUNoRDFDLElBQUkwRSxPQUFPLENBQUM7UUFDZCxPQUFPO1lBQ0wsK0NBQStDO1lBQy9DMUUsSUFBSTRFLE1BQU0sQ0FBQ2xDO1FBQ2I7SUFDRjtJQUVBLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsMkVBQTJFO0lBQzNFLDZEQUE2RDtJQUM3RCxNQUFNeEMsT0FBT3dELFVBQVV4RCxJQUFJO0lBQzNCLElBQUl1RSxjQUFjdkUsT0FBTztRQUN2QkEsS0FBS3dFLE9BQU8sQ0FBQztJQUNmO0FBQ0Y7QUFFTyxTQUFTckkscUNBQ2RPLFlBQXVCLEVBQ3ZCNkQsV0FBOEI7SUFFOUIsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLDBDQUEwQztJQUMxQyxFQUFFO0lBQ0YsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSx3REFBd0Q7SUFFeEQsTUFBTUMsc0JBQXNCRCxXQUFXLENBQUMsRUFBRTtJQUMxQyxNQUFNOUMsb0JBQW9CZixhQUFhZ0IsY0FBYztJQUNyRCxNQUFNaUgsb0JBQW9CLElBQUkvRyxJQUFJSDtJQUNsQyxJQUFLLElBQUlRLG9CQUFvQnVDLG9CQUFxQjtRQUNoRCxNQUFNUyxtQkFDSlQsbUJBQW1CLENBQUN2QyxpQkFBaUI7UUFDdkMsTUFBTWtELGVBQWVGLGdCQUFnQixDQUFDLEVBQUU7UUFDeEMsTUFBTUksa0JBQWtCMUMsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQndDO1FBQzdDLE1BQU0vQyxxQkFBcUJYLGtCQUFrQlksR0FBRyxDQUFDSjtRQUNqRCxJQUFJRyx1QkFBdUJTLFdBQVc7WUFDcEMsTUFBTUMsb0JBQW9CVixtQkFBbUJDLEdBQUcsQ0FBQ2dEO1lBQ2pELElBQUl2QyxzQkFBc0JELFdBQVc7Z0JBQ25DLE1BQU1XLG9CQUFvQnJELHFDQUN4QjJDLG1CQUNBbUM7Z0JBRUYsTUFBTXhCLHFCQUFxQixJQUFJN0IsSUFBSVE7Z0JBQ25DcUIsbUJBQW1CRixHQUFHLENBQUM4QixpQkFBaUI3QjtnQkFDeENtRixrQkFBa0JwRixHQUFHLENBQUN0QixrQkFBa0J3QjtZQUMxQztRQUNGO0lBQ0Y7SUFFQSxrRUFBa0U7SUFDbEUsRUFBRTtJQUNGLDBFQUEwRTtJQUMxRSw0RUFBNEU7SUFDNUUsMkVBQTJFO0lBQzNFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0Usc0JBQXNCO0lBQ3RCLE1BQU1LLE1BQU1wRCxhQUFhb0QsR0FBRztJQUM1QixNQUFNOEUsb0JBQW9CTCxjQUFjekUsUUFBUUEsSUFBSStFLE1BQU0sS0FBSztJQUUvRCxPQUFPO1FBQ0xoRixVQUFVO1FBQ1ZDO1FBQ0FFLE1BQU10RCxhQUFhc0QsSUFBSTtRQUV2QmxELGNBQWM4SCxvQkFBb0JsSSxhQUFhSSxZQUFZLEdBQUc7WUFBQztZQUFNO1NBQUs7UUFDMUVpRCxhQUFhNkUsb0JBQW9CbEksYUFBYXFELFdBQVcsR0FBRztRQUM1REUsU0FBU3ZELGFBQWF1RCxPQUFPO1FBRTdCLGtEQUFrRDtRQUNsRHZDLGdCQUFnQmlIO1FBRWhCbEksYUFBYUMsYUFBYUQsV0FBVztJQUN2QztBQUNGO0FBRUEsTUFBTXFJLFdBQVdDO0FBOEJqQiw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxtRUFBbUU7QUFDbkUsU0FBU1IsY0FBY1MsS0FBVTtJQUMvQixPQUFPQSxTQUFTQSxNQUFNQyxHQUFHLEtBQUtIO0FBQ2hDO0FBRUEsU0FBU3ZCO0lBQ1AsSUFBSWlCO0lBQ0osSUFBSUU7SUFDSixNQUFNUSxhQUFhLElBQUlDLFFBQXlCLENBQUNDLEtBQUtDO1FBQ3BEYixVQUFVWTtRQUNWVixTQUFTVztJQUNYO0lBQ0FILFdBQVdMLE1BQU0sR0FBRztJQUNwQkssV0FBV1YsT0FBTyxHQUFHLENBQUNRO1FBQ3BCLElBQUlFLFdBQVdMLE1BQU0sS0FBSyxXQUFXO1lBQ25DLE1BQU1TLGVBQXFDSjtZQUMzQ0ksYUFBYVQsTUFBTSxHQUFHO1lBQ3RCUyxhQUFhTixLQUFLLEdBQUdBO1lBQ3JCUixRQUFRUTtRQUNWO0lBQ0Y7SUFDQUUsV0FBV1IsTUFBTSxHQUFHLENBQUNsQztRQUNuQixJQUFJMEMsV0FBV0wsTUFBTSxLQUFLLFdBQVc7WUFDbkMsTUFBTVUsY0FBbUNMO1lBQ3pDSyxZQUFZVixNQUFNLEdBQUc7WUFDckJVLFlBQVlDLE1BQU0sR0FBR2hEO1lBQ3JCa0MsT0FBT2xDO1FBQ1Q7SUFDRjtJQUNBMEMsV0FBV0QsR0FBRyxHQUFHSDtJQUNqQixPQUFPSTtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3Bwci1uYXZpZ2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIENhY2hlTm9kZVNlZWREYXRhLFxuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgRmxpZ2h0U2VnbWVudFBhdGgsXG4gIFNlZ21lbnQsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBDYWNoZU5vZGUsXG4gIENoaWxkU2VnbWVudE1hcCxcbiAgSGVhZERhdGEsXG4gIExvYWRpbmdNb2R1bGVEYXRhLFxuICBSZWFkeUNhY2hlTm9kZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBERUZBVUxUX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgbWF0Y2hTZWdtZW50IH0gZnJvbSAnLi4vbWF0Y2gtc2VnbWVudHMnXG5pbXBvcnQgeyBjcmVhdGVSb3V0ZXJDYWNoZUtleSB9IGZyb20gJy4vY3JlYXRlLXJvdXRlci1jYWNoZS1rZXknXG5pbXBvcnQgdHlwZSB7IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcbmltcG9ydCB7IGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCB9IGZyb20gJy4vaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQnXG5pbXBvcnQgeyBEWU5BTUlDX1NUQUxFVElNRV9NUyB9IGZyb20gJy4vcHJlZmV0Y2gtY2FjaGUtdXRpbHMnXG5cbi8vIFRoaXMgaXMgeWV0IGFub3RoZXIgdHJlZSB0eXBlIHRoYXQgaXMgdXNlZCB0byB0cmFjayBwZW5kaW5nIHByb21pc2VzIHRoYXRcbi8vIG5lZWQgdG8gYmUgZnVsZmlsbGVkIG9uY2UgdGhlIGR5bmFtaWMgZGF0YSBpcyByZWNlaXZlZC4gVGhlIHRlcm1pbmFsIG5vZGVzIG9mXG4vLyB0aGlzIHRyZWUgcmVwcmVzZW50IHRoZSBuZXcgQ2FjaGUgTm9kZSB0cmVlcyB0aGF0IHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhpc1xuLy8gcmVxdWVzdC4gV2UgY2FuJ3QgdXNlIHRoZSBDYWNoZSBOb2RlIHRyZWUgb3IgUm91dGUgU3RhdGUgdHJlZSBkaXJlY3RseVxuLy8gYmVjYXVzZSB0aG9zZSBpbmNsdWRlIHJldXNlZCBub2RlcywgdG9vLiBUaGlzIHRyZWUgaXMgZGlzY2FyZGVkIGFzIHNvb24gYXNcbi8vIHRoZSBuYXZpZ2F0aW9uIHJlc3BvbnNlIGlzIHJlY2VpdmVkLlxudHlwZSBTUEFOYXZpZ2F0aW9uVGFzayA9IHtcbiAgLy8gVGhlIHJvdXRlciBzdGF0ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmVlIHRoYXQgdGhpcyBUYXNrIHJlcHJlc2VudHMuXG4gIHJvdXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICAvLyBUaGUgQ2FjaGVOb2RlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyZWUgdGhhdCB0aGlzIFRhc2sgcmVwcmVzZW50cy4gSWZcbiAgLy8gYGNoaWxkcmVuYCBpcyBudWxsIChpLmUuIGlmIHRoaXMgaXMgYSB0ZXJtaW5hbCB0YXNrIG5vZGUpLCB0aGVuIGBub2RlYFxuICAvLyByZXByZXNlbnRzIGEgYnJhbmQgbmV3IENhY2hlIE5vZGUgdHJlZSwgd2hpY2ggd2F5IG9yIG1heSBub3QgbmVlZCB0byBiZVxuICAvLyBmaWxsZWQgd2l0aCBkeW5hbWljIGRhdGEgZnJvbSB0aGUgc2VydmVyLlxuICBub2RlOiBDYWNoZU5vZGUgfCBudWxsXG4gIC8vIFRoZSB0cmVlIHNlbnQgdG8gdGhlIHNlcnZlciBkdXJpbmcgdGhlIGR5bmFtaWMgcmVxdWVzdC4gVGhpcyBpcyB0aGVcbiAgLy8gc2FtZSBhcyBgcm91dGVgLCBleGNlcHQgd2l0aCB0aGUgYHJlZmV0Y2hgIG1hcmtlciBzZXQgb24gZHluYW1pYyBzZWdtZW50cy5cbiAgLy8gSWYgYWxsIHRoZSBzZWdtZW50cyBhcmUgc3RhdGljLCB0aGVuIHRoaXMgd2lsbCBiZSBudWxsLCBhbmQgbm8gc2VydmVyXG4gIC8vIHJlcXVlc3QgaXMgcmVxdWlyZWQuXG4gIGR5bmFtaWNSZXF1ZXN0VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgfCBudWxsXG4gIGNoaWxkcmVuOiBNYXA8c3RyaW5nLCBTUEFOYXZpZ2F0aW9uVGFzaz4gfCBudWxsXG59XG5cbi8vIEEgc3BlY2lhbCB0eXBlIHVzZWQgdG8gYmFpbCBvdXQgYW5kIHRyaWdnZXIgYSBmdWxsLXBhZ2UgbmF2aWdhdGlvbi5cbnR5cGUgTVBBTmF2aWdhdGlvblRhc2sgPSB7XG4gIC8vIE1QQSB0YXNrcyBhcmUgZGlzdGluZ3Vpc2VkIGZyb20gU1BBIHRhc2tzIGJ5IGhhdmluZyBhIG51bGwgYHJvdXRlYC5cbiAgcm91dGU6IG51bGxcbiAgbm9kZTogbnVsbFxuICBkeW5hbWljUmVxdWVzdFRyZWU6IG51bGxcbiAgY2hpbGRyZW46IG51bGxcbn1cblxuY29uc3QgTVBBX05BVklHQVRJT05fVEFTSzogTVBBTmF2aWdhdGlvblRhc2sgPSB7XG4gIHJvdXRlOiBudWxsLFxuICBub2RlOiBudWxsLFxuICBkeW5hbWljUmVxdWVzdFRyZWU6IG51bGwsXG4gIGNoaWxkcmVuOiBudWxsLFxufVxuXG5leHBvcnQgdHlwZSBUYXNrID0gU1BBTmF2aWdhdGlvblRhc2sgfCBNUEFOYXZpZ2F0aW9uVGFza1xuXG4vLyBDcmVhdGVzIGEgbmV3IENhY2hlIE5vZGUgdHJlZSAoaS5lLiBjb3B5LW9uLXdyaXRlKSB0aGF0IHJlcHJlc2VudHMgdGhlXG4vLyBvcHRpbWlzdGljIHJlc3VsdCBvZiBhIG5hdmlnYXRpb24sIHVzaW5nIGJvdGggdGhlIGN1cnJlbnQgQ2FjaGUgTm9kZSB0cmVlIGFuZFxuLy8gZGF0YSB0aGF0IHdhcyBwcmVmZXRjaGVkIHByaW9yIHRvIG5hdmlnYXRpb24uXG4vL1xuLy8gQXQgdGhlIG1vbWVudCB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24sIHdlIGhhdmVuJ3QgeWV0IHJlY2VpdmVkIHRoZSBuYXZpZ2F0aW9uXG4vLyByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIEl0IGNvdWxkIHNlbmQgYmFjayBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcbi8vIGZyb20gdGhlIHRyZWUgdGhhdCB3YXMgcHJlZmV0Y2hlZCDigJQgZHVlIHRvIHJld3JpdGVzLCBkZWZhdWx0IHJvdXRlcywgcGFyYWxsZWxcbi8vIHJvdXRlcywgZXRjLlxuLy9cbi8vIEJ1dCBpbiBtb3N0IGNhc2VzLCBpdCB3aWxsIHJldHVybiB0aGUgc2FtZSB0cmVlIHRoYXQgd2UgcHJlZmV0Y2hlZCwganVzdCB3aXRoXG4vLyB0aGUgZHluYW1pYyBob2xlcyBmaWxsZWQgaW4uIFNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZSB0aGlzIHdpbGwgaGFwcGVuLFxuLy8gYW5kIGFjY2VwdCB0aGF0IHRoZSByZWFsIHJlc3VsdCBjb3VsZCBiZSBhcmJpdHJhcmlseSBkaWZmZXJlbnQuXG4vL1xuLy8gV2UnbGwgcmV1c2UgYW55dGhpbmcgdGhhdCB3YXMgYWxyZWFkeSBpbiB0aGUgcHJldmlvdXMgdHJlZSwgc2luY2UgdGhhdCdzIHdoYXRcbi8vIHRoZSBzZXJ2ZXIgZG9lcy5cbi8vXG4vLyBOZXcgc2VnbWVudHMgKG9uZXMgdGhhdCBkb24ndCBhcHBlYXIgaW4gdGhlIG9sZCB0cmVlKSBhcmUgYXNzaWduZWQgYW5cbi8vIHVucmVzb2x2ZWQgcHJvbWlzZS4gVGhlIGRhdGEgZm9yIHRoZXNlIHByb21pc2VzIHdpbGwgYmUgZnVsZmlsbGVkIGxhdGVyLCB3aGVuXG4vLyB0aGUgbmF2aWdhdGlvbiByZXNwb25zZSBpcyByZWNlaXZlZC5cbi8vXG4vLyBUaGUgdHJlZSBjYW4gYmUgcmVuZGVyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQgaXMgY3JlYXRlZCAodGhhdCdzIHdoeSB0aGlzIGlzXG4vLyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uKS4gQW55IG5ldyB0cmVlcyB0aGF0IGRvIG5vdCBoYXZlIHByZWZldGNoIGRhdGEgd2lsbFxuLy8gc3VzcGVuZCBkdXJpbmcgcmVuZGVyaW5nLCB1bnRpbCB0aGUgZHluYW1pYyBkYXRhIHN0cmVhbXMgaW4uXG4vL1xuLy8gUmV0dXJucyBhIFRhc2sgb2JqZWN0LCB3aGljaCBjb250YWlucyBib3RoIHRoZSB1cGRhdGVkIENhY2hlIE5vZGUgYW5kIGEgcGF0aFxuLy8gdG8gdGhlIHBlbmRpbmcgc3VidHJlZXMgdGhhdCBuZWVkIHRvIGJlIHJlc29sdmVkIGJ5IHRoZSBuYXZpZ2F0aW9uIHJlc3BvbnNlLlxuLy9cbi8vIEEgcmV0dXJuIHZhbHVlIG9mIGBudWxsYCBtZWFucyB0aGVyZSB3ZXJlIG5vIGNoYW5nZXMsIGFuZCB0aGUgcHJldmlvdXMgdHJlZVxuLy8gY2FuIGJlIHJldXNlZCB3aXRob3V0IGluaXRpYXRpbmcgYSBzZXJ2ZXIgcmVxdWVzdC5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFBQUk5hdmlnYXRpb24oXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG9sZENhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICBvbGRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5ld1JvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcHJlZmV0Y2hEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIHByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBpc1ByZWZldGNoSGVhZFBhcnRpYWw6IGJvb2xlYW4sXG4gIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uOiBib29sZWFuLFxuICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQ6IEFycmF5PEZsaWdodFNlZ21lbnRQYXRoPlxuKTogVGFzayB8IG51bGwge1xuICBjb25zdCBzZWdtZW50UGF0aDogQXJyYXk8RmxpZ2h0U2VnbWVudFBhdGg+ID0gW11cbiAgcmV0dXJuIHVwZGF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbihcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgICBvbGRDYWNoZU5vZGUsXG4gICAgb2xkUm91dGVyU3RhdGUsXG4gICAgbmV3Um91dGVyU3RhdGUsXG4gICAgZmFsc2UsXG4gICAgcHJlZmV0Y2hEYXRhLFxuICAgIHByZWZldGNoSGVhZCxcbiAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgaXNTYW1lUGFnZU5hdmlnYXRpb24sXG4gICAgc2VnbWVudFBhdGgsXG4gICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gIClcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICBvbGRDYWNoZU5vZGU6IENhY2hlTm9kZSxcbiAgb2xkUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXdSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGRpZEZpbmRSb290TGF5b3V0OiBib29sZWFuLFxuICBwcmVmZXRjaERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgcHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGwsXG4gIGlzUHJlZmV0Y2hIZWFkUGFydGlhbDogYm9vbGVhbixcbiAgaXNTYW1lUGFnZU5hdmlnYXRpb246IGJvb2xlYW4sXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0OiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD5cbik6IFRhc2sgfCBudWxsIHtcbiAgLy8gRGlmZiB0aGUgb2xkIGFuZCBuZXcgdHJlZXMgdG8gcmV1c2UgdGhlIHNoYXJlZCBsYXlvdXRzLlxuICBjb25zdCBvbGRSb3V0ZXJTdGF0ZUNoaWxkcmVuID0gb2xkUm91dGVyU3RhdGVbMV1cbiAgY29uc3QgbmV3Um91dGVyU3RhdGVDaGlsZHJlbiA9IG5ld1JvdXRlclN0YXRlWzFdXG4gIGNvbnN0IHByZWZldGNoRGF0YUNoaWxkcmVuID0gcHJlZmV0Y2hEYXRhICE9PSBudWxsID8gcHJlZmV0Y2hEYXRhWzJdIDogbnVsbFxuXG4gIGlmICghZGlkRmluZFJvb3RMYXlvdXQpIHtcbiAgICAvLyBXZSdyZSBjdXJyZW50bHkgdHJhdmVyc2luZyB0aGUgcGFydCBvZiB0aGUgdHJlZSB0aGF0IHdhcyBhbHNvIHBhcnQgb2ZcbiAgICAvLyB0aGUgcHJldmlvdXMgcm91dGUuIElmIHdlIGRpc2NvdmVyIGEgcm9vdCBsYXlvdXQsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0b1xuICAgIC8vIHRyaWdnZXIgYW4gTVBBIG5hdmlnYXRpb24uIFNlZSBiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZSBmb3IgY29udGV4dC5cbiAgICBjb25zdCBpc1Jvb3RMYXlvdXQgPSBuZXdSb3V0ZXJTdGF0ZVs0XSA9PT0gdHJ1ZVxuICAgIGlmIChpc1Jvb3RMYXlvdXQpIHtcbiAgICAgIC8vIEZvdW5kIGEgbWF0Y2hpbmcgcm9vdCBsYXlvdXQuXG4gICAgICBkaWRGaW5kUm9vdExheW91dCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBjb25zdCBvbGRQYXJhbGxlbFJvdXRlcyA9IG9sZENhY2hlTm9kZS5wYXJhbGxlbFJvdXRlc1xuXG4gIC8vIENsb25lIHRoZSBjdXJyZW50IHNldCBvZiBzZWdtZW50IGNoaWxkcmVuLCBldmVuIGlmIHRoZXkgYXJlbid0IGFjdGl2ZSBpblxuICAvLyB0aGUgbmV3IHRyZWUuXG4gIC8vIFRPRE86IFdlIGN1cnJlbnRseSByZXRhaW4gYWxsIHRoZSBpbmFjdGl2ZSBzZWdtZW50cyBpbmRlZmluaXRlbHksIHVudGlsXG4gIC8vIHRoZXJlJ3MgYW4gZXhwbGljaXQgcmVmcmVzaCwgb3IgYSBwYXJlbnQgbGF5b3V0IGlzIGxhemlseSByZWZyZXNoZWQuIFdlXG4gIC8vIHJlbHkgb24gdGhpcyBmb3IgcG9wc3RhdGUgbmF2aWdhdGlvbnMsIHdoaWNoIHVwZGF0ZSB0aGUgUm91dGVyIFN0YXRlIFRyZWVcbiAgLy8gYnV0IGRvIG5vdCBlYWdlcmx5IHBlcmZvcm0gYSBkYXRhIGZldGNoLCBiZWNhdXNlIHRoZXkgZXhwZWN0IHRoZSBzZWdtZW50XG4gIC8vIGRhdGEgdG8gYWxyZWFkeSBiZSBpbiB0aGUgQ2FjaGUgTm9kZSB0cmVlLiBGb3IgaGlnaGx5IHN0YXRpYyBzaXRlcyB0aGF0XG4gIC8vIGFyZSBtb3N0bHkgcmVhZC1vbmx5LCB0aGlzIG1heSBoYXBwZW4gb25seSByYXJlbHksIGNhdXNpbmcgbWVtb3J5IHRvXG4gIC8vIGxlYWsuIFdlIHNob3VsZCBmaWd1cmUgb3V0IGEgYmV0dGVyIG1vZGVsIGZvciB0aGUgbGlmZXRpbWUgb2YgaW5hY3RpdmVcbiAgLy8gc2VnbWVudHMsIHNvIHdlIGNhbiBtYWludGFpbiBpbnN0YW50IGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucyB3aXRob3V0XG4gIC8vIGxlYWtpbmcgbWVtb3J5IGluZGVmaW5pdGVseS5cbiAgY29uc3QgcHJlZmV0Y2hQYXJhbGxlbFJvdXRlcyA9IG5ldyBNYXAob2xkUGFyYWxsZWxSb3V0ZXMpXG5cbiAgLy8gQXMgd2UgZGlmZiB0aGUgdHJlZXMsIHdlIG1heSBzb21ldGltZXMgbW9kaWZ5IChjb3B5LW9uLXdyaXRlLCBub3QgbXV0YXRlKVxuICAvLyB0aGUgUm91dGUgVHJlZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGUgc2VydmVyIOKAlCBmb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2VcbiAgLy8gb2YgZGVmYXVsdCBwYXJhbGxlbCByb3V0ZXMsIHdlIHByZXNlcnZlIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlZ21lbnQuIFRvXG4gIC8vIGF2b2lkIG11dGF0aW5nIHRoZSBvcmlnaW5hbCB0cmVlLCB3ZSBjbG9uZSB0aGUgcm91dGVyIHN0YXRlIGNoaWxkcmVuIGFsb25nXG4gIC8vIHRoZSByZXR1cm4gcGF0aC5cbiAgbGV0IHBhdGNoZWRSb3V0ZXJTdGF0ZUNoaWxkcmVuOiB7XG4gICAgW3BhcmFsbGVsUm91dGVLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlXG4gIH0gPSB7fVxuICBsZXQgdGFza0NoaWxkcmVuID0gbnVsbFxuXG4gIC8vIE1vc3QgbmF2aWdhdGlvbnMgcmVxdWlyZSBhIHJlcXVlc3QgdG8gZmV0Y2ggYWRkaXRpb25hbCBkYXRhIGZyb20gdGhlXG4gIC8vIHNlcnZlciwgZWl0aGVyIGJlY2F1c2UgdGhlIGRhdGEgd2FzIG5vdCBhbHJlYWR5IHByZWZldGNoZWQsIG9yIGJlY2F1c2UgdGhlXG4gIC8vIHRhcmdldCByb3V0ZSBjb250YWlucyBkeW5hbWljIGRhdGEgdGhhdCBjYW5ub3QgYmUgcHJlZmV0Y2hlZC5cbiAgLy9cbiAgLy8gSG93ZXZlciwgaWYgdGhlIHRhcmdldCByb3V0ZSBpcyBmdWxseSBzdGF0aWMsIGFuZCBpdCdzIGFscmVhZHkgY29tcGxldGVseVxuICAvLyBsb2FkZWQgaW50byB0aGUgc2VnbWVudCBjYWNoZSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUgc2VydmVyIHJlcXVlc3QuXG4gIC8vXG4gIC8vIFRoaXMgc3RhcnRzIG9mZiBhcyBgZmFsc2VgLCBhbmQgaXMgc2V0IHRvIGB0cnVlYCBpZiBhbnkgb2YgdGhlIGNoaWxkXG4gIC8vIHJvdXRlcyByZXF1aXJlcyBhIGR5bmFtaWMgcmVxdWVzdC5cbiAgbGV0IG5lZWRzRHluYW1pY1JlcXVlc3QgPSBmYWxzZVxuICAvLyBBcyB3ZSB0cmF2ZXJzZSB0aGUgY2hpbGRyZW4sIHdlJ2xsIGNvbnN0cnVjdCBhIEZsaWdodFJvdXRlclN0YXRlIHRoYXQgY2FuXG4gIC8vIGJlIHNlbnQgdG8gdGhlIHNlcnZlciB0byByZXF1ZXN0IHRoZSBkeW5hbWljIGRhdGEuIElmIGl0IHR1cm5zIG91dCB0aGF0XG4gIC8vIG5vdGhpbmcgaW4gdGhlIHN1YnRyZWUgaXMgZHluYW1pYyAoaS5lLiBuZWVkc0R5bmFtaWNSZXF1ZXN0IGlzIGZhbHNlIGF0IHRoZVxuICAvLyBlbmQpLCB0aGVuIHRoaXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gIC8vIFRPRE86IFdlIGNhbiBwcm9iYWJseSBvcHRpbWl6ZSB0aGUgZm9ybWF0IG9mIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgdG8gb25seVxuICAvLyBpbmNsdWRlIHBhdGhzIHRoYXQgYXJlIGR5bmFtaWMuIEluc3RlYWQgb2YgcmV1c2luZyB0aGVcbiAgLy8gRmxpZ2h0Um91dGVyU3RhdGUgdHlwZS5cbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuOiB7XG4gICAgW3BhcmFsbGVsUm91dGVLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlXG4gIH0gPSB7fVxuXG4gIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gbmV3Um91dGVyU3RhdGVDaGlsZHJlbikge1xuICAgIGNvbnN0IG5ld1JvdXRlclN0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlID1cbiAgICAgIG5ld1JvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBvbGRSb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHZvaWQgPVxuICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IG9sZFNlZ21lbnRNYXBDaGlsZCA9IG9sZFBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgIGNvbnN0IHByZWZldGNoRGF0YUNoaWxkOiBDYWNoZU5vZGVTZWVkRGF0YSB8IHZvaWQgfCBudWxsID1cbiAgICAgIHByZWZldGNoRGF0YUNoaWxkcmVuICE9PSBudWxsXG4gICAgICAgID8gcHJlZmV0Y2hEYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgICAgOiBudWxsXG5cbiAgICBjb25zdCBuZXdTZWdtZW50Q2hpbGQgPSBuZXdSb3V0ZXJTdGF0ZUNoaWxkWzBdXG4gICAgY29uc3QgbmV3U2VnbWVudFBhdGhDaGlsZCA9IHNlZ21lbnRQYXRoLmNvbmNhdChbXG4gICAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgICAgbmV3U2VnbWVudENoaWxkLFxuICAgIF0pXG4gICAgY29uc3QgbmV3U2VnbWVudEtleUNoaWxkID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkobmV3U2VnbWVudENoaWxkKVxuXG4gICAgY29uc3Qgb2xkU2VnbWVudENoaWxkID1cbiAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGQgIT09IHVuZGVmaW5lZCA/IG9sZFJvdXRlclN0YXRlQ2hpbGRbMF0gOiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG9sZENhY2hlTm9kZUNoaWxkID1cbiAgICAgIG9sZFNlZ21lbnRNYXBDaGlsZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2xkU2VnbWVudE1hcENoaWxkLmdldChuZXdTZWdtZW50S2V5Q2hpbGQpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBsZXQgdGFza0NoaWxkOiBUYXNrIHwgbnVsbFxuICAgIGlmIChuZXdTZWdtZW50Q2hpbGQgPT09IERFRkFVTFRfU0VHTUVOVF9LRVkpIHtcbiAgICAgIC8vIFRoaXMgaXMgYW5vdGhlciBraW5kIG9mIGxlYWYgc2VnbWVudCDigJQgYSBkZWZhdWx0IHJvdXRlLlxuICAgICAgLy9cbiAgICAgIC8vIERlZmF1bHQgcm91dGVzIGhhdmUgc3BlY2lhbCBiZWhhdmlvci4gV2hlbiB0aGVyZSdzIG5vIG1hdGNoaW5nIHNlZ21lbnRcbiAgICAgIC8vIGZvciBhIHBhcmFsbGVsIHJvdXRlLCBOZXh0LmpzIHByZXNlcnZlcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBzZWdtZW50XG4gICAgICAvLyBkdXJpbmcgYSBjbGllbnQgbmF2aWdhdGlvbiDigJQgYnV0IG5vdCBmb3IgaW5pdGlhbCByZW5kZXIuIFRoZSBzZXJ2ZXJcbiAgICAgIC8vIGxlYXZlcyBpdCB0byB0aGUgY2xpZW50IHRvIGFjY291bnQgZm9yIHRoaXMuIFNvIHdlIG5lZWQgdG8gaGFuZGxlXG4gICAgICAvLyBpdCBoZXJlLlxuICAgICAgaWYgKG9sZFJvdXRlclN0YXRlQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBSZXVzZSB0aGUgZXhpc3RpbmcgUm91dGVyIFN0YXRlIGZvciB0aGlzIHNlZ21lbnQuIFdlIHNwYXduIGEgXCJ0YXNrXCJcbiAgICAgICAgLy8ganVzdCB0byBrZWVwIHRyYWNrIG9mIHRoZSB1cGRhdGVkIHJvdXRlciBzdGF0ZTsgdW5saWtlIG1vc3QsIGl0J3NcbiAgICAgICAgLy8gYWxyZWFkeSBmdWxmaWxsZWQgYW5kIHdvbid0IGJlIGFmZmVjdGVkIGJ5IHRoZSBkeW5hbWljIHJlc3BvbnNlLlxuICAgICAgICB0YXNrQ2hpbGQgPSBzcGF3blJldXNlZFRhc2sob2xkUm91dGVyU3RhdGVDaGlsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZXJlJ3Mgbm8gY3VycmVudGx5IGFjdGl2ZSBzZWdtZW50LiBTd2l0Y2ggdG8gdGhlIFwiY3JlYXRlXCIgcGF0aC5cbiAgICAgICAgdGFza0NoaWxkID0gYmVnaW5SZW5kZXJpbmdOZXdSb3V0ZVRyZWUoXG4gICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgICBuZXdSb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgICAgICAgIHByZWZldGNoRGF0YUNoaWxkICE9PSB1bmRlZmluZWQgPyBwcmVmZXRjaERhdGFDaGlsZCA6IG51bGwsXG4gICAgICAgICAgcHJlZmV0Y2hIZWFkLFxuICAgICAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgICAgICBuZXdTZWdtZW50UGF0aENoaWxkLFxuICAgICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uICYmXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgcGFnZSBzZWdtZW50LlxuICAgICAgLy8gVE9ETzogV2UncmUgbm90IGNvbnNpc3RlbnQgYWJvdXQgaG93IHdlIGRvIHRoaXMgY2hlY2suIFNvbWUgcGxhY2VzXG4gICAgICAvLyBjaGVjayBpZiB0aGUgc2VnbWVudCBzdGFydHMgd2l0aCBQQUdFX1NFR01FTlRfS0VZLCBidXQgbW9zdCBzZWVtIHRvXG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhbnkgYW55IGNoaWxkcmVuLCB3aGljaCBpcyB3aHkgSSdtIGRvaW5nIGl0IGhlcmUuIFdlXG4gICAgICAvLyBzaG91bGQgcHJvYmFibHkgZW5jb2RlIGFuIGVtcHR5IGNoaWxkcmVuIHNldCBhcyBgbnVsbGAgdGhvdWdoLiBFaXRoZXJcbiAgICAgIC8vIHdheSwgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgdGhlIGNoZWNrcyB0byBiZSBjb25zaXN0ZW50LlxuICAgICAgT2JqZWN0LmtleXMobmV3Um91dGVyU3RhdGVDaGlsZFsxXSkubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICAvLyBXZSBzcGVjaWFsIGNhc2UgbmF2aWdhdGlvbnMgdG8gdGhlIGV4YWN0IHNhbWUgVVJMIGFzIHRoZSBjdXJyZW50XG4gICAgICAvLyBsb2NhdGlvbi4gSXQncyBhIGNvbW1vbiBVSSBwYXR0ZXJuIGZvciBhcHBzIHRvIHJlZnJlc2ggd2hlbiB5b3UgY2xpY2sgYVxuICAgICAgLy8gbGluayB0byB0aGUgY3VycmVudCBwYWdlLiBTbyB3aGVuIHRoaXMgaGFwcGVucywgd2UgcmVmcmVzaCB0aGUgZHluYW1pY1xuICAgICAgLy8gZGF0YSBpbiB0aGUgcGFnZSBzZWdtZW50cy5cbiAgICAgIC8vXG4gICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhcHBseSBpZiB0aGUgYW55IHBhcnQgb2YgdGhlIGhhc2ggb3Igc2VhcmNoXG4gICAgICAvLyBxdWVyeSBoYXMgY2hhbmdlZC4gVGhpcyBtaWdodCBmZWVsIGEgYml0IHdlaXJkIGJ1dCBpdCBtYWtlcyBtb3JlIHNlbnNlXG4gICAgICAvLyB3aGVuIHlvdSBjb25zaWRlciB0aGF0IHRoZSB3YXkgdG8gdHJpZ2dlciB0aGlzIGJlaGF2aW9yIGlzIHRvIGNsaWNrXG4gICAgICAvLyB0aGUgc2FtZSBsaW5rIG11bHRpcGxlIHRpbWVzLlxuICAgICAgLy9cbiAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBwcm9iYWJseSByZWZyZXNoIHRoZSAqZW50aXJlKiByb3V0ZSB3aGVuIHRoaXMgY2FzZVxuICAgICAgLy8gb2NjdXJzLCBub3QganVzdCB0aGUgcGFnZSBzZWdtZW50cy4gRXNzZW50aWFsbHkgdHJlYXRpbmcgaXQgdGhlIHNhbWUgYXNcbiAgICAgIC8vIGEgcmVmcmVzaCgpIHRyaWdnZXJlZCBieSBhbiBhY3Rpb24sIHdoaWNoIGlzIHRoZSBtb3JlIGV4cGxpY2l0IHdheSBvZlxuICAgICAgLy8gbW9kZWxpbmcgdGhlIFVJIHBhdHRlcm4gZGVzY3JpYmVkIGFib3ZlLlxuICAgICAgLy9cbiAgICAgIC8vIEFsc28gbm90ZSB0aGF0IHRoaXMgb25seSByZWZyZXNoZXMgdGhlIGR5bmFtaWMgZGF0YSwgbm90IHN0YXRpYy9cbiAgICAgIC8vIGNhY2hlZCBkYXRhLiBJZiB0aGUgcGFnZSBzZWdtZW50IGlzIGZ1bGx5IHN0YXRpYyBhbmQgcHJlZmV0Y2hlZCwgdGhlXG4gICAgICAvLyByZXF1ZXN0IGlzIHNraXBwZWQuIChUaGlzIGlzIGFsc28gaG93IHJlZnJlc2goKSB3b3Jrcy4pXG4gICAgICB0YXNrQ2hpbGQgPSBiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZShcbiAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgIG5ld1JvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICBkaWRGaW5kUm9vdExheW91dCxcbiAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGQgIT09IHVuZGVmaW5lZCA/IHByZWZldGNoRGF0YUNoaWxkIDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkLFxuICAgICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICAgIG5ld1NlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBvbGRSb3V0ZXJTdGF0ZUNoaWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9sZFNlZ21lbnRDaGlsZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBtYXRjaFNlZ21lbnQobmV3U2VnbWVudENoaWxkLCBvbGRTZWdtZW50Q2hpbGQpXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG9sZENhY2hlTm9kZUNoaWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhpcyBzZWdtZW50IGV4aXN0cyBpbiBib3RoIHRoZSBvbGQgYW5kIG5ldyB0cmVlcy4gUmVjdXJzaXZlbHkgdXBkYXRlXG4gICAgICAgIC8vIHRoZSBjaGlsZHJlbi5cbiAgICAgICAgdGFza0NoaWxkID0gdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgICAgbmV3Um91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgICBkaWRGaW5kUm9vdExheW91dCxcbiAgICAgICAgICBwcmVmZXRjaERhdGFDaGlsZCxcbiAgICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgICAgIGlzU2FtZVBhZ2VOYXZpZ2F0aW9uLFxuICAgICAgICAgIG5ld1NlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZXhpc3RpbmcgQ2FjaGUgTm9kZSBmb3IgdGhpcyBzZWdtZW50LiBTd2l0Y2ggdG8gdGhlXG4gICAgICAgIC8vIFwiY3JlYXRlXCIgcGF0aC5cbiAgICAgICAgdGFza0NoaWxkID0gYmVnaW5SZW5kZXJpbmdOZXdSb3V0ZVRyZWUoXG4gICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgICBuZXdSb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgICAgICAgIHByZWZldGNoRGF0YUNoaWxkICE9PSB1bmRlZmluZWQgPyBwcmVmZXRjaERhdGFDaGlsZCA6IG51bGwsXG4gICAgICAgICAgcHJlZmV0Y2hIZWFkLFxuICAgICAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgICAgICBuZXdTZWdtZW50UGF0aENoaWxkLFxuICAgICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBuZXcgdHJlZS4gU3dpdGNoIHRvIHRoZSBcImNyZWF0ZVwiIHBhdGguXG4gICAgICB0YXNrQ2hpbGQgPSBiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZShcbiAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgIG5ld1JvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICBkaWRGaW5kUm9vdExheW91dCxcbiAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGQgIT09IHVuZGVmaW5lZCA/IHByZWZldGNoRGF0YUNoaWxkIDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkLFxuICAgICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICAgIG5ld1NlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh0YXNrQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IHByb3BhZ2F0ZSB1cCB0aGUgY2hpbGQgdGFza3MuXG5cbiAgICAgIGlmICh0YXNrQ2hpbGQucm91dGUgPT09IG51bGwpIHtcbiAgICAgICAgLy8gT25lIG9mIHRoZSBjaGlsZCB0YXNrcyBkaXNjb3ZlcmVkIGEgY2hhbmdlIHRvIHRoZSByb290IGxheW91dC5cbiAgICAgICAgLy8gSW1tZWRpYXRlbHkgdW53aW5kIGZyb20gdGhpcyByZWN1cnNpdmUgdHJhdmVyc2FsLlxuICAgICAgICByZXR1cm4gTVBBX05BVklHQVRJT05fVEFTS1xuICAgICAgfVxuXG4gICAgICBpZiAodGFza0NoaWxkcmVuID09PSBudWxsKSB7XG4gICAgICAgIHRhc2tDaGlsZHJlbiA9IG5ldyBNYXAoKVxuICAgICAgfVxuICAgICAgdGFza0NoaWxkcmVuLnNldChwYXJhbGxlbFJvdXRlS2V5LCB0YXNrQ2hpbGQpXG4gICAgICBjb25zdCBuZXdDYWNoZU5vZGVDaGlsZCA9IHRhc2tDaGlsZC5ub2RlXG4gICAgICBpZiAobmV3Q2FjaGVOb2RlQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmV3U2VnbWVudE1hcENoaWxkOiBDaGlsZFNlZ21lbnRNYXAgPSBuZXcgTWFwKG9sZFNlZ21lbnRNYXBDaGlsZClcbiAgICAgICAgbmV3U2VnbWVudE1hcENoaWxkLnNldChuZXdTZWdtZW50S2V5Q2hpbGQsIG5ld0NhY2hlTm9kZUNoaWxkKVxuICAgICAgICBwcmVmZXRjaFBhcmFsbGVsUm91dGVzLnNldChwYXJhbGxlbFJvdXRlS2V5LCBuZXdTZWdtZW50TWFwQ2hpbGQpXG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjaGlsZCB0cmVlJ3Mgcm91dGUgc3RhdGUgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBwcmVmZXRjaGVkXG4gICAgICAvLyByb3V0ZSBzZW50IGJ5IHRoZSBzZXJ2ZXIuIFdlIG5lZWQgdG8gY2xvbmUgaXQgYXMgd2UgdHJhdmVyc2UgYmFjayB1cFxuICAgICAgLy8gdGhlIHRyZWUuXG4gICAgICBjb25zdCB0YXNrQ2hpbGRSb3V0ZSA9IHRhc2tDaGlsZC5yb3V0ZVxuICAgICAgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSB0YXNrQ2hpbGRSb3V0ZVxuXG4gICAgICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCA9IHRhc2tDaGlsZC5keW5hbWljUmVxdWVzdFRyZWVcbiAgICAgIGlmIChkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgICAvLyBTb21ldGhpbmcgaW4gdGhlIGNoaWxkIHRyZWUgaXMgZHluYW1pYy5cbiAgICAgICAgbmVlZHNEeW5hbWljUmVxdWVzdCA9IHRydWVcbiAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSB0YXNrQ2hpbGRSb3V0ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGUgY2hpbGQgZGlkbid0IGNoYW5nZS4gV2UgY2FuIHVzZSB0aGUgcHJlZmV0Y2hlZCByb3V0ZXIgc3RhdGUuXG4gICAgICBwYXRjaGVkUm91dGVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IG5ld1JvdXRlclN0YXRlQ2hpbGRcbiAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gbmV3Um91dGVyU3RhdGVDaGlsZFxuICAgIH1cbiAgfVxuXG4gIGlmICh0YXNrQ2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICAvLyBObyBuZXcgdGFza3Mgd2VyZSBzcGF3bmVkLlxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBuZXdDYWNoZU5vZGU6IFJlYWR5Q2FjaGVOb2RlID0ge1xuICAgIGxhenlEYXRhOiBudWxsLFxuICAgIHJzYzogb2xkQ2FjaGVOb2RlLnJzYyxcbiAgICAvLyBXZSBpbnRlbnRpb25hbGx5IGFyZW4ndCB1cGRhdGluZyB0aGUgcHJlZmV0Y2hSc2MgZmllbGQsIHNpbmNlIHRoaXMgbm9kZVxuICAgIC8vIGlzIGFscmVhZHkgcGFydCBvZiB0aGUgY3VycmVudCB0cmVlLCBiZWNhdXNlIGl0IHdvdWxkIGJlIHdlaXJkIGZvclxuICAgIC8vIHByZWZldGNoIGRhdGEgdG8gYmUgbmV3ZXIgdGhhbiB0aGUgZmluYWwgZGF0YS4gSXQgcHJvYmFibHkgd29uJ3QgZXZlciBiZVxuICAgIC8vIG9ic2VydmFibGUgYW55d2F5LCBidXQgaXQgY291bGQgaGFwcGVuIGlmIHRoZSBzZWdtZW50IGlzIHVubW91bnRlZCB0aGVuXG4gICAgLy8gbW91bnRlZCBhZ2FpbiwgYmVjYXVzZSBMYXlvdXRSb3V0ZXIgd2lsbCBtb21lbnRhcmlseSBzd2l0Y2ggdG8gcmVuZGVyaW5nXG4gICAgLy8gcHJlZmV0Y2hSc2MsIHZpYSB1c2VEZWZlcnJlZFZhbHVlLlxuICAgIHByZWZldGNoUnNjOiBvbGRDYWNoZU5vZGUucHJlZmV0Y2hSc2MsXG4gICAgaGVhZDogb2xkQ2FjaGVOb2RlLmhlYWQsXG4gICAgcHJlZmV0Y2hIZWFkOiBvbGRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkLFxuICAgIGxvYWRpbmc6IG9sZENhY2hlTm9kZS5sb2FkaW5nLFxuXG4gICAgLy8gRXZlcnl0aGluZyBpcyBjbG9uZWQgZXhjZXB0IGZvciB0aGUgY2hpbGRyZW4sIHdoaWNoIHdlIGNvbXB1dGVkIGFib3ZlLlxuICAgIHBhcmFsbGVsUm91dGVzOiBwcmVmZXRjaFBhcmFsbGVsUm91dGVzLFxuXG4gICAgbmF2aWdhdGVkQXQsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIFJldHVybiBhIGNsb25lZCBjb3B5IG9mIHRoZSByb3V0ZXIgc3RhdGUgd2l0aCB1cGRhdGVkIGNoaWxkcmVuLlxuICAgIHJvdXRlOiBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKFxuICAgICAgbmV3Um91dGVyU3RhdGUsXG4gICAgICBwYXRjaGVkUm91dGVyU3RhdGVDaGlsZHJlblxuICAgICksXG4gICAgbm9kZTogbmV3Q2FjaGVOb2RlLFxuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZTogbmVlZHNEeW5hbWljUmVxdWVzdFxuICAgICAgPyBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKFxuICAgICAgICAgIG5ld1JvdXRlclN0YXRlLFxuICAgICAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuXG4gICAgICAgIClcbiAgICAgIDogbnVsbCxcbiAgICBjaGlsZHJlbjogdGFza0NoaWxkcmVuLFxuICB9XG59XG5cbmZ1bmN0aW9uIGJlZ2luUmVuZGVyaW5nTmV3Um91dGVUcmVlKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICBvbGRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUgfCB2b2lkLFxuICBuZXdSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGV4aXN0aW5nQ2FjaGVOb2RlOiBDYWNoZU5vZGUgfCB2b2lkLFxuICBkaWRGaW5kUm9vdExheW91dDogYm9vbGVhbixcbiAgcHJlZmV0Y2hEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBpc1ByZWZldGNoSGVhZFBhcnRpYWw6IGJvb2xlYW4sXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0OiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD5cbik6IFRhc2sge1xuICBpZiAoIWRpZEZpbmRSb290TGF5b3V0KSB7XG4gICAgLy8gVGhlIHJvdXRlIHRyZWUgY2hhbmdlZCBiZWZvcmUgd2UgcmVhY2hlZCBhIGxheW91dC4gKFRoZSBoaWdoZXN0LWxldmVsXG4gICAgLy8gbGF5b3V0IGluIGEgcm91dGUgdHJlZSBpcyByZWZlcnJlZCB0byBhcyB0aGUgXCJyb290XCIgbGF5b3V0LikgVGhpcyBjb3VsZFxuICAgIC8vIG1lYW4gdGhhdCB3ZSdyZSBuYXZpZ2F0aW5nIGJldHdlZW4gdHdvIGRpZmZlcmVudCByb290IGxheW91dHMuIFdoZW4gdGhpc1xuICAgIC8vIGhhcHBlbnMsIHdlIHBlcmZvcm0gYSBmdWxsLXBhZ2UgKE1QQS1zdHlsZSkgbmF2aWdhdGlvbi5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHRoZSBhbGdvcml0aG0gZm9yIGRlY2lkaW5nIHdoZXJlIHRvIHN0YXJ0IHJlbmRlcmluZyBhIHJvdXRlXG4gICAgLy8gKGkuZS4gdGhlIG9uZSBwZXJmb3JtZWQgaW4gb3JkZXIgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbikgaXMgc3RyaWN0ZXJcbiAgICAvLyB0aGFuIHRoZSBvbmUgdXNlZCB0byBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIHJvb3QgbGF5b3V0LiBTbyBqdXN0IGJlY2F1c2VcbiAgICAvLyB3ZSdyZSByZS1yZW5kZXJpbmcgYSBzZWdtZW50IG91dHNpZGUgb2YgdGhlIHJvb3QgbGF5b3V0IGRvZXMgbm90IG1lYW4gd2VcbiAgICAvLyBzaG91bGQgdHJpZ2dlciBhIGZ1bGwtcGFnZSBuYXZpZ2F0aW9uLlxuICAgIC8vXG4gICAgLy8gU3BlY2lmaWNhbGx5LCB3ZSBoYW5kbGUgZHluYW1pYyBwYXJhbWV0ZXJzIGRpZmZlcmVudGx5OiB0d28gc2VnbWVudHMgYXJlXG4gICAgLy8gY29uc2lkZXJlZCB0aGUgc2FtZSBldmVuIGlmIHRoZWlyIHBhcmFtZXRlciB2YWx1ZXMgYXJlIGRpZmZlcmVudC5cbiAgICAvL1xuICAgIC8vIFJlZmVyIHRvIGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCBmb3IgZGV0YWlscy5cbiAgICAvL1xuICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IGhhdmUgdG8gcGVyZm9ybSB0aGlzIGV4dHJhIHRyYXZlcnNhbCBpZiB3ZSBkaWRuJ3RcbiAgICAvLyBhbHJlYWR5IGRpc2NvdmVyIGEgcm9vdCBsYXlvdXQgaW4gdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdCBpcyB1bmNoYW5nZWQuXG4gICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIGJyYW5jaCBpcyBza2lwcGVkIGNvbXBsZXRlbHkuXG4gICAgaWYgKFxuICAgICAgb2xkUm91dGVyU3RhdGUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KG9sZFJvdXRlclN0YXRlLCBuZXdSb3V0ZXJTdGF0ZSlcbiAgICApIHtcbiAgICAgIC8vIFRoZSByb290IGxheW91dCBjaGFuZ2VkLiBQZXJmb3JtIGEgZnVsbC1wYWdlIG5hdmlnYXRpb24uXG4gICAgICByZXR1cm4gTVBBX05BVklHQVRJT05fVEFTS1xuICAgIH1cbiAgfVxuICByZXR1cm4gY3JlYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgIG5hdmlnYXRlZEF0LFxuICAgIG5ld1JvdXRlclN0YXRlLFxuICAgIGV4aXN0aW5nQ2FjaGVOb2RlLFxuICAgIHByZWZldGNoRGF0YSxcbiAgICBwb3NzaWJseVBhcnRpYWxQcmVmZXRjaEhlYWQsXG4gICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgIHNlZ21lbnRQYXRoLFxuICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgcm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBleGlzdGluZ0NhY2hlTm9kZTogQ2FjaGVOb2RlIHwgdm9pZCxcbiAgcHJlZmV0Y2hEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBpc1ByZWZldGNoSGVhZFBhcnRpYWw6IGJvb2xlYW4sXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0OiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD5cbik6IFNQQU5hdmlnYXRpb25UYXNrIHtcbiAgLy8gU2FtZSB0cmF2ZXJzYWwgYXMgdXBkYXRlQ2FjaGVOb2RlTmF2aWdhdGlvbiwgYnV0IHdlIHN3aXRjaCB0byB0aGlzIHBhdGhcbiAgLy8gb25jZSB3ZSByZWFjaCB0aGUgcGFydCBvZiB0aGUgdHJlZSB0aGF0IHdhcyBub3QgaW4gdGhlIHByZXZpb3VzIHJvdXRlLiBXZVxuICAvLyBkb24ndCBuZWVkIHRvIGRpZmYgYWdhaW5zdCB0aGUgb2xkIHRyZWUsIHdlIGp1c3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25lLlxuXG4gIC8vIFRoZSBoZWFkIGlzIGFzc2lnbmVkIHRvIGV2ZXJ5IGxlYWYgc2VnbWVudCBkZWxpdmVyZWQgYnkgdGhlIHNlcnZlci4gQmFzZWRcbiAgLy8gb24gY29ycmVzcG9uZGluZyBsb2dpYyBpbiBmaWxsLWxhenktaXRlbXMtdGlsbC1sZWFmLXdpdGgtaGVhZC50c1xuICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkcmVuID0gcm91dGVyU3RhdGVbMV1cbiAgY29uc3QgaXNMZWFmU2VnbWVudCA9IE9iamVjdC5rZXlzKHJvdXRlclN0YXRlQ2hpbGRyZW4pLmxlbmd0aCA9PT0gMFxuXG4gIC8vIEV2ZW4gd2UncmUgcmVuZGVyaW5nIGluc2lkZSB0aGUgXCJuZXdcIiBwYXJ0IG9mIHRoZSB0YXJnZXQgdHJlZSwgd2UgbWF5IGhhdmVcbiAgLy8gYSBsb2NhbGx5IGNhY2hlZCBzZWdtZW50IHRoYXQgd2UgY2FuIHJldXNlLiBUaGlzIG1heSBjb21lIGZyb20gZWl0aGVyIDEpXG4gIC8vIHRoZSBDYWNoZU5vZGUgdHJlZSwgd2hpY2ggbGl2ZXMgaW4gUmVhY3Qgc3RhdGUgYW5kIGlzIHBvcHVsYXRlZCBieSBwcmV2aW91c1xuICAvLyBuYXZpZ2F0aW9uczsgb3IgMikgdGhlIHByZWZldGNoIGNhY2hlLCB3aGljaCBpcyBhIHNlcGFyYXRlIGNhY2hlIHRoYXQgaXNcbiAgLy8gcG9wdWxhdGVkIGJ5IHByZWZldGNoZXMuXG4gIGxldCByc2M6IFJlYWN0LlJlYWN0Tm9kZVxuICBsZXQgbG9hZGluZzogTG9hZGluZ01vZHVsZURhdGEgfCBQcm9taXNlPExvYWRpbmdNb2R1bGVEYXRhPlxuICBsZXQgaGVhZDogSGVhZERhdGEgfCBudWxsXG4gIGxldCBjYWNoZU5vZGVOYXZpZ2F0ZWRBdDogbnVtYmVyXG4gIGlmIChcbiAgICBleGlzdGluZ0NhY2hlTm9kZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgLy8gRFlOQU1JQ19TVEFMRVRJTUVfTVMgZGVmYXVsdHMgdG8gMCwgYnV0IGl0IGNhbiBiZSBpbmNyZWFzZWQgdXNpbmdcbiAgICAvLyB0aGUgZXhwZXJpbWVudGFsLnN0YWxlVGltZXMuZHluYW1pYyBjb25maWcuIFdoZW4gc2V0LCB3ZSdsbCBhdm9pZFxuICAgIC8vIHJlZmV0Y2hpbmcgZHluYW1pYyBkYXRhIGlmIGl0IHdhcyBmZXRjaGVkIHdpdGhpbiB0aGUgZ2l2ZW4gdGhyZXNob2xkLlxuICAgIGV4aXN0aW5nQ2FjaGVOb2RlLm5hdmlnYXRlZEF0ICsgRFlOQU1JQ19TVEFMRVRJTUVfTVMgPiBuYXZpZ2F0ZWRBdFxuICApIHtcbiAgICAvLyBXZSBoYXZlIGFuIGV4aXN0aW5nIENhY2hlTm9kZSBmb3IgdGhpcyBzZWdtZW50LCBhbmQgaXQncyBub3Qgc3RhbGUuIFdlXG4gICAgLy8gc2hvdWxkIHJldXNlIGl0IHJhdGhlciB0aGFuIHJlcXVlc3QgYSBuZXcgb25lLlxuICAgIHJzYyA9IGV4aXN0aW5nQ2FjaGVOb2RlLnJzY1xuICAgIGxvYWRpbmcgPSBleGlzdGluZ0NhY2hlTm9kZS5sb2FkaW5nXG4gICAgaGVhZCA9IGV4aXN0aW5nQ2FjaGVOb2RlLmhlYWRcblxuICAgIC8vIERvbid0IHVwZGF0ZSB0aGUgbmF2aWdhdGVkQXQgdGltZXN0YW1wLCBzaW5jZSB3ZSdyZSByZXVzaW5nIHN0YWxlIGRhdGEuXG4gICAgY2FjaGVOb2RlTmF2aWdhdGVkQXQgPSBleGlzdGluZ0NhY2hlTm9kZS5uYXZpZ2F0ZWRBdFxuICB9IGVsc2UgaWYgKHByZWZldGNoRGF0YSAhPT0gbnVsbCkge1xuICAgIC8vIFRoZXJlJ3Mgbm8gZXhpc3RpbmcgQ2FjaGVOb2RlIGZvciB0aGlzIHNlZ21lbnQsIGJ1dCB3ZSBkbyBoYXZlIHByZWZldGNoXG4gICAgLy8gZGF0YS4gSWYgdGhlIHByZWZldGNoIGRhdGEgaXMgZnVsbHkgc3RhdGljIChpLmUuIGRvZXMgbm90IGNvbnRhaW4gYW55XG4gICAgLy8gZHluYW1pYyBob2xlcyksIHdlIGRvbid0IG5lZWQgdG8gcmVxdWVzdCBpdCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgcnNjID0gcHJlZmV0Y2hEYXRhWzFdXG4gICAgbG9hZGluZyA9IHByZWZldGNoRGF0YVszXVxuICAgIGhlYWQgPSBpc0xlYWZTZWdtZW50ID8gcG9zc2libHlQYXJ0aWFsUHJlZmV0Y2hIZWFkIDogbnVsbFxuICAgIC8vIEV2ZW4gdGhvdWdoIHdlJ3JlIGFjY2Vzc2luZyB0aGUgZGF0YSBmcm9tIHRoZSBwcmVmZXRjaCBjYWNoZSwgdGhpcyBpc1xuICAgIC8vIGNvbmNlcHR1YWxseSBhIG5ldyBzZWdtZW50LCBub3QgYSByZXVzZWQgb25lLiBTbyB3ZSBzaG91bGQgdXBkYXRlIHRoZVxuICAgIC8vIG5hdmlnYXRlZEF0IHRpbWVzdGFtcC5cbiAgICBjYWNoZU5vZGVOYXZpZ2F0ZWRBdCA9IG5hdmlnYXRlZEF0XG4gICAgY29uc3QgaXNQcmVmZXRjaFJzY1BhcnRpYWwgPSBwcmVmZXRjaERhdGFbNF1cbiAgICBpZiAoXG4gICAgICAvLyBDaGVjayBpZiB0aGUgc2VnbWVudCBkYXRhIGlzIHBhcnRpYWxcbiAgICAgIGlzUHJlZmV0Y2hSc2NQYXJ0aWFsIHx8XG4gICAgICAvLyBDaGVjayBpZiB0aGUgaGVhZCBpcyBwYXJ0aWFsIChvbmx5IHJlbGV2YW50IGlmIHRoaXMgaXMgYSBsZWFmIHNlZ21lbnQpXG4gICAgICAoaXNQcmVmZXRjaEhlYWRQYXJ0aWFsICYmIGlzTGVhZlNlZ21lbnQpXG4gICAgKSB7XG4gICAgICAvLyBXZSBvbmx5IGhhdmUgcGFydGlhbCBkYXRhIGZyb20gdGhpcyBzZWdtZW50LiBMaWtlIG1pc3Npbmcgc2VnbWVudHMsIHdlXG4gICAgICAvLyBtdXN0IHJlcXVlc3QgdGhlIGZ1bGwgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICByZXR1cm4gc3Bhd25QZW5kaW5nVGFzayhcbiAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgIHJvdXRlclN0YXRlLFxuICAgICAgICBwcmVmZXRjaERhdGEsXG4gICAgICAgIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZCxcbiAgICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgICBzZWdtZW50UGF0aCxcbiAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBwcmVmZXRjaCBkYXRhIGlzIGZ1bGx5IHN0YXRpYywgc28gd2UgY2FuIG9taXQgaXQgZnJvbSB0aGVcbiAgICAgIC8vIG5hdmlnYXRpb24gcmVxdWVzdC5cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlcmUncyBubyBwcmVmZXRjaCBmb3IgdGhpcyBzZWdtZW50LiBFdmVyeXRoaW5nIGZyb20gdGhpcyBwb2ludCB3aWxsIGJlXG4gICAgLy8gcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlciwgZXZlbiBpZiB0aGVyZSBhcmUgc3RhdGljIGNoaWxkcmVuIGJlbG93IGl0LlxuICAgIC8vIENyZWF0ZSBhIHRlcm1pbmFsIHRhc2sgbm9kZSB0aGF0IHdpbGwgbGF0ZXIgYmUgZnVsZmlsbGVkIGJ5XG4gICAgLy8gc2VydmVyIHJlc3BvbnNlLlxuICAgIHJldHVybiBzcGF3blBlbmRpbmdUYXNrKFxuICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICByb3V0ZXJTdGF0ZSxcbiAgICAgIG51bGwsXG4gICAgICBwb3NzaWJseVBhcnRpYWxQcmVmZXRjaEhlYWQsXG4gICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICBzZWdtZW50UGF0aCxcbiAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgIClcbiAgfVxuXG4gIC8vIFdlIGFscmVhZHkgaGF2ZSBhIGZ1bGwgc2VnbWVudCB3ZSBjYW4gcmVuZGVyLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlcXVlc3QgYVxuICAvLyBuZXcgb25lIGZyb20gdGhlIHNlcnZlci4gS2VlcCB0cmF2ZXJzaW5nIGRvd24gdGhlIHRyZWUgdW50aWwgd2UgcmVhY2hcbiAgLy8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYSBkeW5hbWljIHJlcXVlc3QuXG4gIGNvbnN0IHByZWZldGNoRGF0YUNoaWxkcmVuID0gcHJlZmV0Y2hEYXRhICE9PSBudWxsID8gcHJlZmV0Y2hEYXRhWzJdIDogbnVsbFxuICBjb25zdCB0YXNrQ2hpbGRyZW4gPSBuZXcgTWFwKClcbiAgY29uc3QgZXhpc3RpbmdDYWNoZU5vZGVDaGlsZHJlbiA9XG4gICAgZXhpc3RpbmdDYWNoZU5vZGUgIT09IHVuZGVmaW5lZCA/IGV4aXN0aW5nQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzIDogbnVsbFxuICBjb25zdCBjYWNoZU5vZGVDaGlsZHJlbiA9IG5ldyBNYXAoZXhpc3RpbmdDYWNoZU5vZGVDaGlsZHJlbilcbiAgbGV0IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuOiB7XG4gICAgW3BhcmFsbGVsUm91dGVLZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlXG4gIH0gPSB7fVxuICBsZXQgbmVlZHNEeW5hbWljUmVxdWVzdCA9IGZhbHNlXG4gIGlmIChpc0xlYWZTZWdtZW50KSB7XG4gICAgLy8gVGhlIHNlZ21lbnQgcGF0aCBvZiBldmVyeSBsZWFmIHNlZ21lbnQgKGkuZS4gcGFnZSkgaXMgY29sbGVjdGVkIGludG9cbiAgICAvLyBhIHJlc3VsdCBhcnJheS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBMYXlvdXRSb3V0ZXIgdG8gc2Nyb2xsIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gbmV3IHBhZ2VzIGFyZSB2aXNpYmxlIGFmdGVyIGEgbmF2aWdhdGlvbi5cbiAgICAvLyBUT0RPOiBXZSBzaG91bGQgdXNlIGEgc3RyaW5nIHRvIHJlcHJlc2VudCB0aGUgc2VnbWVudCBwYXRoIGluc3RlYWQgb2ZcbiAgICAvLyBhbiBhcnJheS4gV2UgYWxyZWFkeSB1c2UgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBwYXRoIHdoZW5cbiAgICAvLyBhY2Nlc3NpbmcgdGhlIFNlZ21lbnQgQ2FjaGUsIHNvIHdlIGNhbiB1c2UgdGhlIHNhbWUgb25lLlxuICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdC5wdXNoKHNlZ21lbnRQYXRoKVxuICB9IGVsc2Uge1xuICAgIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gcm91dGVyU3RhdGVDaGlsZHJlbikge1xuICAgICAgY29uc3Qgcm91dGVyU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgPVxuICAgICAgICByb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICBjb25zdCBwcmVmZXRjaERhdGFDaGlsZDogQ2FjaGVOb2RlU2VlZERhdGEgfCB2b2lkIHwgbnVsbCA9XG4gICAgICAgIHByZWZldGNoRGF0YUNoaWxkcmVuICE9PSBudWxsXG4gICAgICAgICAgPyBwcmVmZXRjaERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgZXhpc3RpbmdTZWdtZW50TWFwQ2hpbGQgPVxuICAgICAgICBleGlzdGluZ0NhY2hlTm9kZUNoaWxkcmVuICE9PSBudWxsXG4gICAgICAgICAgPyBleGlzdGluZ0NhY2hlTm9kZUNoaWxkcmVuLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBzZWdtZW50Q2hpbGQgPSByb3V0ZXJTdGF0ZUNoaWxkWzBdXG4gICAgICBjb25zdCBzZWdtZW50UGF0aENoaWxkID0gc2VnbWVudFBhdGguY29uY2F0KFtcbiAgICAgICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICAgICAgc2VnbWVudENoaWxkLFxuICAgICAgXSlcbiAgICAgIGNvbnN0IHNlZ21lbnRLZXlDaGlsZCA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnRDaGlsZClcblxuICAgICAgY29uc3QgZXhpc3RpbmdDYWNoZU5vZGVDaGlsZCA9XG4gICAgICAgIGV4aXN0aW5nU2VnbWVudE1hcENoaWxkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGV4aXN0aW5nU2VnbWVudE1hcENoaWxkLmdldChzZWdtZW50S2V5Q2hpbGQpXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgY29uc3QgdGFza0NoaWxkID0gY3JlYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgcm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgZXhpc3RpbmdDYWNoZU5vZGVDaGlsZCxcbiAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGQsXG4gICAgICAgIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZCxcbiAgICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgICBzZWdtZW50UGF0aENoaWxkLFxuICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHRcbiAgICAgIClcbiAgICAgIHRhc2tDaGlsZHJlbi5zZXQocGFyYWxsZWxSb3V0ZUtleSwgdGFza0NoaWxkKVxuICAgICAgY29uc3QgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGQgPSB0YXNrQ2hpbGQuZHluYW1pY1JlcXVlc3RUcmVlXG4gICAgICBpZiAoZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgICAgLy8gU29tZXRoaW5nIGluIHRoZSBjaGlsZCB0cmVlIGlzIGR5bmFtaWMuXG4gICAgICAgIG5lZWRzRHluYW1pY1JlcXVlc3QgPSB0cnVlXG4gICAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gcm91dGVyU3RhdGVDaGlsZFxuICAgICAgfVxuICAgICAgY29uc3QgbmV3Q2FjaGVOb2RlQ2hpbGQgPSB0YXNrQ2hpbGQubm9kZVxuICAgICAgaWYgKG5ld0NhY2hlTm9kZUNoaWxkICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5ld1NlZ21lbnRNYXBDaGlsZDogQ2hpbGRTZWdtZW50TWFwID0gbmV3IE1hcCgpXG4gICAgICAgIG5ld1NlZ21lbnRNYXBDaGlsZC5zZXQoc2VnbWVudEtleUNoaWxkLCBuZXdDYWNoZU5vZGVDaGlsZClcbiAgICAgICAgY2FjaGVOb2RlQ2hpbGRyZW4uc2V0KHBhcmFsbGVsUm91dGVLZXksIG5ld1NlZ21lbnRNYXBDaGlsZClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIFNpbmNlIHdlJ3JlIGluc2lkZSBhIG5ldyByb3V0ZSB0cmVlLCB1bmxpa2UgdGhlXG4gICAgLy8gYHVwZGF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbmAgcGF0aCwgdGhlIHJvdXRlciBzdGF0ZSBvbiB0aGUgY2hpbGRyZW5cbiAgICAvLyB0YXNrcyBpcyBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIHJvdXRlciBzdGF0ZSB3ZSBwYXNzIGluLiBTbyB3ZSBkb24ndCBuZWVkXG4gICAgLy8gdG8gY2xvbmUvbW9kaWZ5IGl0LlxuICAgIHJvdXRlOiByb3V0ZXJTdGF0ZSxcbiAgICBub2RlOiB7XG4gICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgIC8vIFNpbmNlIHRoaXMgc2VnbWVudCBpcyBhbHJlYWR5IGZ1bGwsIHdlIGRvbid0IG5lZWQgdG8gdXNlIHRoZVxuICAgICAgLy8gYHByZWZldGNoUnNjYCBmaWVsZC5cbiAgICAgIHJzYyxcbiAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgaGVhZCxcbiAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgIGxvYWRpbmcsXG4gICAgICBwYXJhbGxlbFJvdXRlczogY2FjaGVOb2RlQ2hpbGRyZW4sXG4gICAgICBuYXZpZ2F0ZWRBdDogY2FjaGVOb2RlTmF2aWdhdGVkQXQsXG4gICAgfSxcbiAgICBkeW5hbWljUmVxdWVzdFRyZWU6IG5lZWRzRHluYW1pY1JlcXVlc3RcbiAgICAgID8gcGF0Y2hSb3V0ZXJTdGF0ZVdpdGhOZXdDaGlsZHJlbihyb3V0ZXJTdGF0ZSwgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW4pXG4gICAgICA6IG51bGwsXG4gICAgY2hpbGRyZW46IHRhc2tDaGlsZHJlbixcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKFxuICBiYXNlUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBuZXdDaGlsZHJlbjogeyBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGUgfVxuKTogRmxpZ2h0Um91dGVyU3RhdGUge1xuICBjb25zdCBjbG9uZTogRmxpZ2h0Um91dGVyU3RhdGUgPSBbYmFzZVJvdXRlclN0YXRlWzBdLCBuZXdDaGlsZHJlbl1cbiAgLy8gQmFzZWQgb24gZXF1aXZhbGVudCBsb2dpYyBpbiBhcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSwgYnV0IHNob3VsZFxuICAvLyBjb25maXJtIHdoZXRoZXIgd2UgbmVlZCB0byBjb3B5IGFsbCBvZiB0aGVzZSBmaWVsZHMuIE5vdCBzdXJlIHRoZSBzZXJ2ZXJcbiAgLy8gZXZlciBzZW5kcywgZS5nLiB0aGUgcmVmZXRjaCBtYXJrZXIuXG4gIGlmICgyIGluIGJhc2VSb3V0ZXJTdGF0ZSkge1xuICAgIGNsb25lWzJdID0gYmFzZVJvdXRlclN0YXRlWzJdXG4gIH1cbiAgaWYgKDMgaW4gYmFzZVJvdXRlclN0YXRlKSB7XG4gICAgY2xvbmVbM10gPSBiYXNlUm91dGVyU3RhdGVbM11cbiAgfVxuICBpZiAoNCBpbiBiYXNlUm91dGVyU3RhdGUpIHtcbiAgICBjbG9uZVs0XSA9IGJhc2VSb3V0ZXJTdGF0ZVs0XVxuICB9XG4gIHJldHVybiBjbG9uZVxufVxuXG5mdW5jdGlvbiBzcGF3blBlbmRpbmdUYXNrKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHByZWZldGNoRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBwcmVmZXRjaEhlYWQ6IEhlYWREYXRhIHwgbnVsbCxcbiAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsOiBib29sZWFuLFxuICBzZWdtZW50UGF0aDogRmxpZ2h0U2VnbWVudFBhdGgsXG4gIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdDogQXJyYXk8RmxpZ2h0U2VnbWVudFBhdGg+XG4pOiBTUEFOYXZpZ2F0aW9uVGFzayB7XG4gIC8vIENyZWF0ZSBhIHRhc2sgdGhhdCB3aWxsIGxhdGVyIGJlIGZ1bGZpbGxlZCBieSBkYXRhIGZyb20gdGhlIHNlcnZlci5cblxuICAvLyBDbG9uZSB0aGUgcHJlZmV0Y2hlZCByb3V0ZSB0cmVlIGFuZCB0aGUgYHJlZmV0Y2hgIG1hcmtlciB0byBpdC4gV2UnbGwgc2VuZFxuICAvLyB0aGlzIHRvIHRoZSBzZXJ2ZXIgc28gaXQga25vd3Mgd2hlcmUgdG8gc3RhcnQgcmVuZGVyaW5nLlxuICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWUgPSBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKFxuICAgIHJvdXRlclN0YXRlLFxuICAgIHJvdXRlclN0YXRlWzFdXG4gIClcbiAgZHluYW1pY1JlcXVlc3RUcmVlWzNdID0gJ3JlZmV0Y2gnXG5cbiAgY29uc3QgbmV3VGFzazogVGFzayA9IHtcbiAgICByb3V0ZTogcm91dGVyU3RhdGUsXG5cbiAgICAvLyBDb3JyZXNwb25kcyB0byB0aGUgcGFydCBvZiB0aGUgcm91dGUgdGhhdCB3aWxsIGJlIHJlbmRlcmVkIG9uIHRoZSBzZXJ2ZXIuXG4gICAgbm9kZTogY3JlYXRlUGVuZGluZ0NhY2hlTm9kZShcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgcm91dGVyU3RhdGUsXG4gICAgICBwcmVmZXRjaERhdGEsXG4gICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICBzZWdtZW50UGF0aCxcbiAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICksXG4gICAgLy8gQmVjYXVzZSB0aGlzIGlzIG5vbi1udWxsLCBhbmQgaXQgZ2V0cyBwcm9wYWdhdGVkIHVwIHRocm91Z2ggdGhlIHBhcmVudFxuICAgIC8vIHRhc2tzLCB0aGUgcm9vdCB0YXNrIHdpbGwga25vdyB0aGF0IGl0IG5lZWRzIHRvIHBlcmZvcm0gYSBzZXJ2ZXIgcmVxdWVzdC5cbiAgICBkeW5hbWljUmVxdWVzdFRyZWUsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gIH1cbiAgcmV0dXJuIG5ld1Rhc2tcbn1cblxuZnVuY3Rpb24gc3Bhd25SZXVzZWRUYXNrKHJldXNlZFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSk6IFRhc2sge1xuICAvLyBDcmVhdGUgYSB0YXNrIHRoYXQgcmV1c2VzIGFuIGV4aXN0aW5nIHNlZ21lbnQsIGUuZy4gd2hlbiByZXVzaW5nXG4gIC8vIHRoZSBjdXJyZW50IGFjdGl2ZSBzZWdtZW50IGluIHBsYWNlIG9mIGEgZGVmYXVsdCByb3V0ZS5cbiAgcmV0dXJuIHtcbiAgICByb3V0ZTogcmV1c2VkUm91dGVyU3RhdGUsXG4gICAgbm9kZTogbnVsbCxcbiAgICBkeW5hbWljUmVxdWVzdFRyZWU6IG51bGwsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gIH1cbn1cblxuLy8gV3JpdGVzIGEgZHluYW1pYyBzZXJ2ZXIgcmVzcG9uc2UgaW50byB0aGUgdHJlZSBjcmVhdGVkIGJ5XG4vLyB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24uIEFsbCBwZW5kaW5nIHByb21pc2VzIHRoYXQgd2VyZSBzcGF3bmVkIGJ5IHRoZVxuLy8gbmF2aWdhdGlvbiB3aWxsIGJlIHJlc29sdmVkLCBlaXRoZXIgd2l0aCBkeW5hbWljIGRhdGEgZnJvbSB0aGUgc2VydmVyLCBvclxuLy8gYG51bGxgIHRvIGluZGljYXRlIHRoYXQgdGhlIGRhdGEgaXMgbWlzc2luZy5cbi8vXG4vLyBBIGBudWxsYCB2YWx1ZSB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoIGR1cmluZyByZW5kZXIsIHdoaWNoIHdpbGwgdGhlbiBwYXRjaFxuLy8gdXAgdGhlIHRyZWUgdXNpbmcgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHRoZSBub24tUFBSIGltcGxlbWVudGF0aW9uXG4vLyAoc2VydmVyUGF0Y2hSZWR1Y2VyKS5cbi8vXG4vLyBVc3VhbGx5LCB0aGUgc2VydmVyIHdpbGwgcmVzcG9uZCB3aXRoIGV4YWN0bHkgdGhlIHN1YnNldCBvZiBkYXRhIHRoYXQgd2UncmVcbi8vIHdhaXRpbmcgZm9yIOKAlCBldmVyeXRoaW5nIGJlbG93IHRoZSBuZWFyZXN0IHNoYXJlZCBsYXlvdXQuIEJ1dCB0ZWNobmljYWxseSxcbi8vIHRoZSBzZXJ2ZXIgY2FuIHJldHVybiBhbnl0aGluZyBpdCB3YW50cy5cbi8vXG4vLyBUaGlzIGRvZXMgX25vdF8gY3JlYXRlIGEgbmV3IHRyZWU7IGl0IG1vZGlmaWVzIHRoZSBleGlzdGluZyBvbmUgaW4gcGxhY2UuXG4vLyBXaGljaCBtZWFucyBpdCBtdXN0IGZvbGxvdyB0aGUgU3VzcGVuc2UgcnVsZXMgb2YgY2FjaGUgc2FmZXR5LlxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0KFxuICB0YXNrOiBTUEFOYXZpZ2F0aW9uVGFzayxcbiAgcmVzcG9uc2VQcm9taXNlOiBQcm9taXNlPEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQ+XG4pIHtcbiAgcmVzcG9uc2VQcm9taXNlLnRoZW4oXG4gICAgKHsgZmxpZ2h0RGF0YSB9OiBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEhhcHBlbnMgd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgLiBXZSBzaG91bGRuJ3RcbiAgICAgICAgLy8gZ2V0IGhlcmUgYmVjYXVzZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgdGhpcyBkdXJpbmdcbiAgICAgICAgLy8gdGhlIHByZWZldGNoLlxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgb2YgZmxpZ2h0RGF0YSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc2VnbWVudFBhdGgsXG4gICAgICAgICAgdHJlZTogc2VydmVyUm91dGVyU3RhdGUsXG4gICAgICAgICAgc2VlZERhdGE6IGR5bmFtaWNEYXRhLFxuICAgICAgICAgIGhlYWQ6IGR5bmFtaWNIZWFkLFxuICAgICAgICB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcblxuICAgICAgICBpZiAoIWR5bmFtaWNEYXRhKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuLiBQUFIgc2hvdWxkIGFsd2F5cyBzZW5kIGJhY2sgYSByZXNwb25zZS5cbiAgICAgICAgICAvLyBIb3dldmVyLCBgRmxpZ2h0RGF0YVBhdGhgIGlzIGEgc2hhcmVkIHR5cGUgYW5kIHRoZSBwcmUtUFBSIGhhbmRsaW5nIG9mXG4gICAgICAgICAgLy8gdGhpcyBtaWdodCByZXR1cm4gbnVsbC5cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgd3JpdGVEeW5hbWljRGF0YUludG9QZW5kaW5nVGFzayhcbiAgICAgICAgICB0YXNrLFxuICAgICAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgICAgIHNlcnZlclJvdXRlclN0YXRlLFxuICAgICAgICAgIGR5bmFtaWNEYXRhLFxuICAgICAgICAgIGR5bmFtaWNIZWFkXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gTm93IHRoYXQgd2UndmUgZXhoYXVzdGVkIGFsbCB0aGUgZGF0YSB3ZSByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIsIGlmXG4gICAgICAvLyB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyBwZW5kaW5nIHRhc2tzIGluIHRoZSB0cmVlLCBhYm9ydCB0aGVtIG5vdy5cbiAgICAgIC8vIElmIHRoZXJlJ3MgYW55IG1pc3NpbmcgZGF0YSwgaXQgd2lsbCB0cmlnZ2VyIGEgbGF6eSBmZXRjaC5cbiAgICAgIGFib3J0VGFzayh0YXNrLCBudWxsKVxuICAgIH0sXG4gICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIGVycm9yIGR1cmluZyByZW5kZXJcbiAgICAgIGFib3J0VGFzayh0YXNrLCBlcnJvcilcbiAgICB9XG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVEeW5hbWljRGF0YUludG9QZW5kaW5nVGFzayhcbiAgcm9vdFRhc2s6IFNQQU5hdmlnYXRpb25UYXNrLFxuICBzZWdtZW50UGF0aDogRmxpZ2h0U2VnbWVudFBhdGgsXG4gIHNlcnZlclJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZHluYW1pY0RhdGE6IENhY2hlTm9kZVNlZWREYXRhLFxuICBkeW5hbWljSGVhZDogSGVhZERhdGFcbikge1xuICAvLyBUaGUgZGF0YSBzZW50IGJ5IHRoZSBzZXJ2ZXIgcmVwcmVzZW50cyBvbmx5IGEgc3VidHJlZSBvZiB0aGUgYXBwLiBXZSBuZWVkXG4gIC8vIHRvIGZpbmQgdGhlIHBhcnQgb2YgdGhlIHRhc2sgdHJlZSB0aGF0IG1hdGNoZXMgdGhlIHNlcnZlciByZXNwb25zZSwgYW5kXG4gIC8vIGZ1bGZpbGwgaXQgdXNpbmcgdGhlIGR5bmFtaWMgZGF0YS5cbiAgLy9cbiAgLy8gc2VnbWVudFBhdGggcmVwcmVzZW50cyB0aGUgcGFyZW50IHBhdGggb2Ygc3VidHJlZS4gSXQncyBhIHJlcGVhdGluZyBwYXR0ZXJuXG4gIC8vIG9mIHBhcmFsbGVsIHJvdXRlIGtleSBhbmQgc2VnbWVudDpcbiAgLy9cbiAgLy8gICBbc3RyaW5nLCBTZWdtZW50LCBzdHJpbmcsIFNlZ21lbnQsIHN0cmluZywgU2VnbWVudCwgLi4uXVxuICAvL1xuICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHBhdGggYW5kIGZpbmlzaCBhbnkgdGFza3MgdGhhdCBtYXRjaCB0aGlzIHBheWxvYWQuXG4gIGxldCB0YXNrID0gcm9vdFRhc2tcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50UGF0aC5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyA9IHNlZ21lbnRQYXRoW2ldXG4gICAgY29uc3Qgc2VnbWVudDogU2VnbWVudCA9IHNlZ21lbnRQYXRoW2kgKyAxXVxuICAgIGNvbnN0IHRhc2tDaGlsZHJlbiA9IHRhc2suY2hpbGRyZW5cbiAgICBpZiAodGFza0NoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0YXNrQ2hpbGQgPSB0YXNrQ2hpbGRyZW4uZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG4gICAgICBpZiAodGFza0NoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGFza1NlZ21lbnQgPSB0YXNrQ2hpbGQucm91dGVbMF1cbiAgICAgICAgaWYgKG1hdGNoU2VnbWVudChzZWdtZW50LCB0YXNrU2VnbWVudCkpIHtcbiAgICAgICAgICAvLyBGb3VuZCBhIG1hdGNoIGZvciB0aGlzIHRhc2suIEtlZXAgdHJhdmVyc2luZyBkb3duIHRoZSB0YXNrIHRyZWUuXG4gICAgICAgICAgdGFzayA9IHRhc2tDaGlsZFxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UgZGlkbid0IGZpbmQgYSBjaGlsZCB0YXNrIHRoYXQgbWF0Y2hlcyB0aGUgc2VydmVyIGRhdGEuIEV4aXQuIFdlIHdvbid0XG4gICAgLy8gYWJvcnQgdGhlIHRhc2ssIHRob3VnaCwgYmVjYXVzZSBhIGRpZmZlcmVudCBGbGlnaHREYXRhUGF0aCBtYXkgYmUgYWJsZSB0b1xuICAgIC8vIGZ1bGZpbGwgaXQgKHNlZSBsb29wIGluIGxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0KS4gV2Ugb25seSBhYm9ydCB0YXNrc1xuICAgIC8vIG9uY2Ugd2UndmUgcnVuIG91dCBvZiBkYXRhLlxuICAgIHJldHVyblxuICB9XG5cbiAgZmluaXNoVGFza1VzaW5nRHluYW1pY0RhdGFQYXlsb2FkKFxuICAgIHRhc2ssXG4gICAgc2VydmVyUm91dGVyU3RhdGUsXG4gICAgZHluYW1pY0RhdGEsXG4gICAgZHluYW1pY0hlYWRcbiAgKVxufVxuXG5mdW5jdGlvbiBmaW5pc2hUYXNrVXNpbmdEeW5hbWljRGF0YVBheWxvYWQoXG4gIHRhc2s6IFNQQU5hdmlnYXRpb25UYXNrLFxuICBzZXJ2ZXJSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGR5bmFtaWNEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSxcbiAgZHluYW1pY0hlYWQ6IEhlYWREYXRhXG4pIHtcbiAgaWYgKHRhc2suZHluYW1pY1JlcXVlc3RUcmVlID09PSBudWxsKSB7XG4gICAgLy8gRXZlcnl0aGluZyBpbiB0aGlzIHN1YnRyZWUgaXMgYWxyZWFkeSBjb21wbGV0ZS4gQmFpbCBvdXQuXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBkeW5hbWljRGF0YSBtYXkgcmVwcmVzZW50IGEgbGFyZ2VyIHN1YnRyZWUgdGhhbiB0aGUgdGFzay4gQmVmb3JlIHdlIGNhblxuICAvLyBmaW5pc2ggdGhlIHRhc2ssIHdlIG5lZWQgdG8gbGluZSB0aGVtIHVwLlxuICBjb25zdCB0YXNrQ2hpbGRyZW4gPSB0YXNrLmNoaWxkcmVuXG4gIGNvbnN0IHRhc2tOb2RlID0gdGFzay5ub2RlXG4gIGlmICh0YXNrQ2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICAvLyBXZSd2ZSByZWFjaGVkIHRoZSBsZWFmIG5vZGUgb2YgdGhlIHBlbmRpbmcgdGFzay4gVGhlIHNlcnZlciBkYXRhIHRyZWVcbiAgICAvLyBsaW5lcyB1cCB0aGUgcGVuZGluZyBDYWNoZSBOb2RlIHRyZWUuIFdlIGNhbiBub3cgc3dpdGNoIHRvIHRoZVxuICAgIC8vIG5vcm1hbCBhbGdvcml0aG0uXG4gICAgaWYgKHRhc2tOb2RlICE9PSBudWxsKSB7XG4gICAgICBmaW5pc2hQZW5kaW5nQ2FjaGVOb2RlKFxuICAgICAgICB0YXNrTm9kZSxcbiAgICAgICAgdGFzay5yb3V0ZSxcbiAgICAgICAgc2VydmVyUm91dGVyU3RhdGUsXG4gICAgICAgIGR5bmFtaWNEYXRhLFxuICAgICAgICBkeW5hbWljSGVhZFxuICAgICAgKVxuICAgICAgLy8gU2V0IHRoaXMgdG8gbnVsbCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgdGFzayBpcyBub3cgY29tcGxldGUuXG4gICAgICB0YXNrLmR5bmFtaWNSZXF1ZXN0VHJlZSA9IG51bGxcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgLy8gVGhlIHNlcnZlciByZXR1cm5lZCBtb3JlIGRhdGEgdGhhbiB3ZSBuZWVkIHRvIGZpbmlzaCB0aGUgdGFzay4gU2tpcCBvdmVyXG4gIC8vIHRoZSBleHRyYSBzZWdtZW50cyB1bnRpbCB3ZSByZWFjaCB0aGUgbGVhZiB0YXNrIG5vZGUuXG4gIGNvbnN0IHNlcnZlckNoaWxkcmVuID0gc2VydmVyUm91dGVyU3RhdGVbMV1cbiAgY29uc3QgZHluYW1pY0RhdGFDaGlsZHJlbiA9IGR5bmFtaWNEYXRhWzJdXG5cbiAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlS2V5IGluIHNlcnZlclJvdXRlclN0YXRlKSB7XG4gICAgY29uc3Qgc2VydmVyUm91dGVyU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgPVxuICAgICAgc2VydmVyQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBkeW5hbWljRGF0YUNoaWxkOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwgfCB2b2lkID1cbiAgICAgIGR5bmFtaWNEYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cblxuICAgIGNvbnN0IHRhc2tDaGlsZCA9IHRhc2tDaGlsZHJlbi5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICBpZiAodGFza0NoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHRhc2tTZWdtZW50ID0gdGFza0NoaWxkLnJvdXRlWzBdXG4gICAgICBpZiAoXG4gICAgICAgIG1hdGNoU2VnbWVudChzZXJ2ZXJSb3V0ZXJTdGF0ZUNoaWxkWzBdLCB0YXNrU2VnbWVudCkgJiZcbiAgICAgICAgZHluYW1pY0RhdGFDaGlsZCAhPT0gbnVsbCAmJlxuICAgICAgICBkeW5hbWljRGF0YUNoaWxkICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICAvLyBGb3VuZCBhIG1hdGNoIGZvciB0aGlzIHRhc2suIEtlZXAgdHJhdmVyc2luZyBkb3duIHRoZSB0YXNrIHRyZWUuXG4gICAgICAgIHJldHVybiBmaW5pc2hUYXNrVXNpbmdEeW5hbWljRGF0YVBheWxvYWQoXG4gICAgICAgICAgdGFza0NoaWxkLFxuICAgICAgICAgIHNlcnZlclJvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgICAgZHluYW1pY0RhdGFDaGlsZCxcbiAgICAgICAgICBkeW5hbWljSGVhZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdlIGRpZG4ndCBmaW5kIGEgY2hpbGQgdGFzayB0aGF0IG1hdGNoZXMgdGhlIHNlcnZlciBkYXRhLiBXZSB3b24ndCBhYm9ydFxuICAgIC8vIHRoZSB0YXNrLCB0aG91Z2gsIGJlY2F1c2UgYSBkaWZmZXJlbnQgRmxpZ2h0RGF0YVBhdGggbWF5IGJlIGFibGUgdG9cbiAgICAvLyBmdWxmaWxsIGl0IChzZWUgbG9vcCBpbiBsaXN0ZW5Gb3JEeW5hbWljUmVxdWVzdCkuIFdlIG9ubHkgYWJvcnQgdGFza3NcbiAgICAvLyBvbmNlIHdlJ3ZlIHJ1biBvdXQgb2YgZGF0YS5cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQZW5kaW5nQ2FjaGVOb2RlKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHByZWZldGNoRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBwcmVmZXRjaEhlYWQ6IEhlYWREYXRhIHwgbnVsbCxcbiAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsOiBib29sZWFuLFxuICBzZWdtZW50UGF0aDogRmxpZ2h0U2VnbWVudFBhdGgsXG4gIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdDogQXJyYXk8RmxpZ2h0U2VnbWVudFBhdGg+XG4pOiBSZWFkeUNhY2hlTm9kZSB7XG4gIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGRyZW4gPSByb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBwcmVmZXRjaERhdGFDaGlsZHJlbiA9IHByZWZldGNoRGF0YSAhPT0gbnVsbCA/IHByZWZldGNoRGF0YVsyXSA6IG51bGxcblxuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IG5ldyBNYXAoKVxuICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIHJvdXRlclN0YXRlQ2hpbGRyZW4pIHtcbiAgICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9XG4gICAgICByb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgY29uc3QgcHJlZmV0Y2hEYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCB8IHZvaWQgPVxuICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGRyZW4gIT09IG51bGxcbiAgICAgICAgPyBwcmVmZXRjaERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICA6IG51bGxcblxuICAgIGNvbnN0IHNlZ21lbnRDaGlsZCA9IHJvdXRlclN0YXRlQ2hpbGRbMF1cbiAgICBjb25zdCBzZWdtZW50UGF0aENoaWxkID0gc2VnbWVudFBhdGguY29uY2F0KFtcbiAgICAgIHBhcmFsbGVsUm91dGVLZXksXG4gICAgICBzZWdtZW50Q2hpbGQsXG4gICAgXSlcbiAgICBjb25zdCBzZWdtZW50S2V5Q2hpbGQgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50Q2hpbGQpXG5cbiAgICBjb25zdCBuZXdDYWNoZU5vZGVDaGlsZCA9IGNyZWF0ZVBlbmRpbmdDYWNoZU5vZGUoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIHJvdXRlclN0YXRlQ2hpbGQsXG4gICAgICBwcmVmZXRjaERhdGFDaGlsZCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHByZWZldGNoRGF0YUNoaWxkLFxuICAgICAgcHJlZmV0Y2hIZWFkLFxuICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgc2VnbWVudFBhdGhDaGlsZCxcbiAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgIClcblxuICAgIGNvbnN0IG5ld1NlZ21lbnRNYXBDaGlsZDogQ2hpbGRTZWdtZW50TWFwID0gbmV3IE1hcCgpXG4gICAgbmV3U2VnbWVudE1hcENoaWxkLnNldChzZWdtZW50S2V5Q2hpbGQsIG5ld0NhY2hlTm9kZUNoaWxkKVxuICAgIHBhcmFsbGVsUm91dGVzLnNldChwYXJhbGxlbFJvdXRlS2V5LCBuZXdTZWdtZW50TWFwQ2hpbGQpXG4gIH1cblxuICAvLyBUaGUgaGVhZCBpcyBhc3NpZ25lZCB0byBldmVyeSBsZWFmIHNlZ21lbnQgZGVsaXZlcmVkIGJ5IHRoZSBzZXJ2ZXIuIEJhc2VkXG4gIC8vIG9uIGNvcnJlc3BvbmRpbmcgbG9naWMgaW4gZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQudHNcbiAgY29uc3QgaXNMZWFmU2VnbWVudCA9IHBhcmFsbGVsUm91dGVzLnNpemUgPT09IDBcblxuICBpZiAoaXNMZWFmU2VnbWVudCkge1xuICAgIC8vIFRoZSBzZWdtZW50IHBhdGggb2YgZXZlcnkgbGVhZiBzZWdtZW50IChpLmUuIHBhZ2UpIGlzIGNvbGxlY3RlZCBpbnRvXG4gICAgLy8gYSByZXN1bHQgYXJyYXkuIFRoaXMgaXMgdXNlZCBieSB0aGUgTGF5b3V0Um91dGVyIHRvIHNjcm9sbCB0byBlbnN1cmUgdGhhdFxuICAgIC8vIG5ldyBwYWdlcyBhcmUgdmlzaWJsZSBhZnRlciBhIG5hdmlnYXRpb24uXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIHVzZSBhIHN0cmluZyB0byByZXByZXNlbnQgdGhlIHNlZ21lbnQgcGF0aCBpbnN0ZWFkIG9mXG4gICAgLy8gYW4gYXJyYXkuIFdlIGFscmVhZHkgdXNlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgcGF0aCB3aGVuXG4gICAgLy8gYWNjZXNzaW5nIHRoZSBTZWdtZW50IENhY2hlLCBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIG9uZS5cbiAgICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQucHVzaChzZWdtZW50UGF0aClcbiAgfVxuXG4gIGNvbnN0IG1heWJlUHJlZmV0Y2hSc2MgPSBwcmVmZXRjaERhdGEgIT09IG51bGwgPyBwcmVmZXRjaERhdGFbMV0gOiBudWxsXG4gIGNvbnN0IG1heWJlUHJlZmV0Y2hMb2FkaW5nID0gcHJlZmV0Y2hEYXRhICE9PSBudWxsID8gcHJlZmV0Y2hEYXRhWzNdIDogbnVsbFxuICByZXR1cm4ge1xuICAgIGxhenlEYXRhOiBudWxsLFxuICAgIHBhcmFsbGVsUm91dGVzOiBwYXJhbGxlbFJvdXRlcyxcblxuICAgIHByZWZldGNoUnNjOiBtYXliZVByZWZldGNoUnNjICE9PSB1bmRlZmluZWQgPyBtYXliZVByZWZldGNoUnNjIDogbnVsbCxcbiAgICBwcmVmZXRjaEhlYWQ6IGlzTGVhZlNlZ21lbnQgPyBwcmVmZXRjaEhlYWQgOiBbbnVsbCwgbnVsbF0sXG5cbiAgICAvLyBUT0RPOiBUZWNobmljYWxseSwgYSBsb2FkaW5nIGJvdW5kYXJ5IGNvdWxkIGNvbnRhaW4gZHluYW1pYyBkYXRhLiBXZSBtdXN0XG4gICAgLy8gaGF2ZSBzZXBhcmF0ZSBgbG9hZGluZ2AgYW5kIGBwcmVmZXRjaExvYWRpbmdgIGZpZWxkcyB0byBoYW5kbGUgdGhpcywgbGlrZVxuICAgIC8vIHdlIGRvIGZvciB0aGUgc2VnbWVudCBkYXRhIGFuZCBoZWFkLlxuICAgIGxvYWRpbmc6IG1heWJlUHJlZmV0Y2hMb2FkaW5nICE9PSB1bmRlZmluZWQgPyBtYXliZVByZWZldGNoTG9hZGluZyA6IG51bGwsXG5cbiAgICAvLyBDcmVhdGUgYSBkZWZlcnJlZCBwcm9taXNlLiBUaGlzIHdpbGwgYmUgZnVsZmlsbGVkIG9uY2UgdGhlIGR5bmFtaWNcbiAgICAvLyByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgcnNjOiBjcmVhdGVEZWZlcnJlZFJzYygpIGFzIFJlYWN0LlJlYWN0Tm9kZSxcbiAgICBoZWFkOiBpc0xlYWZTZWdtZW50ID8gKGNyZWF0ZURlZmVycmVkUnNjKCkgYXMgUmVhY3QuUmVhY3ROb2RlKSA6IG51bGwsXG5cbiAgICBuYXZpZ2F0ZWRBdCxcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hQZW5kaW5nQ2FjaGVOb2RlKFxuICBjYWNoZU5vZGU6IENhY2hlTm9kZSxcbiAgdGFza1N0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgc2VydmVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBkeW5hbWljRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEsXG4gIGR5bmFtaWNIZWFkOiBIZWFkRGF0YVxuKTogdm9pZCB7XG4gIC8vIFdyaXRlcyBhIGR5bmFtaWMgcmVzcG9uc2UgaW50byBhbiBleGlzdGluZyBDYWNoZSBOb2RlIHRyZWUuIFRoaXMgZG9lcyBfbm90X1xuICAvLyBjcmVhdGUgYSBuZXcgdHJlZSwgaXQgdXBkYXRlcyB0aGUgZXhpc3RpbmcgdHJlZSBpbi1wbGFjZS4gU28gaXQgbXVzdCBmb2xsb3dcbiAgLy8gdGhlIFN1c3BlbnNlIHJ1bGVzIG9mIGNhY2hlIHNhZmV0eSDigJQgaXQgY2FuIHJlc29sdmUgcGVuZGluZyBwcm9taXNlcywgYnV0XG4gIC8vIGl0IGNhbm5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgZGF0YS4gSXQgY2FuIGFkZCBzZWdtZW50cyB0byB0aGUgdHJlZSAoYmVjYXVzZVxuICAvLyBhIG1pc3Npbmcgc2VnbWVudCB3aWxsIGNhdXNlIHRoZSBsYXlvdXQgcm91dGVyIHRvIHN1c3BlbmQpLlxuICAvLyBidXQgaXQgY2Fubm90IGRlbGV0ZSB0aGVtLlxuICAvL1xuICAvLyBXZSBtdXN0IHJlc29sdmUgZXZlcnkgcHJvbWlzZSBpbiB0aGUgdHJlZSwgb3IgZWxzZSBpdCB3aWxsIHN1c3BlbmRcbiAgLy8gaW5kZWZpbml0ZWx5LiBJZiB3ZSBkaWQgbm90IHJlY2VpdmUgZGF0YSBmb3IgYSBzZWdtZW50LCB3ZSB3aWxsIHJlc29sdmUgaXRzXG4gIC8vIGRhdGEgcHJvbWlzZSB0byBgbnVsbGAgdG8gdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlci5cbiAgY29uc3QgdGFza1N0YXRlQ2hpbGRyZW4gPSB0YXNrU3RhdGVbMV1cbiAgY29uc3Qgc2VydmVyU3RhdGVDaGlsZHJlbiA9IHNlcnZlclN0YXRlWzFdXG4gIGNvbnN0IGRhdGFDaGlsZHJlbiA9IGR5bmFtaWNEYXRhWzJdXG5cbiAgLy8gVGhlIHJvdXRlciBzdGF0ZSB0aGF0IHdlIHRyYXZlcnNlIHRoZSB0cmVlIHdpdGggKHRhc2tTdGF0ZSkgaXMgdGhlIHNhbWUgb25lXG4gIC8vIHRoYXQgd2UgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHBlbmRpbmcgQ2FjaGUgTm9kZSB0cmVlLiBUaGF0IHdheSB3ZSdyZSBzdXJlXG4gIC8vIHRvIHJlc29sdmUgYWxsIHRoZSBwZW5kaW5nIHByb21pc2VzLlxuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IGNhY2hlTm9kZS5wYXJhbGxlbFJvdXRlc1xuICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIHRhc2tTdGF0ZUNoaWxkcmVuKSB7XG4gICAgY29uc3QgdGFza1N0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlID1cbiAgICAgIHRhc2tTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgY29uc3Qgc2VydmVyU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgfCB2b2lkID1cbiAgICAgIHNlcnZlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBkYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCB8IHZvaWQgPVxuICAgICAgZGF0YUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG5cbiAgICBjb25zdCBzZWdtZW50TWFwQ2hpbGQgPSBwYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICBjb25zdCB0YXNrU2VnbWVudENoaWxkID0gdGFza1N0YXRlQ2hpbGRbMF1cbiAgICBjb25zdCB0YXNrU2VnbWVudEtleUNoaWxkID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkodGFza1NlZ21lbnRDaGlsZClcblxuICAgIGNvbnN0IGNhY2hlTm9kZUNoaWxkID1cbiAgICAgIHNlZ21lbnRNYXBDaGlsZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gc2VnbWVudE1hcENoaWxkLmdldCh0YXNrU2VnbWVudEtleUNoaWxkKVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNhY2hlTm9kZUNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgc2VydmVyU3RhdGVDaGlsZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG1hdGNoU2VnbWVudCh0YXNrU2VnbWVudENoaWxkLCBzZXJ2ZXJTdGF0ZUNoaWxkWzBdKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChkYXRhQ2hpbGQgIT09IHVuZGVmaW5lZCAmJiBkYXRhQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBoYXBweSBwYXRoLiBSZWN1cnNpdmVseSB1cGRhdGUgYWxsIHRoZSBjaGlsZHJlbi5cbiAgICAgICAgICBmaW5pc2hQZW5kaW5nQ2FjaGVOb2RlKFxuICAgICAgICAgICAgY2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgICAgICB0YXNrU3RhdGVDaGlsZCxcbiAgICAgICAgICAgIHNlcnZlclN0YXRlQ2hpbGQsXG4gICAgICAgICAgICBkYXRhQ2hpbGQsXG4gICAgICAgICAgICBkeW5hbWljSGVhZFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGUgc2VydmVyIG5ldmVyIHJldHVybmVkIGRhdGEgZm9yIHRoaXMgc2VnbWVudC4gVHJpZ2dlciBhIGxhenlcbiAgICAgICAgICAvLyBmZXRjaCBkdXJpbmcgcmVuZGVyLiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSB0aGUgUm91dGUgVHJlZVxuICAgICAgICAgIC8vIGFuZCB0aGUgU2VlZCBEYXRhIHRyZWUgc2VudCBieSB0aGUgc2VydmVyIHNob3VsZCBhbHdheXMgYmUgdGhlIHNhbWVcbiAgICAgICAgICAvLyBzaGFwZSB3aGVuIHBhcnQgb2YgdGhlIHNhbWUgc2VydmVyIHJlc3BvbnNlLlxuICAgICAgICAgIGFib3J0UGVuZGluZ0NhY2hlTm9kZSh0YXNrU3RhdGVDaGlsZCwgY2FjaGVOb2RlQ2hpbGQsIG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgbmV2ZXIgcmV0dXJuZWQgZGF0YSBmb3IgdGhpcyBzZWdtZW50LiBUcmlnZ2VyIGEgbGF6eVxuICAgICAgICAvLyBmZXRjaCBkdXJpbmcgcmVuZGVyLlxuICAgICAgICBhYm9ydFBlbmRpbmdDYWNoZU5vZGUodGFza1N0YXRlQ2hpbGQsIGNhY2hlTm9kZUNoaWxkLCBudWxsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGUgc2VydmVyIHJlc3BvbnNlIG1hdGNoZXMgd2hhdCB3YXMgZXhwZWN0ZWQgdG8gcmVjZWl2ZSwgYnV0IHRoZXJlJ3NcbiAgICAgIC8vIG5vIG1hdGNoaW5nIENhY2hlIE5vZGUgaW4gdGhlIHRhc2sgdHJlZS4gVGhpcyBpcyBhIGJ1ZyBpbiB0aGVcbiAgICAgIC8vIGltcGxlbWVudGF0aW9uIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgY3JlYXRlZCBhIG5vZGUgZm9yIGV2ZXJ5XG4gICAgICAvLyBzZWdtZW50IGluIHRoZSB0cmVlIHRoYXQncyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXNrLlxuICAgIH1cbiAgfVxuXG4gIC8vIFVzZSB0aGUgZHluYW1pYyBkYXRhIGZyb20gdGhlIHNlcnZlciB0byBmdWxmaWxsIHRoZSBkZWZlcnJlZCBSU0MgcHJvbWlzZVxuICAvLyBvbiB0aGUgQ2FjaGUgTm9kZS5cbiAgY29uc3QgcnNjID0gY2FjaGVOb2RlLnJzY1xuICBjb25zdCBkeW5hbWljU2VnbWVudERhdGEgPSBkeW5hbWljRGF0YVsxXVxuICBpZiAocnNjID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyBpcyBhIGxhenkgY2FjaGUgbm9kZS4gV2UgY2FuIG92ZXJ3cml0ZSBpdC4gVGhpcyBpcyBvbmx5IHNhZmVcbiAgICAvLyBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgTGF5b3V0Um91dGVyIHN1c3BlbmRzIGlmIGByc2NgIGlzIGBudWxsYC5cbiAgICBjYWNoZU5vZGUucnNjID0gZHluYW1pY1NlZ21lbnREYXRhXG4gIH0gZWxzZSBpZiAoaXNEZWZlcnJlZFJzYyhyc2MpKSB7XG4gICAgLy8gVGhpcyBpcyBhIGRlZmVycmVkIFJTQyBwcm9taXNlLiBXZSBjYW4gZnVsZmlsbCBpdCB3aXRoIHRoZSBkYXRhIHdlIGp1c3RcbiAgICAvLyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIuIElmIGl0IHdhcyBhbHJlYWR5IHJlc29sdmVkIGJ5IGEgZGlmZmVyZW50XG4gICAgLy8gbmF2aWdhdGlvbiwgdGhlbiB0aGlzIGRvZXMgbm90aGluZyBiZWNhdXNlIHdlIGNhbid0IG92ZXJ3cml0ZSBkYXRhLlxuICAgIHJzYy5yZXNvbHZlKGR5bmFtaWNTZWdtZW50RGF0YSlcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhIGRlZmVycmVkIFJTQyBwcm9taXNlLCBub3IgaXMgaXQgZW1wdHksIHNvIGl0IG11c3QgaGF2ZVxuICAgIC8vIGJlZW4gcG9wdWxhdGVkIGJ5IGEgZGlmZmVyZW50IG5hdmlnYXRpb24uIFdlIG11c3Qgbm90IG92ZXJ3cml0ZSBpdC5cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBsZWFmIHNlZ21lbnQuIElmIHNvLCBpdCB3aWxsIGhhdmUgYSBgaGVhZGAgcHJvcGVydHkgd2l0aFxuICAvLyBhIHBlbmRpbmcgcHJvbWlzZSB0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIGR5bmFtaWMgaGVhZCBmcm9tXG4gIC8vIHRoZSBzZXJ2ZXIuXG4gIGNvbnN0IGhlYWQgPSBjYWNoZU5vZGUuaGVhZFxuICBpZiAoaXNEZWZlcnJlZFJzYyhoZWFkKSkge1xuICAgIGhlYWQucmVzb2x2ZShkeW5hbWljSGVhZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRUYXNrKHRhc2s6IFNQQU5hdmlnYXRpb25UYXNrLCBlcnJvcjogYW55KTogdm9pZCB7XG4gIGNvbnN0IGNhY2hlTm9kZSA9IHRhc2subm9kZVxuICBpZiAoY2FjaGVOb2RlID09PSBudWxsKSB7XG4gICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhlIHRhc2sgaXMgYWxyZWFkeSBjb21wbGV0ZS5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHRhc2tDaGlsZHJlbiA9IHRhc2suY2hpbGRyZW5cbiAgaWYgKHRhc2tDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIC8vIFJlYWNoZWQgdGhlIGxlYWYgdGFzayBub2RlLiBUaGlzIGlzIHRoZSByb290IG9mIGEgcGVuZGluZyBjYWNoZVxuICAgIC8vIG5vZGUgdHJlZS5cbiAgICBhYm9ydFBlbmRpbmdDYWNoZU5vZGUodGFzay5yb3V0ZSwgY2FjaGVOb2RlLCBlcnJvcilcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSB0YXNrIG5vZGUuIEtlZXAgdHJhdmVyc2luZyB1bnRpbCB3ZSByZWFjaCBhXG4gICAgLy8gdGFzayBub2RlIHdpdGggbm8gY2hpbGRyZW4uIFRoYXQgd2lsbCBiZSB0aGUgcm9vdCBvZiB0aGUgY2FjaGUgbm9kZSB0cmVlXG4gICAgLy8gdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZC5cbiAgICBmb3IgKGNvbnN0IHRhc2tDaGlsZCBvZiB0YXNrQ2hpbGRyZW4udmFsdWVzKCkpIHtcbiAgICAgIGFib3J0VGFzayh0YXNrQ2hpbGQsIGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCB0aGlzIHRvIG51bGwgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHRhc2sgaXMgbm93IGNvbXBsZXRlLlxuICB0YXNrLmR5bmFtaWNSZXF1ZXN0VHJlZSA9IG51bGxcbn1cblxuZnVuY3Rpb24gYWJvcnRQZW5kaW5nQ2FjaGVOb2RlKFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICBlcnJvcjogYW55XG4pOiB2b2lkIHtcbiAgLy8gRm9yIGV2ZXJ5IHBlbmRpbmcgc2VnbWVudCBpbiB0aGUgdHJlZSwgcmVzb2x2ZSBpdHMgYHJzY2AgcHJvbWlzZSB0byBgbnVsbGBcbiAgLy8gdG8gdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlci5cbiAgLy9cbiAgLy8gT3IsIGlmIGFuIGVycm9yIG9iamVjdCBpcyBwcm92aWRlZCwgaXQgd2lsbCBlcnJvciBpbnN0ZWFkLlxuICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkcmVuID0gcm91dGVyU3RhdGVbMV1cbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSBjYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXNcbiAgZm9yIChsZXQgcGFyYWxsZWxSb3V0ZUtleSBpbiByb3V0ZXJTdGF0ZUNoaWxkcmVuKSB7XG4gICAgY29uc3Qgcm91dGVyU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgPVxuICAgICAgcm91dGVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IHNlZ21lbnRNYXBDaGlsZCA9IHBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgIGlmIChzZWdtZW50TWFwQ2hpbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2Ugd2UncmUgdHJhdmVyc2luZyB0aGUgc2FtZSB0cmVlIHRoYXQgd2FzXG4gICAgICAvLyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY2FjaGUgbm9kZXMgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3Qgc2VnbWVudENoaWxkID0gcm91dGVyU3RhdGVDaGlsZFswXVxuICAgIGNvbnN0IHNlZ21lbnRLZXlDaGlsZCA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnRDaGlsZClcbiAgICBjb25zdCBjYWNoZU5vZGVDaGlsZCA9IHNlZ21lbnRNYXBDaGlsZC5nZXQoc2VnbWVudEtleUNoaWxkKVxuICAgIGlmIChjYWNoZU5vZGVDaGlsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhYm9ydFBlbmRpbmdDYWNoZU5vZGUocm91dGVyU3RhdGVDaGlsZCwgY2FjaGVOb2RlQ2hpbGQsIGVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSB3ZSdyZSB0cmF2ZXJzaW5nIHRoZSBzYW1lIHRyZWUgdGhhdCB3YXNcbiAgICAgIC8vIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZSBub2RlcyBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gICAgfVxuICB9XG4gIGNvbnN0IHJzYyA9IGNhY2hlTm9kZS5yc2NcbiAgaWYgKGlzRGVmZXJyZWRSc2MocnNjKSkge1xuICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoIGR1cmluZyByZW5kZXIuXG4gICAgICByc2MucmVzb2x2ZShudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBhbiBlcnJvciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgICAgcnNjLnJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbGVhZiBzZWdtZW50LiBJZiBzbywgaXQgd2lsbCBoYXZlIGEgYGhlYWRgIHByb3BlcnR5IHdpdGhcbiAgLy8gYSBwZW5kaW5nIHByb21pc2UgdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZC4gSWYgYW4gZXJyb3Igd2FzIHByb3ZpZGVkLCB3ZVxuICAvLyB3aWxsIG5vdCByZXNvbHZlIGl0IHdpdGggYW4gZXJyb3IsIHNpbmNlIHRoaXMgaXMgcmVuZGVyZWQgYXQgdGhlIHJvb3Qgb2ZcbiAgLy8gdGhlIGFwcC4gV2Ugd2FudCB0aGUgc2VnbWVudCB0byBlcnJvciwgbm90IHRoZSBlbnRpcmUgYXBwLlxuICBjb25zdCBoZWFkID0gY2FjaGVOb2RlLmhlYWRcbiAgaWYgKGlzRGVmZXJyZWRSc2MoaGVhZCkpIHtcbiAgICBoZWFkLnJlc29sdmUobnVsbClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ2FjaGVOb2RlT25Qb3BzdGF0ZVJlc3RvcmF0aW9uKFxuICBvbGRDYWNoZU5vZGU6IENhY2hlTm9kZSxcbiAgcm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBSZWFkeUNhY2hlTm9kZSB7XG4gIC8vIEEgcG9wc3RhdGUgbmF2aWdhdGlvbiByZWFkcyBkYXRhIGZyb20gdGhlIGxvY2FsIGNhY2hlLiBJdCBkb2VzIG5vdCBpc3N1ZVxuICAvLyBuZXcgbmV0d29yayByZXF1ZXN0cyAodW5sZXNzIHRoZSBjYWNoZSBlbnRyaWVzIGhhdmUgYmVlbiBldmljdGVkKS4gU28sIHdlXG4gIC8vIHVwZGF0ZSB0aGUgY2FjaGUgdG8gZHJvcCB0aGUgcHJlZmV0Y2ggZGF0YSBmb3IgYW55IHNlZ21lbnQgd2hvc2UgZHluYW1pY1xuICAvLyBkYXRhIHdhcyBhbHJlYWR5IHJlY2VpdmVkLiBUaGlzIHByZXZlbnRzIGFuIHVubmVjZXNzYXJ5IGZsYXNoIGJhY2sgdG8gUFBSXG4gIC8vIHN0YXRlIGR1cmluZyBhIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAvL1xuICAvLyBUaGlzIGZ1bmN0aW9uIGNsb25lcyB0aGUgZW50aXJlIGNhY2hlIG5vZGUgdHJlZSBhbmQgc2V0cyB0aGUgYHByZWZldGNoUnNjYFxuICAvLyBmaWVsZCB0byBgbnVsbGAgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIHJlbmRlcmVkLiBXZSBjYW4ndCBtdXRhdGUgdGhlIG5vZGVcbiAgLy8gaW4gcGxhY2UgYmVjYXVzZSB0aGlzIGlzIGEgY29uY3VycmVudCBkYXRhIHN0cnVjdHVyZS5cblxuICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkcmVuID0gcm91dGVyU3RhdGVbMV1cbiAgY29uc3Qgb2xkUGFyYWxsZWxSb3V0ZXMgPSBvbGRDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXNcbiAgY29uc3QgbmV3UGFyYWxsZWxSb3V0ZXMgPSBuZXcgTWFwKG9sZFBhcmFsbGVsUm91dGVzKVxuICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIHJvdXRlclN0YXRlQ2hpbGRyZW4pIHtcbiAgICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9XG4gICAgICByb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgY29uc3Qgc2VnbWVudENoaWxkID0gcm91dGVyU3RhdGVDaGlsZFswXVxuICAgIGNvbnN0IHNlZ21lbnRLZXlDaGlsZCA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnRDaGlsZClcbiAgICBjb25zdCBvbGRTZWdtZW50TWFwQ2hpbGQgPSBvbGRQYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICBpZiAob2xkU2VnbWVudE1hcENoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9sZENhY2hlTm9kZUNoaWxkID0gb2xkU2VnbWVudE1hcENoaWxkLmdldChzZWdtZW50S2V5Q2hpbGQpXG4gICAgICBpZiAob2xkQ2FjaGVOb2RlQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBuZXdDYWNoZU5vZGVDaGlsZCA9IHVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbihcbiAgICAgICAgICBvbGRDYWNoZU5vZGVDaGlsZCxcbiAgICAgICAgICByb3V0ZXJTdGF0ZUNoaWxkXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgbmV3U2VnbWVudE1hcENoaWxkID0gbmV3IE1hcChvbGRTZWdtZW50TWFwQ2hpbGQpXG4gICAgICAgIG5ld1NlZ21lbnRNYXBDaGlsZC5zZXQoc2VnbWVudEtleUNoaWxkLCBuZXdDYWNoZU5vZGVDaGlsZClcbiAgICAgICAgbmV3UGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVLZXksIG5ld1NlZ21lbnRNYXBDaGlsZClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IHNob3cgcHJlZmV0Y2hlZCBkYXRhIGlmIHRoZSBkeW5hbWljIGRhdGEgaXMgc3RpbGwgcGVuZGluZy5cbiAgLy9cbiAgLy8gVGVobmljYWxseSwgd2hhdCB3ZSdyZSBhY3R1YWxseSBjaGVja2luZyBpcyB3aGV0aGVyIHRoZSBkeW5hbWljIG5ldHdvcmtcbiAgLy8gcmVzcG9uc2Ugd2FzIHJlY2VpdmVkLiBCdXQgc2luY2UgaXQncyBhIHN0cmVhbWluZyByZXNwb25zZSwgdGhpcyBkb2VzIG5vdFxuICAvLyBtZWFuIHRoYXQgYWxsIHRoZSBkeW5hbWljIGRhdGEgaGFzIGZ1bGx5IHN0cmVhbWVkIGluLiBJdCBqdXN0IG1lYW5zIHRoYXRcbiAgLy8gX3NvbWVfIG9mIHRoZSBkeW5hbWljIGRhdGEgd2FzIHJlY2VpdmVkLiBCdXQgYXMgYSBoZXVyaXN0aWMsIHdlIGFzc3VtZSB0aGF0XG4gIC8vIHRoZSByZXN0IGR5bmFtaWMgZGF0YSB3aWxsIHN0cmVhbSBpbiBxdWlja2x5LCBzbyBpdCdzIHN0aWxsIGJldHRlciB0byBza2lwXG4gIC8vIHRoZSBwcmVmZXRjaCBzdGF0ZS5cbiAgY29uc3QgcnNjID0gb2xkQ2FjaGVOb2RlLnJzY1xuICBjb25zdCBzaG91bGRVc2VQcmVmZXRjaCA9IGlzRGVmZXJyZWRSc2MocnNjKSAmJiByc2Muc3RhdHVzID09PSAncGVuZGluZydcblxuICByZXR1cm4ge1xuICAgIGxhenlEYXRhOiBudWxsLFxuICAgIHJzYyxcbiAgICBoZWFkOiBvbGRDYWNoZU5vZGUuaGVhZCxcblxuICAgIHByZWZldGNoSGVhZDogc2hvdWxkVXNlUHJlZmV0Y2ggPyBvbGRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkIDogW251bGwsIG51bGxdLFxuICAgIHByZWZldGNoUnNjOiBzaG91bGRVc2VQcmVmZXRjaCA/IG9sZENhY2hlTm9kZS5wcmVmZXRjaFJzYyA6IG51bGwsXG4gICAgbG9hZGluZzogb2xkQ2FjaGVOb2RlLmxvYWRpbmcsXG5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGNsb25lZCBjaGlsZHJlbiB3ZSBjb21wdXRlZCBhYm92ZVxuICAgIHBhcmFsbGVsUm91dGVzOiBuZXdQYXJhbGxlbFJvdXRlcyxcblxuICAgIG5hdmlnYXRlZEF0OiBvbGRDYWNoZU5vZGUubmF2aWdhdGVkQXQsXG4gIH1cbn1cblxuY29uc3QgREVGRVJSRUQgPSBTeW1ib2woKVxuXG50eXBlIFBlbmRpbmdEZWZlcnJlZFJzYyA9IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPiAmIHtcbiAgc3RhdHVzOiAncGVuZGluZydcbiAgcmVzb2x2ZTogKHZhbHVlOiBSZWFjdC5SZWFjdE5vZGUpID0+IHZvaWRcbiAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICB0YWc6IFN5bWJvbFxufVxuXG50eXBlIEZ1bGZpbGxlZERlZmVycmVkUnNjID0gUHJvbWlzZTxSZWFjdC5SZWFjdE5vZGU+ICYge1xuICBzdGF0dXM6ICdmdWxmaWxsZWQnXG4gIHZhbHVlOiBSZWFjdC5SZWFjdE5vZGVcbiAgcmVzb2x2ZTogKHZhbHVlOiBSZWFjdC5SZWFjdE5vZGUpID0+IHZvaWRcbiAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICB0YWc6IFN5bWJvbFxufVxuXG50eXBlIFJlamVjdGVkRGVmZXJyZWRSc2MgPSBQcm9taXNlPFJlYWN0LlJlYWN0Tm9kZT4gJiB7XG4gIHN0YXR1czogJ3JlamVjdGVkJ1xuICByZWFzb246IGFueVxuICByZXNvbHZlOiAodmFsdWU6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gdm9pZFxuICByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkXG4gIHRhZzogU3ltYm9sXG59XG5cbnR5cGUgRGVmZXJyZWRSc2MgPVxuICB8IFBlbmRpbmdEZWZlcnJlZFJzY1xuICB8IEZ1bGZpbGxlZERlZmVycmVkUnNjXG4gIHwgUmVqZWN0ZWREZWZlcnJlZFJzY1xuXG4vLyBUaGlzIHR5cGUgZXhpc3RzIHRvIGRpc3Rpbmd1aXNoIGEgRGVmZXJyZWRSc2MgZnJvbSBhIEZsaWdodCBwcm9taXNlLiBJdCdzIGFcbi8vIGNvbXByb21pc2UgdG8gYXZvaWQgYWRkaW5nIGFuIGV4dHJhIGZpZWxkIG9uIGV2ZXJ5IENhY2hlIE5vZGUsIHdoaWNoIHdvdWxkIGJlXG4vLyBhd2t3YXJkIGJlY2F1c2UgdGhlIHByZS1QUFIgcGFydHMgb2YgY29kZWJhc2Ugd291bGQgbmVlZCB0byBhY2NvdW50IGZvciBpdCxcbi8vIHRvby4gV2UgY2FuIHJlbW92ZSBpdCBvbmNlIHR5cGUgQ2FjaGUgTm9kZSB0eXBlIGlzIG1vcmUgc2V0dGxlZC5cbmZ1bmN0aW9uIGlzRGVmZXJyZWRSc2ModmFsdWU6IGFueSk6IHZhbHVlIGlzIERlZmVycmVkUnNjIHtcbiAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLnRhZyA9PT0gREVGRVJSRURcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWRSc2MoKTogUGVuZGluZ0RlZmVycmVkUnNjIHtcbiAgbGV0IHJlc29sdmU6IGFueVxuICBsZXQgcmVqZWN0OiBhbnlcbiAgY29uc3QgcGVuZGluZ1JzYyA9IG5ldyBQcm9taXNlPFJlYWN0LlJlYWN0Tm9kZT4oKHJlcywgcmVqKSA9PiB7XG4gICAgcmVzb2x2ZSA9IHJlc1xuICAgIHJlamVjdCA9IHJlalxuICB9KSBhcyBQZW5kaW5nRGVmZXJyZWRSc2NcbiAgcGVuZGluZ1JzYy5zdGF0dXMgPSAncGVuZGluZydcbiAgcGVuZGluZ1JzYy5yZXNvbHZlID0gKHZhbHVlOiBSZWFjdC5SZWFjdE5vZGUpID0+IHtcbiAgICBpZiAocGVuZGluZ1JzYy5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xuICAgICAgY29uc3QgZnVsZmlsbGVkUnNjOiBGdWxmaWxsZWREZWZlcnJlZFJzYyA9IHBlbmRpbmdSc2MgYXMgYW55XG4gICAgICBmdWxmaWxsZWRSc2Muc3RhdHVzID0gJ2Z1bGZpbGxlZCdcbiAgICAgIGZ1bGZpbGxlZFJzYy52YWx1ZSA9IHZhbHVlXG4gICAgICByZXNvbHZlKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwZW5kaW5nUnNjLnJlamVjdCA9IChlcnJvcjogYW55KSA9PiB7XG4gICAgaWYgKHBlbmRpbmdSc2Muc3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICAgIGNvbnN0IHJlamVjdGVkUnNjOiBSZWplY3RlZERlZmVycmVkUnNjID0gcGVuZGluZ1JzYyBhcyBhbnlcbiAgICAgIHJlamVjdGVkUnNjLnN0YXR1cyA9ICdyZWplY3RlZCdcbiAgICAgIHJlamVjdGVkUnNjLnJlYXNvbiA9IGVycm9yXG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfVxuICB9XG4gIHBlbmRpbmdSc2MudGFnID0gREVGRVJSRURcbiAgcmV0dXJuIHBlbmRpbmdSc2Ncbn1cbiJdLCJuYW1lcyI6WyJhYm9ydFRhc2siLCJsaXN0ZW5Gb3JEeW5hbWljUmVxdWVzdCIsInN0YXJ0UFBSTmF2aWdhdGlvbiIsInVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbiIsIk1QQV9OQVZJR0FUSU9OX1RBU0siLCJyb3V0ZSIsIm5vZGUiLCJkeW5hbWljUmVxdWVzdFRyZWUiLCJjaGlsZHJlbiIsIm5hdmlnYXRlZEF0Iiwib2xkQ2FjaGVOb2RlIiwib2xkUm91dGVyU3RhdGUiLCJuZXdSb3V0ZXJTdGF0ZSIsInByZWZldGNoRGF0YSIsInByZWZldGNoSGVhZCIsImlzUHJlZmV0Y2hIZWFkUGFydGlhbCIsImlzU2FtZVBhZ2VOYXZpZ2F0aW9uIiwic2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0Iiwic2VnbWVudFBhdGgiLCJ1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24iLCJkaWRGaW5kUm9vdExheW91dCIsIm9sZFJvdXRlclN0YXRlQ2hpbGRyZW4iLCJuZXdSb3V0ZXJTdGF0ZUNoaWxkcmVuIiwicHJlZmV0Y2hEYXRhQ2hpbGRyZW4iLCJpc1Jvb3RMYXlvdXQiLCJvbGRQYXJhbGxlbFJvdXRlcyIsInBhcmFsbGVsUm91dGVzIiwicHJlZmV0Y2hQYXJhbGxlbFJvdXRlcyIsIk1hcCIsInBhdGNoZWRSb3V0ZXJTdGF0ZUNoaWxkcmVuIiwidGFza0NoaWxkcmVuIiwibmVlZHNEeW5hbWljUmVxdWVzdCIsImR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkcmVuIiwicGFyYWxsZWxSb3V0ZUtleSIsIm5ld1JvdXRlclN0YXRlQ2hpbGQiLCJvbGRSb3V0ZXJTdGF0ZUNoaWxkIiwib2xkU2VnbWVudE1hcENoaWxkIiwiZ2V0IiwicHJlZmV0Y2hEYXRhQ2hpbGQiLCJuZXdTZWdtZW50Q2hpbGQiLCJuZXdTZWdtZW50UGF0aENoaWxkIiwiY29uY2F0IiwibmV3U2VnbWVudEtleUNoaWxkIiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJvbGRTZWdtZW50Q2hpbGQiLCJ1bmRlZmluZWQiLCJvbGRDYWNoZU5vZGVDaGlsZCIsInRhc2tDaGlsZCIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJzcGF3blJldXNlZFRhc2siLCJiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJtYXRjaFNlZ21lbnQiLCJzZXQiLCJuZXdDYWNoZU5vZGVDaGlsZCIsIm5ld1NlZ21lbnRNYXBDaGlsZCIsInRhc2tDaGlsZFJvdXRlIiwiZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGQiLCJuZXdDYWNoZU5vZGUiLCJsYXp5RGF0YSIsInJzYyIsInByZWZldGNoUnNjIiwiaGVhZCIsImxvYWRpbmciLCJwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuIiwiZXhpc3RpbmdDYWNoZU5vZGUiLCJwb3NzaWJseVBhcnRpYWxQcmVmZXRjaEhlYWQiLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjcmVhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24iLCJyb3V0ZXJTdGF0ZSIsInJvdXRlclN0YXRlQ2hpbGRyZW4iLCJpc0xlYWZTZWdtZW50IiwiY2FjaGVOb2RlTmF2aWdhdGVkQXQiLCJEWU5BTUlDX1NUQUxFVElNRV9NUyIsImlzUHJlZmV0Y2hSc2NQYXJ0aWFsIiwic3Bhd25QZW5kaW5nVGFzayIsImV4aXN0aW5nQ2FjaGVOb2RlQ2hpbGRyZW4iLCJjYWNoZU5vZGVDaGlsZHJlbiIsInB1c2giLCJyb3V0ZXJTdGF0ZUNoaWxkIiwiZXhpc3RpbmdTZWdtZW50TWFwQ2hpbGQiLCJzZWdtZW50Q2hpbGQiLCJzZWdtZW50UGF0aENoaWxkIiwic2VnbWVudEtleUNoaWxkIiwiZXhpc3RpbmdDYWNoZU5vZGVDaGlsZCIsImJhc2VSb3V0ZXJTdGF0ZSIsIm5ld0NoaWxkcmVuIiwiY2xvbmUiLCJuZXdUYXNrIiwiY3JlYXRlUGVuZGluZ0NhY2hlTm9kZSIsInJldXNlZFJvdXRlclN0YXRlIiwidGFzayIsInJlc3BvbnNlUHJvbWlzZSIsInRoZW4iLCJmbGlnaHREYXRhIiwibm9ybWFsaXplZEZsaWdodERhdGEiLCJ0cmVlIiwic2VydmVyUm91dGVyU3RhdGUiLCJzZWVkRGF0YSIsImR5bmFtaWNEYXRhIiwiZHluYW1pY0hlYWQiLCJ3cml0ZUR5bmFtaWNEYXRhSW50b1BlbmRpbmdUYXNrIiwiZXJyb3IiLCJyb290VGFzayIsImkiLCJzZWdtZW50IiwidGFza1NlZ21lbnQiLCJmaW5pc2hUYXNrVXNpbmdEeW5hbWljRGF0YVBheWxvYWQiLCJ0YXNrTm9kZSIsImZpbmlzaFBlbmRpbmdDYWNoZU5vZGUiLCJzZXJ2ZXJDaGlsZHJlbiIsImR5bmFtaWNEYXRhQ2hpbGRyZW4iLCJzZXJ2ZXJSb3V0ZXJTdGF0ZUNoaWxkIiwiZHluYW1pY0RhdGFDaGlsZCIsInNpemUiLCJtYXliZVByZWZldGNoUnNjIiwibWF5YmVQcmVmZXRjaExvYWRpbmciLCJjcmVhdGVEZWZlcnJlZFJzYyIsImNhY2hlTm9kZSIsInRhc2tTdGF0ZSIsInNlcnZlclN0YXRlIiwidGFza1N0YXRlQ2hpbGRyZW4iLCJzZXJ2ZXJTdGF0ZUNoaWxkcmVuIiwiZGF0YUNoaWxkcmVuIiwidGFza1N0YXRlQ2hpbGQiLCJzZXJ2ZXJTdGF0ZUNoaWxkIiwiZGF0YUNoaWxkIiwic2VnbWVudE1hcENoaWxkIiwidGFza1NlZ21lbnRDaGlsZCIsInRhc2tTZWdtZW50S2V5Q2hpbGQiLCJjYWNoZU5vZGVDaGlsZCIsImFib3J0UGVuZGluZ0NhY2hlTm9kZSIsImR5bmFtaWNTZWdtZW50RGF0YSIsImlzRGVmZXJyZWRSc2MiLCJyZXNvbHZlIiwidmFsdWVzIiwicmVqZWN0IiwibmV3UGFyYWxsZWxSb3V0ZXMiLCJzaG91bGRVc2VQcmVmZXRjaCIsInN0YXR1cyIsIkRFRkVSUkVEIiwiU3ltYm9sIiwidmFsdWUiLCJ0YWciLCJwZW5kaW5nUnNjIiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImZ1bGZpbGxlZFJzYyIsInJlamVjdGVkUnNjIiwicmVhc29uIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js ***! \*****************************************************************************************/ /***/ ((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 DYNAMIC_STALETIME_MS: function() {\n return DYNAMIC_STALETIME_MS;\n },\n STATIC_STALETIME_MS: function() {\n return STATIC_STALETIME_MS;\n },\n createSeededPrefetchCacheEntry: function() {\n return createSeededPrefetchCacheEntry;\n },\n getOrCreatePrefetchCacheEntry: function() {\n return getOrCreatePrefetchCacheEntry;\n },\n prunePrefetchCache: function() {\n return prunePrefetchCache;\n }\n});\nconst _fetchserverresponse = __webpack_require__(/*! ./fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst INTERCEPTION_CACHE_KEY_MARKER = '%';\n/**\n * Creates a cache key for the router prefetch cache\n *\n * @param url - The URL being navigated to\n * @param nextUrl - an internal URL, primarily used for handling rewrites. Defaults to '/'.\n * @return The generated prefetch cache key.\n */ function createPrefetchCacheKeyImpl(url, includeSearchParams, prefix) {\n // Initially we only use the pathname as the cache key. We don't want to include\n // search params so that multiple URLs with the same search parameter can re-use\n // loading states.\n let pathnameFromUrl = url.pathname;\n // RSC responses can differ based on search params, specifically in the case where we aren't\n // returning a partial response (ie with `PrefetchKind.AUTO`).\n // In the auto case, since loading.js & layout.js won't have access to search params,\n // we can safely re-use that cache entry. But for full prefetches, we should not\n // re-use the cache entry as the response may differ.\n if (includeSearchParams) {\n // if we have a full prefetch, we can include the search param in the key,\n // as we'll be getting back a full response. The server might have read the search\n // params when generating the full response.\n pathnameFromUrl += url.search;\n }\n if (prefix) {\n return \"\" + prefix + INTERCEPTION_CACHE_KEY_MARKER + pathnameFromUrl;\n }\n return pathnameFromUrl;\n}\nfunction createPrefetchCacheKey(url, kind, nextUrl) {\n return createPrefetchCacheKeyImpl(url, kind === _routerreducertypes.PrefetchKind.FULL, nextUrl);\n}\nfunction getExistingCacheEntry(url, kind, nextUrl, prefetchCache, allowAliasing) {\n if (kind === void 0) kind = _routerreducertypes.PrefetchKind.TEMPORARY;\n // We first check if there's a more specific interception route prefetch entry\n // This is because when we detect a prefetch that corresponds with an interception route, we prefix it with nextUrl (see `createPrefetchCacheKey`)\n // to avoid conflicts with other pages that may have the same URL but render different things depending on the `Next-URL` header.\n for (const maybeNextUrl of [\n nextUrl,\n null\n ]){\n const cacheKeyWithParams = createPrefetchCacheKeyImpl(url, true, maybeNextUrl);\n const cacheKeyWithoutParams = createPrefetchCacheKeyImpl(url, false, maybeNextUrl);\n // First, we check if we have a cache entry that exactly matches the URL\n const cacheKeyToUse = url.search ? cacheKeyWithParams : cacheKeyWithoutParams;\n const existingEntry = prefetchCache.get(cacheKeyToUse);\n if (existingEntry && allowAliasing) {\n // We know we're returning an aliased entry when the pathname matches but the search params don't,\n const isAliased = existingEntry.url.pathname === url.pathname && existingEntry.url.search !== url.search;\n if (isAliased) {\n return {\n ...existingEntry,\n aliased: true\n };\n }\n return existingEntry;\n }\n // If the request contains search params, and we're not doing a full prefetch, we can return the\n // param-less entry if it exists.\n // This is technically covered by the check at the bottom of this function, which iterates over cache entries,\n // but lets us arrive there quicker in the param-full case.\n const entryWithoutParams = prefetchCache.get(cacheKeyWithoutParams);\n if (false) {}\n }\n // If we've gotten to this point, we didn't find a specific cache entry that matched\n // the request URL.\n // We attempt a partial match by checking if there's a cache entry with the same pathname.\n // Regardless of what we find, since it doesn't correspond with the requested URL, we'll mark it \"aliased\".\n // This will signal to the router that it should only apply the loading state on the prefetched data.\n if (false) {}\n return undefined;\n}\nfunction getOrCreatePrefetchCacheEntry(param) {\n let { url, nextUrl, tree, prefetchCache, kind, allowAliasing = true } = param;\n const existingCacheEntry = getExistingCacheEntry(url, kind, nextUrl, prefetchCache, allowAliasing);\n if (existingCacheEntry) {\n // Grab the latest status of the cache entry and update it\n existingCacheEntry.status = getPrefetchEntryCacheStatus(existingCacheEntry);\n // when `kind` is provided, an explicit prefetch was requested.\n // if the requested prefetch is \"full\" and the current cache entry wasn't, we want to re-prefetch with the new intent\n const switchedToFullPrefetch = existingCacheEntry.kind !== _routerreducertypes.PrefetchKind.FULL && kind === _routerreducertypes.PrefetchKind.FULL;\n if (switchedToFullPrefetch) {\n // If we switched to a full prefetch, validate that the existing cache entry contained partial data.\n // It's possible that the cache entry was seeded with full data but has a cache type of \"auto\" (ie when cache entries\n // are seeded but without a prefetch intent)\n existingCacheEntry.data.then((prefetchResponse)=>{\n const isFullPrefetch = Array.isArray(prefetchResponse.flightData) && prefetchResponse.flightData.some((flightData)=>{\n // If we started rendering from the root and we returned RSC data (seedData), we already had a full prefetch.\n return flightData.isRootRender && flightData.seedData !== null;\n });\n if (!isFullPrefetch) {\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n // If we didn't get an explicit prefetch kind, we want to set a temporary kind\n // rather than assuming the same intent as the previous entry, to be consistent with how we\n // lazily create prefetch entries when intent is left unspecified.\n kind: kind != null ? kind : _routerreducertypes.PrefetchKind.TEMPORARY\n });\n }\n });\n }\n // If the existing cache entry was marked as temporary, it means it was lazily created when attempting to get an entry,\n // where we didn't have the prefetch intent. Now that we have the intent (in `kind`), we want to update the entry to the more accurate kind.\n if (kind && existingCacheEntry.kind === _routerreducertypes.PrefetchKind.TEMPORARY) {\n existingCacheEntry.kind = kind;\n }\n // We've determined that the existing entry we found is still valid, so we return it.\n return existingCacheEntry;\n }\n // If we didn't return an entry, create a new one.\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n kind: kind || _routerreducertypes.PrefetchKind.TEMPORARY\n });\n}\n/*\n * Used to take an existing cache entry and prefix it with the nextUrl, if it exists.\n * This ensures that we don't have conflicting cache entries for the same URL (as is the case with route interception).\n */ function prefixExistingPrefetchCacheEntry(param) {\n let { url, nextUrl, prefetchCache, existingCacheKey } = param;\n const existingCacheEntry = prefetchCache.get(existingCacheKey);\n if (!existingCacheEntry) {\n // no-op -- there wasn't an entry to move\n return;\n }\n const newCacheKey = createPrefetchCacheKey(url, existingCacheEntry.kind, nextUrl);\n prefetchCache.set(newCacheKey, {\n ...existingCacheEntry,\n key: newCacheKey\n });\n prefetchCache.delete(existingCacheKey);\n return newCacheKey;\n}\nfunction createSeededPrefetchCacheEntry(param) {\n let { nextUrl, tree, prefetchCache, url, data, kind } = param;\n // The initial cache entry technically includes full data, but it isn't explicitly prefetched -- we just seed the\n // prefetch cache so that we can skip an extra prefetch request later, since we already have the data.\n // if the prefetch corresponds with an interception route, we use the nextUrl to prefix the cache key\n const prefetchCacheKey = data.couldBeIntercepted ? createPrefetchCacheKey(url, kind, nextUrl) : createPrefetchCacheKey(url, kind);\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data: Promise.resolve(data),\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: Date.now(),\n staleTime: data.staleTime,\n key: prefetchCacheKey,\n status: _routerreducertypes.PrefetchCacheEntryStatus.fresh,\n url\n };\n prefetchCache.set(prefetchCacheKey, prefetchEntry);\n return prefetchEntry;\n}\n/**\n * Creates a prefetch entry entry and enqueues a fetch request to retrieve the data.\n */ function createLazyPrefetchEntry(param) {\n let { url, kind, tree, nextUrl, prefetchCache } = param;\n const prefetchCacheKey = createPrefetchCacheKey(url, kind);\n // initiates the fetch request for the prefetch and attaches a listener\n // to the promise to update the prefetch cache entry when the promise resolves (if necessary)\n const data = _prefetchreducer.prefetchQueue.enqueue(()=>(0, _fetchserverresponse.fetchServerResponse)(url, {\n flightRouterState: tree,\n nextUrl,\n prefetchKind: kind\n }).then((prefetchResponse)=>{\n // TODO: `fetchServerResponse` should be more tighly coupled to these prefetch cache operations\n // to avoid drift between this cache key prefixing logic\n // (which is currently directly influenced by the server response)\n let newCacheKey;\n if (prefetchResponse.couldBeIntercepted) {\n // Determine if we need to prefix the cache key with the nextUrl\n newCacheKey = prefixExistingPrefetchCacheEntry({\n url,\n existingCacheKey: prefetchCacheKey,\n nextUrl,\n prefetchCache\n });\n }\n // If the prefetch was a cache hit, we want to update the existing cache entry to reflect that it was a full prefetch.\n // This is because we know that a static response will contain the full RSC payload, and can be updated to respect the `static`\n // staleTime.\n if (prefetchResponse.prerendered) {\n const existingCacheEntry = prefetchCache.get(newCacheKey != null ? newCacheKey : prefetchCacheKey);\n if (existingCacheEntry) {\n existingCacheEntry.kind = _routerreducertypes.PrefetchKind.FULL;\n if (prefetchResponse.staleTime !== -1) {\n // This is the stale time that was collected by the server during\n // static generation. Use this in place of the default stale time.\n existingCacheEntry.staleTime = prefetchResponse.staleTime;\n }\n }\n }\n return prefetchResponse;\n }));\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data,\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: null,\n staleTime: -1,\n key: prefetchCacheKey,\n status: _routerreducertypes.PrefetchCacheEntryStatus.fresh,\n url\n };\n prefetchCache.set(prefetchCacheKey, prefetchEntry);\n return prefetchEntry;\n}\nfunction prunePrefetchCache(prefetchCache) {\n for (const [href, prefetchCacheEntry] of prefetchCache){\n if (getPrefetchEntryCacheStatus(prefetchCacheEntry) === _routerreducertypes.PrefetchCacheEntryStatus.expired) {\n prefetchCache.delete(href);\n }\n }\n}\nconst DYNAMIC_STALETIME_MS = Number(\"0\") * 1000;\nconst STATIC_STALETIME_MS = Number(\"300\") * 1000;\nfunction getPrefetchEntryCacheStatus(param) {\n let { kind, prefetchTime, lastUsedTime } = param;\n // We will re-use the cache entry data for up to the `dynamic` staletime window.\n if (Date.now() < (lastUsedTime != null ? lastUsedTime : prefetchTime) + DYNAMIC_STALETIME_MS) {\n return lastUsedTime ? _routerreducertypes.PrefetchCacheEntryStatus.reusable : _routerreducertypes.PrefetchCacheEntryStatus.fresh;\n }\n // For \"auto\" prefetching, we'll re-use only the loading boundary for up to `static` staletime window.\n // A stale entry will only re-use the `loading` boundary, not the full data.\n // This will trigger a \"lazy fetch\" for the full data.\n if (kind === _routerreducertypes.PrefetchKind.AUTO) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return _routerreducertypes.PrefetchCacheEntryStatus.stale;\n }\n }\n // for \"full\" prefetching, we'll re-use the cache entry data for up to `static` staletime window.\n if (kind === _routerreducertypes.PrefetchKind.FULL) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return _routerreducertypes.PrefetchCacheEntryStatus.reusable;\n }\n }\n return _routerreducertypes.PrefetchCacheEntryStatus.expired;\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=prefetch-cache-utils.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHJlZmV0Y2gtY2FjaGUtdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNFlhQSxvQkFBb0I7ZUFBcEJBOztJQUdBQyxtQkFBbUI7ZUFBbkJBOztJQW5JR0MsZ0NBQThCO2VBQTlCQTs7SUE5R0FDLDZCQUE2QjtlQUE3QkE7O0lBK05BQyxrQkFBa0I7ZUFBbEJBOzs7aURBMVhUO2dEQU1BOzZDQUN1QjtBQUU5QixNQUFNQyxnQ0FBZ0M7QUFVdEM7Ozs7OztDQU1DLEdBQ0QsU0FBU0MsMkJBQ1BDLEdBQVEsRUFDUkMsbUJBQTRCLEVBQzVCQyxNQUFzQjtJQUV0QixnRkFBZ0Y7SUFDaEYsZ0ZBQWdGO0lBQ2hGLGtCQUFrQjtJQUNsQixJQUFJQyxrQkFBa0JILElBQUlJLFFBQVE7SUFFbEMsNEZBQTRGO0lBQzVGLDhEQUE4RDtJQUM5RCxxRkFBcUY7SUFDckYsZ0ZBQWdGO0lBQ2hGLHFEQUFxRDtJQUNyRCxJQUFJSCxxQkFBcUI7UUFDdkIsMEVBQTBFO1FBQzFFLGtGQUFrRjtRQUNsRiw0Q0FBNEM7UUFDNUNFLG1CQUFtQkgsSUFBSUssTUFBTTtJQUMvQjtJQUVBLElBQUlILFFBQVE7UUFDVixPQUFRLEtBQUVBLFNBQVNKLGdDQUFnQ0s7SUFDckQ7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU0csdUJBQ1BOLEdBQVEsRUFDUk8sSUFBOEIsRUFDOUJDLE9BQXVCO0lBRXZCLE9BQU9ULDJCQUEyQkMsS0FBS08sU0FBU0Usb0JBQUFBLFlBQVksQ0FBQ0MsSUFBSSxFQUFFRjtBQUNyRTtBQUVBLFNBQVNHLHNCQUNQWCxHQUFRLEVBQ1JPLElBQTJDLEVBQzNDQyxPQUFzQixFQUN0QkksYUFBOEMsRUFDOUNDLGFBQXNCO0lBSHRCTixJQUFBQSxTQUFBQSxLQUFBQSxHQUFBQSxPQUFxQkUsb0JBQUFBLFlBQVksQ0FBQ0ss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RyxLQUFLRixlQUFlakUscUJBQXFCO1lBQ25ELE9BQU9zRSxvQkFBQUEsd0JBQXdCLENBQUNjLFFBQVE7UUFDMUM7SUFDRjtJQUVBLE9BQU9kLG9CQUFBQSx3QkFBd0IsQ0FBQ1UsT0FBTztBQUN6QyIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9wcmVmZXRjaC1jYWNoZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmZXRjaFNlcnZlclJlc3BvbnNlLFxuICB0eXBlIEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQsXG59IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHtcbiAgUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLFxuICB0eXBlIFByZWZldGNoQ2FjaGVFbnRyeSxcbiAgUHJlZmV0Y2hLaW5kLFxuICB0eXBlIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxufSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgcHJlZmV0Y2hRdWV1ZSB9IGZyb20gJy4vcmVkdWNlcnMvcHJlZmV0Y2gtcmVkdWNlcidcblxuY29uc3QgSU5URVJDRVBUSU9OX0NBQ0hFX0tFWV9NQVJLRVIgPSAnJSdcblxuZXhwb3J0IHR5cGUgQWxpYXNlZFByZWZldGNoQ2FjaGVFbnRyeSA9IFByZWZldGNoQ2FjaGVFbnRyeSAmIHtcbiAgLyoqIFRoaXMgaXMgYSBzcGVjaWFsIHByb3BlcnR5IHRoYXQgaW5kaWNhdGVzIGEgcHJlZmV0Y2ggZW50cnkgYXNzb2NpYXRlZCB3aXRoIGEgZGlmZmVyZW50IFVSTFxuICAgKiB3YXMgcmV0dXJuZWQgcmF0aGVyIHRoYW4gdGhlIHJlcXVlc3RlZCBVUkwuIFRoaXMgc2lnbmFscyB0byB0aGUgcm91dGVyIHRoYXQgaXQgc2hvdWxkIG9ubHlcbiAgICogYXBwbHkgdGhlIHBhcnQgdGhhdCBkb2Vzbid0IGRlcGVuZCBvbiBzZWFyY2hQYXJhbXMgKHNwZWNpZmljYWxseSB0aGUgbG9hZGluZyBzdGF0ZSkuXG4gICAqL1xuICBhbGlhc2VkPzogYm9vbGVhblxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBjYWNoZSBrZXkgZm9yIHRoZSByb3V0ZXIgcHJlZmV0Y2ggY2FjaGVcbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCBiZWluZyBuYXZpZ2F0ZWQgdG9cbiAqIEBwYXJhbSBuZXh0VXJsIC0gYW4gaW50ZXJuYWwgVVJMLCBwcmltYXJpbHkgdXNlZCBmb3IgaGFuZGxpbmcgcmV3cml0ZXMuIERlZmF1bHRzIHRvICcvJy5cbiAqIEByZXR1cm4gVGhlIGdlbmVyYXRlZCBwcmVmZXRjaCBjYWNoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVByZWZldGNoQ2FjaGVLZXlJbXBsKFxuICB1cmw6IFVSTCxcbiAgaW5jbHVkZVNlYXJjaFBhcmFtczogYm9vbGVhbixcbiAgcHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuKSB7XG4gIC8vIEluaXRpYWxseSB3ZSBvbmx5IHVzZSB0aGUgcGF0aG5hbWUgYXMgdGhlIGNhY2hlIGtleS4gV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlXG4gIC8vIHNlYXJjaCBwYXJhbXMgc28gdGhhdCBtdWx0aXBsZSBVUkxzIHdpdGggdGhlIHNhbWUgc2VhcmNoIHBhcmFtZXRlciBjYW4gcmUtdXNlXG4gIC8vIGxvYWRpbmcgc3RhdGVzLlxuICBsZXQgcGF0aG5hbWVGcm9tVXJsID0gdXJsLnBhdGhuYW1lXG5cbiAgLy8gUlNDIHJlc3BvbnNlcyBjYW4gZGlmZmVyIGJhc2VkIG9uIHNlYXJjaCBwYXJhbXMsIHNwZWNpZmljYWxseSBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhcmVuJ3RcbiAgLy8gcmV0dXJuaW5nIGEgcGFydGlhbCByZXNwb25zZSAoaWUgd2l0aCBgUHJlZmV0Y2hLaW5kLkFVVE9gKS5cbiAgLy8gSW4gdGhlIGF1dG8gY2FzZSwgc2luY2UgbG9hZGluZy5qcyAmIGxheW91dC5qcyB3b24ndCBoYXZlIGFjY2VzcyB0byBzZWFyY2ggcGFyYW1zLFxuICAvLyB3ZSBjYW4gc2FmZWx5IHJlLXVzZSB0aGF0IGNhY2hlIGVudHJ5LiBCdXQgZm9yIGZ1bGwgcHJlZmV0Y2hlcywgd2Ugc2hvdWxkIG5vdFxuICAvLyByZS11c2UgdGhlIGNhY2hlIGVudHJ5IGFzIHRoZSByZXNwb25zZSBtYXkgZGlmZmVyLlxuICBpZiAoaW5jbHVkZVNlYXJjaFBhcmFtcykge1xuICAgIC8vIGlmIHdlIGhhdmUgYSBmdWxsIHByZWZldGNoLCB3ZSBjYW4gaW5jbHVkZSB0aGUgc2VhcmNoIHBhcmFtIGluIHRoZSBrZXksXG4gICAgLy8gYXMgd2UnbGwgYmUgZ2V0dGluZyBiYWNrIGEgZnVsbCByZXNwb25zZS4gVGhlIHNlcnZlciBtaWdodCBoYXZlIHJlYWQgdGhlIHNlYXJjaFxuICAgIC8vIHBhcmFtcyB3aGVuIGdlbmVyYXRpbmcgdGhlIGZ1bGwgcmVzcG9uc2UuXG4gICAgcGF0aG5hbWVGcm9tVXJsICs9IHVybC5zZWFyY2hcbiAgfVxuXG4gIGlmIChwcmVmaXgpIHtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7SU5URVJDRVBUSU9OX0NBQ0hFX0tFWV9NQVJLRVJ9JHtwYXRobmFtZUZyb21Vcmx9YFxuICB9XG5cbiAgcmV0dXJuIHBhdGhuYW1lRnJvbVVybFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVmZXRjaENhY2hlS2V5KFxuICB1cmw6IFVSTCxcbiAga2luZDogUHJlZmV0Y2hLaW5kIHwgdW5kZWZpbmVkLFxuICBuZXh0VXJsPzogc3RyaW5nIHwgbnVsbFxuKSB7XG4gIHJldHVybiBjcmVhdGVQcmVmZXRjaENhY2hlS2V5SW1wbCh1cmwsIGtpbmQgPT09IFByZWZldGNoS2luZC5GVUxMLCBuZXh0VXJsKVxufVxuXG5mdW5jdGlvbiBnZXRFeGlzdGluZ0NhY2hlRW50cnkoXG4gIHVybDogVVJMLFxuICBraW5kOiBQcmVmZXRjaEtpbmQgPSBQcmVmZXRjaEtpbmQuVEVNUE9SQVJZLFxuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsLFxuICBwcmVmZXRjaENhY2hlOiBNYXA8c3RyaW5nLCBQcmVmZXRjaENhY2hlRW50cnk+LFxuICBhbGxvd0FsaWFzaW5nOiBib29sZWFuXG4pOiBBbGlhc2VkUHJlZmV0Y2hDYWNoZUVudHJ5IHwgdW5kZWZpbmVkIHtcbiAgLy8gV2UgZmlyc3QgY2hlY2sgaWYgdGhlcmUncyBhIG1vcmUgc3BlY2lmaWMgaW50ZXJjZXB0aW9uIHJvdXRlIHByZWZldGNoIGVudHJ5XG4gIC8vIFRoaXMgaXMgYmVjYXVzZSB3aGVuIHdlIGRldGVjdCBhIHByZWZldGNoIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhbiBpbnRlcmNlcHRpb24gcm91dGUsIHdlIHByZWZpeCBpdCB3aXRoIG5leHRVcmwgKHNlZSBgY3JlYXRlUHJlZmV0Y2hDYWNoZUtleWApXG4gIC8vIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBhZ2VzIHRoYXQgbWF5IGhhdmUgdGhlIHNhbWUgVVJMIGJ1dCByZW5kZXIgZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gdGhlIGBOZXh0LVVSTGAgaGVhZGVyLlxuICBmb3IgKGNvbnN0IG1heWJlTmV4dFVybCBvZiBbbmV4dFVybCwgbnVsbF0pIHtcbiAgICBjb25zdCBjYWNoZUtleVdpdGhQYXJhbXMgPSBjcmVhdGVQcmVmZXRjaENhY2hlS2V5SW1wbChcbiAgICAgIHVybCxcbiAgICAgIHRydWUsXG4gICAgICBtYXliZU5leHRVcmxcbiAgICApXG4gICAgY29uc3QgY2FjaGVLZXlXaXRob3V0UGFyYW1zID0gY3JlYXRlUHJlZmV0Y2hDYWNoZUtleUltcGwoXG4gICAgICB1cmwsXG4gICAgICBmYWxzZSxcbiAgICAgIG1heWJlTmV4dFVybFxuICAgIClcblxuICAgIC8vIEZpcnN0LCB3ZSBjaGVjayBpZiB3ZSBoYXZlIGEgY2FjaGUgZW50cnkgdGhhdCBleGFjdGx5IG1hdGNoZXMgdGhlIFVSTFxuICAgIGNvbnN0IGNhY2hlS2V5VG9Vc2UgPSB1cmwuc2VhcmNoXG4gICAgICA/IGNhY2hlS2V5V2l0aFBhcmFtc1xuICAgICAgOiBjYWNoZUtleVdpdGhvdXRQYXJhbXNcblxuICAgIGNvbnN0IGV4aXN0aW5nRW50cnkgPSBwcmVmZXRjaENhY2hlLmdldChjYWNoZUtleVRvVXNlKVxuICAgIGlmIChleGlzdGluZ0VudHJ5ICYmIGFsbG93QWxpYXNpbmcpIHtcbiAgICAgIC8vIFdlIGtub3cgd2UncmUgcmV0dXJuaW5nIGFuIGFsaWFzZWQgZW50cnkgd2hlbiB0aGUgcGF0aG5hbWUgbWF0Y2hlcyBidXQgdGhlIHNlYXJjaCBwYXJhbXMgZG9uJ3QsXG4gICAgICBjb25zdCBpc0FsaWFzZWQgPVxuICAgICAgICBleGlzdGluZ0VudHJ5LnVybC5wYXRobmFtZSA9PT0gdXJsLnBhdGhuYW1lICYmXG4gICAgICAgIGV4aXN0aW5nRW50cnkudXJsLnNlYXJjaCAhPT0gdXJsLnNlYXJjaFxuXG4gICAgICBpZiAoaXNBbGlhc2VkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZXhpc3RpbmdFbnRyeSxcbiAgICAgICAgICBhbGlhc2VkOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGlzdGluZ0VudHJ5XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHJlcXVlc3QgY29udGFpbnMgc2VhcmNoIHBhcmFtcywgYW5kIHdlJ3JlIG5vdCBkb2luZyBhIGZ1bGwgcHJlZmV0Y2gsIHdlIGNhbiByZXR1cm4gdGhlXG4gICAgLy8gcGFyYW0tbGVzcyBlbnRyeSBpZiBpdCBleGlzdHMuXG4gICAgLy8gVGhpcyBpcyB0ZWNobmljYWxseSBjb3ZlcmVkIGJ5IHRoZSBjaGVjayBhdCB0aGUgYm90dG9tIG9mIHRoaXMgZnVuY3Rpb24sIHdoaWNoIGl0ZXJhdGVzIG92ZXIgY2FjaGUgZW50cmllcyxcbiAgICAvLyBidXQgbGV0cyB1cyBhcnJpdmUgdGhlcmUgcXVpY2tlciBpbiB0aGUgcGFyYW0tZnVsbCBjYXNlLlxuICAgIGNvbnN0IGVudHJ5V2l0aG91dFBhcmFtcyA9IHByZWZldGNoQ2FjaGUuZ2V0KGNhY2hlS2V5V2l0aG91dFBhcmFtcylcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyAmJlxuICAgICAgYWxsb3dBbGlhc2luZyAmJlxuICAgICAgdXJsLnNlYXJjaCAmJlxuICAgICAga2luZCAhPT0gUHJlZmV0Y2hLaW5kLkZVTEwgJiZcbiAgICAgIGVudHJ5V2l0aG91dFBhcmFtcyAmJlxuICAgICAgLy8gV2Ugc2hvdWxkbid0IHJldHVybiB0aGUgYWxpYXNlZCBlbnRyeSBpZiBpdCB3YXMgcmVsb2NhdGVkIHRvIGEgbmV3IGNhY2hlIGtleS5cbiAgICAgIC8vIFNpbmNlIGl0J3MgcmV3cml0dGVuLCBpdCBjb3VsZCByZXNwb25kIHdpdGggYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBsb2FkaW5nIHN0YXRlLlxuICAgICAgIWVudHJ5V2l0aG91dFBhcmFtcy5rZXkuaW5jbHVkZXMoSU5URVJDRVBUSU9OX0NBQ0hFX0tFWV9NQVJLRVIpXG4gICAgKSB7XG4gICAgICByZXR1cm4geyAuLi5lbnRyeVdpdGhvdXRQYXJhbXMsIGFsaWFzZWQ6IHRydWUgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlJ3ZlIGdvdHRlbiB0byB0aGlzIHBvaW50LCB3ZSBkaWRuJ3QgZmluZCBhIHNwZWNpZmljIGNhY2hlIGVudHJ5IHRoYXQgbWF0Y2hlZFxuICAvLyB0aGUgcmVxdWVzdCBVUkwuXG4gIC8vIFdlIGF0dGVtcHQgYSBwYXJ0aWFsIG1hdGNoIGJ5IGNoZWNraW5nIGlmIHRoZXJlJ3MgYSBjYWNoZSBlbnRyeSB3aXRoIHRoZSBzYW1lIHBhdGhuYW1lLlxuICAvLyBSZWdhcmRsZXNzIG9mIHdoYXQgd2UgZmluZCwgc2luY2UgaXQgZG9lc24ndCBjb3JyZXNwb25kIHdpdGggdGhlIHJlcXVlc3RlZCBVUkwsIHdlJ2xsIG1hcmsgaXQgXCJhbGlhc2VkXCIuXG4gIC8vIFRoaXMgd2lsbCBzaWduYWwgdG8gdGhlIHJvdXRlciB0aGF0IGl0IHNob3VsZCBvbmx5IGFwcGx5IHRoZSBsb2FkaW5nIHN0YXRlIG9uIHRoZSBwcmVmZXRjaGVkIGRhdGEuXG4gIGlmIChcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyAmJlxuICAgIGtpbmQgIT09IFByZWZldGNoS2luZC5GVUxMICYmXG4gICAgYWxsb3dBbGlhc2luZ1xuICApIHtcbiAgICBmb3IgKGNvbnN0IGNhY2hlRW50cnkgb2YgcHJlZmV0Y2hDYWNoZS52YWx1ZXMoKSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYWNoZUVudHJ5LnVybC5wYXRobmFtZSA9PT0gdXJsLnBhdGhuYW1lICYmXG4gICAgICAgIC8vIFdlIHNob3VsZG4ndCByZXR1cm4gdGhlIGFsaWFzZWQgZW50cnkgaWYgaXQgd2FzIHJlbG9jYXRlZCB0byBhIG5ldyBjYWNoZSBrZXkuXG4gICAgICAgIC8vIFNpbmNlIGl0J3MgcmV3cml0dGVuLCBpdCBjb3VsZCByZXNwb25kIHdpdGggYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBsb2FkaW5nIHN0YXRlLlxuICAgICAgICAhY2FjaGVFbnRyeS5rZXkuaW5jbHVkZXMoSU5URVJDRVBUSU9OX0NBQ0hFX0tFWV9NQVJLRVIpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVFbnRyeSwgYWxpYXNlZDogdHJ1ZSB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIFJldHVybnMgYSBwcmVmZXRjaCBjYWNoZSBlbnRyeSBpZiBvbmUgZXhpc3RzLiBPdGhlcndpc2UgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGVucXVldWVzIGEgZmV0Y2ggcmVxdWVzdFxuICogdG8gcmV0cmlldmUgdGhlIHByZWZldGNoIGRhdGEgZnJvbSB0aGUgc2VydmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnkoe1xuICB1cmwsXG4gIG5leHRVcmwsXG4gIHRyZWUsXG4gIHByZWZldGNoQ2FjaGUsXG4gIGtpbmQsXG4gIGFsbG93QWxpYXNpbmcgPSB0cnVlLFxufTogUGljazxSZWFkb25seVJlZHVjZXJTdGF0ZSwgJ25leHRVcmwnIHwgJ3ByZWZldGNoQ2FjaGUnIHwgJ3RyZWUnPiAmIHtcbiAgdXJsOiBVUkxcbiAga2luZD86IFByZWZldGNoS2luZFxuICBhbGxvd0FsaWFzaW5nOiBib29sZWFuXG59KTogQWxpYXNlZFByZWZldGNoQ2FjaGVFbnRyeSB7XG4gIGNvbnN0IGV4aXN0aW5nQ2FjaGVFbnRyeSA9IGdldEV4aXN0aW5nQ2FjaGVFbnRyeShcbiAgICB1cmwsXG4gICAga2luZCxcbiAgICBuZXh0VXJsLFxuICAgIHByZWZldGNoQ2FjaGUsXG4gICAgYWxsb3dBbGlhc2luZ1xuICApXG5cbiAgaWYgKGV4aXN0aW5nQ2FjaGVFbnRyeSkge1xuICAgIC8vIEdyYWIgdGhlIGxhdGVzdCBzdGF0dXMgb2YgdGhlIGNhY2hlIGVudHJ5IGFuZCB1cGRhdGUgaXRcbiAgICBleGlzdGluZ0NhY2hlRW50cnkuc3RhdHVzID0gZ2V0UHJlZmV0Y2hFbnRyeUNhY2hlU3RhdHVzKGV4aXN0aW5nQ2FjaGVFbnRyeSlcblxuICAgIC8vIHdoZW4gYGtpbmRgIGlzIHByb3ZpZGVkLCBhbiBleHBsaWNpdCBwcmVmZXRjaCB3YXMgcmVxdWVzdGVkLlxuICAgIC8vIGlmIHRoZSByZXF1ZXN0ZWQgcHJlZmV0Y2ggaXMgXCJmdWxsXCIgYW5kIHRoZSBjdXJyZW50IGNhY2hlIGVudHJ5IHdhc24ndCwgd2Ugd2FudCB0byByZS1wcmVmZXRjaCB3aXRoIHRoZSBuZXcgaW50ZW50XG4gICAgY29uc3Qgc3dpdGNoZWRUb0Z1bGxQcmVmZXRjaCA9XG4gICAgICBleGlzdGluZ0NhY2hlRW50cnkua2luZCAhPT0gUHJlZmV0Y2hLaW5kLkZVTEwgJiZcbiAgICAgIGtpbmQgPT09IFByZWZldGNoS2luZC5GVUxMXG5cbiAgICBpZiAoc3dpdGNoZWRUb0Z1bGxQcmVmZXRjaCkge1xuICAgICAgLy8gSWYgd2Ugc3dpdGNoZWQgdG8gYSBmdWxsIHByZWZldGNoLCB2YWxpZGF0ZSB0aGF0IHRoZSBleGlzdGluZyBjYWNoZSBlbnRyeSBjb250YWluZWQgcGFydGlhbCBkYXRhLlxuICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBjYWNoZSBlbnRyeSB3YXMgc2VlZGVkIHdpdGggZnVsbCBkYXRhIGJ1dCBoYXMgYSBjYWNoZSB0eXBlIG9mIFwiYXV0b1wiIChpZSB3aGVuIGNhY2hlIGVudHJpZXNcbiAgICAgIC8vIGFyZSBzZWVkZWQgYnV0IHdpdGhvdXQgYSBwcmVmZXRjaCBpbnRlbnQpXG4gICAgICBleGlzdGluZ0NhY2hlRW50cnkuZGF0YS50aGVuKChwcmVmZXRjaFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRnVsbFByZWZldGNoID1cbiAgICAgICAgICBBcnJheS5pc0FycmF5KHByZWZldGNoUmVzcG9uc2UuZmxpZ2h0RGF0YSkgJiZcbiAgICAgICAgICBwcmVmZXRjaFJlc3BvbnNlLmZsaWdodERhdGEuc29tZSgoZmxpZ2h0RGF0YSkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgd2Ugc3RhcnRlZCByZW5kZXJpbmcgZnJvbSB0aGUgcm9vdCBhbmQgd2UgcmV0dXJuZWQgUlNDIGRhdGEgKHNlZWREYXRhKSwgd2UgYWxyZWFkeSBoYWQgYSBmdWxsIHByZWZldGNoLlxuICAgICAgICAgICAgcmV0dXJuIGZsaWdodERhdGEuaXNSb290UmVuZGVyICYmIGZsaWdodERhdGEuc2VlZERhdGEgIT09IG51bGxcbiAgICAgICAgICB9KVxuXG4gICAgICAgIGlmICghaXNGdWxsUHJlZmV0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eVByZWZldGNoRW50cnkoe1xuICAgICAgICAgICAgdHJlZSxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIG5leHRVcmwsXG4gICAgICAgICAgICBwcmVmZXRjaENhY2hlLFxuICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGdldCBhbiBleHBsaWNpdCBwcmVmZXRjaCBraW5kLCB3ZSB3YW50IHRvIHNldCBhIHRlbXBvcmFyeSBraW5kXG4gICAgICAgICAgICAvLyByYXRoZXIgdGhhbiBhc3N1bWluZyB0aGUgc2FtZSBpbnRlbnQgYXMgdGhlIHByZXZpb3VzIGVudHJ5LCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdlXG4gICAgICAgICAgICAvLyBsYXppbHkgY3JlYXRlIHByZWZldGNoIGVudHJpZXMgd2hlbiBpbnRlbnQgaXMgbGVmdCB1bnNwZWNpZmllZC5cbiAgICAgICAgICAgIGtpbmQ6IGtpbmQgPz8gUHJlZmV0Y2hLaW5kLlRFTVBPUkFSWSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBleGlzdGluZyBjYWNoZSBlbnRyeSB3YXMgbWFya2VkIGFzIHRlbXBvcmFyeSwgaXQgbWVhbnMgaXQgd2FzIGxhemlseSBjcmVhdGVkIHdoZW4gYXR0ZW1wdGluZyB0byBnZXQgYW4gZW50cnksXG4gICAgLy8gd2hlcmUgd2UgZGlkbid0IGhhdmUgdGhlIHByZWZldGNoIGludGVudC4gTm93IHRoYXQgd2UgaGF2ZSB0aGUgaW50ZW50IChpbiBga2luZGApLCB3ZSB3YW50IHRvIHVwZGF0ZSB0aGUgZW50cnkgdG8gdGhlIG1vcmUgYWNjdXJhdGUga2luZC5cbiAgICBpZiAoa2luZCAmJiBleGlzdGluZ0NhY2hlRW50cnkua2luZCA9PT0gUHJlZmV0Y2hLaW5kLlRFTVBPUkFSWSkge1xuICAgICAgZXhpc3RpbmdDYWNoZUVudHJ5LmtpbmQgPSBraW5kXG4gICAgfVxuXG4gICAgLy8gV2UndmUgZGV0ZXJtaW5lZCB0aGF0IHRoZSBleGlzdGluZyBlbnRyeSB3ZSBmb3VuZCBpcyBzdGlsbCB2YWxpZCwgc28gd2UgcmV0dXJuIGl0LlxuICAgIHJldHVybiBleGlzdGluZ0NhY2hlRW50cnlcbiAgfVxuXG4gIC8vIElmIHdlIGRpZG4ndCByZXR1cm4gYW4gZW50cnksIGNyZWF0ZSBhIG5ldyBvbmUuXG4gIHJldHVybiBjcmVhdGVMYXp5UHJlZmV0Y2hFbnRyeSh7XG4gICAgdHJlZSxcbiAgICB1cmwsXG4gICAgbmV4dFVybCxcbiAgICBwcmVmZXRjaENhY2hlLFxuICAgIGtpbmQ6IGtpbmQgfHwgUHJlZmV0Y2hLaW5kLlRFTVBPUkFSWSxcbiAgfSlcbn1cblxuLypcbiAqIFVzZWQgdG8gdGFrZSBhbiBleGlzdGluZyBjYWNoZSBlbnRyeSBhbmQgcHJlZml4IGl0IHdpdGggdGhlIG5leHRVcmwsIGlmIGl0IGV4aXN0cy5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGhhdmUgY29uZmxpY3RpbmcgY2FjaGUgZW50cmllcyBmb3IgdGhlIHNhbWUgVVJMIChhcyBpcyB0aGUgY2FzZSB3aXRoIHJvdXRlIGludGVyY2VwdGlvbikuXG4gKi9cbmZ1bmN0aW9uIHByZWZpeEV4aXN0aW5nUHJlZmV0Y2hDYWNoZUVudHJ5KHtcbiAgdXJsLFxuICBuZXh0VXJsLFxuICBwcmVmZXRjaENhY2hlLFxuICBleGlzdGluZ0NhY2hlS2V5LFxufTogUGljazxSZWFkb25seVJlZHVjZXJTdGF0ZSwgJ25leHRVcmwnIHwgJ3ByZWZldGNoQ2FjaGUnPiAmIHtcbiAgdXJsOiBVUkxcbiAgZXhpc3RpbmdDYWNoZUtleTogc3RyaW5nXG59KSB7XG4gIGNvbnN0IGV4aXN0aW5nQ2FjaGVFbnRyeSA9IHByZWZldGNoQ2FjaGUuZ2V0KGV4aXN0aW5nQ2FjaGVLZXkpXG4gIGlmICghZXhpc3RpbmdDYWNoZUVudHJ5KSB7XG4gICAgLy8gbm8tb3AgLS0gdGhlcmUgd2Fzbid0IGFuIGVudHJ5IHRvIG1vdmVcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG5ld0NhY2hlS2V5ID0gY3JlYXRlUHJlZmV0Y2hDYWNoZUtleShcbiAgICB1cmwsXG4gICAgZXhpc3RpbmdDYWNoZUVudHJ5LmtpbmQsXG4gICAgbmV4dFVybFxuICApXG4gIHByZWZldGNoQ2FjaGUuc2V0KG5ld0NhY2hlS2V5LCB7IC4uLmV4aXN0aW5nQ2FjaGVFbnRyeSwga2V5OiBuZXdDYWNoZUtleSB9KVxuICBwcmVmZXRjaENhY2hlLmRlbGV0ZShleGlzdGluZ0NhY2hlS2V5KVxuXG4gIHJldHVybiBuZXdDYWNoZUtleVxufVxuXG4vKipcbiAqIFVzZSB0byBzZWVkIHRoZSBwcmVmZXRjaCBjYWNoZSB3aXRoIGRhdGEgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGZldGNoZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnkoe1xuICBuZXh0VXJsLFxuICB0cmVlLFxuICBwcmVmZXRjaENhY2hlLFxuICB1cmwsXG4gIGRhdGEsXG4gIGtpbmQsXG59OiBQaWNrPFJlYWRvbmx5UmVkdWNlclN0YXRlLCAnbmV4dFVybCcgfCAndHJlZScgfCAncHJlZmV0Y2hDYWNoZSc+ICYge1xuICB1cmw6IFVSTFxuICBkYXRhOiBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0XG4gIGtpbmQ6IFByZWZldGNoS2luZFxufSkge1xuICAvLyBUaGUgaW5pdGlhbCBjYWNoZSBlbnRyeSB0ZWNobmljYWxseSBpbmNsdWRlcyBmdWxsIGRhdGEsIGJ1dCBpdCBpc24ndCBleHBsaWNpdGx5IHByZWZldGNoZWQgLS0gd2UganVzdCBzZWVkIHRoZVxuICAvLyBwcmVmZXRjaCBjYWNoZSBzbyB0aGF0IHdlIGNhbiBza2lwIGFuIGV4dHJhIHByZWZldGNoIHJlcXVlc3QgbGF0ZXIsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgZGF0YS5cbiAgLy8gaWYgdGhlIHByZWZldGNoIGNvcnJlc3BvbmRzIHdpdGggYW4gaW50ZXJjZXB0aW9uIHJvdXRlLCB3ZSB1c2UgdGhlIG5leHRVcmwgdG8gcHJlZml4IHRoZSBjYWNoZSBrZXlcbiAgY29uc3QgcHJlZmV0Y2hDYWNoZUtleSA9IGRhdGEuY291bGRCZUludGVyY2VwdGVkXG4gICAgPyBjcmVhdGVQcmVmZXRjaENhY2hlS2V5KHVybCwga2luZCwgbmV4dFVybClcbiAgICA6IGNyZWF0ZVByZWZldGNoQ2FjaGVLZXkodXJsLCBraW5kKVxuXG4gIGNvbnN0IHByZWZldGNoRW50cnkgPSB7XG4gICAgdHJlZUF0VGltZU9mUHJlZmV0Y2g6IHRyZWUsXG4gICAgZGF0YTogUHJvbWlzZS5yZXNvbHZlKGRhdGEpLFxuICAgIGtpbmQsXG4gICAgcHJlZmV0Y2hUaW1lOiBEYXRlLm5vdygpLFxuICAgIGxhc3RVc2VkVGltZTogRGF0ZS5ub3coKSxcbiAgICBzdGFsZVRpbWU6IGRhdGEuc3RhbGVUaW1lLFxuICAgIGtleTogcHJlZmV0Y2hDYWNoZUtleSxcbiAgICBzdGF0dXM6IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5mcmVzaCxcbiAgICB1cmwsXG4gIH0gc2F0aXNmaWVzIFByZWZldGNoQ2FjaGVFbnRyeVxuXG4gIHByZWZldGNoQ2FjaGUuc2V0KHByZWZldGNoQ2FjaGVLZXksIHByZWZldGNoRW50cnkpXG5cbiAgcmV0dXJuIHByZWZldGNoRW50cnlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcHJlZmV0Y2ggZW50cnkgZW50cnkgYW5kIGVucXVldWVzIGEgZmV0Y2ggcmVxdWVzdCB0byByZXRyaWV2ZSB0aGUgZGF0YS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTGF6eVByZWZldGNoRW50cnkoe1xuICB1cmwsXG4gIGtpbmQsXG4gIHRyZWUsXG4gIG5leHRVcmwsXG4gIHByZWZldGNoQ2FjaGUsXG59OiBQaWNrPFJlYWRvbmx5UmVkdWNlclN0YXRlLCAnbmV4dFVybCcgfCAndHJlZScgfCAncHJlZmV0Y2hDYWNoZSc+ICYge1xuICB1cmw6IFVSTFxuICBraW5kOiBQcmVmZXRjaEtpbmRcbn0pOiBQcmVmZXRjaENhY2hlRW50cnkge1xuICBjb25zdCBwcmVmZXRjaENhY2hlS2V5ID0gY3JlYXRlUHJlZmV0Y2hDYWNoZUtleSh1cmwsIGtpbmQpXG5cbiAgLy8gaW5pdGlhdGVzIHRoZSBmZXRjaCByZXF1ZXN0IGZvciB0aGUgcHJlZmV0Y2ggYW5kIGF0dGFjaGVzIGEgbGlzdGVuZXJcbiAgLy8gdG8gdGhlIHByb21pc2UgdG8gdXBkYXRlIHRoZSBwcmVmZXRjaCBjYWNoZSBlbnRyeSB3aGVuIHRoZSBwcm9taXNlIHJlc29sdmVzIChpZiBuZWNlc3NhcnkpXG4gIGNvbnN0IGRhdGEgPSBwcmVmZXRjaFF1ZXVlLmVucXVldWUoKCkgPT5cbiAgICBmZXRjaFNlcnZlclJlc3BvbnNlKHVybCwge1xuICAgICAgZmxpZ2h0Um91dGVyU3RhdGU6IHRyZWUsXG4gICAgICBuZXh0VXJsLFxuICAgICAgcHJlZmV0Y2hLaW5kOiBraW5kLFxuICAgIH0pLnRoZW4oKHByZWZldGNoUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIFRPRE86IGBmZXRjaFNlcnZlclJlc3BvbnNlYCBzaG91bGQgYmUgbW9yZSB0aWdobHkgY291cGxlZCB0byB0aGVzZSBwcmVmZXRjaCBjYWNoZSBvcGVyYXRpb25zXG4gICAgICAvLyB0byBhdm9pZCBkcmlmdCBiZXR3ZWVuIHRoaXMgY2FjaGUga2V5IHByZWZpeGluZyBsb2dpY1xuICAgICAgLy8gKHdoaWNoIGlzIGN1cnJlbnRseSBkaXJlY3RseSBpbmZsdWVuY2VkIGJ5IHRoZSBzZXJ2ZXIgcmVzcG9uc2UpXG4gICAgICBsZXQgbmV3Q2FjaGVLZXlcblxuICAgICAgaWYgKHByZWZldGNoUmVzcG9uc2UuY291bGRCZUludGVyY2VwdGVkKSB7XG4gICAgICAgIC8vIERldGVybWluZSBpZiB3ZSBuZWVkIHRvIHByZWZpeCB0aGUgY2FjaGUga2V5IHdpdGggdGhlIG5leHRVcmxcbiAgICAgICAgbmV3Q2FjaGVLZXkgPSBwcmVmaXhFeGlzdGluZ1ByZWZldGNoQ2FjaGVFbnRyeSh7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGV4aXN0aW5nQ2FjaGVLZXk6IHByZWZldGNoQ2FjaGVLZXksXG4gICAgICAgICAgbmV4dFVybCxcbiAgICAgICAgICBwcmVmZXRjaENhY2hlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgcHJlZmV0Y2ggd2FzIGEgY2FjaGUgaGl0LCB3ZSB3YW50IHRvIHVwZGF0ZSB0aGUgZXhpc3RpbmcgY2FjaGUgZW50cnkgdG8gcmVmbGVjdCB0aGF0IGl0IHdhcyBhIGZ1bGwgcHJlZmV0Y2guXG4gICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2Uga25vdyB0aGF0IGEgc3RhdGljIHJlc3BvbnNlIHdpbGwgY29udGFpbiB0aGUgZnVsbCBSU0MgcGF5bG9hZCwgYW5kIGNhbiBiZSB1cGRhdGVkIHRvIHJlc3BlY3QgdGhlIGBzdGF0aWNgXG4gICAgICAvLyBzdGFsZVRpbWUuXG4gICAgICBpZiAocHJlZmV0Y2hSZXNwb25zZS5wcmVyZW5kZXJlZCkge1xuICAgICAgICBjb25zdCBleGlzdGluZ0NhY2hlRW50cnkgPSBwcmVmZXRjaENhY2hlLmdldChcbiAgICAgICAgICAvLyBpZiB3ZSBwcmVmaXhlZCB0aGUgY2FjaGUga2V5IGR1ZSB0byByb3V0ZSBpbnRlcmNlcHRpb24sIHdlIHdhbnQgdG8gdXNlIHRoZSBuZXcga2V5LiBPdGhlcndpc2Ugd2UgdXNlIHRoZSBvcmlnaW5hbCBrZXlcbiAgICAgICAgICBuZXdDYWNoZUtleSA/PyBwcmVmZXRjaENhY2hlS2V5XG4gICAgICAgIClcbiAgICAgICAgaWYgKGV4aXN0aW5nQ2FjaGVFbnRyeSkge1xuICAgICAgICAgIGV4aXN0aW5nQ2FjaGVFbnRyeS5raW5kID0gUHJlZmV0Y2hLaW5kLkZVTExcbiAgICAgICAgICBpZiAocHJlZmV0Y2hSZXNwb25zZS5zdGFsZVRpbWUgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFsZSB0aW1lIHRoYXQgd2FzIGNvbGxlY3RlZCBieSB0aGUgc2VydmVyIGR1cmluZ1xuICAgICAgICAgICAgLy8gc3RhdGljIGdlbmVyYXRpb24uIFVzZSB0aGlzIGluIHBsYWNlIG9mIHRoZSBkZWZhdWx0IHN0YWxlIHRpbWUuXG4gICAgICAgICAgICBleGlzdGluZ0NhY2hlRW50cnkuc3RhbGVUaW1lID0gcHJlZmV0Y2hSZXNwb25zZS5zdGFsZVRpbWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZWZldGNoUmVzcG9uc2VcbiAgICB9KVxuICApXG5cbiAgY29uc3QgcHJlZmV0Y2hFbnRyeSA9IHtcbiAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaDogdHJlZSxcbiAgICBkYXRhLFxuICAgIGtpbmQsXG4gICAgcHJlZmV0Y2hUaW1lOiBEYXRlLm5vdygpLFxuICAgIGxhc3RVc2VkVGltZTogbnVsbCxcbiAgICBzdGFsZVRpbWU6IC0xLFxuICAgIGtleTogcHJlZmV0Y2hDYWNoZUtleSxcbiAgICBzdGF0dXM6IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5mcmVzaCxcbiAgICB1cmwsXG4gIH1cblxuICBwcmVmZXRjaENhY2hlLnNldChwcmVmZXRjaENhY2hlS2V5LCBwcmVmZXRjaEVudHJ5KVxuXG4gIHJldHVybiBwcmVmZXRjaEVudHJ5XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZVByZWZldGNoQ2FjaGUoXG4gIHByZWZldGNoQ2FjaGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlWydwcmVmZXRjaENhY2hlJ11cbikge1xuICBmb3IgKGNvbnN0IFtocmVmLCBwcmVmZXRjaENhY2hlRW50cnldIG9mIHByZWZldGNoQ2FjaGUpIHtcbiAgICBpZiAoXG4gICAgICBnZXRQcmVmZXRjaEVudHJ5Q2FjaGVTdGF0dXMocHJlZmV0Y2hDYWNoZUVudHJ5KSA9PT1cbiAgICAgIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5leHBpcmVkXG4gICAgKSB7XG4gICAgICBwcmVmZXRjaENhY2hlLmRlbGV0ZShocmVmKVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGVzZSB2YWx1ZXMgYXJlIHNldCBieSBgZGVmaW5lLWVudi1wbHVnaW5gIChiYXNlZCBvbiBgbmV4dENvbmZpZy5leHBlcmltZW50YWwuc3RhbGVUaW1lc2ApXG4vLyBhbmQgZGVmYXVsdCB0byA1IG1pbnV0ZXMgKHN0YXRpYykgLyAwIHNlY29uZHMgKGR5bmFtaWMpXG5leHBvcnQgY29uc3QgRFlOQU1JQ19TVEFMRVRJTUVfTVMgPVxuICBOdW1iZXIocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9ST1VURVJfRFlOQU1JQ19TVEFMRVRJTUUpICogMTAwMFxuXG5leHBvcnQgY29uc3QgU1RBVElDX1NUQUxFVElNRV9NUyA9XG4gIE51bWJlcihwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1JPVVRFUl9TVEFUSUNfU1RBTEVUSU1FKSAqIDEwMDBcblxuZnVuY3Rpb24gZ2V0UHJlZmV0Y2hFbnRyeUNhY2hlU3RhdHVzKHtcbiAga2luZCxcbiAgcHJlZmV0Y2hUaW1lLFxuICBsYXN0VXNlZFRpbWUsXG59OiBQcmVmZXRjaENhY2hlRW50cnkpOiBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMge1xuICAvLyBXZSB3aWxsIHJlLXVzZSB0aGUgY2FjaGUgZW50cnkgZGF0YSBmb3IgdXAgdG8gdGhlIGBkeW5hbWljYCBzdGFsZXRpbWUgd2luZG93LlxuICBpZiAoRGF0ZS5ub3coKSA8IChsYXN0VXNlZFRpbWUgPz8gcHJlZmV0Y2hUaW1lKSArIERZTkFNSUNfU1RBTEVUSU1FX01TKSB7XG4gICAgcmV0dXJuIGxhc3RVc2VkVGltZVxuICAgICAgPyBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMucmV1c2FibGVcbiAgICAgIDogUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmZyZXNoXG4gIH1cblxuICAvLyBGb3IgXCJhdXRvXCIgcHJlZmV0Y2hpbmcsIHdlJ2xsIHJlLXVzZSBvbmx5IHRoZSBsb2FkaW5nIGJvdW5kYXJ5IGZvciB1cCB0byBgc3RhdGljYCBzdGFsZXRpbWUgd2luZG93LlxuICAvLyBBIHN0YWxlIGVudHJ5IHdpbGwgb25seSByZS11c2UgdGhlIGBsb2FkaW5nYCBib3VuZGFyeSwgbm90IHRoZSBmdWxsIGRhdGEuXG4gIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGEgXCJsYXp5IGZldGNoXCIgZm9yIHRoZSBmdWxsIGRhdGEuXG4gIGlmIChraW5kID09PSBQcmVmZXRjaEtpbmQuQVVUTykge1xuICAgIGlmIChEYXRlLm5vdygpIDwgcHJlZmV0Y2hUaW1lICsgU1RBVElDX1NUQUxFVElNRV9NUykge1xuICAgICAgcmV0dXJuIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5zdGFsZVxuICAgIH1cbiAgfVxuXG4gIC8vIGZvciBcImZ1bGxcIiBwcmVmZXRjaGluZywgd2UnbGwgcmUtdXNlIHRoZSBjYWNoZSBlbnRyeSBkYXRhIGZvciB1cCB0byBgc3RhdGljYCBzdGFsZXRpbWUgd2luZG93LlxuICBpZiAoa2luZCA9PT0gUHJlZmV0Y2hLaW5kLkZVTEwpIHtcbiAgICBpZiAoRGF0ZS5ub3coKSA8IHByZWZldGNoVGltZSArIFNUQVRJQ19TVEFMRVRJTUVfTVMpIHtcbiAgICAgIHJldHVybiBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMucmV1c2FibGVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmV4cGlyZWRcbn1cbiJdLCJuYW1lcyI6WyJEWU5BTUlDX1NUQUxFVElNRV9NUyIsIlNUQVRJQ19TVEFMRVRJTUVfTVMiLCJjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnkiLCJnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSIsInBydW5lUHJlZmV0Y2hDYWNoZSIsIklOVEVSQ0VQVElPTl9DQUNIRV9LRVlfTUFSS0VSIiwiY3JlYXRlUHJlZmV0Y2hDYWNoZUtleUltcGwiLCJ1cmwiLCJpbmNsdWRlU2VhcmNoUGFyYW1zIiwicHJlZml4IiwicGF0aG5hbWVGcm9tVXJsIiwicGF0aG5hbWUiLCJzZWFyY2giLCJjcmVhdGVQcmVmZXRjaENhY2hlS2V5Iiwia2luZCIsIm5leHRVcmwiLCJQcmVmZXRjaEtpbmQiLCJGVUxMIiwiZ2V0RXhpc3RpbmdDYWNoZUVudHJ5IiwicHJlZmV0Y2hDYWNoZSIsImFsbG93QWxpYXNpbmciLCJURU1QT1JBUlkiLCJtYXliZU5leHRVcmwiLCJjYWNoZUtleVdpdGhQYXJhbXMiLCJjYWNoZUtleVdpdGhvdXRQYXJhbXMiLCJjYWNoZUtleVRvVXNlIiwiZXhpc3RpbmdFbnRyeSIsImdldCIsImlzQWxpYXNlZCIsImFsaWFzZWQiLCJlbnRyeVdpdGhvdXRQYXJhbXMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJrZXkiLCJpbmNsdWRlcyIsImNhY2hlRW50cnkiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJ0cmVlIiwiZXhpc3RpbmdDYWNoZUVudHJ5Iiwic3RhdHVzIiwiZ2V0UHJlZmV0Y2hFbnRyeUNhY2hlU3RhdHVzIiwic3dpdGNoZWRUb0Z1bGxQcmVmZXRjaCIsImRhdGEiLCJ0aGVuIiwicHJlZmV0Y2hSZXNwb25zZSIsImlzRnVsbFByZWZldGNoIiwiQXJyYXkiLCJpc0FycmF5IiwiZmxpZ2h0RGF0YSIsInNvbWUiLCJpc1Jvb3RSZW5kZXIiLCJzZWVkRGF0YSIsImNyZWF0ZUxhenlQcmVmZXRjaEVudHJ5IiwicHJlZml4RXhpc3RpbmdQcmVmZXRjaENhY2hlRW50cnkiLCJleGlzdGluZ0NhY2hlS2V5IiwibmV3Q2FjaGVLZXkiLCJzZXQiLCJkZWxldGUiLCJwcmVmZXRjaENhY2hlS2V5IiwiY291bGRCZUludGVyY2VwdGVkIiwicHJlZmV0Y2hFbnRyeSIsInRyZWVBdFRpbWVPZlByZWZldGNoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwcmVmZXRjaFRpbWUiLCJEYXRlIiwibm93IiwibGFzdFVzZWRUaW1lIiwic3RhbGVUaW1lIiwiUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzIiwiZnJlc2giLCJwcmVmZXRjaFF1ZXVlIiwiZW5xdWV1ZSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsInByZWZldGNoS2luZCIsInByZXJlbmRlcmVkIiwiaHJlZiIsInByZWZldGNoQ2FjaGVFbnRyeSIsImV4cGlyZWQiLCJOdW1iZXIiLCJfX05FWFRfQ0xJRU5UX1JPVVRFUl9EWU5BTUlDX1NUQUxFVElNRSIsIl9fTkVYVF9DTElFTlRfUk9VVEVSX1NUQVRJQ19TVEFMRVRJTUUiLCJyZXVzYWJsZSIsIkFVVE8iLCJzdGFsZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js": /*!************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js ***! \************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findHeadInCache\", ({\n enumerable: true,\n get: function() {\n return findHeadInCache;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _createroutercachekey = __webpack_require__(/*! ../create-router-cache-key */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction findHeadInCache(cache, parallelRoutes) {\n return findHeadInCacheImpl(cache, parallelRoutes, '', '');\n}\nfunction findHeadInCacheImpl(cache, parallelRoutes, keyPrefix, keyPrefixWithoutSearchParams) {\n const isLastItem = Object.keys(parallelRoutes).length === 0;\n if (isLastItem) {\n // Returns the entire Cache Node of the segment whose head we will render.\n return [\n cache,\n keyPrefix,\n keyPrefixWithoutSearchParams\n ];\n }\n // First try the 'children' parallel route if it exists\n // when starting from the \"root\", this corresponds with the main page component\n const parallelRoutesKeys = Object.keys(parallelRoutes).filter((key)=>key !== 'children');\n // if we are at the root, we need to check the children slot first\n if ('children' in parallelRoutes) {\n parallelRoutesKeys.unshift('children');\n }\n for (const key of parallelRoutesKeys){\n const [segment, childParallelRoutes] = parallelRoutes[key];\n // If the parallel is not matched and using the default segment,\n // skip searching the head from it.\n if (segment === _segment.DEFAULT_SEGMENT_KEY) {\n continue;\n }\n const childSegmentMap = cache.parallelRoutes.get(key);\n if (!childSegmentMap) {\n continue;\n }\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const cacheKeyWithoutSearchParams = (0, _createroutercachekey.createRouterCacheKey)(segment, true);\n const cacheNode = childSegmentMap.get(cacheKey);\n if (!cacheNode) {\n continue;\n }\n const item = findHeadInCacheImpl(cacheNode, childParallelRoutes, keyPrefix + '/' + cacheKey, keyPrefix + '/' + cacheKeyWithoutSearchParams);\n if (item) {\n return item;\n }\n }\n return null;\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=find-head-in-cache.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZmluZC1oZWFkLWluLWNhY2hlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBS2dCQTs7O2VBQUFBOzs7cUNBSG9CO2tEQUNDO0FBRTlCLFNBQVNBLGdCQUNkQyxLQUFnQixFQUNoQkMsY0FBb0M7SUFFcEMsT0FBT0Msb0JBQW9CRixPQUFPQyxnQkFBZ0IsSUFBSTtBQUN4RDtBQUVBLFNBQVNDLG9CQUNQRixLQUFnQixFQUNoQkMsY0FBb0MsRUFDcENFLFNBQWlCLEVBQ2pCQyw0QkFBb0M7SUFFcEMsTUFBTUMsYUFBYUMsT0FBT0MsSUFBSSxDQUFDTixnQkFBZ0JPLE1BQU0sS0FBSztJQUMxRCxJQUFJSCxZQUFZO1FBQ2QsMEVBQTBFO1FBQzFFLE9BQU87WUFBQ0w7WUFBT0c7WUFBV0M7U0FBNkI7SUFDekQ7SUFFQSx1REFBdUQ7SUFDdkQsK0VBQStFO0lBQy9FLE1BQU1LLHFCQUFxQkgsT0FBT0MsSUFBSSxDQUFDTixnQkFBZ0JTLE1BQU0sQ0FDM0QsQ0FBQ0MsTUFBUUEsUUFBUTtJQUduQixrRUFBa0U7SUFDbEUsSUFBSSxjQUFjVixnQkFBZ0I7UUFDaENRLG1CQUFtQkcsT0FBTyxDQUFDO0lBQzdCO0lBRUEsS0FBSyxNQUFNRCxPQUFPRixtQkFBb0I7UUFDcEMsTUFBTSxDQUFDSSxTQUFTQyxvQkFBb0IsR0FBR2IsY0FBYyxDQUFDVSxJQUFJO1FBQzFELGdFQUFnRTtRQUNoRSxtQ0FBbUM7UUFDbkMsSUFBSUUsWUFBWUUsU0FBQUEsbUJBQW1CLEVBQUU7WUFDbkM7UUFDRjtRQUNBLE1BQU1DLGtCQUFrQmhCLE1BQU1DLGNBQWMsQ0FBQ2dCLEdBQUcsQ0FBQ047UUFDakQsSUFBSSxDQUFDSyxpQkFBaUI7WUFDcEI7UUFDRjtRQUVBLE1BQU1FLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJOO1FBQ3RDLE1BQU1PLDhCQUE4QkQsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQk4sU0FBUztRQUVsRSxNQUFNUSxZQUFZTCxnQkFBZ0JDLEdBQUcsQ0FBQ0M7UUFDdEMsSUFBSSxDQUFDRyxXQUFXO1lBQ2Q7UUFDRjtRQUVBLE1BQU1DLE9BQU9wQixvQkFDWG1CLFdBQ0FQLHFCQUNBWCxZQUFZLE1BQU1lLFVBQ2xCZixZQUFZLE1BQU1pQjtRQUdwQixJQUFJRSxNQUFNO1lBQ1IsT0FBT0E7UUFDVDtJQUNGO0lBRUEsT0FBTztBQUNUIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2ZpbmQtaGVhZC1pbi1jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgREVGQVVMVF9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi4vY3JlYXRlLXJvdXRlci1jYWNoZS1rZXknXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSGVhZEluQ2FjaGUoXG4gIGNhY2hlOiBDYWNoZU5vZGUsXG4gIHBhcmFsbGVsUm91dGVzOiBGbGlnaHRSb3V0ZXJTdGF0ZVsxXVxuKTogW0NhY2hlTm9kZSwgc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIHJldHVybiBmaW5kSGVhZEluQ2FjaGVJbXBsKGNhY2hlLCBwYXJhbGxlbFJvdXRlcywgJycsICcnKVxufVxuXG5mdW5jdGlvbiBmaW5kSGVhZEluQ2FjaGVJbXBsKFxuICBjYWNoZTogQ2FjaGVOb2RlLFxuICBwYXJhbGxlbFJvdXRlczogRmxpZ2h0Um91dGVyU3RhdGVbMV0sXG4gIGtleVByZWZpeDogc3RyaW5nLFxuICBrZXlQcmVmaXhXaXRob3V0U2VhcmNoUGFyYW1zOiBzdHJpbmdcbik6IFtDYWNoZU5vZGUsIHN0cmluZywgc3RyaW5nXSB8IG51bGwge1xuICBjb25zdCBpc0xhc3RJdGVtID0gT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmxlbmd0aCA9PT0gMFxuICBpZiAoaXNMYXN0SXRlbSkge1xuICAgIC8vIFJldHVybnMgdGhlIGVudGlyZSBDYWNoZSBOb2RlIG9mIHRoZSBzZWdtZW50IHdob3NlIGhlYWQgd2Ugd2lsbCByZW5kZXIuXG4gICAgcmV0dXJuIFtjYWNoZSwga2V5UHJlZml4LCBrZXlQcmVmaXhXaXRob3V0U2VhcmNoUGFyYW1zXVxuICB9XG5cbiAgLy8gRmlyc3QgdHJ5IHRoZSAnY2hpbGRyZW4nIHBhcmFsbGVsIHJvdXRlIGlmIGl0IGV4aXN0c1xuICAvLyB3aGVuIHN0YXJ0aW5nIGZyb20gdGhlIFwicm9vdFwiLCB0aGlzIGNvcnJlc3BvbmRzIHdpdGggdGhlIG1haW4gcGFnZSBjb21wb25lbnRcbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXNLZXlzID0gT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmZpbHRlcihcbiAgICAoa2V5KSA9PiBrZXkgIT09ICdjaGlsZHJlbidcbiAgKVxuXG4gIC8vIGlmIHdlIGFyZSBhdCB0aGUgcm9vdCwgd2UgbmVlZCB0byBjaGVjayB0aGUgY2hpbGRyZW4gc2xvdCBmaXJzdFxuICBpZiAoJ2NoaWxkcmVuJyBpbiBwYXJhbGxlbFJvdXRlcykge1xuICAgIHBhcmFsbGVsUm91dGVzS2V5cy51bnNoaWZ0KCdjaGlsZHJlbicpXG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXJhbGxlbFJvdXRlc0tleXMpIHtcbiAgICBjb25zdCBbc2VnbWVudCwgY2hpbGRQYXJhbGxlbFJvdXRlc10gPSBwYXJhbGxlbFJvdXRlc1trZXldXG4gICAgLy8gSWYgdGhlIHBhcmFsbGVsIGlzIG5vdCBtYXRjaGVkIGFuZCB1c2luZyB0aGUgZGVmYXVsdCBzZWdtZW50LFxuICAgIC8vIHNraXAgc2VhcmNoaW5nIHRoZSBoZWFkIGZyb20gaXQuXG4gICAgaWYgKHNlZ21lbnQgPT09IERFRkFVTFRfU0VHTUVOVF9LRVkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGNoaWxkU2VnbWVudE1hcCA9IGNhY2hlLnBhcmFsbGVsUm91dGVzLmdldChrZXkpXG4gICAgaWYgKCFjaGlsZFNlZ21lbnRNYXApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50KVxuICAgIGNvbnN0IGNhY2hlS2V5V2l0aG91dFNlYXJjaFBhcmFtcyA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQsIHRydWUpXG5cbiAgICBjb25zdCBjYWNoZU5vZGUgPSBjaGlsZFNlZ21lbnRNYXAuZ2V0KGNhY2hlS2V5KVxuICAgIGlmICghY2FjaGVOb2RlKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSBmaW5kSGVhZEluQ2FjaGVJbXBsKFxuICAgICAgY2FjaGVOb2RlLFxuICAgICAgY2hpbGRQYXJhbGxlbFJvdXRlcyxcbiAgICAgIGtleVByZWZpeCArICcvJyArIGNhY2hlS2V5LFxuICAgICAga2V5UHJlZml4ICsgJy8nICsgY2FjaGVLZXlXaXRob3V0U2VhcmNoUGFyYW1zXG4gICAgKVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJmaW5kSGVhZEluQ2FjaGUiLCJjYWNoZSIsInBhcmFsbGVsUm91dGVzIiwiZmluZEhlYWRJbkNhY2hlSW1wbCIsImtleVByZWZpeCIsImtleVByZWZpeFdpdGhvdXRTZWFyY2hQYXJhbXMiLCJpc0xhc3RJdGVtIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInBhcmFsbGVsUm91dGVzS2V5cyIsImZpbHRlciIsImtleSIsInVuc2hpZnQiLCJzZWdtZW50IiwiY2hpbGRQYXJhbGxlbFJvdXRlcyIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJjaGlsZFNlZ21lbnRNYXAiLCJnZXQiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwiY2FjaGVLZXlXaXRob3V0U2VhcmNoUGFyYW1zIiwiY2FjaGVOb2RlIiwiaXRlbSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js": /*!***********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js ***! \***********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSegmentValue\", ({\n enumerable: true,\n get: function() {\n return getSegmentValue;\n }\n}));\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\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=get-segment-value.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZ2V0LXNlZ21lbnQtdmFsdWUuanMiLCJtYXBwaW5ncyI6Ijs7OzttREFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGdCQUFnQkMsT0FBZ0I7SUFDOUMsT0FBT0MsTUFBTUMsT0FBTyxDQUFDRixXQUFXQSxPQUFPLENBQUMsRUFBRSxHQUFHQTtBQUMvQyIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9nZXQtc2VnbWVudC12YWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlZ21lbnRWYWx1ZShzZWdtZW50OiBTZWdtZW50KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHNlZ21lbnQpID8gc2VnbWVudFsxXSA6IHNlZ21lbnRcbn1cbiJdLCJuYW1lcyI6WyJnZXRTZWdtZW50VmFsdWUiLCJzZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js": /*!********************************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js ***! \********************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasInterceptionRouteInCurrentTree\", ({\n enumerable: true,\n get: function() {\n return hasInterceptionRouteInCurrentTree;\n }\n}));\nconst _interceptionroutes = __webpack_require__(/*! ../../../../shared/lib/router/utils/interception-routes */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction hasInterceptionRouteInCurrentTree(param) {\n let [segment, parallelRoutes] = param;\n // If we have a dynamic segment, it's marked as an interception route by the presence of the `i` suffix.\n if (Array.isArray(segment) && (segment[2] === 'di' || segment[2] === 'ci')) {\n return true;\n }\n // If segment is not an array, apply the existing string-based check\n if (typeof segment === 'string' && (0, _interceptionroutes.isInterceptionRouteAppPath)(segment)) {\n return true;\n }\n // Iterate through parallelRoutes if they exist\n if (parallelRoutes) {\n for(const key in parallelRoutes){\n if (hasInterceptionRouteInCurrentTree(parallelRoutes[key])) {\n return true;\n }\n }\n }\n return 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=has-interception-route-in-current-tree.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUuanMiLCJtYXBwaW5ncyI6Ijs7OztxRUFHZ0JBOzs7ZUFBQUE7OztnREFGMkI7QUFFcEMsU0FBU0Esa0NBQWtDLEtBRzlCO0lBSDhCLEtBQ2hEQyxTQUNBQyxlQUNrQixHQUg4QjtJQUloRCx3R0FBd0c7SUFDeEcsSUFBSUMsTUFBTUMsT0FBTyxDQUFDSCxZQUFhQSxDQUFBQSxPQUFPLENBQUMsRUFBRSxLQUFLLFFBQVFBLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBRyxFQUFJO1FBQzFFLE9BQU87SUFDVDtJQUVBLG9FQUFvRTtJQUNwRSxJQUFJLE9BQU9BLFlBQVksWUFBWUksQ0FBQUEsR0FBQUEsb0JBQUFBLDBCQUFBQSxFQUEyQkosVUFBVTtRQUN0RSxPQUFPO0lBQ1Q7SUFFQSwrQ0FBK0M7SUFDL0MsSUFBSUMsZ0JBQWdCO1FBQ2xCLElBQUssTUFBTUksT0FBT0osZUFBZ0I7WUFDaEMsSUFBSUYsa0NBQWtDRSxjQUFjLENBQUNJLElBQUksR0FBRztnQkFDMUQsT0FBTztZQUNUO1FBQ0Y7SUFDRjtJQUVBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9oYXMtaW50ZXJjZXB0aW9uLXJvdXRlLWluLWN1cnJlbnQtdHJlZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVyY2VwdGlvbi1yb3V0ZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUoW1xuICBzZWdtZW50LFxuICBwYXJhbGxlbFJvdXRlcyxcbl06IEZsaWdodFJvdXRlclN0YXRlKTogYm9vbGVhbiB7XG4gIC8vIElmIHdlIGhhdmUgYSBkeW5hbWljIHNlZ21lbnQsIGl0J3MgbWFya2VkIGFzIGFuIGludGVyY2VwdGlvbiByb3V0ZSBieSB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBpYCBzdWZmaXguXG4gIGlmIChBcnJheS5pc0FycmF5KHNlZ21lbnQpICYmIChzZWdtZW50WzJdID09PSAnZGknIHx8IHNlZ21lbnRbMl0gPT09ICdjaScpKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIElmIHNlZ21lbnQgaXMgbm90IGFuIGFycmF5LCBhcHBseSB0aGUgZXhpc3Rpbmcgc3RyaW5nLWJhc2VkIGNoZWNrXG4gIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycgJiYgaXNJbnRlcmNlcHRpb25Sb3V0ZUFwcFBhdGgoc2VnbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIHBhcmFsbGVsUm91dGVzIGlmIHRoZXkgZXhpc3RcbiAgaWYgKHBhcmFsbGVsUm91dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICAgIGlmIChoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUocGFyYWxsZWxSb3V0ZXNba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdLCJuYW1lcyI6WyJoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aCIsImtleSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js": /*!*************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js ***! \*************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hmrRefreshReducer\", ({\n enumerable: true,\n get: function() {\n return hmrRefreshReducer;\n }\n}));\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\n// A version of refresh reducer that keeps the cache around instead of wiping all of it.\nfunction hmrRefreshReducerImpl(state, action) {\n const { origin } = action;\n const mutable = {};\n const href = state.canonicalUrl;\n mutable.preserveCustomHistoryState = false;\n const cache = (0, _approuter.createEmptyCacheNode)();\n // If the current tree was intercepted, the nextUrl should be included in the request.\n // This is to ensure that the refresh request doesn't get intercepted, accidentally triggering the interception route.\n const includeNextUrl = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree);\n // TODO-APP: verify that `href` is not an external url.\n // Fetch data from the root of the tree.\n const navigatedAt = Date.now();\n cache.lazyData = (0, _fetchserverresponse.fetchServerResponse)(new URL(href, origin), {\n flightRouterState: [\n state.tree[0],\n state.tree[1],\n state.tree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null,\n isHmrRefresh: true\n });\n return cache.lazyData.then((param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride } = param;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n // Remove cache.lazyData as it has been resolved at this point.\n cache.lazyData = null;\n let currentTree = state.tree;\n let currentCache = state.cache;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('REFRESH FAILED');\n return state;\n }\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, state.canonicalUrl);\n if (newTree === null) {\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, href, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverride) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n const applied = (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData);\n if (applied) {\n mutable.cache = cache;\n currentCache = cache;\n }\n mutable.patchedTree = newTree;\n mutable.canonicalUrl = href;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\n}\nfunction hmrRefreshReducerNoop(state, _action) {\n return state;\n}\nconst hmrRefreshReducer = false ? 0 : hmrRefreshReducerImpl;\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=hmr-refresh-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7O3FEQStIYUE7OztlQUFBQTs7O2lEQS9IdUI7K0NBQ0Y7eURBQ1U7eURBQ0E7NkNBT1Y7MkNBQ0o7NkNBQ0U7dUNBRUs7bURBQ0M7K0RBQ1k7QUFFbEQsd0ZBQXdGO0FBQ3hGLFNBQVNDLHNCQUNQQyxLQUEyQixFQUMzQkMsTUFBd0I7SUFFeEIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR0Q7SUFDbkIsTUFBTUUsVUFBbUIsQ0FBQztJQUMxQixNQUFNQyxPQUFPSixNQUFNSyxZQUFZO0lBRS9CRixRQUFRRywwQkFBMEIsR0FBRztJQUVyQyxNQUFNQyxRQUFtQkMsQ0FBQUEsR0FBQUEsV0FBQUEsb0JBQUFBO0lBQ3pCLHNGQUFzRjtJQUN0RixzSEFBc0g7SUFDdEgsTUFBTUMsaUJBQWlCQyxDQUFBQSxHQUFBQSxtQ0FBQUEsaUNBQWlDLEVBQUNWLE1BQU1XLElBQUk7SUFFbkUsdURBQXVEO0lBQ3ZELHdDQUF3QztJQUN4QyxNQUFNQyxjQUFjQyxLQUFLQyxHQUFHO0lBQzVCUCxNQUFNUSxRQUFRLEdBQUdDLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBQUEsRUFBb0IsSUFBSUMsSUFBSWIsTUFBTUYsU0FBUztRQUMxRGdCLG1CQUFtQjtZQUFDbEIsTUFBTVcsSUFBSSxDQUFDLEVBQUU7WUFBRVgsTUFBTVcsSUFBSSxDQUFDLEVBQUU7WUFBRVgsTUFBTVcsSUFBSSxDQUFDLEVBQUU7WUFBRTtTQUFVO1FBQzNFUSxTQUFTVixpQkFBaUJULE1BQU1tQixPQUFPLEdBQUc7UUFDMUNDLGNBQWM7SUFDaEI7SUFFQSxPQUFPYixNQUFNUSxRQUFRLENBQUNNLElBQUksQ0FDeEI7WUFBQyxFQUFFQyxVQUFVLEVBQUVqQixjQUFja0Isb0JBQW9CLEVBQUU7UUFDakQsNERBQTREO1FBQzVELElBQUksT0FBT0QsZUFBZSxVQUFVO1lBQ2xDLE9BQU9FLENBQUFBLEdBQUFBLGlCQUFBQSxpQkFBQUEsRUFDTHhCLE9BQ0FHLFNBQ0FtQixZQUNBdEIsTUFBTXlCLE9BQU8sQ0FBQ0MsV0FBVztRQUU3QjtRQUVBLCtEQUErRDtRQUMvRG5CLE1BQU1RLFFBQVEsR0FBRztRQUVqQixJQUFJWSxjQUFjM0IsTUFBTVcsSUFBSTtRQUM1QixJQUFJaUIsZUFBZTVCLE1BQU1PLEtBQUs7UUFFOUIsS0FBSyxNQUFNc0Isd0JBQXdCUCxXQUFZO1lBQzdDLE1BQU0sRUFBRVgsTUFBTW1CLFNBQVMsRUFBRUMsWUFBWSxFQUFFLEdBQUdGO1lBQzFDLElBQUksQ0FBQ0UsY0FBYztnQkFDakIsb0NBQW9DO2dCQUNwQ0MsUUFBUUMsR0FBRyxDQUFDO2dCQUNaLE9BQU9qQztZQUNUO1lBRUEsTUFBTWtDLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDZDtnQkFDQzthQUFHLEVBQ0pSLGFBQ0FHLFdBQ0E5QixNQUFNSyxZQUFZO1lBR3BCLElBQUk2QixZQUFZLE1BQU07Z0JBQ3BCLE9BQU9FLENBQUFBLEdBQUFBLHVCQUFBQSxxQkFBQUEsRUFBc0JwQyxPQUFPQyxRQUFRNkI7WUFDOUM7WUFFQSxJQUFJTyxDQUFBQSxHQUFBQSw2QkFBQUEsMkJBQUFBLEVBQTRCVixhQUFhTyxVQUFVO2dCQUNyRCxPQUFPVixDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQ0x4QixPQUNBRyxTQUNBQyxNQUNBSixNQUFNeUIsT0FBTyxDQUFDQyxXQUFXO1lBRTdCO1lBRUEsTUFBTVksMkJBQTJCZix1QkFDN0JnQixDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCaEIsd0JBQ2xCaUI7WUFFSixJQUFJakIsc0JBQXNCO2dCQUN4QnBCLFFBQVFFLFlBQVksR0FBR2lDO1lBQ3pCO1lBQ0EsTUFBTUcsVUFBVUMsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQ2Q5QixhQUNBZ0IsY0FDQXJCLE9BQ0FzQjtZQUdGLElBQUlZLFNBQVM7Z0JBQ1h0QyxRQUFRSSxLQUFLLEdBQUdBO2dCQUNoQnFCLGVBQWVyQjtZQUNqQjtZQUVBSixRQUFRd0MsV0FBVyxHQUFHVDtZQUN0Qi9CLFFBQVFFLFlBQVksR0FBR0Q7WUFFdkJ1QixjQUFjTztRQUNoQjtRQUNBLE9BQU9VLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWM1QyxPQUFPRztJQUM5QixHQUNBLElBQU1IO0FBRVY7QUFFQSxTQUFTNkMsc0JBQ1A3QyxLQUEyQixFQUMzQjhDLE9BQXlCO0lBRXpCLE9BQU85QztBQUNUO0FBRU8sTUFBTUYsb0JBQ1hpRCxNQUFvQixHQUNoQkYsQ0FBcUJBLEdBQ3JCOUMiLCJzb3VyY2VzIjpbIi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSB9IGZyb20gJy4uL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi4vaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQnXG5pbXBvcnQgdHlwZSB7XG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyU3RhdGUsXG4gIEhtclJlZnJlc2hBY3Rpb24sXG4gIE11dGFibGUsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgaGFuZGxlRXh0ZXJuYWxVcmwgfSBmcm9tICcuL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBoYW5kbGVNdXRhYmxlIH0gZnJvbSAnLi4vaGFuZGxlLW11dGFibGUnXG5pbXBvcnQgeyBhcHBseUZsaWdodERhdGEgfSBmcm9tICcuLi9hcHBseS1mbGlnaHQtZGF0YSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBoYW5kbGVTZWdtZW50TWlzbWF0Y2ggfSBmcm9tICcuLi9oYW5kbGUtc2VnbWVudC1taXNtYXRjaCdcbmltcG9ydCB7IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSB9IGZyb20gJy4vaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUnXG5cbi8vIEEgdmVyc2lvbiBvZiByZWZyZXNoIHJlZHVjZXIgdGhhdCBrZWVwcyB0aGUgY2FjaGUgYXJvdW5kIGluc3RlYWQgb2Ygd2lwaW5nIGFsbCBvZiBpdC5cbmZ1bmN0aW9uIGhtclJlZnJlc2hSZWR1Y2VySW1wbChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IEhtclJlZnJlc2hBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIGNvbnN0IHsgb3JpZ2luIH0gPSBhY3Rpb25cbiAgY29uc3QgbXV0YWJsZTogTXV0YWJsZSA9IHt9XG4gIGNvbnN0IGhyZWYgPSBzdGF0ZS5jYW5vbmljYWxVcmxcblxuICBtdXRhYmxlLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlID0gZmFsc2VcblxuICBjb25zdCBjYWNoZTogQ2FjaGVOb2RlID0gY3JlYXRlRW1wdHlDYWNoZU5vZGUoKVxuICAvLyBJZiB0aGUgY3VycmVudCB0cmVlIHdhcyBpbnRlcmNlcHRlZCwgdGhlIG5leHRVcmwgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXF1ZXN0LlxuICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSByZWZyZXNoIHJlcXVlc3QgZG9lc24ndCBnZXQgaW50ZXJjZXB0ZWQsIGFjY2lkZW50YWxseSB0cmlnZ2VyaW5nIHRoZSBpbnRlcmNlcHRpb24gcm91dGUuXG4gIGNvbnN0IGluY2x1ZGVOZXh0VXJsID0gaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG5cbiAgLy8gVE9ETy1BUFA6IHZlcmlmeSB0aGF0IGBocmVmYCBpcyBub3QgYW4gZXh0ZXJuYWwgdXJsLlxuICAvLyBGZXRjaCBkYXRhIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gIGNvbnN0IG5hdmlnYXRlZEF0ID0gRGF0ZS5ub3coKVxuICBjYWNoZS5sYXp5RGF0YSA9IGZldGNoU2VydmVyUmVzcG9uc2UobmV3IFVSTChocmVmLCBvcmlnaW4pLCB7XG4gICAgZmxpZ2h0Um91dGVyU3RhdGU6IFtzdGF0ZS50cmVlWzBdLCBzdGF0ZS50cmVlWzFdLCBzdGF0ZS50cmVlWzJdLCAncmVmZXRjaCddLFxuICAgIG5leHRVcmw6IGluY2x1ZGVOZXh0VXJsID8gc3RhdGUubmV4dFVybCA6IG51bGwsXG4gICAgaXNIbXJSZWZyZXNoOiB0cnVlLFxuICB9KVxuXG4gIHJldHVybiBjYWNoZS5sYXp5RGF0YS50aGVuKFxuICAgICh7IGZsaWdodERhdGEsIGNhbm9uaWNhbFVybDogY2Fub25pY2FsVXJsT3ZlcnJpZGUgfSkgPT4ge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgXG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBtdXRhYmxlLFxuICAgICAgICAgIGZsaWdodERhdGEsXG4gICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBjYWNoZS5sYXp5RGF0YSBhcyBpdCBoYXMgYmVlbiByZXNvbHZlZCBhdCB0aGlzIHBvaW50LlxuICAgICAgY2FjaGUubGF6eURhdGEgPSBudWxsXG5cbiAgICAgIGxldCBjdXJyZW50VHJlZSA9IHN0YXRlLnRyZWVcbiAgICAgIGxldCBjdXJyZW50Q2FjaGUgPSBzdGF0ZS5jYWNoZVxuXG4gICAgICBmb3IgKGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhIG9mIGZsaWdodERhdGEpIHtcbiAgICAgICAgY29uc3QgeyB0cmVlOiB0cmVlUGF0Y2gsIGlzUm9vdFJlbmRlciB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAgICAgaWYgKCFpc1Jvb3RSZW5kZXIpIHtcbiAgICAgICAgICAvLyBUT0RPLUFQUDogaGFuZGxlIHRoaXMgY2FzZSBiZXR0ZXJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUkVGUkVTSCBGQUlMRUQnKVxuICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgICAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgICAgICAgWycnXSxcbiAgICAgICAgICBjdXJyZW50VHJlZSxcbiAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgc3RhdGUuY2Fub25pY2FsVXJsXG4gICAgICAgIClcblxuICAgICAgICBpZiAobmV3VHJlZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVTZWdtZW50TWlzbWF0Y2goc3RhdGUsIGFjdGlvbiwgdHJlZVBhdGNoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZSwgbmV3VHJlZSkpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgICBocmVmLFxuICAgICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiA9IGNhbm9uaWNhbFVybE92ZXJyaWRlXG4gICAgICAgICAgPyBjcmVhdGVIcmVmRnJvbVVybChjYW5vbmljYWxVcmxPdmVycmlkZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChjYW5vbmljYWxVcmxPdmVycmlkZSkge1xuICAgICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5RmxpZ2h0RGF0YShcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBjdXJyZW50Q2FjaGUsXG4gICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChhcHBsaWVkKSB7XG4gICAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgICAgY3VycmVudENhY2hlID0gY2FjaGVcbiAgICAgICAgfVxuXG4gICAgICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSBuZXdUcmVlXG4gICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gaHJlZlxuXG4gICAgICAgIGN1cnJlbnRUcmVlID0gbmV3VHJlZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfSxcbiAgICAoKSA9PiBzdGF0ZVxuICApXG59XG5cbmZ1bmN0aW9uIGhtclJlZnJlc2hSZWR1Y2VyTm9vcChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBfYWN0aW9uOiBIbXJSZWZyZXNoQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGNvbnN0IGhtclJlZnJlc2hSZWR1Y2VyID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICAgID8gaG1yUmVmcmVzaFJlZHVjZXJOb29wXG4gICAgOiBobXJSZWZyZXNoUmVkdWNlckltcGxcbiJdLCJuYW1lcyI6WyJobXJSZWZyZXNoUmVkdWNlciIsImhtclJlZnJlc2hSZWR1Y2VySW1wbCIsInN0YXRlIiwiYWN0aW9uIiwib3JpZ2luIiwibXV0YWJsZSIsImhyZWYiLCJjYW5vbmljYWxVcmwiLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImNhY2hlIiwiY3JlYXRlRW1wdHlDYWNoZU5vZGUiLCJpbmNsdWRlTmV4dFVybCIsImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIsInRyZWUiLCJuYXZpZ2F0ZWRBdCIsIkRhdGUiLCJub3ciLCJsYXp5RGF0YSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIm5leHRVcmwiLCJpc0htclJlZnJlc2giLCJ0aGVuIiwiZmxpZ2h0RGF0YSIsImNhbm9uaWNhbFVybE92ZXJyaWRlIiwiaGFuZGxlRXh0ZXJuYWxVcmwiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJjdXJyZW50VHJlZSIsImN1cnJlbnRDYWNoZSIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwidHJlZVBhdGNoIiwiaXNSb290UmVuZGVyIiwiY29uc29sZSIsImxvZyIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJoYW5kbGVTZWdtZW50TWlzbWF0Y2giLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjYW5vbmljYWxVcmxPdmVycmlkZUhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsInVuZGVmaW5lZCIsImFwcGxpZWQiLCJhcHBseUZsaWdodERhdGEiLCJwYXRjaGVkVHJlZSIsImhhbmRsZU11dGFibGUiLCJobXJSZWZyZXNoUmVkdWNlck5vb3AiLCJfYWN0aW9uIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js": /*!**********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js ***! \**********************************************************************************************/ /***/ ((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 generateSegmentsFromPatch: function() {\n return generateSegmentsFromPatch;\n },\n handleExternalUrl: function() {\n return handleExternalUrl;\n },\n navigateReducer: function() {\n return navigateReducer;\n }\n});\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _invalidatecachebelowflightsegmentpath = __webpack_require__(/*! ../invalidate-cache-below-flight-segmentpath */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _shouldhardnavigate = __webpack_require__(/*! ../should-hard-navigate */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./prefetch-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _segment = __webpack_require__(/*! ../../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _clearcachenodedataforsegmentpath = __webpack_require__(/*! ../clear-cache-node-data-for-segment-path */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js\");\nconst _aliasedprefetchnavigations = __webpack_require__(/*! ../aliased-prefetch-navigations */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nfunction handleExternalUrl(state, mutable, url, pendingPush) {\n mutable.mpaNavigation = true;\n mutable.canonicalUrl = url;\n mutable.pendingPush = pendingPush;\n mutable.scrollableSegments = undefined;\n return (0, _handlemutable.handleMutable)(state, mutable);\n}\nfunction generateSegmentsFromPatch(flightRouterPatch) {\n const segments = [];\n const [segment, parallelRoutes] = flightRouterPatch;\n if (Object.keys(parallelRoutes).length === 0) {\n return [\n [\n segment\n ]\n ];\n }\n for (const [parallelRouteKey, parallelRoute] of Object.entries(parallelRoutes)){\n for (const childSegment of generateSegmentsFromPatch(parallelRoute)){\n // If the segment is empty, it means we are at the root of the tree\n if (segment === '') {\n segments.push([\n parallelRouteKey,\n ...childSegment\n ]);\n } else {\n segments.push([\n segment,\n parallelRouteKey,\n ...childSegment\n ]);\n }\n }\n }\n return segments;\n}\nfunction triggerLazyFetchForLeafSegments(newCache, currentCache, flightSegmentPath, treePatch) {\n let appliedPatch = false;\n newCache.rsc = currentCache.rsc;\n newCache.prefetchRsc = currentCache.prefetchRsc;\n newCache.loading = currentCache.loading;\n newCache.parallelRoutes = new Map(currentCache.parallelRoutes);\n const segmentPathsToFill = generateSegmentsFromPatch(treePatch).map((segment)=>[\n ...flightSegmentPath,\n ...segment\n ]);\n for (const segmentPaths of segmentPathsToFill){\n (0, _clearcachenodedataforsegmentpath.clearCacheNodeDataForSegmentPath)(newCache, currentCache, segmentPaths);\n appliedPatch = true;\n }\n return appliedPatch;\n}\nfunction handleNavigationResult(url, state, mutable, pendingPush, result) {\n switch(result.tag){\n case _segmentcache.NavigationResultTag.MPA:\n {\n // Perform an MPA navigation.\n const newUrl = result.data;\n return handleExternalUrl(state, mutable, newUrl, pendingPush);\n }\n case _segmentcache.NavigationResultTag.NoOp:\n {\n // The server responded with no change to the current page. However, if\n // the URL changed, we still need to update that.\n const newCanonicalUrl = result.data.canonicalUrl;\n mutable.canonicalUrl = newCanonicalUrl;\n // Check if the only thing that changed was the hash fragment.\n const oldUrl = new URL(state.canonicalUrl, url);\n const onlyHashChange = // navigations are always same-origin.\n url.pathname === oldUrl.pathname && url.search === oldUrl.search && url.hash !== oldUrl.hash;\n if (onlyHashChange) {\n // The only updated part of the URL is the hash.\n mutable.onlyHashChange = true;\n mutable.shouldScroll = result.data.shouldScroll;\n mutable.hashFragment = url.hash;\n // Setting this to an empty array triggers a scroll for all new and\n // updated segments. See `ScrollAndFocusHandler` for more details.\n mutable.scrollableSegments = [];\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n case _segmentcache.NavigationResultTag.Success:\n {\n // Received a new result.\n mutable.cache = result.data.cacheNode;\n mutable.patchedTree = result.data.flightRouterState;\n mutable.canonicalUrl = result.data.canonicalUrl;\n mutable.scrollableSegments = result.data.scrollableSegments;\n mutable.shouldScroll = result.data.shouldScroll;\n mutable.hashFragment = result.data.hash;\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n case _segmentcache.NavigationResultTag.Async:\n {\n return result.data.then((asyncResult)=>handleNavigationResult(url, state, mutable, pendingPush, asyncResult), // TODO: This matches the current behavior but we need to do something\n // better here if the network fails.\n ()=>{\n return state;\n });\n }\n default:\n {\n result;\n return state;\n }\n }\n}\nfunction navigateReducer(state, action) {\n const { url, isExternalUrl, navigateType, shouldScroll, allowAliasing } = action;\n const mutable = {};\n const { hash } = url;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n const pendingPush = navigateType === 'push';\n // we want to prune the prefetch cache on every navigation to avoid it growing too large\n (0, _prefetchcacheutils.prunePrefetchCache)(state.prefetchCache);\n mutable.preserveCustomHistoryState = false;\n mutable.pendingPush = pendingPush;\n if (isExternalUrl) {\n return handleExternalUrl(state, mutable, url.toString(), pendingPush);\n }\n // Handles case where `` tag is present,\n // which will trigger an MPA navigation.\n if (document.getElementById('__next-page-redirect')) {\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n if (false) {}\n const prefetchValues = (0, _prefetchcacheutils.getOrCreatePrefetchCacheEntry)({\n url,\n nextUrl: state.nextUrl,\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n allowAliasing\n });\n const { treeAtTimeOfPrefetch, data } = prefetchValues;\n _prefetchreducer.prefetchQueue.bump(data);\n return data.then((param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride, postponed } = param;\n const navigatedAt = Date.now();\n let isFirstRead = false;\n // we only want to mark this once\n if (!prefetchValues.lastUsedTime) {\n // important: we should only mark the cache node as dirty after we unsuspend from the call above\n prefetchValues.lastUsedTime = navigatedAt;\n isFirstRead = true;\n }\n if (prefetchValues.aliased) {\n // When alias is enabled, search param may not be included in the canonicalUrl.\n // But we want to set url to canonicalUrl so that we use redirected path for fetching dynamic data.\n const urlWithCanonicalPathname = new URL(url.href);\n if (canonicalUrlOverride) {\n urlWithCanonicalPathname.pathname = canonicalUrlOverride.pathname;\n }\n const result = (0, _aliasedprefetchnavigations.handleAliasedPrefetchEntry)(navigatedAt, state, flightData, urlWithCanonicalPathname, mutable);\n // We didn't return new router state because we didn't apply the aliased entry for some reason.\n // We'll re-invoke the navigation handler but ensure that we don't attempt to use the aliased entry. This\n // will create an on-demand prefetch entry.\n if (result === false) {\n return navigateReducer(state, {\n ...action,\n allowAliasing: false\n });\n }\n return result;\n }\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return handleExternalUrl(state, mutable, flightData, pendingPush);\n }\n const updatedCanonicalUrl = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : href;\n const onlyHashChange = !!hash && state.canonicalUrl.split('#', 1)[0] === updatedCanonicalUrl.split('#', 1)[0];\n // If only the hash has changed, the server hasn't sent us any new data. We can just update\n // the mutable properties responsible for URL and scroll handling and return early.\n if (onlyHashChange) {\n mutable.onlyHashChange = true;\n mutable.canonicalUrl = updatedCanonicalUrl;\n mutable.shouldScroll = shouldScroll;\n mutable.hashFragment = hash;\n mutable.scrollableSegments = [];\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n let currentTree = state.tree;\n let currentCache = state.cache;\n let scrollableSegments = [];\n for (const normalizedFlightData of flightData){\n const { pathToSegment: flightSegmentPath, seedData, head, isHeadPartial, isRootRender } = normalizedFlightData;\n let treePatch = normalizedFlightData.tree;\n // TODO-APP: remove ''\n const flightSegmentPathWithLeadingEmpty = [\n '',\n ...flightSegmentPath\n ];\n // Create new tree based on the flightSegmentPath and router state patch\n let newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, currentTree, treePatch, href);\n // If the tree patch can't be applied to the current tree then we use the tree at time of prefetch\n // TODO-APP: This should instead fill in the missing pieces in `currentTree` with the data from `treeAtTimeOfPrefetch`, then apply the patch.\n if (newTree === null) {\n newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, treeAtTimeOfPrefetch, treePatch, href);\n }\n if (newTree !== null) {\n if (// will send back a static response that's rendered from\n // the root. If for some reason it doesn't, we fall back to the\n // non-PPR implementation.\n // TODO: We should get rid of the else branch and do all navigations\n // via startPPRNavigation. The current structure is just\n // an incremental step.\n seedData && isRootRender && postponed) {\n const task = (0, _pprnavigations.startPPRNavigation)(navigatedAt, currentCache, currentTree, treePatch, seedData, head, isHeadPartial, false, scrollableSegments);\n if (task !== null) {\n if (task.route === null) {\n // Detected a change to the root layout. Perform an full-\n // page navigation.\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n // Use the tree computed by startPPRNavigation instead\n // of the one computed by applyRouterStatePatchToTree.\n // TODO: We should remove applyRouterStatePatchToTree\n // from the PPR path entirely.\n const patchedRouterState = task.route;\n newTree = patchedRouterState;\n const newCache = task.node;\n if (newCache !== null) {\n // We've created a new Cache Node tree that contains a prefetched\n // version of the next page. This can be rendered instantly.\n mutable.cache = newCache;\n }\n const dynamicRequestTree = task.dynamicRequestTree;\n if (dynamicRequestTree !== null) {\n // The prefetched tree has dynamic holes in it. We initiate a\n // dynamic request to fill them in.\n //\n // Do not block on the result. We'll immediately render the Cache\n // Node tree and suspend on the dynamic parts. When the request\n // comes in, we'll fill in missing data and ping React to\n // re-render. Unlike the lazy fetching model in the non-PPR\n // implementation, this is modeled as a single React update +\n // streaming, rather than multiple top-level updates. (However,\n // even in the new model, we'll still need to sometimes update the\n // root multiple times per navigation, like if the server sends us\n // a different response than we expected. For now, we revert back\n // to the lazy fetching mechanism in that case.)\n const dynamicRequest = (0, _fetchserverresponse.fetchServerResponse)(new URL(updatedCanonicalUrl, url.origin), {\n flightRouterState: dynamicRequestTree,\n nextUrl: state.nextUrl\n });\n (0, _pprnavigations.listenForDynamicRequest)(task, dynamicRequest);\n // We store the dynamic request on the `lazyData` property of the CacheNode\n // because we're not going to await the dynamic request here. Since we're not blocking\n // on the dynamic request, `layout-router` will\n // task.node.lazyData = dynamicRequest\n } else {\n // The prefetched tree does not contain dynamic holes — it's\n // fully static. We can skip the dynamic request.\n }\n } else {\n // Nothing changed, so reuse the old cache.\n // TODO: What if the head changed but not any of the segment data?\n // Is that possible? If so, we should clone the whole tree and\n // update the head.\n newTree = treePatch;\n }\n } else {\n // The static response does not include any dynamic holes, so\n // there's no need to do a second request.\n // TODO: As an incremental step this just reverts back to the\n // non-PPR implementation. We can simplify this branch further,\n // given that PPR prefetches are always static and return the whole\n // tree. Or in the meantime we could factor it out into a\n // separate function.\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n const cache = (0, _approuter.createEmptyCacheNode)();\n let applied = false;\n if (prefetchValues.status === _routerreducertypes.PrefetchCacheEntryStatus.stale && !isFirstRead) {\n // When we have a stale prefetch entry, we only want to re-use the loading state of the route we're navigating to, to support instant loading navigations\n // this will trigger a lazy fetch for the actual page data by nulling the `rsc` and `prefetchRsc` values for page data,\n // while copying over the `loading` for the segment that contains the page data.\n // We only do this on subsequent reads, as otherwise there'd be no loading data to re-use.\n // We skip this branch if only the hash fragment has changed, as we don't want to trigger a lazy fetch in that case\n applied = triggerLazyFetchForLeafSegments(cache, currentCache, flightSegmentPath, treePatch);\n // since we re-used the stale cache's loading state & refreshed the data,\n // update the `lastUsedTime` so that it can continue to be re-used for the next 30s\n prefetchValues.lastUsedTime = navigatedAt;\n } else {\n applied = (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData, prefetchValues);\n }\n const hardNavigate = (0, _shouldhardnavigate.shouldHardNavigate)(flightSegmentPathWithLeadingEmpty, currentTree);\n if (hardNavigate) {\n // Copy rsc for the root node of the cache.\n cache.rsc = currentCache.rsc;\n cache.prefetchRsc = currentCache.prefetchRsc;\n (0, _invalidatecachebelowflightsegmentpath.invalidateCacheBelowFlightSegmentPath)(cache, currentCache, flightSegmentPath);\n // Ensure the existing cache value is used when the cache was not invalidated.\n mutable.cache = cache;\n } else if (applied) {\n mutable.cache = cache;\n // If we applied the cache, we update the \"current cache\" value so any other\n // segments in the FlightDataPath will be able to reference the updated cache.\n currentCache = cache;\n }\n for (const subSegment of generateSegmentsFromPatch(treePatch)){\n const scrollableSegmentPath = [\n ...flightSegmentPath,\n ...subSegment\n ];\n // Filter out the __DEFAULT__ paths as they shouldn't be scrolled to in this case.\n if (scrollableSegmentPath[scrollableSegmentPath.length - 1] !== _segment.DEFAULT_SEGMENT_KEY) {\n scrollableSegments.push(scrollableSegmentPath);\n }\n }\n }\n currentTree = newTree;\n }\n }\n mutable.patchedTree = currentTree;\n mutable.canonicalUrl = updatedCanonicalUrl;\n mutable.scrollableSegments = scrollableSegments;\n mutable.hashFragment = hash;\n mutable.shouldScroll = shouldScroll;\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\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=navigate-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvbmF2aWdhdGUtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFrRGdCQSx5QkFBeUI7ZUFBekJBOztJQWRBQyxpQkFBaUI7ZUFBakJBOztJQXNJQUMsZUFBZTtlQUFmQTs7O2lEQXJLb0I7K0NBQ0Y7bUVBQ29CO3lEQUNWO2dEQUNUO3lEQUNTO2dEQU9yQzsyQ0FDdUI7NkNBQ0U7NkNBQ0Y7dUNBQ087cUNBQ0Q7NENBQ3dCO2dEQUlyRDs4REFDMEM7d0RBQ047MENBS3BDO0FBRUEsU0FBU0Qsa0JBQ2RFLEtBQTJCLEVBQzNCQyxPQUFnQixFQUNoQkMsR0FBVyxFQUNYQyxXQUFvQjtJQUVwQkYsUUFBUUcsYUFBYSxHQUFHO0lBQ3hCSCxRQUFRSSxZQUFZLEdBQUdIO0lBQ3ZCRCxRQUFRRSxXQUFXLEdBQUdBO0lBQ3RCRixRQUFRSyxrQkFBa0IsR0FBR0M7SUFFN0IsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY1IsT0FBT0M7QUFDOUI7QUFFTyxTQUFTSiwwQkFDZFksaUJBQW9DO0lBRXBDLE1BQU1DLFdBQWdDLEVBQUU7SUFDeEMsTUFBTSxDQUFDQyxTQUFTQyxlQUFlLEdBQUdIO0lBRWxDLElBQUlJLE9BQU9DLElBQUksQ0FBQ0YsZ0JBQWdCRyxNQUFNLEtBQUssR0FBRztRQUM1QyxPQUFPO1lBQUM7Z0JBQUNKO2FBQVE7U0FBQztJQUNwQjtJQUVBLEtBQUssTUFBTSxDQUFDSyxrQkFBa0JDLGNBQWMsSUFBSUosT0FBT0ssT0FBTyxDQUM1RE4sZ0JBQ0M7UUFDRCxLQUFLLE1BQU1PLGdCQUFnQnRCLDBCQUEwQm9CLGVBQWdCO1lBQ25FLG1FQUFtRTtZQUNuRSxJQUFJTixZQUFZLElBQUk7Z0JBQ2xCRCxTQUFTVSxJQUFJLENBQUM7b0JBQUNKO3VCQUFxQkc7aUJBQWE7WUFDbkQsT0FBTztnQkFDTFQsU0FBU1UsSUFBSSxDQUFDO29CQUFDVDtvQkFBU0s7dUJBQXFCRztpQkFBYTtZQUM1RDtRQUNGO0lBQ0Y7SUFFQSxPQUFPVDtBQUNUO0FBRUEsU0FBU1csZ0NBQ1BDLFFBQW1CLEVBQ25CQyxZQUF1QixFQUN2QkMsaUJBQW9DLEVBQ3BDQyxTQUE0QjtJQUU1QixJQUFJQyxlQUFlO0lBRW5CSixTQUFTSyxHQUFHLEdBQUdKLGFBQWFJLEdBQUc7SUFDL0JMLFNBQVNNLFdBQVcsR0FBR0wsYUFBYUssV0FBVztJQUMvQ04sU0FBU08sT0FBTyxHQUFHTixhQUFhTSxPQUFPO0lBQ3ZDUCxTQUFTVixjQUFjLEdBQUcsSUFBSWtCLElBQUlQLGFBQWFYLGNBQWM7SUFFN0QsTUFBTW1CLHFCQUFxQmxDLDBCQUEwQjRCLFdBQVdPLEdBQUcsQ0FDakUsQ0FBQ3JCLFVBQVk7ZUFBSWE7ZUFBc0JiO1NBQVE7SUFHakQsS0FBSyxNQUFNc0IsZ0JBQWdCRixtQkFBb0I7UUFDN0NHLENBQUFBLEdBQUFBLGtDQUFBQSxnQ0FBQUEsRUFBaUNaLFVBQVVDLGNBQWNVO1FBRXpEUCxlQUFlO0lBQ2pCO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNTLHVCQUNQakMsR0FBUSxFQUNSRixLQUEyQixFQUMzQkMsT0FBZ0IsRUFDaEJFLFdBQW9CLEVBQ3BCaUMsTUFBd0I7SUFFeEIsT0FBUUEsT0FBT0MsR0FBRztRQUNoQixLQUFLQyxjQUFBQSxtQkFBbUIsQ0FBQ0MsR0FBRztZQUFFO2dCQUM1Qiw2QkFBNkI7Z0JBQzdCLE1BQU1DLFNBQVNKLE9BQU9LLElBQUk7Z0JBQzFCLE9BQU8zQyxrQkFBa0JFLE9BQU9DLFNBQVN1QyxRQUFRckM7WUFDbkQ7UUFDQSxLQUFLbUMsY0FBQUEsbUJBQW1CLENBQUNJLElBQUk7WUFBRTtnQkFDN0IsdUVBQXVFO2dCQUN2RSxpREFBaUQ7Z0JBQ2pELE1BQU1DLGtCQUFrQlAsT0FBT0ssSUFBSSxDQUFDcEMsWUFBWTtnQkFDaERKLFFBQVFJLFlBQVksR0FBR3NDO2dCQUV2Qiw4REFBOEQ7Z0JBQzlELE1BQU1DLFNBQVMsSUFBSUMsSUFBSTdDLE1BQU1LLFlBQVksRUFBRUg7Z0JBQzNDLE1BQU00QyxpQkFDSixzQ0FDc0M7Z0JBQ3RDNUMsSUFBSTZDLFFBQVEsS0FBS0gsT0FBT0csUUFBUSxJQUNoQzdDLElBQUk4QyxNQUFNLEtBQUtKLE9BQU9JLE1BQU0sSUFDNUI5QyxJQUFJK0MsSUFBSSxLQUFLTCxPQUFPSyxJQUFJO2dCQUMxQixJQUFJSCxnQkFBZ0I7b0JBQ2xCLGdEQUFnRDtvQkFDaEQ3QyxRQUFRNkMsY0FBYyxHQUFHO29CQUN6QjdDLFFBQVFpRCxZQUFZLEdBQUdkLE9BQU9LLElBQUksQ0FBQ1MsWUFBWTtvQkFDL0NqRCxRQUFRa0QsWUFBWSxHQUFHakQsSUFBSStDLElBQUk7b0JBQy9CLG1FQUFtRTtvQkFDbkUsa0VBQWtFO29CQUNsRWhELFFBQVFLLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ2pDO2dCQUVBLE9BQU9FLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNSLE9BQU9DO1lBQzlCO1FBQ0EsS0FBS3FDLGNBQUFBLG1CQUFtQixDQUFDYyxPQUFPO1lBQUU7Z0JBQ2hDLHlCQUF5QjtnQkFDekJuRCxRQUFRb0QsS0FBSyxHQUFHakIsT0FBT0ssSUFBSSxDQUFDYSxTQUFTO2dCQUNyQ3JELFFBQVFzRCxXQUFXLEdBQUduQixPQUFPSyxJQUFJLENBQUNlLGlCQUFpQjtnQkFDbkR2RCxRQUFRSSxZQUFZLEdBQUcrQixPQUFPSyxJQUFJLENBQUNwQyxZQUFZO2dCQUMvQ0osUUFBUUssa0JBQWtCLEdBQUc4QixPQUFPSyxJQUFJLENBQUNuQyxrQkFBa0I7Z0JBQzNETCxRQUFRaUQsWUFBWSxHQUFHZCxPQUFPSyxJQUFJLENBQUNTLFlBQVk7Z0JBQy9DakQsUUFBUWtELFlBQVksR0FBR2YsT0FBT0ssSUFBSSxDQUFDUSxJQUFJO2dCQUN2QyxPQUFPekMsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY1IsT0FBT0M7WUFDOUI7UUFDQSxLQUFLcUMsY0FBQUEsbUJBQW1CLENBQUNtQixLQUFLO1lBQUU7Z0JBQzlCLE9BQU9yQixPQUFPSyxJQUFJLENBQUNpQixJQUFJLENBQ3JCLENBQUNDLGNBQ0N4Qix1QkFBdUJqQyxLQUFLRixPQUFPQyxTQUFTRSxhQUFhd0QsY0FDM0Qsc0RBQXNELGdCQUNnQjtnQkFDdEUsb0NBQW9DO2dCQUNwQztvQkFDRSxPQUFPM0Q7Z0JBQ1Q7WUFFSjtRQUNBO1lBQVM7Z0JBQ1BvQztnQkFDQSxPQUFPcEM7WUFDVDtJQUNGO0FBQ0Y7QUFFTyxTQUFTRCxnQkFDZEMsS0FBMkIsRUFDM0I0RCxNQUFzQjtJQUV0QixNQUFNLEVBQUUxRCxHQUFHLEVBQUUyRCxhQUFhLEVBQUVDLFlBQVksRUFBRVosWUFBWSxFQUFFYSxhQUFhLEVBQUUsR0FDckVIO0lBQ0YsTUFBTTNELFVBQW1CLENBQUM7SUFDMUIsTUFBTSxFQUFFZ0QsSUFBSSxFQUFFLEdBQUcvQztJQUNqQixNQUFNOEQsT0FBT0MsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQi9EO0lBQy9CLE1BQU1DLGNBQWMyRCxpQkFBaUI7SUFDckMsd0ZBQXdGO0lBQ3hGSSxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQWtCLEVBQUNsRSxNQUFNbUUsYUFBYTtJQUV0Q2xFLFFBQVFtRSwwQkFBMEIsR0FBRztJQUNyQ25FLFFBQVFFLFdBQVcsR0FBR0E7SUFFdEIsSUFBSTBELGVBQWU7UUFDakIsT0FBTy9ELGtCQUFrQkUsT0FBT0MsU0FBU0MsSUFBSW1FLFFBQVEsSUFBSWxFO0lBQzNEO0lBRUEsbUVBQW1FO0lBQ25FLHdDQUF3QztJQUN4QyxJQUFJbUUsU0FBU0MsY0FBYyxDQUFDLHlCQUF5QjtRQUNuRCxPQUFPekUsa0JBQWtCRSxPQUFPQyxTQUFTK0QsTUFBTTdEO0lBQ2pEO0lBRUEsSUFBSXFFLEtBQXVDLEVBQUUsRUFpQjVDO0lBRUQsTUFBTU0saUJBQWlCQyxDQUFBQSxHQUFBQSxvQkFBQUEsNkJBQUFBLEVBQThCO1FBQ25EN0U7UUFDQTJFLFNBQVM3RSxNQUFNNkUsT0FBTztRQUN0QkQsTUFBTTVFLE1BQU00RSxJQUFJO1FBQ2hCVCxlQUFlbkUsTUFBTW1FLGFBQWE7UUFDbENKO0lBQ0Y7SUFDQSxNQUFNLEVBQUVpQixvQkFBb0IsRUFBRXZDLElBQUksRUFBRSxHQUFHcUM7SUFFdkNHLGlCQUFBQSxhQUFhLENBQUNDLElBQUksQ0FBQ3pDO0lBRW5CLE9BQU9BLEtBQUtpQixJQUFJLENBQ2Q7WUFBQyxFQUFFeUIsVUFBVSxFQUFFOUUsY0FBYytFLG9CQUFvQixFQUFFQyxTQUFTLEVBQUU7UUFDNUQsTUFBTUMsY0FBY0MsS0FBS0MsR0FBRztRQUU1QixJQUFJQyxjQUFjO1FBQ2xCLGlDQUFpQztRQUNqQyxJQUFJLENBQUNYLGVBQWVZLFlBQVksRUFBRTtZQUNoQyxnR0FBZ0c7WUFDaEdaLGVBQWVZLFlBQVksR0FBR0o7WUFDOUJHLGNBQWM7UUFDaEI7UUFFQSxJQUFJWCxlQUFlYSxPQUFPLEVBQUU7WUFDMUIsK0VBQStFO1lBQy9FLG1HQUFtRztZQUNuRyxNQUFNQywyQkFBMkIsSUFBSS9DLElBQUkzQyxJQUFJOEQsSUFBSTtZQUNqRCxJQUFJb0Isc0JBQXNCO2dCQUN4QlEseUJBQXlCN0MsUUFBUSxHQUFHcUMscUJBQXFCckMsUUFBUTtZQUNuRTtZQUVBLE1BQU1YLFNBQVN5RCxDQUFBQSxHQUFBQSw0QkFBQUEsMEJBQUFBLEVBQ2JQLGFBQ0F0RixPQUNBbUYsWUFDQVMsMEJBQ0EzRjtZQUdGLCtGQUErRjtZQUMvRix5R0FBeUc7WUFDekcsMkNBQTJDO1lBQzNDLElBQUltQyxXQUFXLE9BQU87Z0JBQ3BCLE9BQU9yQyxnQkFBZ0JDLE9BQU87b0JBQUUsR0FBRzRELE1BQU07b0JBQUVHLGVBQWU7Z0JBQU07WUFDbEU7WUFFQSxPQUFPM0I7UUFDVDtRQUVBLDREQUE0RDtRQUM1RCxJQUFJLE9BQU8rQyxlQUFlLFVBQVU7WUFDbEMsT0FBT3JGLGtCQUFrQkUsT0FBT0MsU0FBU2tGLFlBQVloRjtRQUN2RDtRQUVBLE1BQU0yRixzQkFBc0JWLHVCQUN4Qm5CLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JtQix3QkFDbEJwQjtRQUVKLE1BQU1sQixpQkFDSixDQUFDLENBQUNHLFFBQ0ZqRCxNQUFNSyxZQUFZLENBQUMwRixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUNqQ0Qsb0JBQW9CQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUV4QywyRkFBMkY7UUFDM0YsbUZBQW1GO1FBQ25GLElBQUlqRCxnQkFBZ0I7WUFDbEI3QyxRQUFRNkMsY0FBYyxHQUFHO1lBQ3pCN0MsUUFBUUksWUFBWSxHQUFHeUY7WUFDdkI3RixRQUFRaUQsWUFBWSxHQUFHQTtZQUN2QmpELFFBQVFrRCxZQUFZLEdBQUdGO1lBQ3ZCaEQsUUFBUUssa0JBQWtCLEdBQUcsRUFBRTtZQUMvQixPQUFPRSxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjUixPQUFPQztRQUM5QjtRQUVBLElBQUkrRixjQUFjaEcsTUFBTTRFLElBQUk7UUFDNUIsSUFBSXJELGVBQWV2QixNQUFNcUQsS0FBSztRQUM5QixJQUFJL0MscUJBQTBDLEVBQUU7UUFDaEQsS0FBSyxNQUFNMkYsd0JBQXdCZCxXQUFZO1lBQzdDLE1BQU0sRUFDSmUsZUFBZTFFLGlCQUFpQixFQUNoQzJFLFFBQVEsRUFDUkMsSUFBSSxFQUNKQyxhQUFhLEVBQ2JDLFlBQVksRUFDYixHQUFHTDtZQUNKLElBQUl4RSxZQUFZd0UscUJBQXFCckIsSUFBSTtZQUV6QyxzQkFBc0I7WUFDdEIsTUFBTTJCLG9DQUFvQztnQkFBQzttQkFBTy9FO2FBQWtCO1lBRXBFLHdFQUF3RTtZQUN4RSxJQUFJZ0YsVUFBVUMsQ0FBQUEsR0FBQUEsNkJBQUFBLDJCQUFBQSxFQUNaLHNCQUFzQixhQUV0QlQsYUFDQXZFLFdBQ0F1QztZQUdGLGtHQUFrRztZQUNsRyw2SUFBNkk7WUFDN0ksSUFBSXdDLFlBQVksTUFBTTtnQkFDcEJBLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDUixzQkFBc0IsYUFFdEJ6QixzQkFDQXZELFdBQ0F1QztZQUVKO1lBRUEsSUFBSXdDLFlBQVksTUFBTTtnQkFDcEIsSUFDRSx3REFDd0Q7Z0JBQ3hELCtEQUErRDtnQkFDL0QsMEJBQTBCO2dCQUMxQixvRUFBb0U7Z0JBQ3BFLHdEQUF3RDtnQkFDeEQsdUJBQXVCO2dCQUN2QkwsWUFDQUcsZ0JBQ0FqQixXQUNBO29CQUNBLE1BQU1xQixPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsa0JBQUFBLEVBQ1hyQixhQUNBL0QsY0FDQXlFLGFBQ0F2RSxXQUNBMEUsVUFDQUMsTUFDQUMsZUFDQSxPQUNBL0Y7b0JBR0YsSUFBSW9HLFNBQVMsTUFBTTt3QkFDakIsSUFBSUEsS0FBS0UsS0FBSyxLQUFLLE1BQU07NEJBQ3ZCLHlEQUF5RDs0QkFDekQsbUJBQW1COzRCQUNuQixPQUFPOUcsa0JBQWtCRSxPQUFPQyxTQUFTK0QsTUFBTTdEO3dCQUNqRDt3QkFDQSxzREFBc0Q7d0JBQ3RELHNEQUFzRDt3QkFDdEQscURBQXFEO3dCQUNyRCw4QkFBOEI7d0JBQzlCLE1BQU0wRyxxQkFBd0NILEtBQUtFLEtBQUs7d0JBQ3hESixVQUFVSzt3QkFFVixNQUFNdkYsV0FBV29GLEtBQUtJLElBQUk7d0JBQzFCLElBQUl4RixhQUFhLE1BQU07NEJBQ3JCLGlFQUFpRTs0QkFDakUsNERBQTREOzRCQUM1RHJCLFFBQVFvRCxLQUFLLEdBQUcvQjt3QkFDbEI7d0JBQ0EsTUFBTXlGLHFCQUFxQkwsS0FBS0ssa0JBQWtCO3dCQUNsRCxJQUFJQSx1QkFBdUIsTUFBTTs0QkFDL0IsNkRBQTZEOzRCQUM3RCxtQ0FBbUM7NEJBQ25DLEVBQUU7NEJBQ0YsaUVBQWlFOzRCQUNqRSwrREFBK0Q7NEJBQy9ELHlEQUF5RDs0QkFDekQsMkRBQTJEOzRCQUMzRCw2REFBNkQ7NEJBQzdELCtEQUErRDs0QkFDL0Qsa0VBQWtFOzRCQUNsRSxrRUFBa0U7NEJBQ2xFLGlFQUFpRTs0QkFDakUsZ0RBQWdEOzRCQUNoRCxNQUFNQyxpQkFBaUJDLENBQUFBLEdBQUFBLHFCQUFBQSxtQkFBbUIsRUFDeEMsSUFBSXBFLElBQUlpRCxxQkFBcUI1RixJQUFJZ0gsTUFBTSxHQUN2QztnQ0FDRTFELG1CQUFtQnVEO2dDQUNuQmxDLFNBQVM3RSxNQUFNNkUsT0FBTzs0QkFDeEI7NEJBR0ZzQyxDQUFBQSxHQUFBQSxnQkFBQUEsdUJBQUFBLEVBQXdCVCxNQUFNTTt3QkFDOUIsMkVBQTJFO3dCQUMzRSxzRkFBc0Y7d0JBQ3RGLCtDQUErQzt3QkFDL0Msc0NBQXNDO3dCQUN4QyxPQUFPO3dCQUNMLDREQUE0RDt3QkFDNUQsaURBQWlEO3dCQUNuRDtvQkFDRixPQUFPO3dCQUNMLDJDQUEyQzt3QkFDM0Msa0VBQWtFO3dCQUNsRSw4REFBOEQ7d0JBQzlELG1CQUFtQjt3QkFDbkJSLFVBQVUvRTtvQkFDWjtnQkFDRixPQUFPO29CQUNMLDZEQUE2RDtvQkFDN0QsMENBQTBDO29CQUMxQyw2REFBNkQ7b0JBQzdELCtEQUErRDtvQkFDL0QsbUVBQW1FO29CQUNuRSx5REFBeUQ7b0JBQ3pELHFCQUFxQjtvQkFFckIsSUFBSTJGLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBMkIsRUFBQ3BCLGFBQWFRLFVBQVU7d0JBQ3JELE9BQU8xRyxrQkFBa0JFLE9BQU9DLFNBQVMrRCxNQUFNN0Q7b0JBQ2pEO29CQUVBLE1BQU1rRCxRQUFtQmdFLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQTtvQkFDekIsSUFBSUMsVUFBVTtvQkFFZCxJQUNFeEMsZUFBZXlDLE1BQU0sS0FBS0Msb0JBQUFBLHdCQUF3QixDQUFDQyxLQUFLLElBQ3hELENBQUNoQyxhQUNEO3dCQUNBLHlKQUF5Sjt3QkFDekosdUhBQXVIO3dCQUN2SCxnRkFBZ0Y7d0JBQ2hGLDBGQUEwRjt3QkFFMUYsbUhBQW1IO3dCQUNuSDZCLFVBQVVqRyxnQ0FDUmdDLE9BQ0E5QixjQUNBQyxtQkFDQUM7d0JBRUYseUVBQXlFO3dCQUN6RSxtRkFBbUY7d0JBQ25GcUQsZUFBZVksWUFBWSxHQUFHSjtvQkFDaEMsT0FBTzt3QkFDTGdDLFVBQVVJLENBQUFBLEdBQUFBLGlCQUFBQSxlQUFBQSxFQUNScEMsYUFDQS9ELGNBQ0E4QixPQUNBNEMsc0JBQ0FuQjtvQkFFSjtvQkFFQSxNQUFNNkMsZUFBZUMsQ0FBQUEsR0FBQUEsb0JBQUFBLGtCQUFBQSxFQUNuQixzQkFBc0IsYUFFdEI1QjtvQkFHRixJQUFJMkIsY0FBYzt3QkFDaEIsMkNBQTJDO3dCQUMzQ3RFLE1BQU0xQixHQUFHLEdBQUdKLGFBQWFJLEdBQUc7d0JBQzVCMEIsTUFBTXpCLFdBQVcsR0FBR0wsYUFBYUssV0FBVzt3QkFFNUNpRyxDQUFBQSxHQUFBQSx1Q0FBQUEscUNBQUFBLEVBQ0V4RSxPQUNBOUIsY0FDQUM7d0JBRUYsOEVBQThFO3dCQUM5RXZCLFFBQVFvRCxLQUFLLEdBQUdBO29CQUNsQixPQUFPLElBQUlpRSxTQUFTO3dCQUNsQnJILFFBQVFvRCxLQUFLLEdBQUdBO3dCQUNoQiw0RUFBNEU7d0JBQzVFLDhFQUE4RTt3QkFDOUU5QixlQUFlOEI7b0JBQ2pCO29CQUVBLEtBQUssTUFBTXlFLGNBQWNqSSwwQkFBMEI0QixXQUFZO3dCQUM3RCxNQUFNc0csd0JBQXdCOytCQUN6QnZHOytCQUNBc0c7eUJBQ0o7d0JBQ0Qsa0ZBQWtGO3dCQUNsRixJQUNFQyxxQkFBcUIsQ0FBQ0Esc0JBQXNCaEgsTUFBTSxHQUFHLEVBQUUsS0FDdkRpSCxTQUFBQSxtQkFBbUIsRUFDbkI7NEJBQ0ExSCxtQkFBbUJjLElBQUksQ0FBQzJHO3dCQUMxQjtvQkFDRjtnQkFDRjtnQkFFQS9CLGNBQWNRO1lBQ2hCO1FBQ0Y7UUFFQXZHLFFBQVFzRCxXQUFXLEdBQUd5QztRQUN0Qi9GLFFBQVFJLFlBQVksR0FBR3lGO1FBQ3ZCN0YsUUFBUUssa0JBQWtCLEdBQUdBO1FBQzdCTCxRQUFRa0QsWUFBWSxHQUFHRjtRQUN2QmhELFFBQVFpRCxZQUFZLEdBQUdBO1FBRXZCLE9BQU8xQyxDQUFBQSxHQUFBQSxlQUFBQSxhQUFBQSxFQUFjUixPQUFPQztJQUM5QixHQUNBLElBQU1EO0FBRVYiLCJzb3VyY2VzIjpbIi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvbmF2aWdhdGUtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgRmxpZ2h0U2VnbWVudFBhdGgsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgZmV0Y2hTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJy4uL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGVCZWxvd0ZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vaW52YWxpZGF0ZS1jYWNoZS1iZWxvdy1mbGlnaHQtc2VnbWVudHBhdGgnXG5pbXBvcnQgeyBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUgfSBmcm9tICcuLi9hcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSdcbmltcG9ydCB7IHNob3VsZEhhcmROYXZpZ2F0ZSB9IGZyb20gJy4uL3Nob3VsZC1oYXJkLW5hdmlnYXRlJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi4vaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQnXG5pbXBvcnQge1xuICBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMsXG4gIHR5cGUgTXV0YWJsZSxcbiAgdHlwZSBOYXZpZ2F0ZUFjdGlvbixcbiAgdHlwZSBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgdHlwZSBSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgaGFuZGxlTXV0YWJsZSB9IGZyb20gJy4uL2hhbmRsZS1tdXRhYmxlJ1xuaW1wb3J0IHsgYXBwbHlGbGlnaHREYXRhIH0gZnJvbSAnLi4vYXBwbHktZmxpZ2h0LWRhdGEnXG5pbXBvcnQgeyBwcmVmZXRjaFF1ZXVlIH0gZnJvbSAnLi9wcmVmZXRjaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi9hcHAtcm91dGVyJ1xuaW1wb3J0IHsgREVGQVVMVF9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB7IGxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0LCBzdGFydFBQUk5hdmlnYXRpb24gfSBmcm9tICcuLi9wcHItbmF2aWdhdGlvbnMnXG5pbXBvcnQge1xuICBnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSxcbiAgcHJ1bmVQcmVmZXRjaENhY2hlLFxufSBmcm9tICcuLi9wcmVmZXRjaC1jYWNoZS11dGlscydcbmltcG9ydCB7IGNsZWFyQ2FjaGVOb2RlRGF0YUZvclNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vY2xlYXItY2FjaGUtbm9kZS1kYXRhLWZvci1zZWdtZW50LXBhdGgnXG5pbXBvcnQgeyBoYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeSB9IGZyb20gJy4uL2FsaWFzZWQtcHJlZmV0Y2gtbmF2aWdhdGlvbnMnXG5pbXBvcnQge1xuICBuYXZpZ2F0ZSBhcyBuYXZpZ2F0ZVVzaW5nU2VnbWVudENhY2hlLFxuICBOYXZpZ2F0aW9uUmVzdWx0VGFnLFxuICB0eXBlIE5hdmlnYXRpb25SZXN1bHQsXG59IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUnXG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVFeHRlcm5hbFVybChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBtdXRhYmxlOiBNdXRhYmxlLFxuICB1cmw6IHN0cmluZyxcbiAgcGVuZGluZ1B1c2g6IGJvb2xlYW5cbikge1xuICBtdXRhYmxlLm1wYU5hdmlnYXRpb24gPSB0cnVlXG4gIG11dGFibGUuY2Fub25pY2FsVXJsID0gdXJsXG4gIG11dGFibGUucGVuZGluZ1B1c2ggPSBwZW5kaW5nUHVzaFxuICBtdXRhYmxlLnNjcm9sbGFibGVTZWdtZW50cyA9IHVuZGVmaW5lZFxuXG4gIHJldHVybiBoYW5kbGVNdXRhYmxlKHN0YXRlLCBtdXRhYmxlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaChcbiAgZmxpZ2h0Um91dGVyUGF0Y2g6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBGbGlnaHRTZWdtZW50UGF0aFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IEZsaWdodFNlZ21lbnRQYXRoW10gPSBbXVxuICBjb25zdCBbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZXNdID0gZmxpZ2h0Um91dGVyUGF0Y2hcblxuICBpZiAoT2JqZWN0LmtleXMocGFyYWxsZWxSb3V0ZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbW3NlZ21lbnRdXVxuICB9XG5cbiAgZm9yIChjb25zdCBbcGFyYWxsZWxSb3V0ZUtleSwgcGFyYWxsZWxSb3V0ZV0gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgcGFyYWxsZWxSb3V0ZXNcbiAgKSkge1xuICAgIGZvciAoY29uc3QgY2hpbGRTZWdtZW50IG9mIGdlbmVyYXRlU2VnbWVudHNGcm9tUGF0Y2gocGFyYWxsZWxSb3V0ZSkpIHtcbiAgICAgIC8vIElmIHRoZSBzZWdtZW50IGlzIGVtcHR5LCBpdCBtZWFucyB3ZSBhcmUgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWVcbiAgICAgIGlmIChzZWdtZW50ID09PSAnJykge1xuICAgICAgICBzZWdtZW50cy5wdXNoKFtwYXJhbGxlbFJvdXRlS2V5LCAuLi5jaGlsZFNlZ21lbnRdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHMucHVzaChbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZUtleSwgLi4uY2hpbGRTZWdtZW50XSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHNcbn1cblxuZnVuY3Rpb24gdHJpZ2dlckxhenlGZXRjaEZvckxlYWZTZWdtZW50cyhcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgY3VycmVudENhY2hlOiBDYWNoZU5vZGUsXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgdHJlZVBhdGNoOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKSB7XG4gIGxldCBhcHBsaWVkUGF0Y2ggPSBmYWxzZVxuXG4gIG5ld0NhY2hlLnJzYyA9IGN1cnJlbnRDYWNoZS5yc2NcbiAgbmV3Q2FjaGUucHJlZmV0Y2hSc2MgPSBjdXJyZW50Q2FjaGUucHJlZmV0Y2hSc2NcbiAgbmV3Q2FjaGUubG9hZGluZyA9IGN1cnJlbnRDYWNoZS5sb2FkaW5nXG4gIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzID0gbmV3IE1hcChjdXJyZW50Q2FjaGUucGFyYWxsZWxSb3V0ZXMpXG5cbiAgY29uc3Qgc2VnbWVudFBhdGhzVG9GaWxsID0gZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCh0cmVlUGF0Y2gpLm1hcChcbiAgICAoc2VnbWVudCkgPT4gWy4uLmZsaWdodFNlZ21lbnRQYXRoLCAuLi5zZWdtZW50XVxuICApXG5cbiAgZm9yIChjb25zdCBzZWdtZW50UGF0aHMgb2Ygc2VnbWVudFBhdGhzVG9GaWxsKSB7XG4gICAgY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGgobmV3Q2FjaGUsIGN1cnJlbnRDYWNoZSwgc2VnbWVudFBhdGhzKVxuXG4gICAgYXBwbGllZFBhdGNoID0gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGFwcGxpZWRQYXRjaFxufVxuXG5mdW5jdGlvbiBoYW5kbGVOYXZpZ2F0aW9uUmVzdWx0KFxuICB1cmw6IFVSTCxcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBtdXRhYmxlOiBNdXRhYmxlLFxuICBwZW5kaW5nUHVzaDogYm9vbGVhbixcbiAgcmVzdWx0OiBOYXZpZ2F0aW9uUmVzdWx0XG4pOiBSZWR1Y2VyU3RhdGUge1xuICBzd2l0Y2ggKHJlc3VsdC50YWcpIHtcbiAgICBjYXNlIE5hdmlnYXRpb25SZXN1bHRUYWcuTVBBOiB7XG4gICAgICAvLyBQZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgY29uc3QgbmV3VXJsID0gcmVzdWx0LmRhdGFcbiAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChzdGF0ZSwgbXV0YWJsZSwgbmV3VXJsLCBwZW5kaW5nUHVzaClcbiAgICB9XG4gICAgY2FzZSBOYXZpZ2F0aW9uUmVzdWx0VGFnLk5vT3A6IHtcbiAgICAgIC8vIFRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggbm8gY2hhbmdlIHRvIHRoZSBjdXJyZW50IHBhZ2UuIEhvd2V2ZXIsIGlmXG4gICAgICAvLyB0aGUgVVJMIGNoYW5nZWQsIHdlIHN0aWxsIG5lZWQgdG8gdXBkYXRlIHRoYXQuXG4gICAgICBjb25zdCBuZXdDYW5vbmljYWxVcmwgPSByZXN1bHQuZGF0YS5jYW5vbmljYWxVcmxcbiAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gbmV3Q2Fub25pY2FsVXJsXG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2hhbmdlZCB3YXMgdGhlIGhhc2ggZnJhZ21lbnQuXG4gICAgICBjb25zdCBvbGRVcmwgPSBuZXcgVVJMKHN0YXRlLmNhbm9uaWNhbFVybCwgdXJsKVxuICAgICAgY29uc3Qgb25seUhhc2hDaGFuZ2UgPVxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbXBhcmUgdGhlIG9yaWdpbnMsIGJlY2F1c2UgY2xpZW50LWRyaXZlblxuICAgICAgICAvLyBuYXZpZ2F0aW9ucyBhcmUgYWx3YXlzIHNhbWUtb3JpZ2luLlxuICAgICAgICB1cmwucGF0aG5hbWUgPT09IG9sZFVybC5wYXRobmFtZSAmJlxuICAgICAgICB1cmwuc2VhcmNoID09PSBvbGRVcmwuc2VhcmNoICYmXG4gICAgICAgIHVybC5oYXNoICE9PSBvbGRVcmwuaGFzaFxuICAgICAgaWYgKG9ubHlIYXNoQ2hhbmdlKSB7XG4gICAgICAgIC8vIFRoZSBvbmx5IHVwZGF0ZWQgcGFydCBvZiB0aGUgVVJMIGlzIHRoZSBoYXNoLlxuICAgICAgICBtdXRhYmxlLm9ubHlIYXNoQ2hhbmdlID0gdHJ1ZVxuICAgICAgICBtdXRhYmxlLnNob3VsZFNjcm9sbCA9IHJlc3VsdC5kYXRhLnNob3VsZFNjcm9sbFxuICAgICAgICBtdXRhYmxlLmhhc2hGcmFnbWVudCA9IHVybC5oYXNoXG4gICAgICAgIC8vIFNldHRpbmcgdGhpcyB0byBhbiBlbXB0eSBhcnJheSB0cmlnZ2VycyBhIHNjcm9sbCBmb3IgYWxsIG5ldyBhbmRcbiAgICAgICAgLy8gdXBkYXRlZCBzZWdtZW50cy4gU2VlIGBTY3JvbGxBbmRGb2N1c0hhbmRsZXJgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gW11cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfVxuICAgIGNhc2UgTmF2aWdhdGlvblJlc3VsdFRhZy5TdWNjZXNzOiB7XG4gICAgICAvLyBSZWNlaXZlZCBhIG5ldyByZXN1bHQuXG4gICAgICBtdXRhYmxlLmNhY2hlID0gcmVzdWx0LmRhdGEuY2FjaGVOb2RlXG4gICAgICBtdXRhYmxlLnBhdGNoZWRUcmVlID0gcmVzdWx0LmRhdGEuZmxpZ2h0Um91dGVyU3RhdGVcbiAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gcmVzdWx0LmRhdGEuY2Fub25pY2FsVXJsXG4gICAgICBtdXRhYmxlLnNjcm9sbGFibGVTZWdtZW50cyA9IHJlc3VsdC5kYXRhLnNjcm9sbGFibGVTZWdtZW50c1xuICAgICAgbXV0YWJsZS5zaG91bGRTY3JvbGwgPSByZXN1bHQuZGF0YS5zaG91bGRTY3JvbGxcbiAgICAgIG11dGFibGUuaGFzaEZyYWdtZW50ID0gcmVzdWx0LmRhdGEuaGFzaFxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfVxuICAgIGNhc2UgTmF2aWdhdGlvblJlc3VsdFRhZy5Bc3luYzoge1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdCkgPT5cbiAgICAgICAgICBoYW5kbGVOYXZpZ2F0aW9uUmVzdWx0KHVybCwgc3RhdGUsIG11dGFibGUsIHBlbmRpbmdQdXNoLCBhc3luY1Jlc3VsdCksXG4gICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9uIGZhaWxlZCwgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgICAgICAvLyBUT0RPOiBUaGlzIG1hdGNoZXMgdGhlIGN1cnJlbnQgYmVoYXZpb3IgYnV0IHdlIG5lZWQgdG8gZG8gc29tZXRoaW5nXG4gICAgICAgIC8vIGJldHRlciBoZXJlIGlmIHRoZSBuZXR3b3JrIGZhaWxzLlxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmVzdWx0IHNhdGlzZmllcyBuZXZlclxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYXZpZ2F0ZVJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBOYXZpZ2F0ZUFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3QgeyB1cmwsIGlzRXh0ZXJuYWxVcmwsIG5hdmlnYXRlVHlwZSwgc2hvdWxkU2Nyb2xsLCBhbGxvd0FsaWFzaW5nIH0gPVxuICAgIGFjdGlvblxuICBjb25zdCBtdXRhYmxlOiBNdXRhYmxlID0ge31cbiAgY29uc3QgeyBoYXNoIH0gPSB1cmxcbiAgY29uc3QgaHJlZiA9IGNyZWF0ZUhyZWZGcm9tVXJsKHVybClcbiAgY29uc3QgcGVuZGluZ1B1c2ggPSBuYXZpZ2F0ZVR5cGUgPT09ICdwdXNoJ1xuICAvLyB3ZSB3YW50IHRvIHBydW5lIHRoZSBwcmVmZXRjaCBjYWNoZSBvbiBldmVyeSBuYXZpZ2F0aW9uIHRvIGF2b2lkIGl0IGdyb3dpbmcgdG9vIGxhcmdlXG4gIHBydW5lUHJlZmV0Y2hDYWNoZShzdGF0ZS5wcmVmZXRjaENhY2hlKVxuXG4gIG11dGFibGUucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUgPSBmYWxzZVxuICBtdXRhYmxlLnBlbmRpbmdQdXNoID0gcGVuZGluZ1B1c2hcblxuICBpZiAoaXNFeHRlcm5hbFVybCkge1xuICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChzdGF0ZSwgbXV0YWJsZSwgdXJsLnRvU3RyaW5nKCksIHBlbmRpbmdQdXNoKVxuICB9XG5cbiAgLy8gSGFuZGxlcyBjYXNlIHdoZXJlIGA8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiPmAgdGFnIGlzIHByZXNlbnQsXG4gIC8vIHdoaWNoIHdpbGwgdHJpZ2dlciBhbiBNUEEgbmF2aWdhdGlvbi5cbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfX25leHQtcGFnZS1yZWRpcmVjdCcpKSB7XG4gICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCBtdXRhYmxlLCBocmVmLCBwZW5kaW5nUHVzaClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUpIHtcbiAgICAvLyAoVmVyeSBFYXJseSBFeHBlcmltZW50YWwgRmVhdHVyZSkgU2VnbWVudCBDYWNoZVxuICAgIC8vXG4gICAgLy8gQnlwYXNzIHRoZSBub3JtYWwgcHJlZmV0Y2ggY2FjaGUgYW5kIHVzZSB0aGUgbmV3IHBlci1zZWdtZW50IGNhY2hlXG4gICAgLy8gaW1wbGVtZW50YXRpb24gaW5zdGVhZC4gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBpZiBQUFIgaXMgZW5hYmxlZCwgdG9vLlxuICAgIC8vXG4gICAgLy8gVGVtcG9yYXJ5IGdsdWUgY29kZSBiZXR3ZWVuIHRoZSByb3V0ZXIgcmVkdWNlciBhbmQgdGhlIG5ldyBuYXZpZ2F0aW9uXG4gICAgLy8gaW1wbGVtZW50YXRpb24uIEV2ZW50dWFsbHkgd2UnbGwgcmV3cml0ZSB0aGUgcm91dGVyIHJlZHVjZXIgdG8gYVxuICAgIC8vIHN0YXRlIG1hY2hpbmUuXG4gICAgY29uc3QgcmVzdWx0ID0gbmF2aWdhdGVVc2luZ1NlZ21lbnRDYWNoZShcbiAgICAgIHVybCxcbiAgICAgIHN0YXRlLmNhY2hlLFxuICAgICAgc3RhdGUudHJlZSxcbiAgICAgIHN0YXRlLm5leHRVcmwsXG4gICAgICBzaG91bGRTY3JvbGxcbiAgICApXG4gICAgcmV0dXJuIGhhbmRsZU5hdmlnYXRpb25SZXN1bHQodXJsLCBzdGF0ZSwgbXV0YWJsZSwgcGVuZGluZ1B1c2gsIHJlc3VsdClcbiAgfVxuXG4gIGNvbnN0IHByZWZldGNoVmFsdWVzID0gZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnkoe1xuICAgIHVybCxcbiAgICBuZXh0VXJsOiBzdGF0ZS5uZXh0VXJsLFxuICAgIHRyZWU6IHN0YXRlLnRyZWUsXG4gICAgcHJlZmV0Y2hDYWNoZTogc3RhdGUucHJlZmV0Y2hDYWNoZSxcbiAgICBhbGxvd0FsaWFzaW5nLFxuICB9KVxuICBjb25zdCB7IHRyZWVBdFRpbWVPZlByZWZldGNoLCBkYXRhIH0gPSBwcmVmZXRjaFZhbHVlc1xuXG4gIHByZWZldGNoUXVldWUuYnVtcChkYXRhKVxuXG4gIHJldHVybiBkYXRhLnRoZW4oXG4gICAgKHsgZmxpZ2h0RGF0YSwgY2Fub25pY2FsVXJsOiBjYW5vbmljYWxVcmxPdmVycmlkZSwgcG9zdHBvbmVkIH0pID0+IHtcbiAgICAgIGNvbnN0IG5hdmlnYXRlZEF0ID0gRGF0ZS5ub3coKVxuXG4gICAgICBsZXQgaXNGaXJzdFJlYWQgPSBmYWxzZVxuICAgICAgLy8gd2Ugb25seSB3YW50IHRvIG1hcmsgdGhpcyBvbmNlXG4gICAgICBpZiAoIXByZWZldGNoVmFsdWVzLmxhc3RVc2VkVGltZSkge1xuICAgICAgICAvLyBpbXBvcnRhbnQ6IHdlIHNob3VsZCBvbmx5IG1hcmsgdGhlIGNhY2hlIG5vZGUgYXMgZGlydHkgYWZ0ZXIgd2UgdW5zdXNwZW5kIGZyb20gdGhlIGNhbGwgYWJvdmVcbiAgICAgICAgcHJlZmV0Y2hWYWx1ZXMubGFzdFVzZWRUaW1lID0gbmF2aWdhdGVkQXRcbiAgICAgICAgaXNGaXJzdFJlYWQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVmZXRjaFZhbHVlcy5hbGlhc2VkKSB7XG4gICAgICAgIC8vIFdoZW4gYWxpYXMgaXMgZW5hYmxlZCwgc2VhcmNoIHBhcmFtIG1heSBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGNhbm9uaWNhbFVybC5cbiAgICAgICAgLy8gQnV0IHdlIHdhbnQgdG8gc2V0IHVybCB0byBjYW5vbmljYWxVcmwgc28gdGhhdCB3ZSB1c2UgcmVkaXJlY3RlZCBwYXRoIGZvciBmZXRjaGluZyBkeW5hbWljIGRhdGEuXG4gICAgICAgIGNvbnN0IHVybFdpdGhDYW5vbmljYWxQYXRobmFtZSA9IG5ldyBVUkwodXJsLmhyZWYpXG4gICAgICAgIGlmIChjYW5vbmljYWxVcmxPdmVycmlkZSkge1xuICAgICAgICAgIHVybFdpdGhDYW5vbmljYWxQYXRobmFtZS5wYXRobmFtZSA9IGNhbm9uaWNhbFVybE92ZXJyaWRlLnBhdGhuYW1lXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeShcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBmbGlnaHREYXRhLFxuICAgICAgICAgIHVybFdpdGhDYW5vbmljYWxQYXRobmFtZSxcbiAgICAgICAgICBtdXRhYmxlXG4gICAgICAgIClcblxuICAgICAgICAvLyBXZSBkaWRuJ3QgcmV0dXJuIG5ldyByb3V0ZXIgc3RhdGUgYmVjYXVzZSB3ZSBkaWRuJ3QgYXBwbHkgdGhlIGFsaWFzZWQgZW50cnkgZm9yIHNvbWUgcmVhc29uLlxuICAgICAgICAvLyBXZSdsbCByZS1pbnZva2UgdGhlIG5hdmlnYXRpb24gaGFuZGxlciBidXQgZW5zdXJlIHRoYXQgd2UgZG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhlIGFsaWFzZWQgZW50cnkuIFRoaXNcbiAgICAgICAgLy8gd2lsbCBjcmVhdGUgYW4gb24tZGVtYW5kIHByZWZldGNoIGVudHJ5LlxuICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBuYXZpZ2F0ZVJlZHVjZXIoc3RhdGUsIHsgLi4uYWN0aW9uLCBhbGxvd0FsaWFzaW5nOiBmYWxzZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIG5hdmlnYXRpbmcgdG8gcGFnZSBpbiBgcGFnZXNgIGZyb20gYGFwcGBcbiAgICAgIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCBtdXRhYmxlLCBmbGlnaHREYXRhLCBwZW5kaW5nUHVzaClcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBkYXRlZENhbm9uaWNhbFVybCA9IGNhbm9uaWNhbFVybE92ZXJyaWRlXG4gICAgICAgID8gY3JlYXRlSHJlZkZyb21VcmwoY2Fub25pY2FsVXJsT3ZlcnJpZGUpXG4gICAgICAgIDogaHJlZlxuXG4gICAgICBjb25zdCBvbmx5SGFzaENoYW5nZSA9XG4gICAgICAgICEhaGFzaCAmJlxuICAgICAgICBzdGF0ZS5jYW5vbmljYWxVcmwuc3BsaXQoJyMnLCAxKVswXSA9PT1cbiAgICAgICAgICB1cGRhdGVkQ2Fub25pY2FsVXJsLnNwbGl0KCcjJywgMSlbMF1cblxuICAgICAgLy8gSWYgb25seSB0aGUgaGFzaCBoYXMgY2hhbmdlZCwgdGhlIHNlcnZlciBoYXNuJ3Qgc2VudCB1cyBhbnkgbmV3IGRhdGEuIFdlIGNhbiBqdXN0IHVwZGF0ZVxuICAgICAgLy8gdGhlIG11dGFibGUgcHJvcGVydGllcyByZXNwb25zaWJsZSBmb3IgVVJMIGFuZCBzY3JvbGwgaGFuZGxpbmcgYW5kIHJldHVybiBlYXJseS5cbiAgICAgIGlmIChvbmx5SGFzaENoYW5nZSkge1xuICAgICAgICBtdXRhYmxlLm9ubHlIYXNoQ2hhbmdlID0gdHJ1ZVxuICAgICAgICBtdXRhYmxlLmNhbm9uaWNhbFVybCA9IHVwZGF0ZWRDYW5vbmljYWxVcmxcbiAgICAgICAgbXV0YWJsZS5zaG91bGRTY3JvbGwgPSBzaG91bGRTY3JvbGxcbiAgICAgICAgbXV0YWJsZS5oYXNoRnJhZ21lbnQgPSBoYXNoXG4gICAgICAgIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gW11cbiAgICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgICB9XG5cbiAgICAgIGxldCBjdXJyZW50VHJlZSA9IHN0YXRlLnRyZWVcbiAgICAgIGxldCBjdXJyZW50Q2FjaGUgPSBzdGF0ZS5jYWNoZVxuICAgICAgbGV0IHNjcm9sbGFibGVTZWdtZW50czogRmxpZ2h0U2VnbWVudFBhdGhbXSA9IFtdXG4gICAgICBmb3IgKGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhIG9mIGZsaWdodERhdGEpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBhdGhUb1NlZ21lbnQ6IGZsaWdodFNlZ21lbnRQYXRoLFxuICAgICAgICAgIHNlZWREYXRhLFxuICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgaXNIZWFkUGFydGlhbCxcbiAgICAgICAgICBpc1Jvb3RSZW5kZXIsXG4gICAgICAgIH0gPSBub3JtYWxpemVkRmxpZ2h0RGF0YVxuICAgICAgICBsZXQgdHJlZVBhdGNoID0gbm9ybWFsaXplZEZsaWdodERhdGEudHJlZVxuXG4gICAgICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICAgICAgY29uc3QgZmxpZ2h0U2VnbWVudFBhdGhXaXRoTGVhZGluZ0VtcHR5ID0gWycnLCAuLi5mbGlnaHRTZWdtZW50UGF0aF1cblxuICAgICAgICAvLyBDcmVhdGUgbmV3IHRyZWUgYmFzZWQgb24gdGhlIGZsaWdodFNlZ21lbnRQYXRoIGFuZCByb3V0ZXIgc3RhdGUgcGF0Y2hcbiAgICAgICAgbGV0IG5ld1RyZWUgPSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUoXG4gICAgICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICAgIGZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSxcbiAgICAgICAgICBjdXJyZW50VHJlZSxcbiAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgaHJlZlxuICAgICAgICApXG5cbiAgICAgICAgLy8gSWYgdGhlIHRyZWUgcGF0Y2ggY2FuJ3QgYmUgYXBwbGllZCB0byB0aGUgY3VycmVudCB0cmVlIHRoZW4gd2UgdXNlIHRoZSB0cmVlIGF0IHRpbWUgb2YgcHJlZmV0Y2hcbiAgICAgICAgLy8gVE9ETy1BUFA6IFRoaXMgc2hvdWxkIGluc3RlYWQgZmlsbCBpbiB0aGUgbWlzc2luZyBwaWVjZXMgaW4gYGN1cnJlbnRUcmVlYCB3aXRoIHRoZSBkYXRhIGZyb20gYHRyZWVBdFRpbWVPZlByZWZldGNoYCwgdGhlbiBhcHBseSB0aGUgcGF0Y2guXG4gICAgICAgIGlmIChuZXdUcmVlID09PSBudWxsKSB7XG4gICAgICAgICAgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgICAgICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICAgICAgICAgIGZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSxcbiAgICAgICAgICAgIHRyZWVBdFRpbWVPZlByZWZldGNoLFxuICAgICAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICAgICAgaHJlZlxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdUcmVlICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gVGhpcyBpcyBqdXN0IGEgcGFyYW5vaWQgY2hlY2suIFdoZW4gYSByb3V0ZSBpcyBQUFJlZCwgdGhlIHNlcnZlclxuICAgICAgICAgICAgLy8gd2lsbCBzZW5kIGJhY2sgYSBzdGF0aWMgcmVzcG9uc2UgdGhhdCdzIHJlbmRlcmVkIGZyb21cbiAgICAgICAgICAgIC8vIHRoZSByb290LiBJZiBmb3Igc29tZSByZWFzb24gaXQgZG9lc24ndCwgd2UgZmFsbCBiYWNrIHRvIHRoZVxuICAgICAgICAgICAgLy8gbm9uLVBQUiBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBnZXQgcmlkIG9mIHRoZSBlbHNlIGJyYW5jaCBhbmQgZG8gYWxsIG5hdmlnYXRpb25zXG4gICAgICAgICAgICAvLyB2aWEgc3RhcnRQUFJOYXZpZ2F0aW9uLiBUaGUgY3VycmVudCBzdHJ1Y3R1cmUgaXMganVzdFxuICAgICAgICAgICAgLy8gYW4gaW5jcmVtZW50YWwgc3RlcC5cbiAgICAgICAgICAgIHNlZWREYXRhICYmXG4gICAgICAgICAgICBpc1Jvb3RSZW5kZXIgJiZcbiAgICAgICAgICAgIHBvc3Rwb25lZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IHN0YXJ0UFBSTmF2aWdhdGlvbihcbiAgICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgICAgIGN1cnJlbnRDYWNoZSxcbiAgICAgICAgICAgICAgY3VycmVudFRyZWUsXG4gICAgICAgICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgICAgICAgc2VlZERhdGEsXG4gICAgICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgICAgIGlzSGVhZFBhcnRpYWwsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHNcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKHRhc2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgaWYgKHRhc2sucm91dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBEZXRlY3RlZCBhIGNoYW5nZSB0byB0aGUgcm9vdCBsYXlvdXQuIFBlcmZvcm0gYW4gZnVsbC1cbiAgICAgICAgICAgICAgICAvLyBwYWdlIG5hdmlnYXRpb24uXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCBtdXRhYmxlLCBocmVmLCBwZW5kaW5nUHVzaClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBVc2UgdGhlIHRyZWUgY29tcHV0ZWQgYnkgc3RhcnRQUFJOYXZpZ2F0aW9uIGluc3RlYWRcbiAgICAgICAgICAgICAgLy8gb2YgdGhlIG9uZSBjb21wdXRlZCBieSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUuXG4gICAgICAgICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCByZW1vdmUgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlXG4gICAgICAgICAgICAgIC8vIGZyb20gdGhlIFBQUiBwYXRoIGVudGlyZWx5LlxuICAgICAgICAgICAgICBjb25zdCBwYXRjaGVkUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlID0gdGFzay5yb3V0ZVxuICAgICAgICAgICAgICBuZXdUcmVlID0gcGF0Y2hlZFJvdXRlclN0YXRlXG5cbiAgICAgICAgICAgICAgY29uc3QgbmV3Q2FjaGUgPSB0YXNrLm5vZGVcbiAgICAgICAgICAgICAgaWYgKG5ld0NhY2hlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UndmUgY3JlYXRlZCBhIG5ldyBDYWNoZSBOb2RlIHRyZWUgdGhhdCBjb250YWlucyBhIHByZWZldGNoZWRcbiAgICAgICAgICAgICAgICAvLyB2ZXJzaW9uIG9mIHRoZSBuZXh0IHBhZ2UuIFRoaXMgY2FuIGJlIHJlbmRlcmVkIGluc3RhbnRseS5cbiAgICAgICAgICAgICAgICBtdXRhYmxlLmNhY2hlID0gbmV3Q2FjaGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWUgPSB0YXNrLmR5bmFtaWNSZXF1ZXN0VHJlZVxuICAgICAgICAgICAgICBpZiAoZHluYW1pY1JlcXVlc3RUcmVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHByZWZldGNoZWQgdHJlZSBoYXMgZHluYW1pYyBob2xlcyBpbiBpdC4gV2UgaW5pdGlhdGUgYVxuICAgICAgICAgICAgICAgIC8vIGR5bmFtaWMgcmVxdWVzdCB0byBmaWxsIHRoZW0gaW4uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgYmxvY2sgb24gdGhlIHJlc3VsdC4gV2UnbGwgaW1tZWRpYXRlbHkgcmVuZGVyIHRoZSBDYWNoZVxuICAgICAgICAgICAgICAgIC8vIE5vZGUgdHJlZSBhbmQgc3VzcGVuZCBvbiB0aGUgZHluYW1pYyBwYXJ0cy4gV2hlbiB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgICAgIC8vIGNvbWVzIGluLCB3ZSdsbCBmaWxsIGluIG1pc3NpbmcgZGF0YSBhbmQgcGluZyBSZWFjdCB0b1xuICAgICAgICAgICAgICAgIC8vIHJlLXJlbmRlci4gVW5saWtlIHRoZSBsYXp5IGZldGNoaW5nIG1vZGVsIGluIHRoZSBub24tUFBSXG4gICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb24sIHRoaXMgaXMgbW9kZWxlZCBhcyBhIHNpbmdsZSBSZWFjdCB1cGRhdGUgK1xuICAgICAgICAgICAgICAgIC8vIHN0cmVhbWluZywgcmF0aGVyIHRoYW4gbXVsdGlwbGUgdG9wLWxldmVsIHVwZGF0ZXMuIChIb3dldmVyLFxuICAgICAgICAgICAgICAgIC8vIGV2ZW4gaW4gdGhlIG5ldyBtb2RlbCwgd2UnbGwgc3RpbGwgbmVlZCB0byBzb21ldGltZXMgdXBkYXRlIHRoZVxuICAgICAgICAgICAgICAgIC8vIHJvb3QgbXVsdGlwbGUgdGltZXMgcGVyIG5hdmlnYXRpb24sIGxpa2UgaWYgdGhlIHNlcnZlciBzZW5kcyB1c1xuICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IHJlc3BvbnNlIHRoYW4gd2UgZXhwZWN0ZWQuIEZvciBub3csIHdlIHJldmVydCBiYWNrXG4gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGxhenkgZmV0Y2hpbmcgbWVjaGFuaXNtIGluIHRoYXQgY2FzZS4pXG4gICAgICAgICAgICAgICAgY29uc3QgZHluYW1pY1JlcXVlc3QgPSBmZXRjaFNlcnZlclJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgbmV3IFVSTCh1cGRhdGVkQ2Fub25pY2FsVXJsLCB1cmwub3JpZ2luKSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZmxpZ2h0Um91dGVyU3RhdGU6IGR5bmFtaWNSZXF1ZXN0VHJlZSxcbiAgICAgICAgICAgICAgICAgICAgbmV4dFVybDogc3RhdGUubmV4dFVybCxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5Gb3JEeW5hbWljUmVxdWVzdCh0YXNrLCBkeW5hbWljUmVxdWVzdClcbiAgICAgICAgICAgICAgICAvLyBXZSBzdG9yZSB0aGUgZHluYW1pYyByZXF1ZXN0IG9uIHRoZSBgbGF6eURhdGFgIHByb3BlcnR5IG9mIHRoZSBDYWNoZU5vZGVcbiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlJ3JlIG5vdCBnb2luZyB0byBhd2FpdCB0aGUgZHluYW1pYyByZXF1ZXN0IGhlcmUuIFNpbmNlIHdlJ3JlIG5vdCBibG9ja2luZ1xuICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBkeW5hbWljIHJlcXVlc3QsIGBsYXlvdXQtcm91dGVyYCB3aWxsXG4gICAgICAgICAgICAgICAgLy8gdGFzay5ub2RlLmxhenlEYXRhID0gZHluYW1pY1JlcXVlc3RcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJlZmV0Y2hlZCB0cmVlIGRvZXMgbm90IGNvbnRhaW4gZHluYW1pYyBob2xlcyDigJQgaXQnc1xuICAgICAgICAgICAgICAgIC8vIGZ1bGx5IHN0YXRpYy4gV2UgY2FuIHNraXAgdGhlIGR5bmFtaWMgcmVxdWVzdC5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTm90aGluZyBjaGFuZ2VkLCBzbyByZXVzZSB0aGUgb2xkIGNhY2hlLlxuICAgICAgICAgICAgICAvLyBUT0RPOiBXaGF0IGlmIHRoZSBoZWFkIGNoYW5nZWQgYnV0IG5vdCBhbnkgb2YgdGhlIHNlZ21lbnQgZGF0YT9cbiAgICAgICAgICAgICAgLy8gSXMgdGhhdCBwb3NzaWJsZT8gSWYgc28sIHdlIHNob3VsZCBjbG9uZSB0aGUgd2hvbGUgdHJlZSBhbmRcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBoZWFkLlxuICAgICAgICAgICAgICBuZXdUcmVlID0gdHJlZVBhdGNoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZSBzdGF0aWMgcmVzcG9uc2UgZG9lcyBub3QgaW5jbHVkZSBhbnkgZHluYW1pYyBob2xlcywgc29cbiAgICAgICAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byBkbyBhIHNlY29uZCByZXF1ZXN0LlxuICAgICAgICAgICAgLy8gVE9ETzogQXMgYW4gaW5jcmVtZW50YWwgc3RlcCB0aGlzIGp1c3QgcmV2ZXJ0cyBiYWNrIHRvIHRoZVxuICAgICAgICAgICAgLy8gbm9uLVBQUiBpbXBsZW1lbnRhdGlvbi4gV2UgY2FuIHNpbXBsaWZ5IHRoaXMgYnJhbmNoIGZ1cnRoZXIsXG4gICAgICAgICAgICAvLyBnaXZlbiB0aGF0IFBQUiBwcmVmZXRjaGVzIGFyZSBhbHdheXMgc3RhdGljIGFuZCByZXR1cm4gdGhlIHdob2xlXG4gICAgICAgICAgICAvLyB0cmVlLiBPciBpbiB0aGUgbWVhbnRpbWUgd2UgY291bGQgZmFjdG9yIGl0IG91dCBpbnRvIGFcbiAgICAgICAgICAgIC8vIHNlcGFyYXRlIGZ1bmN0aW9uLlxuXG4gICAgICAgICAgICBpZiAoaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KGN1cnJlbnRUcmVlLCBuZXdUcmVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoc3RhdGUsIG11dGFibGUsIGhyZWYsIHBlbmRpbmdQdXNoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjYWNoZTogQ2FjaGVOb2RlID0gY3JlYXRlRW1wdHlDYWNoZU5vZGUoKVxuICAgICAgICAgICAgbGV0IGFwcGxpZWQgPSBmYWxzZVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHByZWZldGNoVmFsdWVzLnN0YXR1cyA9PT0gUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLnN0YWxlICYmXG4gICAgICAgICAgICAgICFpc0ZpcnN0UmVhZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhIHN0YWxlIHByZWZldGNoIGVudHJ5LCB3ZSBvbmx5IHdhbnQgdG8gcmUtdXNlIHRoZSBsb2FkaW5nIHN0YXRlIG9mIHRoZSByb3V0ZSB3ZSdyZSBuYXZpZ2F0aW5nIHRvLCB0byBzdXBwb3J0IGluc3RhbnQgbG9hZGluZyBuYXZpZ2F0aW9uc1xuICAgICAgICAgICAgICAvLyB0aGlzIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2ggZm9yIHRoZSBhY3R1YWwgcGFnZSBkYXRhIGJ5IG51bGxpbmcgdGhlIGByc2NgIGFuZCBgcHJlZmV0Y2hSc2NgIHZhbHVlcyBmb3IgcGFnZSBkYXRhLFxuICAgICAgICAgICAgICAvLyB3aGlsZSBjb3B5aW5nIG92ZXIgdGhlIGBsb2FkaW5nYCBmb3IgdGhlIHNlZ21lbnQgdGhhdCBjb250YWlucyB0aGUgcGFnZSBkYXRhLlxuICAgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgb24gc3Vic2VxdWVudCByZWFkcywgYXMgb3RoZXJ3aXNlIHRoZXJlJ2QgYmUgbm8gbG9hZGluZyBkYXRhIHRvIHJlLXVzZS5cblxuICAgICAgICAgICAgICAvLyBXZSBza2lwIHRoaXMgYnJhbmNoIGlmIG9ubHkgdGhlIGhhc2ggZnJhZ21lbnQgaGFzIGNoYW5nZWQsIGFzIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGxhenkgZmV0Y2ggaW4gdGhhdCBjYXNlXG4gICAgICAgICAgICAgIGFwcGxpZWQgPSB0cmlnZ2VyTGF6eUZldGNoRm9yTGVhZlNlZ21lbnRzKFxuICAgICAgICAgICAgICAgIGNhY2hlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRDYWNoZSxcbiAgICAgICAgICAgICAgICBmbGlnaHRTZWdtZW50UGF0aCxcbiAgICAgICAgICAgICAgICB0cmVlUGF0Y2hcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSByZS11c2VkIHRoZSBzdGFsZSBjYWNoZSdzIGxvYWRpbmcgc3RhdGUgJiByZWZyZXNoZWQgdGhlIGRhdGEsXG4gICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYGxhc3RVc2VkVGltZWAgc28gdGhhdCBpdCBjYW4gY29udGludWUgdG8gYmUgcmUtdXNlZCBmb3IgdGhlIG5leHQgMzBzXG4gICAgICAgICAgICAgIHByZWZldGNoVmFsdWVzLmxhc3RVc2VkVGltZSA9IG5hdmlnYXRlZEF0XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhcHBsaWVkID0gYXBwbHlGbGlnaHREYXRhKFxuICAgICAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnRDYWNoZSxcbiAgICAgICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkRmxpZ2h0RGF0YSxcbiAgICAgICAgICAgICAgICBwcmVmZXRjaFZhbHVlc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhhcmROYXZpZ2F0ZSA9IHNob3VsZEhhcmROYXZpZ2F0ZShcbiAgICAgICAgICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICAgICAgICBmbGlnaHRTZWdtZW50UGF0aFdpdGhMZWFkaW5nRW1wdHksXG4gICAgICAgICAgICAgIGN1cnJlbnRUcmVlXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGlmIChoYXJkTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgLy8gQ29weSByc2MgZm9yIHRoZSByb290IG5vZGUgb2YgdGhlIGNhY2hlLlxuICAgICAgICAgICAgICBjYWNoZS5yc2MgPSBjdXJyZW50Q2FjaGUucnNjXG4gICAgICAgICAgICAgIGNhY2hlLnByZWZldGNoUnNjID0gY3VycmVudENhY2hlLnByZWZldGNoUnNjXG5cbiAgICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aChcbiAgICAgICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgICAgICAgICBjdXJyZW50Q2FjaGUsXG4gICAgICAgICAgICAgICAgZmxpZ2h0U2VnbWVudFBhdGhcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGV4aXN0aW5nIGNhY2hlIHZhbHVlIGlzIHVzZWQgd2hlbiB0aGUgY2FjaGUgd2FzIG5vdCBpbnZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFwcGxpZWQpIHtcbiAgICAgICAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICAgIC8vIElmIHdlIGFwcGxpZWQgdGhlIGNhY2hlLCB3ZSB1cGRhdGUgdGhlIFwiY3VycmVudCBjYWNoZVwiIHZhbHVlIHNvIGFueSBvdGhlclxuICAgICAgICAgICAgICAvLyBzZWdtZW50cyBpbiB0aGUgRmxpZ2h0RGF0YVBhdGggd2lsbCBiZSBhYmxlIHRvIHJlZmVyZW5jZSB0aGUgdXBkYXRlZCBjYWNoZS5cbiAgICAgICAgICAgICAgY3VycmVudENhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJTZWdtZW50IG9mIGdlbmVyYXRlU2VnbWVudHNGcm9tUGF0Y2godHJlZVBhdGNoKSkge1xuICAgICAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlU2VnbWVudFBhdGggPSBbXG4gICAgICAgICAgICAgICAgLi4uZmxpZ2h0U2VnbWVudFBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc3ViU2VnbWVudCxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IHRoZSBfX0RFRkFVTFRfXyBwYXRocyBhcyB0aGV5IHNob3VsZG4ndCBiZSBzY3JvbGxlZCB0byBpbiB0aGlzIGNhc2UuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlU2VnbWVudFBhdGhbc2Nyb2xsYWJsZVNlZ21lbnRQYXRoLmxlbmd0aCAtIDFdICE9PVxuICAgICAgICAgICAgICAgIERFRkFVTFRfU0VHTUVOVF9LRVlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzLnB1c2goc2Nyb2xsYWJsZVNlZ21lbnRQYXRoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRyZWUgPSBuZXdUcmVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbXV0YWJsZS5wYXRjaGVkVHJlZSA9IGN1cnJlbnRUcmVlXG4gICAgICBtdXRhYmxlLmNhbm9uaWNhbFVybCA9IHVwZGF0ZWRDYW5vbmljYWxVcmxcbiAgICAgIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gc2Nyb2xsYWJsZVNlZ21lbnRzXG4gICAgICBtdXRhYmxlLmhhc2hGcmFnbWVudCA9IGhhc2hcbiAgICAgIG11dGFibGUuc2hvdWxkU2Nyb2xsID0gc2hvdWxkU2Nyb2xsXG5cbiAgICAgIHJldHVybiBoYW5kbGVNdXRhYmxlKHN0YXRlLCBtdXRhYmxlKVxuICAgIH0sXG4gICAgKCkgPT4gc3RhdGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbImdlbmVyYXRlU2VnbWVudHNGcm9tUGF0Y2giLCJoYW5kbGVFeHRlcm5hbFVybCIsIm5hdmlnYXRlUmVkdWNlciIsInN0YXRlIiwibXV0YWJsZSIsInVybCIsInBlbmRpbmdQdXNoIiwibXBhTmF2aWdhdGlvbiIsImNhbm9uaWNhbFVybCIsInNjcm9sbGFibGVTZWdtZW50cyIsInVuZGVmaW5lZCIsImhhbmRsZU11dGFibGUiLCJmbGlnaHRSb3V0ZXJQYXRjaCIsInNlZ21lbnRzIiwic2VnbWVudCIsInBhcmFsbGVsUm91dGVzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInBhcmFsbGVsUm91dGVLZXkiLCJwYXJhbGxlbFJvdXRlIiwiZW50cmllcyIsImNoaWxkU2VnbWVudCIsInB1c2giLCJ0cmlnZ2VyTGF6eUZldGNoRm9yTGVhZlNlZ21lbnRzIiwibmV3Q2FjaGUiLCJjdXJyZW50Q2FjaGUiLCJmbGlnaHRTZWdtZW50UGF0aCIsInRyZWVQYXRjaCIsImFwcGxpZWRQYXRjaCIsInJzYyIsInByZWZldGNoUnNjIiwibG9hZGluZyIsIk1hcCIsInNlZ21lbnRQYXRoc1RvRmlsbCIsIm1hcCIsInNlZ21lbnRQYXRocyIsImNsZWFyQ2FjaGVOb2RlRGF0YUZvclNlZ21lbnRQYXRoIiwiaGFuZGxlTmF2aWdhdGlvblJlc3VsdCIsInJlc3VsdCIsInRhZyIsIk5hdmlnYXRpb25SZXN1bHRUYWciLCJNUEEiLCJuZXdVcmwiLCJkYXRhIiwiTm9PcCIsIm5ld0Nhbm9uaWNhbFVybCIsIm9sZFVybCIsIlVSTCIsIm9ubHlIYXNoQ2hhbmdlIiwicGF0aG5hbWUiLCJzZWFyY2giLCJoYXNoIiwic2hvdWxkU2Nyb2xsIiwiaGFzaEZyYWdtZW50IiwiU3VjY2VzcyIsImNhY2hlIiwiY2FjaGVOb2RlIiwicGF0Y2hlZFRyZWUiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIkFzeW5jIiwidGhlbiIsImFzeW5jUmVzdWx0IiwiYWN0aW9uIiwiaXNFeHRlcm5hbFVybCIsIm5hdmlnYXRlVHlwZSIsImFsbG93QWxpYXNpbmciLCJocmVmIiwiY3JlYXRlSHJlZkZyb21VcmwiLCJwcnVuZVByZWZldGNoQ2FjaGUiLCJwcmVmZXRjaENhY2hlIiwicHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUiLCJ0b1N0cmluZyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwibmF2aWdhdGVVc2luZ1NlZ21lbnRDYWNoZSIsInRyZWUiLCJuZXh0VXJsIiwicHJlZmV0Y2hWYWx1ZXMiLCJnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSIsInRyZWVBdFRpbWVPZlByZWZldGNoIiwicHJlZmV0Y2hRdWV1ZSIsImJ1bXAiLCJmbGlnaHREYXRhIiwiY2Fub25pY2FsVXJsT3ZlcnJpZGUiLCJwb3N0cG9uZWQiLCJuYXZpZ2F0ZWRBdCIsIkRhdGUiLCJub3ciLCJpc0ZpcnN0UmVhZCIsImxhc3RVc2VkVGltZSIsImFsaWFzZWQiLCJ1cmxXaXRoQ2Fub25pY2FsUGF0aG5hbWUiLCJoYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeSIsInVwZGF0ZWRDYW5vbmljYWxVcmwiLCJzcGxpdCIsImN1cnJlbnRUcmVlIiwibm9ybWFsaXplZEZsaWdodERhdGEiLCJwYXRoVG9TZWdtZW50Iiwic2VlZERhdGEiLCJoZWFkIiwiaXNIZWFkUGFydGlhbCIsImlzUm9vdFJlbmRlciIsImZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJ0YXNrIiwic3RhcnRQUFJOYXZpZ2F0aW9uIiwicm91dGUiLCJwYXRjaGVkUm91dGVyU3RhdGUiLCJub2RlIiwiZHluYW1pY1JlcXVlc3RUcmVlIiwiZHluYW1pY1JlcXVlc3QiLCJmZXRjaFNlcnZlclJlc3BvbnNlIiwib3JpZ2luIiwibGlzdGVuRm9yRHluYW1pY1JlcXVlc3QiLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjcmVhdGVFbXB0eUNhY2hlTm9kZSIsImFwcGxpZWQiLCJzdGF0dXMiLCJQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMiLCJzdGFsZSIsImFwcGx5RmxpZ2h0RGF0YSIsImhhcmROYXZpZ2F0ZSIsInNob3VsZEhhcmROYXZpZ2F0ZSIsImludmFsaWRhdGVDYWNoZUJlbG93RmxpZ2h0U2VnbWVudFBhdGgiLCJzdWJTZWdtZW50Iiwic2Nyb2xsYWJsZVNlZ21lbnRQYXRoIiwiREVGQVVMVF9TRUdNRU5UX0tFWSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js": /*!**********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js ***! \**********************************************************************************************/ /***/ ((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 prefetchQueue: function() {\n return prefetchQueue;\n },\n prefetchReducer: function() {\n return prefetchReducer;\n }\n});\nconst _promisequeue = __webpack_require__(/*! ../../promise-queue */ \"(app-pages-browser)/./node_modules/next/dist/client/components/promise-queue.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst prefetchQueue = new _promisequeue.PromiseQueue(5);\nconst prefetchReducer = false ? 0 : prefetchReducerImpl;\nfunction identityReducerWhenSegmentCacheIsEnabled(state) {\n // Unlike the old implementation, the Segment Cache doesn't store its data in\n // the router reducer state.\n //\n // This shouldn't be reachable because we wrap the prefetch API in a check,\n // too, which prevents the action from being dispatched. But it's here for\n // clarity + code elimination.\n return state;\n}\nfunction prefetchReducerImpl(state, action) {\n // let's prune the prefetch cache before we do anything else\n (0, _prefetchcacheutils.prunePrefetchCache)(state.prefetchCache);\n const { url } = action;\n (0, _prefetchcacheutils.getOrCreatePrefetchCacheEntry)({\n url,\n nextUrl: state.nextUrl,\n prefetchCache: state.prefetchCache,\n kind: action.kind,\n tree: state.tree,\n allowAliasing: true\n });\n return state;\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=prefetch-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcHJlZmV0Y2gtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVYUEsYUFBYTtlQUFiQTs7SUFFQUMsZUFBZTtlQUFmQTs7OzBDQVBnQjtnREFJdEI7QUFDQSxNQUFNRCxnQkFBZ0IsSUFBSUUsY0FBQUEsWUFBWSxDQUFDO0FBRXZDLE1BQU1ELGtCQUFrQkUsTUFBdUMsR0FDbEVHLENBQXdDQSxHQUN4Q0M7QUFFSixTQUFTRCx5Q0FBNENFLEtBQVE7SUFDM0QsNkVBQTZFO0lBQzdFLDRCQUE0QjtJQUM1QixFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSw4QkFBOEI7SUFDOUIsT0FBT0E7QUFDVDtBQUVBLFNBQVNELG9CQUNQQyxLQUEyQixFQUMzQkMsTUFBc0I7SUFFdEIsNERBQTREO0lBQzVEQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQW1CRixNQUFNRyxhQUFhO0lBRXRDLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdIO0lBRWhCSSxDQUFBQSxHQUFBQSxvQkFBQUEsNkJBQUFBLEVBQThCO1FBQzVCRDtRQUNBRSxTQUFTTixNQUFNTSxPQUFPO1FBQ3RCSCxlQUFlSCxNQUFNRyxhQUFhO1FBQ2xDSSxNQUFNTixPQUFPTSxJQUFJO1FBQ2pCQyxNQUFNUixNQUFNUSxJQUFJO1FBQ2hCQyxlQUFlO0lBQ2pCO0lBRUEsT0FBT1Q7QUFDVCIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9wcmVmZXRjaC1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgUHJlZmV0Y2hBY3Rpb24sXG4gIFJlZHVjZXJTdGF0ZSxcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgUHJvbWlzZVF1ZXVlIH0gZnJvbSAnLi4vLi4vcHJvbWlzZS1xdWV1ZSdcbmltcG9ydCB7XG4gIGdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5LFxuICBwcnVuZVByZWZldGNoQ2FjaGUsXG59IGZyb20gJy4uL3ByZWZldGNoLWNhY2hlLXV0aWxzJ1xuZXhwb3J0IGNvbnN0IHByZWZldGNoUXVldWUgPSBuZXcgUHJvbWlzZVF1ZXVlKDUpXG5cbmV4cG9ydCBjb25zdCBwcmVmZXRjaFJlZHVjZXIgPSBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgPyBpZGVudGl0eVJlZHVjZXJXaGVuU2VnbWVudENhY2hlSXNFbmFibGVkXG4gIDogcHJlZmV0Y2hSZWR1Y2VySW1wbFxuXG5mdW5jdGlvbiBpZGVudGl0eVJlZHVjZXJXaGVuU2VnbWVudENhY2hlSXNFbmFibGVkPFQ+KHN0YXRlOiBUKTogVCB7XG4gIC8vIFVubGlrZSB0aGUgb2xkIGltcGxlbWVudGF0aW9uLCB0aGUgU2VnbWVudCBDYWNoZSBkb2Vzbid0IHN0b3JlIGl0cyBkYXRhIGluXG4gIC8vIHRoZSByb3V0ZXIgcmVkdWNlciBzdGF0ZS5cbiAgLy9cbiAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgcmVhY2hhYmxlIGJlY2F1c2Ugd2Ugd3JhcCB0aGUgcHJlZmV0Y2ggQVBJIGluIGEgY2hlY2ssXG4gIC8vIHRvbywgd2hpY2ggcHJldmVudHMgdGhlIGFjdGlvbiBmcm9tIGJlaW5nIGRpc3BhdGNoZWQuIEJ1dCBpdCdzIGhlcmUgZm9yXG4gIC8vIGNsYXJpdHkgKyBjb2RlIGVsaW1pbmF0aW9uLlxuICByZXR1cm4gc3RhdGVcbn1cblxuZnVuY3Rpb24gcHJlZmV0Y2hSZWR1Y2VySW1wbChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFByZWZldGNoQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICAvLyBsZXQncyBwcnVuZSB0aGUgcHJlZmV0Y2ggY2FjaGUgYmVmb3JlIHdlIGRvIGFueXRoaW5nIGVsc2VcbiAgcHJ1bmVQcmVmZXRjaENhY2hlKHN0YXRlLnByZWZldGNoQ2FjaGUpXG5cbiAgY29uc3QgeyB1cmwgfSA9IGFjdGlvblxuXG4gIGdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5KHtcbiAgICB1cmwsXG4gICAgbmV4dFVybDogc3RhdGUubmV4dFVybCxcbiAgICBwcmVmZXRjaENhY2hlOiBzdGF0ZS5wcmVmZXRjaENhY2hlLFxuICAgIGtpbmQ6IGFjdGlvbi5raW5kLFxuICAgIHRyZWU6IHN0YXRlLnRyZWUsXG4gICAgYWxsb3dBbGlhc2luZzogdHJ1ZSxcbiAgfSlcblxuICByZXR1cm4gc3RhdGVcbn1cbiJdLCJuYW1lcyI6WyJwcmVmZXRjaFF1ZXVlIiwicHJlZmV0Y2hSZWR1Y2VyIiwiUHJvbWlzZVF1ZXVlIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSIsImlkZW50aXR5UmVkdWNlcldoZW5TZWdtZW50Q2FjaGVJc0VuYWJsZWQiLCJwcmVmZXRjaFJlZHVjZXJJbXBsIiwic3RhdGUiLCJhY3Rpb24iLCJwcnVuZVByZWZldGNoQ2FjaGUiLCJwcmVmZXRjaENhY2hlIiwidXJsIiwiZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnkiLCJuZXh0VXJsIiwia2luZCIsInRyZWUiLCJhbGxvd0FsaWFzaW5nIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js": /*!*********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"refreshReducer\", ({\n enumerable: true,\n get: function() {\n return refreshReducer;\n }\n}));\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ../fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ../refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nfunction refreshReducer(state, action) {\n const { origin } = action;\n const mutable = {};\n const href = state.canonicalUrl;\n let currentTree = state.tree;\n mutable.preserveCustomHistoryState = false;\n const cache = (0, _approuter.createEmptyCacheNode)();\n // If the current tree was intercepted, the nextUrl should be included in the request.\n // This is to ensure that the refresh request doesn't get intercepted, accidentally triggering the interception route.\n const includeNextUrl = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree);\n // TODO-APP: verify that `href` is not an external url.\n // Fetch data from the root of the tree.\n cache.lazyData = (0, _fetchserverresponse.fetchServerResponse)(new URL(href, origin), {\n flightRouterState: [\n currentTree[0],\n currentTree[1],\n currentTree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null\n });\n const navigatedAt = Date.now();\n return cache.lazyData.then(async (param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride } = param;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n // Remove cache.lazyData as it has been resolved at this point.\n cache.lazyData = null;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, seedData: cacheNodeSeedData, head, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('REFRESH FAILED');\n return state;\n }\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, state.canonicalUrl);\n if (newTree === null) {\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, href, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverride) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n // Handles case where prefetch only returns the router tree patch without rendered components.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1];\n const loading = cacheNodeSeedData[3];\n cache.rsc = rsc;\n cache.prefetchRsc = null;\n cache.loading = loading;\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, treePatch, cacheNodeSeedData, head, undefined);\n if (false) {} else {\n mutable.prefetchCache = new Map();\n }\n }\n await (0, _refetchinactiveparallelsegments.refreshInactiveParallelSegments)({\n navigatedAt,\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl,\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl\n });\n mutable.cache = cache;\n mutable.patchedTree = newTree;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\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=refresh-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVmcmVzaC1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBb0JnQkE7OztlQUFBQTs7O2lEQXBCb0I7K0NBQ0Y7eURBQ1U7eURBQ0E7NkNBT1Y7MkNBQ0o7MkRBRWdCO3VDQUNUO21EQUNDOytEQUNZOzZEQUNGOzBDQUNWO0FBRS9CLFNBQVNBLGVBQ2RDLEtBQTJCLEVBQzNCQyxNQUFxQjtJQUVyQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHRDtJQUNuQixNQUFNRSxVQUFtQixDQUFDO0lBQzFCLE1BQU1DLE9BQU9KLE1BQU1LLFlBQVk7SUFFL0IsSUFBSUMsY0FBY04sTUFBTU8sSUFBSTtJQUU1QkosUUFBUUssMEJBQTBCLEdBQUc7SUFFckMsTUFBTUMsUUFBbUJDLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQTtJQUV6QixzRkFBc0Y7SUFDdEYsc0hBQXNIO0lBQ3RILE1BQU1DLGlCQUFpQkMsQ0FBQUEsR0FBQUEsbUNBQUFBLGlDQUFpQyxFQUFDWixNQUFNTyxJQUFJO0lBRW5FLHVEQUF1RDtJQUN2RCx3Q0FBd0M7SUFDeENFLE1BQU1JLFFBQVEsR0FBR0MsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQixJQUFJQyxJQUFJWCxNQUFNRixTQUFTO1FBQzFEYyxtQkFBbUI7WUFDakJWLFdBQVcsQ0FBQyxFQUFFO1lBQ2RBLFdBQVcsQ0FBQyxFQUFFO1lBQ2RBLFdBQVcsQ0FBQyxFQUFFO1lBQ2Q7U0FDRDtRQUNEVyxTQUFTTixpQkFBaUJYLE1BQU1pQixPQUFPLEdBQUc7SUFDNUM7SUFFQSxNQUFNQyxjQUFjQyxLQUFLQyxHQUFHO0lBQzVCLE9BQU9YLE1BQU1JLFFBQVEsQ0FBQ1EsSUFBSSxDQUN4QjtZQUFPLEVBQUVDLFVBQVUsRUFBRWpCLGNBQWNrQixvQkFBb0IsRUFBRTtRQUN2RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPRCxlQUFlLFVBQVU7WUFDbEMsT0FBT0UsQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMeEIsT0FDQUcsU0FDQW1CLFlBQ0F0QixNQUFNeUIsT0FBTyxDQUFDQyxXQUFXO1FBRTdCO1FBRUEsK0RBQStEO1FBQy9EakIsTUFBTUksUUFBUSxHQUFHO1FBRWpCLEtBQUssTUFBTWMsd0JBQXdCTCxXQUFZO1lBQzdDLE1BQU0sRUFDSmYsTUFBTXFCLFNBQVMsRUFDZkMsVUFBVUMsaUJBQWlCLEVBQzNCQyxJQUFJLEVBQ0pDLFlBQVksRUFDYixHQUFHTDtZQUVKLElBQUksQ0FBQ0ssY0FBYztnQkFDakIsb0NBQW9DO2dCQUNwQ0MsUUFBUUMsR0FBRyxDQUFDO2dCQUNaLE9BQU9sQztZQUNUO1lBRUEsTUFBTW1DLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDZDtnQkFDQzthQUFHLEVBQ0o5QixhQUNBc0IsV0FDQTVCLE1BQU1LLFlBQVk7WUFHcEIsSUFBSThCLFlBQVksTUFBTTtnQkFDcEIsT0FBT0UsQ0FBQUEsR0FBQUEsdUJBQUFBLHFCQUFBQSxFQUFzQnJDLE9BQU9DLFFBQVEyQjtZQUM5QztZQUVBLElBQUlVLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFBNEJoQyxhQUFhNkIsVUFBVTtnQkFDckQsT0FBT1gsQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMeEIsT0FDQUcsU0FDQUMsTUFDQUosTUFBTXlCLE9BQU8sQ0FBQ0MsV0FBVztZQUU3QjtZQUVBLE1BQU1hLDJCQUEyQmhCLHVCQUM3QmlCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JqQix3QkFDbEJrQjtZQUVKLElBQUlsQixzQkFBc0I7Z0JBQ3hCcEIsUUFBUUUsWUFBWSxHQUFHa0M7WUFDekI7WUFFQSw4RkFBOEY7WUFDOUYsSUFBSVQsc0JBQXNCLE1BQU07Z0JBQzlCLE1BQU1ZLE1BQU1aLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ2hDLE1BQU1hLFVBQVViLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3BDckIsTUFBTWlDLEdBQUcsR0FBR0E7Z0JBQ1pqQyxNQUFNbUMsV0FBVyxHQUFHO2dCQUNwQm5DLE1BQU1rQyxPQUFPLEdBQUdBO2dCQUNoQkUsQ0FBQUEsR0FBQUEsK0JBQUFBLDZCQUFBQSxFQUNFM0IsYUFDQVQsT0FDQSxXQUVBbUIsV0FDQUUsbUJBQ0FDLE1BQ0FVO2dCQUVGLElBQUlLLEtBQXVDLEVBQUUsRUFFNUMsTUFBTTtvQkFDTDNDLFFBQVErQyxhQUFhLEdBQUcsSUFBSUM7Z0JBQzlCO1lBQ0Y7WUFFQSxNQUFNQyxDQUFBQSxHQUFBQSxpQ0FBQUEsK0JBQUFBLEVBQWdDO2dCQUNwQ2xDO2dCQUNBbEI7Z0JBQ0FxRCxhQUFhbEI7Z0JBQ2JtQixjQUFjN0M7Z0JBQ2RFO2dCQUNBTixjQUFjRixRQUFRRSxZQUFZLElBQUlMLE1BQU1LLFlBQVk7WUFDMUQ7WUFFQUYsUUFBUU0sS0FBSyxHQUFHQTtZQUNoQk4sUUFBUW9ELFdBQVcsR0FBR3BCO1lBRXRCN0IsY0FBYzZCO1FBQ2hCO1FBRUEsT0FBT3FCLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWN4RCxPQUFPRztJQUM5QixHQUNBLElBQU1IO0FBRVYiLCJzb3VyY2VzIjpbIi9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVmcmVzaC1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoU2VydmVyUmVzcG9uc2UgfSBmcm9tICcuLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5pbXBvcnQgeyBjcmVhdGVIcmVmRnJvbVVybCB9IGZyb20gJy4uL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuaW1wb3J0IHsgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIH0gZnJvbSAnLi4vYXBwbHktcm91dGVyLXN0YXRlLXBhdGNoLXRvLXRyZWUnXG5pbXBvcnQgeyBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQgfSBmcm9tICcuLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB0eXBlIHtcbiAgTXV0YWJsZSxcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIFJlZHVjZXJTdGF0ZSxcbiAgUmVmcmVzaEFjdGlvbixcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBoYW5kbGVFeHRlcm5hbFVybCB9IGZyb20gJy4vbmF2aWdhdGUtcmVkdWNlcidcbmltcG9ydCB7IGhhbmRsZU11dGFibGUgfSBmcm9tICcuLi9oYW5kbGUtbXV0YWJsZSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCB9IGZyb20gJy4uL2ZpbGwtbGF6eS1pdGVtcy10aWxsLWxlYWYtd2l0aC1oZWFkJ1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi9hcHAtcm91dGVyJ1xuaW1wb3J0IHsgaGFuZGxlU2VnbWVudE1pc21hdGNoIH0gZnJvbSAnLi4vaGFuZGxlLXNlZ21lbnQtbWlzbWF0Y2gnXG5pbXBvcnQgeyBoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUgfSBmcm9tICcuL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlJ1xuaW1wb3J0IHsgcmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyB9IGZyb20gJy4uL3JlZmV0Y2gtaW5hY3RpdmUtcGFyYWxsZWwtc2VnbWVudHMnXG5pbXBvcnQgeyByZXZhbGlkYXRlRW50aXJlQ2FjaGUgfSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaFJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBSZWZyZXNoQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICBjb25zdCB7IG9yaWdpbiB9ID0gYWN0aW9uXG4gIGNvbnN0IG11dGFibGU6IE11dGFibGUgPSB7fVxuICBjb25zdCBocmVmID0gc3RhdGUuY2Fub25pY2FsVXJsXG5cbiAgbGV0IGN1cnJlbnRUcmVlID0gc3RhdGUudHJlZVxuXG4gIG11dGFibGUucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUgPSBmYWxzZVxuXG4gIGNvbnN0IGNhY2hlOiBDYWNoZU5vZGUgPSBjcmVhdGVFbXB0eUNhY2hlTm9kZSgpXG5cbiAgLy8gSWYgdGhlIGN1cnJlbnQgdHJlZSB3YXMgaW50ZXJjZXB0ZWQsIHRoZSBuZXh0VXJsIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVxdWVzdC5cbiAgLy8gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcmVmcmVzaCByZXF1ZXN0IGRvZXNuJ3QgZ2V0IGludGVyY2VwdGVkLCBhY2NpZGVudGFsbHkgdHJpZ2dlcmluZyB0aGUgaW50ZXJjZXB0aW9uIHJvdXRlLlxuICBjb25zdCBpbmNsdWRlTmV4dFVybCA9IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZShzdGF0ZS50cmVlKVxuXG4gIC8vIFRPRE8tQVBQOiB2ZXJpZnkgdGhhdCBgaHJlZmAgaXMgbm90IGFuIGV4dGVybmFsIHVybC5cbiAgLy8gRmV0Y2ggZGF0YSBmcm9tIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICBjYWNoZS5sYXp5RGF0YSA9IGZldGNoU2VydmVyUmVzcG9uc2UobmV3IFVSTChocmVmLCBvcmlnaW4pLCB7XG4gICAgZmxpZ2h0Um91dGVyU3RhdGU6IFtcbiAgICAgIGN1cnJlbnRUcmVlWzBdLFxuICAgICAgY3VycmVudFRyZWVbMV0sXG4gICAgICBjdXJyZW50VHJlZVsyXSxcbiAgICAgICdyZWZldGNoJyxcbiAgICBdLFxuICAgIG5leHRVcmw6IGluY2x1ZGVOZXh0VXJsID8gc3RhdGUubmV4dFVybCA6IG51bGwsXG4gIH0pXG5cbiAgY29uc3QgbmF2aWdhdGVkQXQgPSBEYXRlLm5vdygpXG4gIHJldHVybiBjYWNoZS5sYXp5RGF0YS50aGVuKFxuICAgIGFzeW5jICh7IGZsaWdodERhdGEsIGNhbm9uaWNhbFVybDogY2Fub25pY2FsVXJsT3ZlcnJpZGUgfSkgPT4ge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgXG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBtdXRhYmxlLFxuICAgICAgICAgIGZsaWdodERhdGEsXG4gICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBjYWNoZS5sYXp5RGF0YSBhcyBpdCBoYXMgYmVlbiByZXNvbHZlZCBhdCB0aGlzIHBvaW50LlxuICAgICAgY2FjaGUubGF6eURhdGEgPSBudWxsXG5cbiAgICAgIGZvciAoY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgb2YgZmxpZ2h0RGF0YSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdHJlZTogdHJlZVBhdGNoLFxuICAgICAgICAgIHNlZWREYXRhOiBjYWNoZU5vZGVTZWVkRGF0YSxcbiAgICAgICAgICBoZWFkLFxuICAgICAgICAgIGlzUm9vdFJlbmRlcixcbiAgICAgICAgfSA9IG5vcm1hbGl6ZWRGbGlnaHREYXRhXG5cbiAgICAgICAgaWYgKCFpc1Jvb3RSZW5kZXIpIHtcbiAgICAgICAgICAvLyBUT0RPLUFQUDogaGFuZGxlIHRoaXMgY2FzZSBiZXR0ZXJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUkVGUkVTSCBGQUlMRUQnKVxuICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgICAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgICAgICAgWycnXSxcbiAgICAgICAgICBjdXJyZW50VHJlZSxcbiAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgc3RhdGUuY2Fub25pY2FsVXJsXG4gICAgICAgIClcblxuICAgICAgICBpZiAobmV3VHJlZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVTZWdtZW50TWlzbWF0Y2goc3RhdGUsIGFjdGlvbiwgdHJlZVBhdGNoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZSwgbmV3VHJlZSkpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgICBocmVmLFxuICAgICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiA9IGNhbm9uaWNhbFVybE92ZXJyaWRlXG4gICAgICAgICAgPyBjcmVhdGVIcmVmRnJvbVVybChjYW5vbmljYWxVcmxPdmVycmlkZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChjYW5vbmljYWxVcmxPdmVycmlkZSkge1xuICAgICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmXG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGVzIGNhc2Ugd2hlcmUgcHJlZmV0Y2ggb25seSByZXR1cm5zIHRoZSByb3V0ZXIgdHJlZSBwYXRjaCB3aXRob3V0IHJlbmRlcmVkIGNvbXBvbmVudHMuXG4gICAgICAgIGlmIChjYWNoZU5vZGVTZWVkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJzYyA9IGNhY2hlTm9kZVNlZWREYXRhWzFdXG4gICAgICAgICAgY29uc3QgbG9hZGluZyA9IGNhY2hlTm9kZVNlZWREYXRhWzNdXG4gICAgICAgICAgY2FjaGUucnNjID0gcnNjXG4gICAgICAgICAgY2FjaGUucHJlZmV0Y2hSc2MgPSBudWxsXG4gICAgICAgICAgY2FjaGUubG9hZGluZyA9IGxvYWRpbmdcbiAgICAgICAgICBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZChcbiAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgICAvLyBFeGlzdGluZyBjYWNoZSBpcyBub3QgcGFzc2VkIGluIGFzIGByb3V0ZXIucmVmcmVzaCgpYCBoYXMgdG8gaW52YWxpZGF0ZSB0aGUgZW50aXJlIGNhY2hlLlxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICAgICAgY2FjaGVOb2RlU2VlZERhdGEsXG4gICAgICAgICAgICBoZWFkLFxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUpIHtcbiAgICAgICAgICAgIHJldmFsaWRhdGVFbnRpcmVDYWNoZShzdGF0ZS5uZXh0VXJsLCBuZXdUcmVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtdXRhYmxlLnByZWZldGNoQ2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCByZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzKHtcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICB1cGRhdGVkVHJlZTogbmV3VHJlZSxcbiAgICAgICAgICB1cGRhdGVkQ2FjaGU6IGNhY2hlLFxuICAgICAgICAgIGluY2x1ZGVOZXh0VXJsLFxuICAgICAgICAgIGNhbm9uaWNhbFVybDogbXV0YWJsZS5jYW5vbmljYWxVcmwgfHwgc3RhdGUuY2Fub25pY2FsVXJsLFxuICAgICAgICB9KVxuXG4gICAgICAgIG11dGFibGUuY2FjaGUgPSBjYWNoZVxuICAgICAgICBtdXRhYmxlLnBhdGNoZWRUcmVlID0gbmV3VHJlZVxuXG4gICAgICAgIGN1cnJlbnRUcmVlID0gbmV3VHJlZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbiAgICB9LFxuICAgICgpID0+IHN0YXRlXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJyZWZyZXNoUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwib3JpZ2luIiwibXV0YWJsZSIsImhyZWYiLCJjYW5vbmljYWxVcmwiLCJjdXJyZW50VHJlZSIsInRyZWUiLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImNhY2hlIiwiY3JlYXRlRW1wdHlDYWNoZU5vZGUiLCJpbmNsdWRlTmV4dFVybCIsImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIsImxhenlEYXRhIiwiZmV0Y2hTZXJ2ZXJSZXNwb25zZSIsIlVSTCIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsIm5hdmlnYXRlZEF0IiwiRGF0ZSIsIm5vdyIsInRoZW4iLCJmbGlnaHREYXRhIiwiY2Fub25pY2FsVXJsT3ZlcnJpZGUiLCJoYW5kbGVFeHRlcm5hbFVybCIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwidHJlZVBhdGNoIiwic2VlZERhdGEiLCJjYWNoZU5vZGVTZWVkRGF0YSIsImhlYWQiLCJpc1Jvb3RSZW5kZXIiLCJjb25zb2xlIiwibG9nIiwibmV3VHJlZSIsImFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSIsImhhbmRsZVNlZ21lbnRNaXNtYXRjaCIsImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsImNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiIsImNyZWF0ZUhyZWZGcm9tVXJsIiwidW5kZWZpbmVkIiwicnNjIiwibG9hZGluZyIsInByZWZldGNoUnNjIiwiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwicmV2YWxpZGF0ZUVudGlyZUNhY2hlIiwicHJlZmV0Y2hDYWNoZSIsIk1hcCIsInJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMiLCJ1cGRhdGVkVHJlZSIsInVwZGF0ZWRDYWNoZSIsInBhdGNoZWRUcmVlIiwiaGFuZGxlTXV0YWJsZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js": /*!*********************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"restoreReducer\", ({\n enumerable: true,\n get: function() {\n return restoreReducer;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _computechangedpath = __webpack_require__(/*! ../compute-changed-path */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nfunction restoreReducer(state, action) {\n const { url, tree } = action;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n // This action is used to restore the router state from the history state.\n // However, it's possible that the history state no longer contains the `FlightRouterState`.\n // We will copy over the internal state on pushState/replaceState events, but if a history entry\n // occurred before hydration, or if the user navigated to a hash using a regular anchor link,\n // the history state will not contain the `FlightRouterState`.\n // In this case, we'll continue to use the existing tree so the router doesn't get into an invalid state.\n const treeToRestore = tree || state.tree;\n const oldCache = state.cache;\n const newCache = false ? // prevents an unnecessary flash back to PPR state during a\n // back/forward navigation.\n 0 : oldCache;\n var _extractPathFromFlightRouterState;\n return {\n // Set canonical url\n canonicalUrl: href,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // Ensures that the custom history state that was set is preserved when applying this update.\n preserveCustomHistoryState: true\n },\n focusAndScrollRef: state.focusAndScrollRef,\n cache: newCache,\n prefetchCache: state.prefetchCache,\n // Restore provided tree\n tree: treeToRestore,\n nextUrl: (_extractPathFromFlightRouterState = (0, _computechangedpath.extractPathFromFlightRouterState)(treeToRestore)) != null ? _extractPathFromFlightRouterState : url.pathname\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=restore-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVzdG9yZS1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBU2dCQTs7O2VBQUFBOzs7K0NBVGtCO2dEQU1lOzRDQUNJO0FBRTlDLFNBQVNBLGVBQ2RDLEtBQTJCLEVBQzNCQyxNQUFxQjtJQUVyQixNQUFNLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLE9BQU9DLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JIO0lBQy9CLDBFQUEwRTtJQUMxRSw0RkFBNEY7SUFDNUYsZ0dBQWdHO0lBQ2hHLDZGQUE2RjtJQUM3Riw4REFBOEQ7SUFDOUQseUdBQXlHO0lBQ3pHLE1BQU1JLGdCQUFnQkgsUUFBUUgsTUFBTUcsSUFBSTtJQUV4QyxNQUFNSSxXQUFXUCxNQUFNUSxLQUFLO0lBQzVCLE1BQU1DLFdBQVdDLE1BQXNCLEdBRW5DLDJEQUMyRDtJQUMzRCwyQkFBMkI7SUFDM0JHLENBQTZEUCxHQUM3REM7UUFnQk9PO0lBZFgsT0FBTztRQUNMLG9CQUFvQjtRQUNwQkMsY0FBY1g7UUFDZFksU0FBUztZQUNQQyxhQUFhO1lBQ2JDLGVBQWU7WUFDZiw2RkFBNkY7WUFDN0ZDLDRCQUE0QjtRQUM5QjtRQUNBQyxtQkFBbUJwQixNQUFNb0IsaUJBQWlCO1FBQzFDWixPQUFPQztRQUNQWSxlQUFlckIsTUFBTXFCLGFBQWE7UUFDbEMsd0JBQXdCO1FBQ3hCbEIsTUFBTUc7UUFDTmdCLFNBQVNSLENBQUFBLG9DQUFBQSxDQUFBQSxHQUFBQSxvQkFBQUEsZ0NBQUFBLEVBQWlDUixjQUFBQSxLQUFBQSxPQUFqQ1Esb0NBQW1EWixJQUFJcUIsUUFBUTtJQUMxRTtBQUNGIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3Jlc3RvcmUtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIcmVmRnJvbVVybCB9IGZyb20gJy4uL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuaW1wb3J0IHR5cGUge1xuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlclN0YXRlLFxuICBSZXN0b3JlQWN0aW9uLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vY29tcHV0ZS1jaGFuZ2VkLXBhdGgnXG5pbXBvcnQgeyB1cGRhdGVDYWNoZU5vZGVPblBvcHN0YXRlUmVzdG9yYXRpb24gfSBmcm9tICcuLi9wcHItbmF2aWdhdGlvbnMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlc3RvcmVBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIGNvbnN0IHsgdXJsLCB0cmVlIH0gPSBhY3Rpb25cbiAgY29uc3QgaHJlZiA9IGNyZWF0ZUhyZWZGcm9tVXJsKHVybClcbiAgLy8gVGhpcyBhY3Rpb24gaXMgdXNlZCB0byByZXN0b3JlIHRoZSByb3V0ZXIgc3RhdGUgZnJvbSB0aGUgaGlzdG9yeSBzdGF0ZS5cbiAgLy8gSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBoaXN0b3J5IHN0YXRlIG5vIGxvbmdlciBjb250YWlucyB0aGUgYEZsaWdodFJvdXRlclN0YXRlYC5cbiAgLy8gV2Ugd2lsbCBjb3B5IG92ZXIgdGhlIGludGVybmFsIHN0YXRlIG9uIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGUgZXZlbnRzLCBidXQgaWYgYSBoaXN0b3J5IGVudHJ5XG4gIC8vIG9jY3VycmVkIGJlZm9yZSBoeWRyYXRpb24sIG9yIGlmIHRoZSB1c2VyIG5hdmlnYXRlZCB0byBhIGhhc2ggdXNpbmcgYSByZWd1bGFyIGFuY2hvciBsaW5rLFxuICAvLyB0aGUgaGlzdG9yeSBzdGF0ZSB3aWxsIG5vdCBjb250YWluIHRoZSBgRmxpZ2h0Um91dGVyU3RhdGVgLlxuICAvLyBJbiB0aGlzIGNhc2UsIHdlJ2xsIGNvbnRpbnVlIHRvIHVzZSB0aGUgZXhpc3RpbmcgdHJlZSBzbyB0aGUgcm91dGVyIGRvZXNuJ3QgZ2V0IGludG8gYW4gaW52YWxpZCBzdGF0ZS5cbiAgY29uc3QgdHJlZVRvUmVzdG9yZSA9IHRyZWUgfHwgc3RhdGUudHJlZVxuXG4gIGNvbnN0IG9sZENhY2hlID0gc3RhdGUuY2FjaGVcbiAgY29uc3QgbmV3Q2FjaGUgPSBwcm9jZXNzLmVudi5fX05FWFRfUFBSXG4gICAgPyAvLyBXaGVuIFBQUiBpcyBlbmFibGVkLCB3ZSB1cGRhdGUgdGhlIGNhY2hlIHRvIGRyb3AgdGhlIHByZWZldGNoXG4gICAgICAvLyBkYXRhIGZvciBhbnkgc2VnbWVudCB3aG9zZSBkeW5hbWljIGRhdGEgd2FzIGFscmVhZHkgcmVjZWl2ZWQuIFRoaXNcbiAgICAgIC8vIHByZXZlbnRzIGFuIHVubmVjZXNzYXJ5IGZsYXNoIGJhY2sgdG8gUFBSIHN0YXRlIGR1cmluZyBhXG4gICAgICAvLyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi5cbiAgICAgIHVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbihvbGRDYWNoZSwgdHJlZVRvUmVzdG9yZSlcbiAgICA6IG9sZENhY2hlXG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTZXQgY2Fub25pY2FsIHVybFxuICAgIGNhbm9uaWNhbFVybDogaHJlZixcbiAgICBwdXNoUmVmOiB7XG4gICAgICBwZW5kaW5nUHVzaDogZmFsc2UsXG4gICAgICBtcGFOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgY3VzdG9tIGhpc3Rvcnkgc3RhdGUgdGhhdCB3YXMgc2V0IGlzIHByZXNlcnZlZCB3aGVuIGFwcGx5aW5nIHRoaXMgdXBkYXRlLlxuICAgICAgcHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6IHRydWUsXG4gICAgfSxcbiAgICBmb2N1c0FuZFNjcm9sbFJlZjogc3RhdGUuZm9jdXNBbmRTY3JvbGxSZWYsXG4gICAgY2FjaGU6IG5ld0NhY2hlLFxuICAgIHByZWZldGNoQ2FjaGU6IHN0YXRlLnByZWZldGNoQ2FjaGUsXG4gICAgLy8gUmVzdG9yZSBwcm92aWRlZCB0cmVlXG4gICAgdHJlZTogdHJlZVRvUmVzdG9yZSxcbiAgICBuZXh0VXJsOiBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSh0cmVlVG9SZXN0b3JlKSA/PyB1cmwucGF0aG5hbWUsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJyZXN0b3JlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwidXJsIiwidHJlZSIsImhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsInRyZWVUb1Jlc3RvcmUiLCJvbGRDYWNoZSIsImNhY2hlIiwibmV3Q2FjaGUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1BQUiIsInVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbiIsImV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlIiwiY2Fub25pY2FsVXJsIiwicHVzaFJlZiIsInBlbmRpbmdQdXNoIiwibXBhTmF2aWdhdGlvbiIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiZm9jdXNBbmRTY3JvbGxSZWYiLCJwcmVmZXRjaENhY2hlIiwibmV4dFVybCIsInBhdGhuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js": /*!***************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js ***! \***************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverActionReducer\", ({\n enumerable: true,\n get: function() {\n return serverActionReducer;\n }\n}));\nconst _appcallserver = __webpack_require__(/*! ../../../app-call-server */ \"(app-pages-browser)/./node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../../app-find-source-map-url */ \"(app-pages-browser)/./node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../app-router-headers */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ../../unrecognized-action-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _assignlocation = __webpack_require__(/*! ../../../assign-location */ \"(app-pages-browser)/./node_modules/next/dist/client/assign-location.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ../fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ../refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _redirect = __webpack_require__(/*! ../../redirect */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ../../redirect-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/redirect-error.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _removebasepath = __webpack_require__(/*! ../../../remove-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../has-base-path */ \"(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js\");\nconst _serverreferenceinfo = __webpack_require__(/*! ../../../../shared/lib/server-reference-info */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/server-reference-info.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\");\nconst createFromFetch = _client.createFromFetch;\nasync function fetchServerAction(state, nextUrl, param) {\n let { actionId, actionArgs } = param;\n const temporaryReferences = (0, _client.createTemporaryReferenceSet)();\n const info = (0, _serverreferenceinfo.extractInfoFromServerReferenceId)(actionId);\n // TODO: Currently, we're only omitting unused args for the experimental \"use\n // cache\" functions. Once the server reference info byte feature is stable, we\n // should apply this to server actions as well.\n const usedArgs = info.type === 'use-cache' ? (0, _serverreferenceinfo.omitUnusedArgs)(actionArgs, info) : actionArgs;\n const body = await (0, _client.encodeReply)(usedArgs, {\n temporaryReferences\n });\n const res = await fetch(state.canonicalUrl, {\n method: 'POST',\n headers: {\n Accept: _approuterheaders.RSC_CONTENT_TYPE_HEADER,\n [_approuterheaders.ACTION_HEADER]: actionId,\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(state.tree),\n ... false ? 0 : {},\n ...nextUrl ? {\n [_approuterheaders.NEXT_URL]: nextUrl\n } : {}\n },\n body\n });\n // Handle server actions that the server didn't recognize.\n const unrecognizedActionHeader = res.headers.get(_approuterheaders.NEXT_ACTION_NOT_FOUND_HEADER);\n if (unrecognizedActionHeader === '1') {\n throw Object.defineProperty(new _unrecognizedactionerror.UnrecognizedActionError('Server Action \"' + actionId + '\" was not found on the server. \\nRead more: https://nextjs.org/docs/messages/failed-to-find-server-action'), \"__NEXT_ERROR_CODE\", {\n value: \"E715\",\n enumerable: false,\n configurable: true\n });\n }\n const redirectHeader = res.headers.get('x-action-redirect');\n const [location, _redirectType] = (redirectHeader == null ? void 0 : redirectHeader.split(';')) || [];\n let redirectType;\n switch(_redirectType){\n case 'push':\n redirectType = _redirecterror.RedirectType.push;\n break;\n case 'replace':\n redirectType = _redirecterror.RedirectType.replace;\n break;\n default:\n redirectType = undefined;\n }\n const isPrerender = !!res.headers.get(_approuterheaders.NEXT_IS_PRERENDER_HEADER);\n let revalidatedParts;\n try {\n const revalidatedHeader = JSON.parse(res.headers.get('x-action-revalidated') || '[[],0,0]');\n revalidatedParts = {\n paths: revalidatedHeader[0] || [],\n tag: !!revalidatedHeader[1],\n cookie: revalidatedHeader[2]\n };\n } catch (e) {\n revalidatedParts = NO_REVALIDATED_PARTS;\n }\n const redirectLocation = location ? (0, _assignlocation.assignLocation)(location, new URL(state.canonicalUrl, window.location.href)) : undefined;\n const contentType = res.headers.get('content-type');\n const isRscResponse = !!(contentType && contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER));\n // Handle invalid server action responses.\n // A valid response must have `content-type: text/x-component`, unless it's an external redirect.\n // (external redirects have an 'x-action-redirect' header, but the body is an empty 'text/plain')\n if (!isRscResponse && !redirectLocation) {\n // The server can respond with a text/plain error message, but we'll fallback to something generic\n // if there isn't one.\n const message = res.status >= 400 && contentType === 'text/plain' ? await res.text() : 'An unexpected response was received from the server.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n let actionResult;\n let actionFlightData;\n if (isRscResponse) {\n const response = await createFromFetch(Promise.resolve(res), {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,\n temporaryReferences\n });\n // An internal redirect can send an RSC response, but does not have a useful `actionResult`.\n actionResult = redirectLocation ? undefined : response.a;\n actionFlightData = (0, _flightdatahelpers.normalizeFlightData)(response.f);\n } else {\n // An external redirect doesn't contain RSC data.\n actionResult = undefined;\n actionFlightData = undefined;\n }\n return {\n actionResult,\n actionFlightData,\n redirectLocation,\n redirectType,\n revalidatedParts,\n isPrerender\n };\n}\nconst NO_REVALIDATED_PARTS = {\n paths: [],\n tag: false,\n cookie: false\n};\nfunction serverActionReducer(state, action) {\n const { resolve, reject } = action;\n const mutable = {};\n let currentTree = state.tree;\n mutable.preserveCustomHistoryState = false;\n // only pass along the `nextUrl` param (used for interception routes) if the current route was intercepted.\n // If the route has been intercepted, the action should be as well.\n // Otherwise the server action might be intercepted with the wrong action id\n // (ie, one that corresponds with the intercepted route)\n const nextUrl = state.nextUrl && (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree) ? state.nextUrl : null;\n const navigatedAt = Date.now();\n return fetchServerAction(state, nextUrl, action).then(async (param)=>{\n let { actionResult, actionFlightData: flightData, redirectLocation, redirectType, isPrerender, revalidatedParts } = param;\n let redirectHref;\n // honor the redirect type instead of defaulting to push in case of server actions.\n if (redirectLocation) {\n if (redirectType === _redirecterror.RedirectType.replace) {\n state.pushRef.pendingPush = false;\n mutable.pendingPush = false;\n } else {\n state.pushRef.pendingPush = true;\n mutable.pendingPush = true;\n }\n redirectHref = (0, _createhreffromurl.createHrefFromUrl)(redirectLocation, false);\n mutable.canonicalUrl = redirectHref;\n }\n if (!flightData) {\n resolve(actionResult);\n // If there is a redirect but no flight data we need to do a mpaNavigation.\n if (redirectLocation) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, redirectLocation.href, state.pushRef.pendingPush);\n }\n return state;\n }\n if (typeof flightData === 'string') {\n // Handle case when navigating to page in `pages` from `app`\n resolve(actionResult);\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n const actionRevalidated = revalidatedParts.paths.length > 0 || revalidatedParts.tag || revalidatedParts.cookie;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, seedData: cacheNodeSeedData, head, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('SERVER ACTION APPLY FAILED');\n resolve(actionResult);\n return state;\n }\n // Given the path can only have two items the items are only the router state and rsc for the root.\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, redirectHref ? redirectHref : state.canonicalUrl);\n if (newTree === null) {\n resolve(actionResult);\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n resolve(actionResult);\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, redirectHref || state.canonicalUrl, state.pushRef.pendingPush);\n }\n // The server sent back RSC data for the server action, so we need to apply it to the cache.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1];\n const cache = (0, _approuter.createEmptyCacheNode)();\n cache.rsc = rsc;\n cache.prefetchRsc = null;\n cache.loading = cacheNodeSeedData[3];\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, treePatch, cacheNodeSeedData, head, undefined);\n mutable.cache = cache;\n if (false) {} else {\n mutable.prefetchCache = new Map();\n }\n if (actionRevalidated) {\n await (0, _refetchinactiveparallelsegments.refreshInactiveParallelSegments)({\n navigatedAt,\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl: Boolean(nextUrl),\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl\n });\n }\n }\n mutable.patchedTree = newTree;\n currentTree = newTree;\n }\n if (redirectLocation && redirectHref) {\n if ( true && !actionRevalidated) {\n // Because the RedirectBoundary will trigger a navigation, we need to seed the prefetch cache\n // with the FlightData that we got from the server action for the target page, so that it's\n // available when the page is navigated to and doesn't need to be re-fetched.\n // We only do this if the server action didn't revalidate any data, as in that case the\n // client cache will be cleared and the data will be re-fetched anyway.\n // NOTE: We don't do this in the Segment Cache implementation.\n // Dynamic data should never be placed into the cache, unless it's\n // \"converted\" to static data using . What we\n // do instead is re-prefetch links and forms whenever the cache is\n // invalidated.\n (0, _prefetchcacheutils.createSeededPrefetchCacheEntry)({\n url: redirectLocation,\n data: {\n flightData,\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n // TODO: We should be able to set this if the server action\n // returned a fully static response.\n staleTime: -1\n },\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n nextUrl: state.nextUrl,\n kind: isPrerender ? _routerreducertypes.PrefetchKind.FULL : _routerreducertypes.PrefetchKind.AUTO\n });\n mutable.prefetchCache = state.prefetchCache;\n }\n // If the action triggered a redirect, the action promise will be rejected with\n // a redirect so that it's handled by RedirectBoundary as we won't have a valid\n // action result to resolve the promise with. This will effectively reset the state of\n // the component that called the action as the error boundary will remount the tree.\n // The status code doesn't matter here as the action handler will have already sent\n // a response with the correct status code.\n reject((0, _redirect.getRedirectError)((0, _hasbasepath.hasBasePath)(redirectHref) ? (0, _removebasepath.removeBasePath)(redirectHref) : redirectHref, redirectType || _redirecterror.RedirectType.push));\n } else {\n resolve(actionResult);\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, (e)=>{\n // When the server action is rejected we don't update the state and instead call the reject handler of the promise.\n reject(e);\n return state;\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=server-action-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLWFjdGlvbi1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7dURBcU5nQkE7OztlQUFBQTs7OzJDQWpOVztpREFDTTs4Q0FRMUI7cURBQ2lDO29DQVFqQztnREFRQTs0Q0FDd0I7K0NBQ0c7NkNBQ0E7eURBQ1U7eURBQ0E7MkNBRWQ7MkRBQ2dCO3VDQUNUOytEQUNhO21EQUNaOzZEQUNVOytDQUt6QztzQ0FDMEI7MkNBQ0o7Z0RBQ2tCOzRDQUNoQjt5Q0FDSDtpREFJckI7MENBQytCO0FBRXRDLE1BQU1DLGtCQUNKQyxRQUFBQSxlQUFzQjtBQWV4QixlQUFlQyxrQkFDYkMsS0FBMkIsRUFDM0JDLE9BQXdDLEVBQ3hDLEtBQTRDO0lBQTVDLE1BQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFzQixHQUE1QztJQUVBLE1BQU1DLHNCQUFzQkMsQ0FBQUEsR0FBQUEsUUFBQUEsMkJBQUFBO0lBQzVCLE1BQU1DLE9BQU9DLENBQUFBLEdBQUFBLHFCQUFBQSxnQ0FBZ0MsRUFBQ0w7SUFFOUMsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSwrQ0FBK0M7SUFDL0MsTUFBTU0sV0FDSkYsS0FBS0csSUFBSSxLQUFLLGNBQWNDLENBQUFBLEdBQUFBLHFCQUFBQSxjQUFBQSxFQUFlUCxZQUFZRyxRQUFRSDtJQUVqRSxNQUFNUSxPQUFPLE1BQU1DLENBQUFBLEdBQUFBLFFBQUFBLFdBQUFBLEVBQVlKLFVBQVU7UUFBRUo7SUFBb0I7SUFFL0QsTUFBTVMsTUFBTSxNQUFNQyxNQUFNZCxNQUFNZSxZQUFZLEVBQUU7UUFDMUNDLFFBQVE7UUFDUkMsU0FBUztZQUNQQyxRQUFRQyxrQkFBQUEsdUJBQXVCO1lBQy9CLENBQUNDLGtCQUFBQSxhQUFhLENBQUMsRUFBRWxCO1lBQ2pCLENBQUNtQixrQkFBQUEsNkJBQTZCLENBQUMs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VDtBQUVKIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3NlcnZlci1hY3Rpb24tcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEFjdGlvbkZsaWdodFJlc3BvbnNlLFxuICBBY3Rpb25SZXN1bHQsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgY2FsbFNlcnZlciB9IGZyb20gJy4uLy4uLy4uL2FwcC1jYWxsLXNlcnZlcidcbmltcG9ydCB7IGZpbmRTb3VyY2VNYXBVUkwgfSBmcm9tICcuLi8uLi8uLi9hcHAtZmluZC1zb3VyY2UtbWFwLXVybCdcbmltcG9ydCB7XG4gIEFDVElPTl9IRUFERVIsXG4gIE5FWFRfQUNUSU9OX05PVF9GT1VORF9IRUFERVIsXG4gIE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfVVJMLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbn0gZnJvbSAnLi4vLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHsgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi91bnJlY29nbml6ZWQtYWN0aW9uLWVycm9yJ1xuXG4vLyBUT0RPOiBFeHBsaWNpdGx5IGltcG9ydCBmcm9tIGNsaWVudC5icm93c2VyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQge1xuICBjcmVhdGVGcm9tRmV0Y2ggYXMgY3JlYXRlRnJvbUZldGNoQnJvd3NlcixcbiAgY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0LFxuICBlbmNvZGVSZXBseSxcbn0gZnJvbSAncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudCdcblxuaW1wb3J0IHtcbiAgUHJlZmV0Y2hLaW5kLFxuICB0eXBlIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICB0eXBlIFJlZHVjZXJTdGF0ZSxcbiAgdHlwZSBTZXJ2ZXJBY3Rpb25BY3Rpb24sXG4gIHR5cGUgU2VydmVyQWN0aW9uTXV0YWJsZSxcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBhc3NpZ25Mb2NhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2Fzc2lnbi1sb2NhdGlvbidcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBoYW5kbGVFeHRlcm5hbFVybCB9IGZyb20gJy4vbmF2aWdhdGUtcmVkdWNlcidcbmltcG9ydCB7IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSB9IGZyb20gJy4uL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi4vaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgaGFuZGxlTXV0YWJsZSB9IGZyb20gJy4uL2hhbmRsZS1tdXRhYmxlJ1xuaW1wb3J0IHsgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQgfSBmcm9tICcuLi9maWxsLWxhenktaXRlbXMtdGlsbC1sZWFmLXdpdGgtaGVhZCdcbmltcG9ydCB7IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vYXBwLXJvdXRlcidcbmltcG9ydCB7IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSB9IGZyb20gJy4vaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUnXG5pbXBvcnQgeyBoYW5kbGVTZWdtZW50TWlzbWF0Y2ggfSBmcm9tICcuLi9oYW5kbGUtc2VnbWVudC1taXNtYXRjaCdcbmltcG9ydCB7IHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMgfSBmcm9tICcuLi9yZWZldGNoLWluYWN0aXZlLXBhcmFsbGVsLXNlZ21lbnRzJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGdldFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuLi8uLi9yZWRpcmVjdCdcbmltcG9ydCB7IFJlZGlyZWN0VHlwZSB9IGZyb20gJy4uLy4uL3JlZGlyZWN0LWVycm9yJ1xuaW1wb3J0IHsgY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5IH0gZnJvbSAnLi4vcHJlZmV0Y2gtY2FjaGUtdXRpbHMnXG5pbXBvcnQgeyByZW1vdmVCYXNlUGF0aCB9IGZyb20gJy4uLy4uLy4uL3JlbW92ZS1iYXNlLXBhdGgnXG5pbXBvcnQgeyBoYXNCYXNlUGF0aCB9IGZyb20gJy4uLy4uLy4uL2hhcy1iYXNlLXBhdGgnXG5pbXBvcnQge1xuICBleHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZCxcbiAgb21pdFVudXNlZEFyZ3MsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvc2VydmVyLXJlZmVyZW5jZS1pbmZvJ1xuaW1wb3J0IHsgcmV2YWxpZGF0ZUVudGlyZUNhY2hlIH0gZnJvbSAnLi4vLi4vc2VnbWVudC1jYWNoZSdcblxuY29uc3QgY3JlYXRlRnJvbUZldGNoID1cbiAgY3JlYXRlRnJvbUZldGNoQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tRmV0Y2gnXVxuXG50eXBlIEZldGNoU2VydmVyQWN0aW9uUmVzdWx0ID0ge1xuICByZWRpcmVjdExvY2F0aW9uOiBVUkwgfCB1bmRlZmluZWRcbiAgcmVkaXJlY3RUeXBlOiBSZWRpcmVjdFR5cGUgfCB1bmRlZmluZWRcbiAgYWN0aW9uUmVzdWx0OiBBY3Rpb25SZXN1bHQgfCB1bmRlZmluZWRcbiAgYWN0aW9uRmxpZ2h0RGF0YTogTm9ybWFsaXplZEZsaWdodERhdGFbXSB8IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpc1ByZXJlbmRlcjogYm9vbGVhblxuICByZXZhbGlkYXRlZFBhcnRzOiB7XG4gICAgdGFnOiBib29sZWFuXG4gICAgY29va2llOiBib29sZWFuXG4gICAgcGF0aHM6IHN0cmluZ1tdXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hTZXJ2ZXJBY3Rpb24oXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgbmV4dFVybDogUmVhZG9ubHlSZWR1Y2VyU3RhdGVbJ25leHRVcmwnXSxcbiAgeyBhY3Rpb25JZCwgYWN0aW9uQXJncyB9OiBTZXJ2ZXJBY3Rpb25BY3Rpb25cbik6IFByb21pc2U8RmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHQ+IHtcbiAgY29uc3QgdGVtcG9yYXJ5UmVmZXJlbmNlcyA9IGNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldCgpXG4gIGNvbnN0IGluZm8gPSBleHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZChhY3Rpb25JZClcblxuICAvLyBUT0RPOiBDdXJyZW50bHksIHdlJ3JlIG9ubHkgb21pdHRpbmcgdW51c2VkIGFyZ3MgZm9yIHRoZSBleHBlcmltZW50YWwgXCJ1c2VcbiAgLy8gY2FjaGVcIiBmdW5jdGlvbnMuIE9uY2UgdGhlIHNlcnZlciByZWZlcmVuY2UgaW5mbyBieXRlIGZlYXR1cmUgaXMgc3RhYmxlLCB3ZVxuICAvLyBzaG91bGQgYXBwbHkgdGhpcyB0byBzZXJ2ZXIgYWN0aW9ucyBhcyB3ZWxsLlxuICBjb25zdCB1c2VkQXJncyA9XG4gICAgaW5mby50eXBlID09PSAndXNlLWNhY2hlJyA/IG9taXRVbnVzZWRBcmdzKGFjdGlvbkFyZ3MsIGluZm8pIDogYWN0aW9uQXJnc1xuXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCBlbmNvZGVSZXBseSh1c2VkQXJncywgeyB0ZW1wb3JhcnlSZWZlcmVuY2VzIH0pXG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goc3RhdGUuY2Fub25pY2FsVXJsLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczoge1xuICAgICAgQWNjZXB0OiBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgICAgIFtBQ1RJT05fSEVBREVSXTogYWN0aW9uSWQsXG4gICAgICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdOiBwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0KFxuICAgICAgICBzdGF0ZS50cmVlXG4gICAgICApLFxuICAgICAgLi4uKHByb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRFxuICAgICAgICA/IHtcbiAgICAgICAgICAgICd4LWRlcGxveW1lbnQtaWQnOiBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSUQsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIC4uLihuZXh0VXJsXG4gICAgICAgID8ge1xuICAgICAgICAgICAgW05FWFRfVVJMXTogbmV4dFVybCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH0sXG4gICAgYm9keSxcbiAgfSlcblxuICAvLyBIYW5kbGUgc2VydmVyIGFjdGlvbnMgdGhhdCB0aGUgc2VydmVyIGRpZG4ndCByZWNvZ25pemUuXG4gIGNvbnN0IHVucmVjb2duaXplZEFjdGlvbkhlYWRlciA9IHJlcy5oZWFkZXJzLmdldChORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSKVxuICBpZiAodW5yZWNvZ25pemVkQWN0aW9uSGVhZGVyID09PSAnMScpIHtcbiAgICB0aHJvdyBuZXcgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IoXG4gICAgICBgU2VydmVyIEFjdGlvbiBcIiR7YWN0aW9uSWR9XCIgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLiBcXG5SZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ZhaWxlZC10by1maW5kLXNlcnZlci1hY3Rpb25gXG4gICAgKVxuICB9XG5cbiAgY29uc3QgcmVkaXJlY3RIZWFkZXIgPSByZXMuaGVhZGVycy5nZXQoJ3gtYWN0aW9uLXJlZGlyZWN0JylcbiAgY29uc3QgW2xvY2F0aW9uLCBfcmVkaXJlY3RUeXBlXSA9IHJlZGlyZWN0SGVhZGVyPy5zcGxpdCgnOycpIHx8IFtdXG4gIGxldCByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZSB8IHVuZGVmaW5lZFxuICBzd2l0Y2ggKF9yZWRpcmVjdFR5cGUpIHtcbiAgICBjYXNlICdwdXNoJzpcbiAgICAgIHJlZGlyZWN0VHlwZSA9IFJlZGlyZWN0VHlwZS5wdXNoXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3JlcGxhY2UnOlxuICAgICAgcmVkaXJlY3RUeXBlID0gUmVkaXJlY3RUeXBlLnJlcGxhY2VcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJlZGlyZWN0VHlwZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgaXNQcmVyZW5kZXIgPSAhIXJlcy5oZWFkZXJzLmdldChORVhUX0lTX1BSRVJFTkRFUl9IRUFERVIpXG4gIGxldCByZXZhbGlkYXRlZFBhcnRzOiBGZXRjaFNlcnZlckFjdGlvblJlc3VsdFsncmV2YWxpZGF0ZWRQYXJ0cyddXG4gIHRyeSB7XG4gICAgY29uc3QgcmV2YWxpZGF0ZWRIZWFkZXIgPSBKU09OLnBhcnNlKFxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KCd4LWFjdGlvbi1yZXZhbGlkYXRlZCcpIHx8ICdbW10sMCwwXSdcbiAgICApXG4gICAgcmV2YWxpZGF0ZWRQYXJ0cyA9IHtcbiAgICAgIHBhdGhzOiByZXZhbGlkYXRlZEhlYWRlclswXSB8fCBbXSxcbiAgICAgIHRhZzogISFyZXZhbGlkYXRlZEhlYWRlclsxXSxcbiAgICAgIGNvb2tpZTogcmV2YWxpZGF0ZWRIZWFkZXJbMl0sXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV2YWxpZGF0ZWRQYXJ0cyA9IE5PX1JFVkFMSURBVEVEX1BBUlRTXG4gIH1cblxuICBjb25zdCByZWRpcmVjdExvY2F0aW9uID0gbG9jYXRpb25cbiAgICA/IGFzc2lnbkxvY2F0aW9uKFxuICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgbmV3IFVSTChzdGF0ZS5jYW5vbmljYWxVcmwsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKVxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpXG4gIGNvbnN0IGlzUnNjUmVzcG9uc2UgPSAhIShcbiAgICBjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5zdGFydHNXaXRoKFJTQ19DT05URU5UX1RZUEVfSEVBREVSKVxuICApXG5cbiAgLy8gSGFuZGxlIGludmFsaWQgc2VydmVyIGFjdGlvbiByZXNwb25zZXMuXG4gIC8vIEEgdmFsaWQgcmVzcG9uc2UgbXVzdCBoYXZlIGBjb250ZW50LXR5cGU6IHRleHQveC1jb21wb25lbnRgLCB1bmxlc3MgaXQncyBhbiBleHRlcm5hbCByZWRpcmVjdC5cbiAgLy8gKGV4dGVybmFsIHJlZGlyZWN0cyBoYXZlIGFuICd4LWFjdGlvbi1yZWRpcmVjdCcgaGVhZGVyLCBidXQgdGhlIGJvZHkgaXMgYW4gZW1wdHkgJ3RleHQvcGxhaW4nKVxuICBpZiAoIWlzUnNjUmVzcG9uc2UgJiYgIXJlZGlyZWN0TG9jYXRpb24pIHtcbiAgICAvLyBUaGUgc2VydmVyIGNhbiByZXNwb25kIHdpdGggYSB0ZXh0L3BsYWluIGVycm9yIG1lc3NhZ2UsIGJ1dCB3ZSdsbCBmYWxsYmFjayB0byBzb21ldGhpbmcgZ2VuZXJpY1xuICAgIC8vIGlmIHRoZXJlIGlzbid0IG9uZS5cbiAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgIHJlcy5zdGF0dXMgPj0gNDAwICYmIGNvbnRlbnRUeXBlID09PSAndGV4dC9wbGFpbidcbiAgICAgICAgPyBhd2FpdCByZXMudGV4dCgpXG4gICAgICAgIDogJ0FuIHVuZXhwZWN0ZWQgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci4nXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgfVxuXG4gIGxldCBhY3Rpb25SZXN1bHQ6IEZldGNoU2VydmVyQWN0aW9uUmVzdWx0WydhY3Rpb25SZXN1bHQnXVxuICBsZXQgYWN0aW9uRmxpZ2h0RGF0YTogRmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHRbJ2FjdGlvbkZsaWdodERhdGEnXVxuICBpZiAoaXNSc2NSZXNwb25zZSkge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBBY3Rpb25GbGlnaHRSZXNwb25zZSA9IGF3YWl0IGNyZWF0ZUZyb21GZXRjaChcbiAgICAgIFByb21pc2UucmVzb2x2ZShyZXMpLFxuICAgICAgeyBjYWxsU2VydmVyLCBmaW5kU291cmNlTWFwVVJMLCB0ZW1wb3JhcnlSZWZlcmVuY2VzIH1cbiAgICApXG5cbiAgICAvLyBBbiBpbnRlcm5hbCByZWRpcmVjdCBjYW4gc2VuZCBhbiBSU0MgcmVzcG9uc2UsIGJ1dCBkb2VzIG5vdCBoYXZlIGEgdXNlZnVsIGBhY3Rpb25SZXN1bHRgLlxuICAgIGFjdGlvblJlc3VsdCA9IHJlZGlyZWN0TG9jYXRpb24gPyB1bmRlZmluZWQgOiByZXNwb25zZS5hXG4gICAgYWN0aW9uRmxpZ2h0RGF0YSA9IG5vcm1hbGl6ZUZsaWdodERhdGEocmVzcG9uc2UuZilcbiAgfSBlbHNlIHtcbiAgICAvLyBBbiBleHRlcm5hbCByZWRpcmVjdCBkb2Vzbid0IGNvbnRhaW4gUlNDIGRhdGEuXG4gICAgYWN0aW9uUmVzdWx0ID0gdW5kZWZpbmVkXG4gICAgYWN0aW9uRmxpZ2h0RGF0YSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25SZXN1bHQsXG4gICAgYWN0aW9uRmxpZ2h0RGF0YSxcbiAgICByZWRpcmVjdExvY2F0aW9uLFxuICAgIHJlZGlyZWN0VHlwZSxcbiAgICByZXZhbGlkYXRlZFBhcnRzLFxuICAgIGlzUHJlcmVuZGVyLFxuICB9XG59XG5cbmNvbnN0IE5PX1JFVkFMSURBVEVEX1BBUlRTID0ge1xuICBwYXRoczogW10sXG4gIHRhZzogZmFsc2UsXG4gIGNvb2tpZTogZmFsc2UsXG59XG5cbi8qXG4gKiBUaGlzIHJlZHVjZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgdGhlIHNlcnZlciBhY3Rpb24gYW5kIHByb2Nlc3NpbmcgYW55IHNpZGUtZWZmZWN0cyBmcm9tIHRoZSBzZXJ2ZXIgYWN0aW9uLlxuICogSXQgZG9lcyBub3QgbXV0YXRlIHRoZSBzdGF0ZSBieSBpdHNlbGYgYnV0IHJhdGhlciBkZWxlZ2F0ZXMgdG8gb3RoZXIgcmVkdWNlcnMgdG8gZG8gdGhlIGFjdHVhbCBtdXRhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlckFjdGlvblJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBTZXJ2ZXJBY3Rpb25BY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIGNvbnN0IHsgcmVzb2x2ZSwgcmVqZWN0IH0gPSBhY3Rpb25cbiAgY29uc3QgbXV0YWJsZTogU2VydmVyQWN0aW9uTXV0YWJsZSA9IHt9XG5cbiAgbGV0IGN1cnJlbnRUcmVlID0gc3RhdGUudHJlZVxuXG4gIG11dGFibGUucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUgPSBmYWxzZVxuXG4gIC8vIG9ubHkgcGFzcyBhbG9uZyB0aGUgYG5leHRVcmxgIHBhcmFtICh1c2VkIGZvciBpbnRlcmNlcHRpb24gcm91dGVzKSBpZiB0aGUgY3VycmVudCByb3V0ZSB3YXMgaW50ZXJjZXB0ZWQuXG4gIC8vIElmIHRoZSByb3V0ZSBoYXMgYmVlbiBpbnRlcmNlcHRlZCwgdGhlIGFjdGlvbiBzaG91bGQgYmUgYXMgd2VsbC5cbiAgLy8gT3RoZXJ3aXNlIHRoZSBzZXJ2ZXIgYWN0aW9uIG1pZ2h0IGJlIGludGVyY2VwdGVkIHdpdGggdGhlIHdyb25nIGFjdGlvbiBpZFxuICAvLyAoaWUsIG9uZSB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIGludGVyY2VwdGVkIHJvdXRlKVxuICBjb25zdCBuZXh0VXJsID1cbiAgICBzdGF0ZS5uZXh0VXJsICYmIGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZShzdGF0ZS50cmVlKVxuICAgICAgPyBzdGF0ZS5uZXh0VXJsXG4gICAgICA6IG51bGxcblxuICBjb25zdCBuYXZpZ2F0ZWRBdCA9IERhdGUubm93KClcblxuICByZXR1cm4gZmV0Y2hTZXJ2ZXJBY3Rpb24oc3RhdGUsIG5leHRVcmwsIGFjdGlvbikudGhlbihcbiAgICBhc3luYyAoe1xuICAgICAgYWN0aW9uUmVzdWx0LFxuICAgICAgYWN0aW9uRmxpZ2h0RGF0YTogZmxpZ2h0RGF0YSxcbiAgICAgIHJlZGlyZWN0TG9jYXRpb24sXG4gICAgICByZWRpcmVjdFR5cGUsXG4gICAgICBpc1ByZXJlbmRlcixcbiAgICAgIHJldmFsaWRhdGVkUGFydHMsXG4gICAgfSkgPT4ge1xuICAgICAgbGV0IHJlZGlyZWN0SHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgICAgIC8vIGhvbm9yIHRoZSByZWRpcmVjdCB0eXBlIGluc3RlYWQgb2YgZGVmYXVsdGluZyB0byBwdXNoIGluIGNhc2Ugb2Ygc2VydmVyIGFjdGlvbnMuXG4gICAgICBpZiAocmVkaXJlY3RMb2NhdGlvbikge1xuICAgICAgICBpZiAocmVkaXJlY3RUeXBlID09PSBSZWRpcmVjdFR5cGUucmVwbGFjZSkge1xuICAgICAgICAgIHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2ggPSBmYWxzZVxuICAgICAgICAgIG11dGFibGUucGVuZGluZ1B1c2ggPSBmYWxzZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2ggPSB0cnVlXG4gICAgICAgICAgbXV0YWJsZS5wZW5kaW5nUHVzaCA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZGlyZWN0SHJlZiA9IGNyZWF0ZUhyZWZGcm9tVXJsKHJlZGlyZWN0TG9jYXRpb24sIGZhbHNlKVxuICAgICAgICBtdXRhYmxlLmNhbm9uaWNhbFVybCA9IHJlZGlyZWN0SHJlZlxuICAgICAgfVxuXG4gICAgICBpZiAoIWZsaWdodERhdGEpIHtcbiAgICAgICAgcmVzb2x2ZShhY3Rpb25SZXN1bHQpXG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSByZWRpcmVjdCBidXQgbm8gZmxpZ2h0IGRhdGEgd2UgbmVlZCB0byBkbyBhIG1wYU5hdmlnYXRpb24uXG4gICAgICAgIGlmIChyZWRpcmVjdExvY2F0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBtdXRhYmxlLFxuICAgICAgICAgICAgcmVkaXJlY3RMb2NhdGlvbi5ocmVmLFxuICAgICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGVcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBmbGlnaHREYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIG5hdmlnYXRpbmcgdG8gcGFnZSBpbiBgcGFnZXNgIGZyb20gYGFwcGBcbiAgICAgICAgcmVzb2x2ZShhY3Rpb25SZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgZmxpZ2h0RGF0YSxcbiAgICAgICAgICBzdGF0ZS5wdXNoUmVmLnBlbmRpbmdQdXNoXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0aW9uUmV2YWxpZGF0ZWQgPVxuICAgICAgICByZXZhbGlkYXRlZFBhcnRzLnBhdGhzLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgcmV2YWxpZGF0ZWRQYXJ0cy50YWcgfHxcbiAgICAgICAgcmV2YWxpZGF0ZWRQYXJ0cy5jb29raWVcblxuICAgICAgZm9yIChjb25zdCBub3JtYWxpemVkRmxpZ2h0RGF0YSBvZiBmbGlnaHREYXRhKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0cmVlOiB0cmVlUGF0Y2gsXG4gICAgICAgICAgc2VlZERhdGE6IGNhY2hlTm9kZVNlZWREYXRhLFxuICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgaXNSb290UmVuZGVyLFxuICAgICAgICB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcblxuICAgICAgICBpZiAoIWlzUm9vdFJlbmRlcikge1xuICAgICAgICAgIC8vIFRPRE8tQVBQOiBoYW5kbGUgdGhpcyBjYXNlIGJldHRlclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdTRVJWRVIgQUNUSU9OIEFQUExZIEZBSUxFRCcpXG4gICAgICAgICAgcmVzb2x2ZShhY3Rpb25SZXN1bHQpXG5cbiAgICAgICAgICByZXR1cm4gc3RhdGVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdpdmVuIHRoZSBwYXRoIGNhbiBvbmx5IGhhdmUgdHdvIGl0ZW1zIHRoZSBpdGVtcyBhcmUgb25seSB0aGUgcm91dGVyIHN0YXRlIGFuZCByc2MgZm9yIHRoZSByb290LlxuICAgICAgICBjb25zdCBuZXdUcmVlID0gYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlKFxuICAgICAgICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICAgICAgICBbJyddLFxuICAgICAgICAgIGN1cnJlbnRUcmVlLFxuICAgICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgICByZWRpcmVjdEhyZWYgPyByZWRpcmVjdEhyZWYgOiBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChuZXdUcmVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzb2x2ZShhY3Rpb25SZXN1bHQpXG5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlU2VnbWVudE1pc21hdGNoKHN0YXRlLCBhY3Rpb24sIHRyZWVQYXRjaClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQoY3VycmVudFRyZWUsIG5ld1RyZWUpKSB7XG4gICAgICAgICAgcmVzb2x2ZShhY3Rpb25SZXN1bHQpXG5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgICByZWRpcmVjdEhyZWYgfHwgc3RhdGUuY2Fub25pY2FsVXJsLFxuICAgICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgc2VudCBiYWNrIFJTQyBkYXRhIGZvciB0aGUgc2VydmVyIGFjdGlvbiwgc28gd2UgbmVlZCB0byBhcHBseSBpdCB0byB0aGUgY2FjaGUuXG4gICAgICAgIGlmIChjYWNoZU5vZGVTZWVkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJzYyA9IGNhY2hlTm9kZVNlZWREYXRhWzFdXG4gICAgICAgICAgY29uc3QgY2FjaGU6IENhY2hlTm9kZSA9IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKClcbiAgICAgICAgICBjYWNoZS5yc2MgPSByc2NcbiAgICAgICAgICBjYWNoZS5wcmVmZXRjaFJzYyA9IG51bGxcbiAgICAgICAgICBjYWNoZS5sb2FkaW5nID0gY2FjaGVOb2RlU2VlZERhdGFbM11cbiAgICAgICAgICBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZChcbiAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgICAvLyBFeGlzdGluZyBjYWNoZSBpcyBub3QgcGFzc2VkIGluIGFzIHNlcnZlciBhY3Rpb25zIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgZW50aXJlIGNhY2hlLlxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICAgICAgY2FjaGVOb2RlU2VlZERhdGEsXG4gICAgICAgICAgICBoZWFkLFxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSkge1xuICAgICAgICAgICAgcmV2YWxpZGF0ZUVudGlyZUNhY2hlKHN0YXRlLm5leHRVcmwsIG5ld1RyZWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG11dGFibGUucHJlZmV0Y2hDYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYWN0aW9uUmV2YWxpZGF0ZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMoe1xuICAgICAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgIHVwZGF0ZWRUcmVlOiBuZXdUcmVlLFxuICAgICAgICAgICAgICB1cGRhdGVkQ2FjaGU6IGNhY2hlLFxuICAgICAgICAgICAgICBpbmNsdWRlTmV4dFVybDogQm9vbGVhbihuZXh0VXJsKSxcbiAgICAgICAgICAgICAgY2Fub25pY2FsVXJsOiBtdXRhYmxlLmNhbm9uaWNhbFVybCB8fCBzdGF0ZS5jYW5vbmljYWxVcmwsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSBuZXdUcmVlXG4gICAgICAgIGN1cnJlbnRUcmVlID0gbmV3VHJlZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVkaXJlY3RMb2NhdGlvbiAmJiByZWRpcmVjdEhyZWYpIHtcbiAgICAgICAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUgJiYgIWFjdGlvblJldmFsaWRhdGVkKSB7XG4gICAgICAgICAgLy8gQmVjYXVzZSB0aGUgUmVkaXJlY3RCb3VuZGFyeSB3aWxsIHRyaWdnZXIgYSBuYXZpZ2F0aW9uLCB3ZSBuZWVkIHRvIHNlZWQgdGhlIHByZWZldGNoIGNhY2hlXG4gICAgICAgICAgLy8gd2l0aCB0aGUgRmxpZ2h0RGF0YSB0aGF0IHdlIGdvdCBmcm9tIHRoZSBzZXJ2ZXIgYWN0aW9uIGZvciB0aGUgdGFyZ2V0IHBhZ2UsIHNvIHRoYXQgaXQnc1xuICAgICAgICAgIC8vIGF2YWlsYWJsZSB3aGVuIHRoZSBwYWdlIGlzIG5hdmlnYXRlZCB0byBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIHJlLWZldGNoZWQuXG4gICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGlmIHRoZSBzZXJ2ZXIgYWN0aW9uIGRpZG4ndCByZXZhbGlkYXRlIGFueSBkYXRhLCBhcyBpbiB0aGF0IGNhc2UgdGhlXG4gICAgICAgICAgLy8gY2xpZW50IGNhY2hlIHdpbGwgYmUgY2xlYXJlZCBhbmQgdGhlIGRhdGEgd2lsbCBiZSByZS1mZXRjaGVkIGFueXdheS5cbiAgICAgICAgICAvLyBOT1RFOiBXZSBkb24ndCBkbyB0aGlzIGluIHRoZSBTZWdtZW50IENhY2hlIGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIC8vIER5bmFtaWMgZGF0YSBzaG91bGQgbmV2ZXIgYmUgcGxhY2VkIGludG8gdGhlIGNhY2hlLCB1bmxlc3MgaXQnc1xuICAgICAgICAgIC8vIFwiY29udmVydGVkXCIgdG8gc3RhdGljIGRhdGEgdXNpbmcgPExpbmsgcHJlZmV0Y2g9e3RydWV9Pi4gV2hhdCB3ZVxuICAgICAgICAgIC8vIGRvIGluc3RlYWQgaXMgcmUtcHJlZmV0Y2ggbGlua3MgYW5kIGZvcm1zIHdoZW5ldmVyIHRoZSBjYWNoZSBpc1xuICAgICAgICAgIC8vIGludmFsaWRhdGVkLlxuICAgICAgICAgIGNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSh7XG4gICAgICAgICAgICB1cmw6IHJlZGlyZWN0TG9jYXRpb24sXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGZsaWdodERhdGEsXG4gICAgICAgICAgICAgIGNhbm9uaWNhbFVybDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBwcmVyZW5kZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHBvc3Rwb25lZDogZmFsc2UsXG4gICAgICAgICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0aGlzIGlmIHRoZSBzZXJ2ZXIgYWN0aW9uXG4gICAgICAgICAgICAgIC8vIHJldHVybmVkIGEgZnVsbHkgc3RhdGljIHJlc3BvbnNlLlxuICAgICAgICAgICAgICBzdGFsZVRpbWU6IC0xLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRyZWU6IHN0YXRlLnRyZWUsXG4gICAgICAgICAgICBwcmVmZXRjaENhY2hlOiBzdGF0ZS5wcmVmZXRjaENhY2hlLFxuICAgICAgICAgICAgbmV4dFVybDogc3RhdGUubmV4dFVybCxcbiAgICAgICAgICAgIGtpbmQ6IGlzUHJlcmVuZGVyID8gUHJlZmV0Y2hLaW5kLkZVTEwgOiBQcmVmZXRjaEtpbmQuQVVUTyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIG11dGFibGUucHJlZmV0Y2hDYWNoZSA9IHN0YXRlLnByZWZldGNoQ2FjaGVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBhY3Rpb24gdHJpZ2dlcmVkIGEgcmVkaXJlY3QsIHRoZSBhY3Rpb24gcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGhcbiAgICAgICAgLy8gYSByZWRpcmVjdCBzbyB0aGF0IGl0J3MgaGFuZGxlZCBieSBSZWRpcmVjdEJvdW5kYXJ5IGFzIHdlIHdvbid0IGhhdmUgYSB2YWxpZFxuICAgICAgICAvLyBhY3Rpb24gcmVzdWx0IHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aC4gVGhpcyB3aWxsIGVmZmVjdGl2ZWx5IHJlc2V0IHRoZSBzdGF0ZSBvZlxuICAgICAgICAvLyB0aGUgY29tcG9uZW50IHRoYXQgY2FsbGVkIHRoZSBhY3Rpb24gYXMgdGhlIGVycm9yIGJvdW5kYXJ5IHdpbGwgcmVtb3VudCB0aGUgdHJlZS5cbiAgICAgICAgLy8gVGhlIHN0YXR1cyBjb2RlIGRvZXNuJ3QgbWF0dGVyIGhlcmUgYXMgdGhlIGFjdGlvbiBoYW5kbGVyIHdpbGwgaGF2ZSBhbHJlYWR5IHNlbnRcbiAgICAgICAgLy8gYSByZXNwb25zZSB3aXRoIHRoZSBjb3JyZWN0IHN0YXR1cyBjb2RlLlxuICAgICAgICByZWplY3QoXG4gICAgICAgICAgZ2V0UmVkaXJlY3RFcnJvcihcbiAgICAgICAgICAgIGhhc0Jhc2VQYXRoKHJlZGlyZWN0SHJlZilcbiAgICAgICAgICAgICAgPyByZW1vdmVCYXNlUGF0aChyZWRpcmVjdEhyZWYpXG4gICAgICAgICAgICAgIDogcmVkaXJlY3RIcmVmLFxuICAgICAgICAgICAgcmVkaXJlY3RUeXBlIHx8IFJlZGlyZWN0VHlwZS5wdXNoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfSxcbiAgICAoZTogYW55KSA9PiB7XG4gICAgICAvLyBXaGVuIHRoZSBzZXJ2ZXIgYWN0aW9uIGlzIHJlamVjdGVkIHdlIGRvbid0IHVwZGF0ZSB0aGUgc3RhdGUgYW5kIGluc3RlYWQgY2FsbCB0aGUgcmVqZWN0IGhhbmRsZXIgb2YgdGhlIHByb21pc2UuXG4gICAgICByZWplY3QoZSlcblxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfVxuICApXG59XG4iXSwibmFtZXMiOlsic2VydmVyQWN0aW9uUmVkdWNlciIsImNyZWF0ZUZyb21GZXRjaCIsImNyZWF0ZUZyb21GZXRjaEJyb3dzZXIiLCJmZXRjaFNlcnZlckFjdGlvbiIsInN0YXRlIiwibmV4dFVybCIsImFjdGlvbklkIiwiYWN0aW9uQXJncyIsInRlbXBvcmFyeVJlZmVyZW5jZXMiLCJjcmVhdGVUZW1wb3JhcnlSZWZlcmVuY2VTZXQiLCJpbmZvIiwiZXh0cmFjdEluZm9Gcm9tU2VydmVyUmVmZXJlbmNlSWQiLCJ1c2VkQXJncyIsInR5cGUiLCJvbWl0VW51c2VkQXJncyIsImJvZHkiLCJlbmNvZGVSZXBseSIsInJlcyIsImZldGNoIiwiY2Fub25pY2FsVXJsIiwibWV0aG9kIiwiaGVhZGVycyIsIkFjY2VwdCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiQUNUSU9OX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSIiwicHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCIsInRyZWUiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9ERVBMT1lNRU5UX0lEIiwiTkVYVF9VUkwiLCJ1bnJlY29nbml6ZWRBY3Rpb25IZWFkZXIiLCJnZXQiLCJORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSIiwiVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJyZWRpcmVjdEhlYWRlciIsImxvY2F0aW9uIiwiX3JlZGlyZWN0VHlwZSIsInNwbGl0IiwicmVkaXJlY3RUeXBlIiwiUmVkaXJlY3RUeXBlIiwicHVzaCIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJpc1ByZXJlbmRlciIsIk5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiIsInJldmFsaWRhdGVkUGFydHMiLCJyZXZhbGlkYXRlZEhlYWRlciIsIkpTT04iLCJwYXJzZSIsInBhdGhzIiwidGFnIiwiY29va2llIiwiZSIsIk5PX1JFVkFMSURBVEVEX1BBUlRTIiwicmVkaXJlY3RMb2NhdGlvbiIsImFzc2lnbkxvY2F0aW9uIiwiVVJMIiwid2luZG93IiwiaHJlZiIsImNvbnRlbnRUeXBlIiwiaXNSc2NSZXNwb25zZSIsInN0YXJ0c1dpdGgiLCJtZXNzYWdlIiwic3RhdHVzIiwidGV4dCIsIkVycm9yIiwiYWN0aW9uUmVzdWx0IiwiYWN0aW9uRmxpZ2h0RGF0YSIsInJlc3BvbnNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYWxsU2VydmVyIiwiZmluZFNvdXJjZU1hcFVSTCIsImEiLCJub3JtYWxpemVGbGlnaHREYXRhIiwiZiIsImFjdGlvbiIsInJlamVjdCIsIm11dGFibGUiLCJjdXJyZW50VHJlZSIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlIiwibmF2aWdhdGVkQXQiLCJEYXRlIiwibm93IiwidGhlbiIsImZsaWdodERhdGEiLCJyZWRpcmVjdEhyZWYiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJjcmVhdGVIcmVmRnJvbVVybCIsImhhbmRsZUV4dGVybmFsVXJsIiwiYWN0aW9uUmV2YWxpZGF0ZWQiLCJsZW5ndGgiLCJub3JtYWxpemVkRmxpZ2h0RGF0YSIsInRyZWVQYXRjaCIsInNlZWREYXRhIiwiY2FjaGVOb2RlU2VlZERhdGEiLCJoZWFkIiwiaXNSb290UmVuZGVyIiwiY29uc29sZSIsImxvZyIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJoYW5kbGVTZWdtZW50TWlzbWF0Y2giLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJyc2MiLCJjYWNoZSIsImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwicHJlZmV0Y2hSc2MiLCJsb2FkaW5nIiwiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJyZXZhbGlkYXRlRW50aXJlQ2FjaGUiLCJwcmVmZXRjaENhY2hlIiwiTWFwIiwicmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyIsInVwZGF0ZWRUcmVlIiwidXBkYXRlZENhY2hlIiwiaW5jbHVkZU5leHRVcmwiLCJCb29sZWFuIiwicGF0Y2hlZFRyZWUiLCJjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnkiLCJ1cmwiLCJkYXRhIiwiY291bGRCZUludGVyY2VwdGVkIiwicHJlcmVuZGVyZWQiLCJwb3N0cG9uZWQiLCJzdGFsZVRpbWUiLCJraW5kIiwiUHJlZmV0Y2hLaW5kIiwiRlVMTCIsIkFVVE8iLCJnZXRSZWRpcmVjdEVycm9yIiwiaGFzQmFzZVBhdGgiLCJyZW1vdmVCYXNlUGF0aCIsImhhbmRsZU11dGFibGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js": /*!**************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js ***! \**************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverPatchReducer\", ({\n enumerable: true,\n get: function() {\n return serverPatchReducer;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js\");\nfunction serverPatchReducer(state, action) {\n const { serverResponse: { flightData, canonicalUrl: canonicalUrlOverride }, navigatedAt } = action;\n const mutable = {};\n mutable.preserveCustomHistoryState = false;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n let currentTree = state.tree;\n let currentCache = state.cache;\n for (const normalizedFlightData of flightData){\n const { segmentPath: flightSegmentPath, tree: treePatch } = normalizedFlightData;\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n '',\n ...flightSegmentPath\n ], currentTree, treePatch, state.canonicalUrl);\n // `applyRouterStatePatchToTree` returns `null` when it determined that the server response is not applicable to the current tree.\n // In other words, the server responded with a tree that doesn't match what the client is currently rendering.\n // This can happen if the server patch action took longer to resolve than a subsequent navigation which would have changed the tree.\n // Previously this case triggered an MPA navigation but it should be safe to simply discard the server response rather than forcing\n // the entire page to reload.\n if (newTree === null) {\n return state;\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, state.canonicalUrl, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverrideHref) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n const cache = (0, _approuter.createEmptyCacheNode)();\n (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData);\n mutable.patchedTree = newTree;\n mutable.cache = cache;\n currentCache = cache;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\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=server-patch-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLXBhdGNoLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFlZ0JBOzs7ZUFBQUE7OzsrQ0Fma0I7eURBQ1U7eURBQ0E7NkNBT1Y7NkNBQ0Y7MkNBQ0Y7dUNBRU87QUFFOUIsU0FBU0EsbUJBQ2RDLEtBQTJCLEVBQzNCQyxNQUF5QjtJQUV6QixNQUFNLEVBQ0pDLGdCQUFnQixFQUFFQyxVQUFVLEVBQUVDLGNBQWNDLG9CQUFvQixFQUFFLEVBQ2xFQyxXQUFXLEVBQ1osR0FBR0w7SUFFSixNQUFNTSxVQUFtQixDQUFDO0lBRTFCQSxRQUFRQywwQkFBMEIsR0FBRztJQUVyQyw0REFBNEQ7SUFDNUQsSUFBSSxPQUFPTCxlQUFlLFVBQVU7UUFDbEMsT0FBT00sQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMVCxPQUNBTyxTQUNBSixZQUNBSCxNQUFNVSxPQUFPLENBQUNDLFdBQVc7SUFFN0I7SUFFQSxJQUFJQyxjQUFjWixNQUFNYSxJQUFJO0lBQzVCLElBQUlDLGVBQWVkLE1BQU1lLEtBQUs7SUFFOUIsS0FBSyxNQUFNQyx3QkFBd0JiLFdBQVk7UUFDN0MsTUFBTSxFQUFFYyxhQUFhQyxpQkFBaUIsRUFBRUwsTUFBTU0sU0FBUyxFQUFFLEdBQ3ZESDtRQUVGLE1BQU1JLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDZDtZQUNDO2VBQU9IO1NBQWtCLEVBQzFCTixhQUNBTyxXQUNBbkIsTUFBTUksWUFBWTtRQUdwQixrSUFBa0k7UUFDbEksOEdBQThHO1FBQzlHLG9JQUFvSTtRQUNwSSxtSUFBbUk7UUFDbkksNkJBQTZCO1FBQzdCLElBQUlnQixZQUFZLE1BQU07WUFDcEIsT0FBT3BCO1FBQ1Q7UUFFQSxJQUFJc0IsQ0FBQUEsR0FBQUEsNkJBQUFBLDJCQUFBQSxFQUE0QlYsYUFBYVEsVUFBVTtZQUNyRCxPQUFPWCxDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQ0xULE9BQ0FPLFNBQ0FQLE1BQU1JLFlBQVksRUFDbEJKLE1BQU1VLE9BQU8sQ0FBQ0MsV0FBVztRQUU3QjtRQUVBLE1BQU1ZLDJCQUEyQmxCLHVCQUM3Qm1CLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JuQix3QkFDbEJvQjtRQUVKLElBQUlGLDBCQUEwQjtZQUM1QmhCLFFBQVFILFlBQVksR0FBR21CO1FBQ3pCO1FBRUEsTUFBTVIsUUFBbUJXLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQTtRQUN6QkMsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCckIsYUFBYVEsY0FBY0MsT0FBT0M7UUFFbERULFFBQVFxQixXQUFXLEdBQUdSO1FBQ3RCYixRQUFRUSxLQUFLLEdBQUdBO1FBRWhCRCxlQUFlQztRQUNmSCxjQUFjUTtJQUNoQjtJQUVBLE9BQU9TLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWM3QixPQUFPTztBQUM5QiIsInNvdXJjZXMiOlsiL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9zZXJ2ZXItcGF0Y2gtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIcmVmRnJvbVVybCB9IGZyb20gJy4uL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuaW1wb3J0IHsgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIH0gZnJvbSAnLi4vYXBwbHktcm91dGVyLXN0YXRlLXBhdGNoLXRvLXRyZWUnXG5pbXBvcnQgeyBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQgfSBmcm9tICcuLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB0eXBlIHtcbiAgU2VydmVyUGF0Y2hBY3Rpb24sXG4gIFJlZHVjZXJTdGF0ZSxcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIE11dGFibGUsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgaGFuZGxlRXh0ZXJuYWxVcmwgfSBmcm9tICcuL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBhcHBseUZsaWdodERhdGEgfSBmcm9tICcuLi9hcHBseS1mbGlnaHQtZGF0YSdcbmltcG9ydCB7IGhhbmRsZU11dGFibGUgfSBmcm9tICcuLi9oYW5kbGUtbXV0YWJsZSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZXJQYXRjaFJlZHVjZXIoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgYWN0aW9uOiBTZXJ2ZXJQYXRjaEFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3Qge1xuICAgIHNlcnZlclJlc3BvbnNlOiB7IGZsaWdodERhdGEsIGNhbm9uaWNhbFVybDogY2Fub25pY2FsVXJsT3ZlcnJpZGUgfSxcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgfSA9IGFjdGlvblxuXG4gIGNvbnN0IG11dGFibGU6IE11dGFibGUgPSB7fVxuXG4gIG11dGFibGUucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUgPSBmYWxzZVxuXG4gIC8vIEhhbmRsZSBjYXNlIHdoZW4gbmF2aWdhdGluZyB0byBwYWdlIGluIGBwYWdlc2AgZnJvbSBgYXBwYFxuICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKFxuICAgICAgc3RhdGUsXG4gICAgICBtdXRhYmxlLFxuICAgICAgZmxpZ2h0RGF0YSxcbiAgICAgIHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2hcbiAgICApXG4gIH1cblxuICBsZXQgY3VycmVudFRyZWUgPSBzdGF0ZS50cmVlXG4gIGxldCBjdXJyZW50Q2FjaGUgPSBzdGF0ZS5jYWNoZVxuXG4gIGZvciAoY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgb2YgZmxpZ2h0RGF0YSkge1xuICAgIGNvbnN0IHsgc2VnbWVudFBhdGg6IGZsaWdodFNlZ21lbnRQYXRoLCB0cmVlOiB0cmVlUGF0Y2ggfSA9XG4gICAgICBub3JtYWxpemVkRmxpZ2h0RGF0YVxuXG4gICAgY29uc3QgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICAgIFsnJywgLi4uZmxpZ2h0U2VnbWVudFBhdGhdLFxuICAgICAgY3VycmVudFRyZWUsXG4gICAgICB0cmVlUGF0Y2gsXG4gICAgICBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICApXG5cbiAgICAvLyBgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlYCByZXR1cm5zIGBudWxsYCB3aGVuIGl0IGRldGVybWluZWQgdGhhdCB0aGUgc2VydmVyIHJlc3BvbnNlIGlzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSBjdXJyZW50IHRyZWUuXG4gICAgLy8gSW4gb3RoZXIgd29yZHMsIHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSB0cmVlIHRoYXQgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBjbGllbnQgaXMgY3VycmVudGx5IHJlbmRlcmluZy5cbiAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlcnZlciBwYXRjaCBhY3Rpb24gdG9vayBsb25nZXIgdG8gcmVzb2x2ZSB0aGFuIGEgc3Vic2VxdWVudCBuYXZpZ2F0aW9uIHdoaWNoIHdvdWxkIGhhdmUgY2hhbmdlZCB0aGUgdHJlZS5cbiAgICAvLyBQcmV2aW91c2x5IHRoaXMgY2FzZSB0cmlnZ2VyZWQgYW4gTVBBIG5hdmlnYXRpb24gYnV0IGl0IHNob3VsZCBiZSBzYWZlIHRvIHNpbXBseSBkaXNjYXJkIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgcmF0aGVyIHRoYW4gZm9yY2luZ1xuICAgIC8vIHRoZSBlbnRpcmUgcGFnZSB0byByZWxvYWQuXG4gICAgaWYgKG5ld1RyZWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH1cblxuICAgIGlmIChpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQoY3VycmVudFRyZWUsIG5ld1RyZWUpKSB7XG4gICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBtdXRhYmxlLFxuICAgICAgICBzdGF0ZS5jYW5vbmljYWxVcmwsXG4gICAgICAgIHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2hcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBjYW5vbmljYWxVcmxPdmVycmlkZUhyZWYgPSBjYW5vbmljYWxVcmxPdmVycmlkZVxuICAgICAgPyBjcmVhdGVIcmVmRnJvbVVybChjYW5vbmljYWxVcmxPdmVycmlkZSlcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmKSB7XG4gICAgICBtdXRhYmxlLmNhbm9uaWNhbFVybCA9IGNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZlxuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlOiBDYWNoZU5vZGUgPSBjcmVhdGVFbXB0eUNhY2hlTm9kZSgpXG4gICAgYXBwbHlGbGlnaHREYXRhKG5hdmlnYXRlZEF0LCBjdXJyZW50Q2FjaGUsIGNhY2hlLCBub3JtYWxpemVkRmxpZ2h0RGF0YSlcblxuICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSBuZXdUcmVlXG4gICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG5cbiAgICBjdXJyZW50Q2FjaGUgPSBjYWNoZVxuICAgIGN1cnJlbnRUcmVlID0gbmV3VHJlZVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG59XG4iXSwibmFtZXMiOlsic2VydmVyUGF0Y2hSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJzZXJ2ZXJSZXNwb25zZSIsImZsaWdodERhdGEiLCJjYW5vbmljYWxVcmwiLCJjYW5vbmljYWxVcmxPdmVycmlkZSIsIm5hdmlnYXRlZEF0IiwibXV0YWJsZSIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiaGFuZGxlRXh0ZXJuYWxVcmwiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJjdXJyZW50VHJlZSIsInRyZWUiLCJjdXJyZW50Q2FjaGUiLCJjYWNoZSIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwic2VnbWVudFBhdGgiLCJmbGlnaHRTZWdtZW50UGF0aCIsInRyZWVQYXRjaCIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjYW5vbmljYWxVcmxPdmVycmlkZUhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsInVuZGVmaW5lZCIsImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwiYXBwbHlGbGlnaHREYXRhIiwicGF0Y2hlZFRyZWUiLCJoYW5kbGVNdXRhYmxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js": /*!*******************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js ***! \*******************************************************************************************************/ /***/ ((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 addRefreshMarkerToActiveParallelSegments: function() {\n return addRefreshMarkerToActiveParallelSegments;\n },\n refreshInactiveParallelSegments: function() {\n return refreshInactiveParallelSegments;\n }\n});\nconst _applyflightdata = __webpack_require__(/*! ./apply-flight-data */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./fetch-server-response */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nasync function refreshInactiveParallelSegments(options) {\n const fetchedSegments = new Set();\n await refreshInactiveParallelSegmentsImpl({\n ...options,\n rootTree: options.updatedTree,\n fetchedSegments\n });\n}\nasync function refreshInactiveParallelSegmentsImpl(param) {\n let { navigatedAt, state, updatedTree, updatedCache, includeNextUrl, fetchedSegments, rootTree = updatedTree, canonicalUrl } = param;\n const [, parallelRoutes, refetchPath, refetchMarker] = updatedTree;\n const fetchPromises = [];\n if (refetchPath && refetchPath !== canonicalUrl && refetchMarker === 'refresh' && // it's possible for the tree to contain multiple segments that contain data at the same URL\n // we keep track of them so we can dedupe the requests\n !fetchedSegments.has(refetchPath)) {\n fetchedSegments.add(refetchPath) // Mark this URL as fetched\n ;\n // Eagerly kick off the fetch for the refetch path & the parallel routes. This should be fine to do as they each operate\n // independently on their own cache nodes, and `applyFlightData` will copy anything it doesn't care about from the existing cache.\n const fetchPromise = (0, _fetchserverresponse.fetchServerResponse)(new URL(refetchPath, location.origin), {\n // refetch from the root of the updated tree, otherwise it will be scoped to the current segment\n // and might not contain the data we need to patch in interception route data (such as dynamic params from a previous segment)\n flightRouterState: [\n rootTree[0],\n rootTree[1],\n rootTree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null\n }).then((param)=>{\n let { flightData } = param;\n if (typeof flightData !== 'string') {\n for (const flightDataPath of flightData){\n // we only pass the new cache as this function is called after clearing the router cache\n // and filling in the new page data from the server. Meaning the existing cache is actually the cache that's\n // just been created & has been written to, but hasn't been \"committed\" yet.\n (0, _applyflightdata.applyFlightData)(navigatedAt, updatedCache, updatedCache, flightDataPath);\n }\n } else {\n // When flightData is a string, it suggests that the server response should have triggered an MPA navigation\n // I'm not 100% sure of this decision, but it seems unlikely that we'd want to introduce a redirect side effect\n // when refreshing on-screen data, so handling this has been ommitted.\n }\n });\n fetchPromises.push(fetchPromise);\n }\n for(const key in parallelRoutes){\n const parallelFetchPromise = refreshInactiveParallelSegmentsImpl({\n navigatedAt,\n state,\n updatedTree: parallelRoutes[key],\n updatedCache,\n includeNextUrl,\n fetchedSegments,\n rootTree,\n canonicalUrl\n });\n fetchPromises.push(parallelFetchPromise);\n }\n await Promise.all(fetchPromises);\n}\nfunction addRefreshMarkerToActiveParallelSegments(tree, path) {\n const [segment, parallelRoutes, , refetchMarker] = tree;\n // a page segment might also contain concatenated search params, so we do a partial match on the key\n if (segment.includes(_segment.PAGE_SEGMENT_KEY) && refetchMarker !== 'refresh') {\n tree[2] = path;\n tree[3] = 'refresh';\n }\n for(const key in parallelRoutes){\n addRefreshMarkerToActiveParallelSegments(parallelRoutes[key], path);\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=refetch-inactive-parallel-segments.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVmZXRjaC1pbmFjdGl2ZS1wYXJhbGxlbC1zZWdtZW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF5SGdCQSx3Q0FBd0M7ZUFBeENBOztJQTlGTUMsK0JBQStCO2VBQS9CQTs7OzZDQXhCVTtpREFDSTtxQ0FDSDtBQXNCMUIsZUFBZUEsZ0NBQ3BCQyxPQUF3QztJQUV4QyxNQUFNQyxrQkFBa0IsSUFBSUM7SUFDNUIsTUFBTUMsb0NBQW9DO1FBQ3hDLEdBQUdILE9BQU87UUFDVkksVUFBVUosUUFBUUssV0FBVztRQUM3Qko7SUFDRjtBQUNGO0FBRUEsZUFBZUUsb0NBQW9DLEtBWWxEO0lBWmtELE1BQ2pERyxXQUFXLEVBQ1hDLEtBQUssRUFDTEYsV0FBVyxFQUNYRyxZQUFZLEVBQ1pDLGNBQWMsRUFDZFIsZUFBZSxFQUNmRyxXQUFXQyxXQUFXLEVBQ3RCSyxZQUFZLEVBSWIsR0Faa0Q7SUFhakQsTUFBTSxHQUFHQyxnQkFBZ0JDLGFBQWFDLGNBQWMsR0FBR1I7SUFDdkQsTUFBTVMsZ0JBQWdCLEVBQUU7SUFFeEIsSUFDRUYsZUFDQUEsZ0JBQWdCRixnQkFDaEJHLGtCQUFrQixhQUNsQiw0RkFBNEY7SUFDNUYsc0RBQXNEO0lBQ3RELENBQUNaLGdCQUFnQmMsR0FBRyxDQUFDSCxjQUNyQjtRQUNBWCxnQkFBZ0JlLEdBQUcsQ0FBQ0osYUFBYSwyQkFBMkI7O1FBRTVELHdIQUF3SDtRQUN4SCxrSUFBa0k7UUFDbEksTUFBTUssZUFBZUMsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUNuQixJQUFJQyxJQUFJUCxhQUFhUSxTQUFTQyxNQUFNLEdBQ3BDO1lBQ0UsZ0dBQWdHO1lBQ2hHLDhIQUE4SDtZQUM5SEMsbUJBQW1CO2dCQUFDbEIsUUFBUSxDQUFDLEVBQUU7Z0JBQUVBLFFBQVEsQ0FBQyxFQUFFO2dCQUFFQSxRQUFRLENBQUMsRUFBRTtnQkFBRTthQUFVO1lBQ3JFbUIsU0FBU2QsaUJBQWlCRixNQUFNZ0IsT0FBTyxHQUFHO1FBQzVDLEdBQ0FDLElBQUksQ0FBQztnQkFBQyxFQUFFQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxPQUFPQSxlQUFlLFVBQVU7Z0JBQ2xDLEtBQUssTUFBTUMsa0JBQWtCRCxXQUFZO29CQUN2Qyx3RkFBd0Y7b0JBQ3hGLDRHQUE0RztvQkFDNUcsNEVBQTRFO29CQUM1RUUsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQ0VyQixhQUNBRSxjQUNBQSxjQUNBa0I7Z0JBRUo7WUFDRixPQUFPO1lBQ0wsNEdBQTRHO1lBQzVHLCtHQUErRztZQUMvRyxzRUFBc0U7WUFDeEU7UUFDRjtRQUVBWixjQUFjYyxJQUFJLENBQUNYO0lBQ3JCO0lBRUEsSUFBSyxNQUFNWSxPQUFPbEIsZUFBZ0I7UUFDaEMsTUFBTW1CLHVCQUF1QjNCLG9DQUFvQztZQUMvREc7WUFDQUM7WUFDQUYsYUFBYU0sY0FBYyxDQUFDa0IsSUFBSTtZQUNoQ3JCO1lBQ0FDO1lBQ0FSO1lBQ0FHO1lBQ0FNO1FBQ0Y7UUFFQUksY0FBY2MsSUFBSSxDQUFDRTtJQUNyQjtJQUVBLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQ2xCO0FBQ3BCO0FBUU8sU0FBU2hCLHlDQUNkbUMsSUFBdUIsRUFDdkJDLElBQVk7SUFFWixNQUFNLENBQUNDLFNBQVN4QixrQkFBa0JFLGNBQWMsR0FBR29CO0lBQ25ELG9HQUFvRztJQUNwRyxJQUFJRSxRQUFRQyxRQUFRLENBQUNDLFNBQUFBLGdCQUFnQixLQUFLeEIsa0JBQWtCLFdBQVc7UUFDckVvQixJQUFJLENBQUMsRUFBRSxHQUFHQztRQUNWRCxJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1o7SUFFQSxJQUFLLE1BQU1KLE9BQU9sQixlQUFnQjtRQUNoQ2IseUNBQXlDYSxjQUFjLENBQUNrQixJQUFJLEVBQUVLO0lBQ2hFO0FBQ0YiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVmZXRjaC1pbmFjdGl2ZS1wYXJhbGxlbC1zZWdtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJTdGF0ZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBhcHBseUZsaWdodERhdGEgfSBmcm9tICcuL2FwcGx5LWZsaWdodC1kYXRhJ1xuaW1wb3J0IHsgZmV0Y2hTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcblxuaW50ZXJmYWNlIFJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMge1xuICBuYXZpZ2F0ZWRBdDogbnVtYmVyXG4gIHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZVxuICB1cGRhdGVkVHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgdXBkYXRlZENhY2hlOiBDYWNoZU5vZGVcbiAgaW5jbHVkZU5leHRVcmw6IGJvb2xlYW5cbiAgY2Fub25pY2FsVXJsOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBSZWZyZXNoZXMgaW5hY3RpdmUgc2VnbWVudHMgdGhhdCBhcmUgc3RpbGwgaW4gdGhlIGN1cnJlbnQgRmxpZ2h0Um91dGVyU3RhdGUuXG4gKiBBIHNlZ21lbnQgaXMgY29uc2lkZXJlZCBcImluYWN0aXZlXCIgd2hlbiB0aGUgc2VydmVyIHJlc3BvbnNlIGluZGljYXRlcyBpdCBkaWRuJ3QgbWF0Y2ggdG8gYSBwYWdlIGNvbXBvbmVudC5cbiAqIFRoaXMgaGFwcGVucyBkdXJpbmcgYSBzb2Z0LW5hdmlnYXRpb24sIHdoZXJlIHRoZSBzZXJ2ZXIgd2lsbCB3YW50IHRvIHBhdGNoIGluIHRoZSBzZWdtZW50XG4gKiB3aXRoIHRoZSBcImRlZmF1bHRcIiBjb21wb25lbnQsIGJ1dCB3ZSBleHBsaWNpdGx5IGlnbm9yZSB0aGUgc2VydmVyIGluIHRoaXMgY2FzZVxuICogYW5kIGtlZXAgdGhlIGV4aXN0aW5nIHN0YXRlIGZvciB0aGF0IHNlZ21lbnQuIE5ldyBkYXRhIGZvciBpbmFjdGl2ZSBzZWdtZW50cyBhcmUgaW5oZXJlbnRseVxuICogbm90IHBhcnQgb2YgdGhlIHNlcnZlciByZXNwb25zZSB3aGVuIHdlIHBhdGNoIHRoZSB0cmVlLCBiZWNhdXNlIHRoZXkgd2VyZSBhc3NvY2lhdGVkIHdpdGggYSByZXNwb25zZVxuICogZnJvbSBhbiBlYXJsaWVyIG5hdmlnYXRpb24vcmVxdWVzdC4gRm9yIGVhY2ggc2VnbWVudCwgb25jZSBpdCBiZWNvbWVzIFwiYWN0aXZlXCIsIHdlIGVuY29kZSB0aGUgVVJMIHRoYXQgcHJvdmlkZWRcbiAqIHRoZSBkYXRhIGZvciBpdC4gVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgcGFyYWxsZWwgcm91dGVzIGxvb2tpbmcgZm9yIHRoZXNlIG1hcmtlcnMgc28gdGhhdCBpdCBjYW4gcmUtZmV0Y2hcbiAqIGFuZCBwYXRjaCB0aGUgbmV3IGRhdGEgaW50byB0aGUgdHJlZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMoXG4gIG9wdGlvbnM6IFJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHNcbikge1xuICBjb25zdCBmZXRjaGVkU2VnbWVudHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBhd2FpdCByZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzSW1wbCh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICByb290VHJlZTogb3B0aW9ucy51cGRhdGVkVHJlZSxcbiAgICBmZXRjaGVkU2VnbWVudHMsXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHNJbXBsKHtcbiAgbmF2aWdhdGVkQXQsXG4gIHN0YXRlLFxuICB1cGRhdGVkVHJlZSxcbiAgdXBkYXRlZENhY2hlLFxuICBpbmNsdWRlTmV4dFVybCxcbiAgZmV0Y2hlZFNlZ21lbnRzLFxuICByb290VHJlZSA9IHVwZGF0ZWRUcmVlLFxuICBjYW5vbmljYWxVcmwsXG59OiBSZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzICYge1xuICBmZXRjaGVkU2VnbWVudHM6IFNldDxzdHJpbmc+XG4gIHJvb3RUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxufSkge1xuICBjb25zdCBbLCBwYXJhbGxlbFJvdXRlcywgcmVmZXRjaFBhdGgsIHJlZmV0Y2hNYXJrZXJdID0gdXBkYXRlZFRyZWVcbiAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtdXG5cbiAgaWYgKFxuICAgIHJlZmV0Y2hQYXRoICYmXG4gICAgcmVmZXRjaFBhdGggIT09IGNhbm9uaWNhbFVybCAmJlxuICAgIHJlZmV0Y2hNYXJrZXIgPT09ICdyZWZyZXNoJyAmJlxuICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIHRoZSB0cmVlIHRvIGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgdGhhdCBjb250YWluIGRhdGEgYXQgdGhlIHNhbWUgVVJMXG4gICAgLy8gd2Uga2VlcCB0cmFjayBvZiB0aGVtIHNvIHdlIGNhbiBkZWR1cGUgdGhlIHJlcXVlc3RzXG4gICAgIWZldGNoZWRTZWdtZW50cy5oYXMocmVmZXRjaFBhdGgpXG4gICkge1xuICAgIGZldGNoZWRTZWdtZW50cy5hZGQocmVmZXRjaFBhdGgpIC8vIE1hcmsgdGhpcyBVUkwgYXMgZmV0Y2hlZFxuXG4gICAgLy8gRWFnZXJseSBraWNrIG9mZiB0aGUgZmV0Y2ggZm9yIHRoZSByZWZldGNoIHBhdGggJiB0aGUgcGFyYWxsZWwgcm91dGVzLiBUaGlzIHNob3VsZCBiZSBmaW5lIHRvIGRvIGFzIHRoZXkgZWFjaCBvcGVyYXRlXG4gICAgLy8gaW5kZXBlbmRlbnRseSBvbiB0aGVpciBvd24gY2FjaGUgbm9kZXMsIGFuZCBgYXBwbHlGbGlnaHREYXRhYCB3aWxsIGNvcHkgYW55dGhpbmcgaXQgZG9lc24ndCBjYXJlIGFib3V0IGZyb20gdGhlIGV4aXN0aW5nIGNhY2hlLlxuICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IGZldGNoU2VydmVyUmVzcG9uc2UoXG4gICAgICBuZXcgVVJMKHJlZmV0Y2hQYXRoLCBsb2NhdGlvbi5vcmlnaW4pLFxuICAgICAge1xuICAgICAgICAvLyByZWZldGNoIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHVwZGF0ZWQgdHJlZSwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgc2NvcGVkIHRvIHRoZSBjdXJyZW50IHNlZ21lbnRcbiAgICAgICAgLy8gYW5kIG1pZ2h0IG5vdCBjb250YWluIHRoZSBkYXRhIHdlIG5lZWQgdG8gcGF0Y2ggaW4gaW50ZXJjZXB0aW9uIHJvdXRlIGRhdGEgKHN1Y2ggYXMgZHluYW1pYyBwYXJhbXMgZnJvbSBhIHByZXZpb3VzIHNlZ21lbnQpXG4gICAgICAgIGZsaWdodFJvdXRlclN0YXRlOiBbcm9vdFRyZWVbMF0sIHJvb3RUcmVlWzFdLCByb290VHJlZVsyXSwgJ3JlZmV0Y2gnXSxcbiAgICAgICAgbmV4dFVybDogaW5jbHVkZU5leHRVcmwgPyBzdGF0ZS5uZXh0VXJsIDogbnVsbCxcbiAgICAgIH1cbiAgICApLnRoZW4oKHsgZmxpZ2h0RGF0YSB9KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmxpZ2h0RGF0YVBhdGggb2YgZmxpZ2h0RGF0YSkge1xuICAgICAgICAgIC8vIHdlIG9ubHkgcGFzcyB0aGUgbmV3IGNhY2hlIGFzIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGNsZWFyaW5nIHRoZSByb3V0ZXIgY2FjaGVcbiAgICAgICAgICAvLyBhbmQgZmlsbGluZyBpbiB0aGUgbmV3IHBhZ2UgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuIE1lYW5pbmcgdGhlIGV4aXN0aW5nIGNhY2hlIGlzIGFjdHVhbGx5IHRoZSBjYWNoZSB0aGF0J3NcbiAgICAgICAgICAvLyBqdXN0IGJlZW4gY3JlYXRlZCAmIGhhcyBiZWVuIHdyaXR0ZW4gdG8sIGJ1dCBoYXNuJ3QgYmVlbiBcImNvbW1pdHRlZFwiIHlldC5cbiAgICAgICAgICBhcHBseUZsaWdodERhdGEoXG4gICAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICAgIHVwZGF0ZWRDYWNoZSxcbiAgICAgICAgICAgIHVwZGF0ZWRDYWNoZSxcbiAgICAgICAgICAgIGZsaWdodERhdGFQYXRoXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXaGVuIGZsaWdodERhdGEgaXMgYSBzdHJpbmcsIGl0IHN1Z2dlc3RzIHRoYXQgdGhlIHNlcnZlciByZXNwb25zZSBzaG91bGQgaGF2ZSB0cmlnZ2VyZWQgYW4gTVBBIG5hdmlnYXRpb25cbiAgICAgICAgLy8gSSdtIG5vdCAxMDAlIHN1cmUgb2YgdGhpcyBkZWNpc2lvbiwgYnV0IGl0IHNlZW1zIHVubGlrZWx5IHRoYXQgd2UnZCB3YW50IHRvIGludHJvZHVjZSBhIHJlZGlyZWN0IHNpZGUgZWZmZWN0XG4gICAgICAgIC8vIHdoZW4gcmVmcmVzaGluZyBvbi1zY3JlZW4gZGF0YSwgc28gaGFuZGxpbmcgdGhpcyBoYXMgYmVlbiBvbW1pdHRlZC5cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgZmV0Y2hQcm9taXNlcy5wdXNoKGZldGNoUHJvbWlzZSlcbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IGluIHBhcmFsbGVsUm91dGVzKSB7XG4gICAgY29uc3QgcGFyYWxsZWxGZXRjaFByb21pc2UgPSByZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzSW1wbCh7XG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIHN0YXRlLFxuICAgICAgdXBkYXRlZFRyZWU6IHBhcmFsbGVsUm91dGVzW2tleV0sXG4gICAgICB1cGRhdGVkQ2FjaGUsXG4gICAgICBpbmNsdWRlTmV4dFVybCxcbiAgICAgIGZldGNoZWRTZWdtZW50cyxcbiAgICAgIHJvb3RUcmVlLFxuICAgICAgY2Fub25pY2FsVXJsLFxuICAgIH0pXG5cbiAgICBmZXRjaFByb21pc2VzLnB1c2gocGFyYWxsZWxGZXRjaFByb21pc2UpXG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChmZXRjaFByb21pc2VzKVxufVxuXG4vKipcbiAqIFdhbGtzIHRoZSBjdXJyZW50IHBhcmFsbGVsIHNlZ21lbnRzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBcImFjdGl2ZVwiLlxuICogQW4gYWN0aXZlIHBhcmFsbGVsIHJvdXRlIHdpbGwgaGF2ZSBhIGBfX1BBR0VfX2Agc2VnbWVudCBpbiB0aGUgRmxpZ2h0Um91dGVyU3RhdGUuXG4gKiBBcyBvcHBvc2VkIHRvIGEgYF9fREVGQVVMVF9fYCBzZWdtZW50LCB3aGljaCBtZWFucyB0aGVyZSB3YXMgbm8gbWF0Y2ggZm9yIHRoYXQgcGFyYWxsZWwgcm91dGUuXG4gKiBXZSBhZGQgYSBzcGVjaWFsIG1hcmtlciBoZXJlIHNvIHRoYXQgd2Uga25vdyBob3cgdG8gcmVmcmVzaCBpdHMgZGF0YSB3aGVuIHRoZSByb3V0ZXIgaXMgcmV2YWxpZGF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzKFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcGF0aDogc3RyaW5nXG4pIHtcbiAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzLCAsIHJlZmV0Y2hNYXJrZXJdID0gdHJlZVxuICAvLyBhIHBhZ2Ugc2VnbWVudCBtaWdodCBhbHNvIGNvbnRhaW4gY29uY2F0ZW5hdGVkIHNlYXJjaCBwYXJhbXMsIHNvIHdlIGRvIGEgcGFydGlhbCBtYXRjaCBvbiB0aGUga2V5XG4gIGlmIChzZWdtZW50LmluY2x1ZGVzKFBBR0VfU0VHTUVOVF9LRVkpICYmIHJlZmV0Y2hNYXJrZXIgIT09ICdyZWZyZXNoJykge1xuICAgIHRyZWVbMl0gPSBwYXRoXG4gICAgdHJlZVszXSA9ICdyZWZyZXNoJ1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzKHBhcmFsbGVsUm91dGVzW2tleV0sIHBhdGgpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzIiwicmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyIsIm9wdGlvbnMiLCJmZXRjaGVkU2VnbWVudHMiLCJTZXQiLCJyZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzSW1wbCIsInJvb3RUcmVlIiwidXBkYXRlZFRyZWUiLCJuYXZpZ2F0ZWRBdCIsInN0YXRlIiwidXBkYXRlZENhY2hlIiwiaW5jbHVkZU5leHRVcmwiLCJjYW5vbmljYWxVcmwiLCJwYXJhbGxlbFJvdXRlcyIsInJlZmV0Y2hQYXRoIiwicmVmZXRjaE1hcmtlciIsImZldGNoUHJvbWlzZXMiLCJoYXMiLCJhZGQiLCJmZXRjaFByb21pc2UiLCJmZXRjaFNlcnZlclJlc3BvbnNlIiwiVVJMIiwibG9jYXRpb24iLCJvcmlnaW4iLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIm5leHRVcmwiLCJ0aGVuIiwiZmxpZ2h0RGF0YSIsImZsaWdodERhdGFQYXRoIiwiYXBwbHlGbGlnaHREYXRhIiwicHVzaCIsImtleSIsInBhcmFsbGVsRmV0Y2hQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsInRyZWUiLCJwYXRoIiwic2VnbWVudCIsImluY2x1ZGVzIiwiUEFHRV9TRUdNRU5UX0tFWSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js ***! \*****************************************************************************************/ /***/ ((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 ACTION_HMR_REFRESH: function() {\n return ACTION_HMR_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_PREFETCH: function() {\n return ACTION_PREFETCH;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n PrefetchCacheEntryStatus: function() {\n return PrefetchCacheEntryStatus;\n },\n PrefetchKind: function() {\n return PrefetchKind;\n }\n});\nconst ACTION_REFRESH = 'refresh';\nconst ACTION_NAVIGATE = 'navigate';\nconst ACTION_RESTORE = 'restore';\nconst ACTION_SERVER_PATCH = 'server-patch';\nconst ACTION_PREFETCH = 'prefetch';\nconst ACTION_HMR_REFRESH = 'hmr-refresh';\nconst ACTION_SERVER_ACTION = 'server-action';\nvar PrefetchKind = /*#__PURE__*/ function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n PrefetchKind[\"TEMPORARY\"] = \"temporary\";\n return PrefetchKind;\n}({});\nvar PrefetchCacheEntryStatus = /*#__PURE__*/ function(PrefetchCacheEntryStatus) {\n PrefetchCacheEntryStatus[\"fresh\"] = \"fresh\";\n PrefetchCacheEntryStatus[\"reusable\"] = \"reusable\";\n PrefetchCacheEntryStatus[\"expired\"] = \"expired\";\n PrefetchCacheEntryStatus[\"stale\"] = \"stale\";\n return PrefetchCacheEntryStatus;\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-reducer-types.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBWWFBLGtCQUFrQjtlQUFsQkE7O0lBSkFDLGVBQWU7ZUFBZkE7O0lBR0FDLGVBQWU7ZUFBZkE7O0lBSkFDLGNBQWM7ZUFBZEE7O0lBRUFDLGNBQWM7ZUFBZEE7O0lBSUFDLG9CQUFvQjtlQUFwQkE7O0lBSEFDLG1CQUFtQjtlQUFuQkE7O0lBeU1EQyx3QkFBd0I7ZUFBeEJBOztJQWhFQUMsWUFBWTtlQUFaQTs7O0FBNUlMLE1BQU1MLGlCQUFpQjtBQUN2QixNQUFNRixrQkFBa0I7QUFDeEIsTUFBTUcsaUJBQWlCO0FBQ3ZCLE1BQU1FLHNCQUFzQjtBQUM1QixNQUFNSixrQkFBa0I7QUFDeEIsTUFBTUYscUJBQXFCO0FBQzNCLE1BQU1LLHVCQUF1QjtBQXNJN0IsSUFBS0csZUFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsWUFBQUE7Ozs7V0FBQUE7O0FBZ0VMLElBQUtELDJCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSx3QkFBQUE7Ozs7O1dBQUFBIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcblxuZXhwb3J0IGNvbnN0IEFDVElPTl9SRUZSRVNIID0gJ3JlZnJlc2gnXG5leHBvcnQgY29uc3QgQUNUSU9OX05BVklHQVRFID0gJ25hdmlnYXRlJ1xuZXhwb3J0IGNvbnN0IEFDVElPTl9SRVNUT1JFID0gJ3Jlc3RvcmUnXG5leHBvcnQgY29uc3QgQUNUSU9OX1NFUlZFUl9QQVRDSCA9ICdzZXJ2ZXItcGF0Y2gnXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZFVENIID0gJ3ByZWZldGNoJ1xuZXhwb3J0IGNvbnN0IEFDVElPTl9ITVJfUkVGUkVTSCA9ICdobXItcmVmcmVzaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fU0VSVkVSX0FDVElPTiA9ICdzZXJ2ZXItYWN0aW9uJ1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJDaGFuZ2VCeVNlcnZlclJlc3BvbnNlID0gKHtcbiAgbmF2aWdhdGVkQXQsXG4gIHByZXZpb3VzVHJlZSxcbiAgc2VydmVyUmVzcG9uc2UsXG59OiB7XG4gIG5hdmlnYXRlZEF0OiBudW1iZXJcbiAgcHJldmlvdXNUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBzZXJ2ZXJSZXNwb25zZTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdFxufSkgPT4gdm9pZFxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGFibGUge1xuICBtcGFOYXZpZ2F0aW9uPzogYm9vbGVhblxuICBwYXRjaGVkVHJlZT86IEZsaWdodFJvdXRlclN0YXRlXG4gIGNhbm9uaWNhbFVybD86IHN0cmluZ1xuICBzY3JvbGxhYmxlU2VnbWVudHM/OiBGbGlnaHRTZWdtZW50UGF0aFtdXG4gIHBlbmRpbmdQdXNoPzogYm9vbGVhblxuICBjYWNoZT86IENhY2hlTm9kZVxuICBwcmVmZXRjaENhY2hlPzogQXBwUm91dGVyU3RhdGVbJ3ByZWZldGNoQ2FjaGUnXVxuICBoYXNoRnJhZ21lbnQ/OiBzdHJpbmdcbiAgc2hvdWxkU2Nyb2xsPzogYm9vbGVhblxuICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZT86IGJvb2xlYW5cbiAgb25seUhhc2hDaGFuZ2U/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyQWN0aW9uTXV0YWJsZSBleHRlbmRzIE11dGFibGUge1xuICBpbkZsaWdodFNlcnZlckFjdGlvbj86IFByb21pc2U8YW55PiB8IG51bGxcbn1cblxuLyoqXG4gKiBSZWZyZXNoIHRyaWdnZXJzIGEgcmVmcmVzaCBvZiB0aGUgZnVsbCBwYWdlIGRhdGEuXG4gKiAtIGZldGNoZXMgdGhlIEZsaWdodCBkYXRhIGFuZCBmaWxscyByc2MgYXQgdGhlIHJvb3Qgb2YgdGhlIGNhY2hlLlxuICogLSBUaGUgcm91dGVyIHN0YXRlIGlzIHVwZGF0ZWQgYXQgdGhlIHJvb3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fUkVGUkVTSFxuICBvcmlnaW46IExvY2F0aW9uWydvcmlnaW4nXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhtclJlZnJlc2hBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgQUNUSU9OX0hNUl9SRUZSRVNIXG4gIG9yaWdpbjogTG9jYXRpb25bJ29yaWdpbiddXG59XG5cbmV4cG9ydCB0eXBlIFNlcnZlckFjdGlvbkRpc3BhdGNoZXIgPSAoXG4gIGFyZ3M6IE9taXQ8XG4gICAgU2VydmVyQWN0aW9uQWN0aW9uLFxuICAgICd0eXBlJyB8ICdtdXRhYmxlJyB8ICduYXZpZ2F0ZScgfCAnY2hhbmdlQnlTZXJ2ZXJSZXNwb25zZScgfCAnY2FjaGUnXG4gID5cbikgPT4gdm9pZFxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlckFjdGlvbkFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fU0VSVkVSX0FDVElPTlxuICBhY3Rpb25JZDogc3RyaW5nXG4gIGFjdGlvbkFyZ3M6IGFueVtdXG4gIHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkXG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZFxufVxuXG4vKipcbiAqIE5hdmlnYXRlIHRyaWdnZXJzIGEgbmF2aWdhdGlvbiB0byB0aGUgcHJvdmlkZWQgdXJsLiBJdCBzdXBwb3J0cyB0d28gdHlwZXM6IGBwdXNoYCBhbmQgYHJlcGxhY2VgLlxuICpcbiAqIGBuYXZpZ2F0ZVR5cGVgOlxuICogLSBgcHVzaGAgLSBwdXNoZXMgYSBuZXcgaGlzdG9yeSBlbnRyeSBpbiB0aGUgYnJvd3NlciBoaXN0b3J5XG4gKiAtIGByZXBsYWNlYCAtIHJlcGxhY2VzIHRoZSBjdXJyZW50IGhpc3RvcnkgZW50cnkgaW4gdGhlIGJyb3dzZXIgaGlzdG9yeVxuICpcbiAqIE5hdmlnYXRlIGhhcyBtdWx0aXBsZSBjYWNoZSBoZXVyaXN0aWNzOlxuICogLSBwYWdlIHdhcyBwcmVmZXRjaGVkXG4gKiAgLSBBcHBseSByb3V0ZXIgc3RhdGUgdHJlZSBmcm9tIHByZWZldGNoXG4gKiAgLSBBcHBseSBGbGlnaHQgZGF0YSBmcm9tIHByZWZldGNoIHRvIHRoZSBjYWNoZVxuICogIC0gSWYgRmxpZ2h0IGRhdGEgaXMgYSBzdHJpbmcsIGl0J3MgYSByZWRpcmVjdCBhbmQgdGhlIHN0YXRlIGlzIHVwZGF0ZWQgdG8gdHJpZ2dlciBhIHJlZGlyZWN0XG4gKiAgLSBDaGVjayBpZiBoYXJkIG5hdmlnYXRpb24gaXMgbmVlZGVkXG4gKiAgICAtIEhhcmQgbmF2aWdhdGlvbiBoYXBwZW5zIHdoZW4gYSBkeW5hbWljIHBhcmFtZXRlciBiZWxvdyB0aGUgY29tbW9uIGxheW91dCBjaGFuZ2VkXG4gKiAgICAtIFdoZW4gaGFyZCBuYXZpZ2F0aW9uIGlzIG5lZWRlZCB0aGUgY2FjaGUgaXMgaW52YWxpZGF0ZWQgYmVsb3cgdGhlIGZsaWdodFNlZ21lbnRQYXRoXG4gKiAgICAtIFRoZSBtaXNzaW5nIGNhY2hlIG5vZGVzIG9mIHRoZSBwYWdlIHdpbGwgYmUgZmV0Y2hlZCBpbiBsYXlvdXQtcm91dGVyIGFuZCB0cmlnZ2VyIHRoZSBTRVJWRVJfUEFUQ0ggYWN0aW9uXG4gKiAgLSBJZiBoYXJkIG5hdmlnYXRpb24gaXMgbm90IG5lZWRlZFxuICogICAgLSBUaGUgY2FjaGUgaXMgcmV1c2VkXG4gKiAgICAtIElmIGFueSBjYWNoZSBub2RlcyBhcmUgbWlzc2luZyB0aGV5J2xsIGJlIGZldGNoZWQgaW4gbGF5b3V0LXJvdXRlciBhbmQgdHJpZ2dlciB0aGUgU0VSVkVSX1BBVENIIGFjdGlvblxuICogLSBwYWdlIHdhcyBub3QgcHJlZmV0Y2hlZFxuICogIC0gVGhlIG5hdmlnYXRlIHdhcyBjYWxsZWQgZnJvbSBgbmV4dC9yb3V0ZXJgIChgcm91dGVyLnB1c2goKWAgLyBgcm91dGVyLnJlcGxhY2UoKWApIC8gYG5leHQvbGlua2Agd2l0aG91dCBwcmVmZXRjaGVkIGRhdGEgYXZhaWxhYmxlIChlLmcuIHRoZSBwcmVmZXRjaCBkaWRuJ3QgY29tZSBiYWNrIGZyb20gdGhlIHNlcnZlciBiZWZvcmUgY2xpY2tpbmcgdGhlIGxpbmspXG4gKiAgICAtIEZsaWdodCBkYXRhIGlzIGZldGNoZWQgaW4gdGhlIHJlZHVjZXIgKHN1c3BlbmRzIHRoZSByZWR1Y2VyKVxuICogICAgLSBSb3V0ZXIgc3RhdGUgdHJlZSBpcyBjcmVhdGVkIGJhc2VkIG9uIEZsaWdodCBkYXRhXG4gKiAgICAtIENhY2hlIGlzIGZpbGxlZCBiYXNlZCBvbiB0aGUgRmxpZ2h0IGRhdGFcbiAqXG4gKiBBYm92ZSBzdGVwcyBleHBsYWluIDMgY2FzZXM6XG4gKiAtIGBzb2Z0YCAtIFJldXNlcyB0aGUgZXhpc3RpbmcgY2FjaGUgYW5kIGZldGNoZXMgbWlzc2luZyBub2RlcyBpbiBsYXlvdXQtcm91dGVyLlxuICogLSBgaGFyZGAgLSBDcmVhdGVzIGEgbmV3IGNhY2hlIHdoZXJlIGNhY2hlIG5vZGVzIGFyZSByZW1vdmVkIGJlbG93IHRoZSBjb21tb24gbGF5b3V0IGFuZCBmZXRjaGVzIG1pc3Npbmcgbm9kZXMgaW4gbGF5b3V0LXJvdXRlci5cbiAqIC0gYG9wdGltaXN0aWNgIChleHBsaWNpdCBubyBwcmVmZXRjaCkgLSBDcmVhdGVzIGEgbmV3IGNhY2hlIGFuZCBraWNrcyBvZmYgdGhlIGRhdGEgZmV0Y2ggaW4gdGhlIHJlZHVjZXIuIFRoZSBkYXRhIGZldGNoIGlzIGF3YWl0ZWQgaW4gdGhlIGxheW91dC1yb3V0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGVBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgQUNUSU9OX05BVklHQVRFXG4gIHVybDogVVJMXG4gIGlzRXh0ZXJuYWxVcmw6IGJvb2xlYW5cbiAgbG9jYXRpb25TZWFyY2g6IExvY2F0aW9uWydzZWFyY2gnXVxuICBuYXZpZ2F0ZVR5cGU6ICdwdXNoJyB8ICdyZXBsYWNlJ1xuICBzaG91bGRTY3JvbGw6IGJvb2xlYW5cbiAgYWxsb3dBbGlhc2luZzogYm9vbGVhblxufVxuXG4vKipcbiAqIFJlc3RvcmUgYXBwbGllcyB0aGUgcHJvdmlkZWQgcm91dGVyIHN0YXRlLlxuICogLSBVc2VkIGZvciBgcG9wc3RhdGVgIChiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbikgd2hlcmUgYSBrbm93biByb3V0ZXIgc3RhdGUgaGFzIHRvIGJlIGFwcGxpZWQuXG4gKiAtIEFsc28gdXNlZCB3aGVuIHN5bmNpbmcgdGhlIHJvdXRlciBzdGF0ZSB3aXRoIGBwdXNoU3RhdGVgL2ByZXBsYWNlU3RhdGVgIGNhbGxzLlxuICogLSBSb3V0ZXIgc3RhdGUgaXMgYXBwbGllZCBhcy1pcyBmcm9tIHRoZSBoaXN0b3J5IHN0YXRlLCBpZiBhdmFpbGFibGUuXG4gKiAtIElmIHRoZSBoaXN0b3J5IHN0YXRlIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJvdXRlciBzdGF0ZSwgdGhlIGV4aXN0aW5nIHJvdXRlciBzdGF0ZSBpcyB1c2VkLlxuICogLSBJZiBhbnkgY2FjaGUgbm9kZSBpcyBtaXNzaW5nIGl0IHdpbGwgYmUgZmV0Y2hlZCBpbiBsYXlvdXQtcm91dGVyIGR1cmluZyByZW5kZXJpbmcgYW5kIHRoZSBzZXJ2ZXItcGF0Y2ggY2FzZS5cbiAqIC0gSWYgZXhpc3RpbmcgY2FjaGUgbm9kZXMgbWF0Y2ggdGhlc2UgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdG9yZUFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fUkVTVE9SRVxuICB1cmw6IFVSTFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIFNlcnZlci1wYXRjaCBhcHBsaWVzIHRoZSBwcm92aWRlZCBGbGlnaHQgZGF0YSB0byB0aGUgY2FjaGUgYW5kIHJvdXRlciB0cmVlLlxuICogLSBPbmx5IHRyaWdnZXJlZCBpbiBsYXlvdXQtcm91dGVyLlxuICogLSBDcmVhdGVzIGEgbmV3IGNhY2hlIGFuZCByb3V0ZXIgc3RhdGUgd2l0aCB0aGUgRmxpZ2h0IGRhdGEgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJQYXRjaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fU0VSVkVSX1BBVENIXG4gIG5hdmlnYXRlZEF0OiBudW1iZXJcbiAgc2VydmVyUmVzcG9uc2U6IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHRcbiAgcHJldmlvdXNUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxufVxuXG4vKipcbiAqIFByZWZldGNoS2luZCBkZWZpbmVzIHRoZSB0eXBlIG9mIHByZWZldGNoaW5nIHRoYXQgc2hvdWxkIGJlIGRvbmUuXG4gKiAtIGBhdXRvYCAtIGlmIHRoZSBwYWdlIGlzIGR5bmFtaWMsIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgcGFydGlhbGx5LCBpZiBzdGF0aWMgcHJlZmV0Y2ggdGhlIHBhZ2UgZGF0YSBmdWxseS5cbiAqIC0gYGZ1bGxgIC0gcHJlZmV0Y2ggdGhlIHBhZ2UgZGF0YSBmdWxseS5cbiAqIC0gYHRlbXBvcmFyeWAgLSBhIHRlbXBvcmFyeSBwcmVmZXRjaCBlbnRyeSBpcyBhZGRlZCB0byB0aGUgY2FjaGUsIHRoaXMgaXMgdXNlZCB3aGVuIHByZWZldGNoPXtmYWxzZX0gaXMgdXNlZCBpbiBuZXh0L2xpbmsgb3Igd2hlbiB5b3UgcHVzaCBhIHJvdXRlIHByb2dyYW1tYXRpY2FsbHkuXG4gKi9cblxuZXhwb3J0IGVudW0gUHJlZmV0Y2hLaW5kIHtcbiAgQVVUTyA9ICdhdXRvJyxcbiAgRlVMTCA9ICdmdWxsJyxcbiAgVEVNUE9SQVJZID0gJ3RlbXBvcmFyeScsXG59XG5cbi8qKlxuICogUHJlZmV0Y2ggYWRkcyB0aGUgcHJvdmlkZWQgRmxpZ2h0RGF0YSB0byB0aGUgcHJlZmV0Y2ggY2FjaGVcbiAqIC0gQ3JlYXRlcyB0aGUgcm91dGVyIHN0YXRlIHRyZWUgYmFzZWQgb24gdGhlIHBhdGNoIGluIEZsaWdodERhdGFcbiAqIC0gQWRkcyB0aGUgRmxpZ2h0RGF0YSB0byB0aGUgcHJlZmV0Y2ggY2FjaGVcbiAqIC0gSW4gQUNUSU9OX05BVklHQVRFIHRoZSBwcmVmZXRjaCBjYWNoZSBpcyBjaGVja2VkIGFuZCB0aGUgcm91dGVyIHN0YXRlIHRyZWUgYW5kIEZsaWdodERhdGEgYXJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZmV0Y2hBY3Rpb24ge1xuICB0eXBlOiB0eXBlb2YgQUNUSU9OX1BSRUZFVENIXG4gIHVybDogVVJMXG4gIGtpbmQ6IFByZWZldGNoS2luZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hSZWYge1xuICAvKipcbiAgICogSWYgdGhlIGFwcC1yb3V0ZXIgc2hvdWxkIHB1c2ggYSBuZXcgaGlzdG9yeSBlbnRyeSBpbiBhcHAtcm91dGVyJ3MgdXNlRWZmZWN0KClcbiAgICovXG4gIHBlbmRpbmdQdXNoOiBib29sZWFuXG4gIC8qKlxuICAgKiBNdWx0aS1wYWdlIG5hdmlnYXRpb24gdGhyb3VnaCBsb2NhdGlvbi5ocmVmLlxuICAgKi9cbiAgbXBhTmF2aWdhdGlvbjogYm9vbGVhblxuICAvKipcbiAgICogU2tpcCBhcHBseWluZyB0aGUgcm91dGVyIHN0YXRlIHRvIHRoZSBicm93c2VyIGhpc3Rvcnkgc3RhdGUuXG4gICAqL1xuICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBGb2N1c0FuZFNjcm9sbFJlZiA9IHtcbiAgLyoqXG4gICAqIElmIGZvY3VzIGFuZCBzY3JvbGwgc2hvdWxkIGJlIHNldCBpbiB0aGUgbGF5b3V0LXJvdXRlcidzIHVzZUVmZmVjdCgpXG4gICAqL1xuICBhcHBseTogYm9vbGVhblxuICAvKipcbiAgICogVGhlIGhhc2ggZnJhZ21lbnQgdGhhdCBzaG91bGQgYmUgc2Nyb2xsZWQgdG8uXG4gICAqL1xuICBoYXNoRnJhZ21lbnQ6IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIFRoZSBwYXRocyBvZiB0aGUgc2VnbWVudHMgdGhhdCBzaG91bGQgYmUgZm9jdXNlZC5cbiAgICovXG4gIHNlZ21lbnRQYXRoczogRmxpZ2h0U2VnbWVudFBhdGhbXVxuICAvKipcbiAgICogSWYgb25seSB0aGUgVVJMcyBoYXNoIGZyYWdtZW50IGNoYW5nZWRcbiAgICovXG4gIG9ubHlIYXNoQ2hhbmdlOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFByZWZldGNoQ2FjaGVFbnRyeSA9IHtcbiAgdHJlZUF0VGltZU9mUHJlZmV0Y2g6IEZsaWdodFJvdXRlclN0YXRlXG4gIGRhdGE6IFByb21pc2U8RmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdD5cbiAga2luZDogUHJlZmV0Y2hLaW5kXG4gIHByZWZldGNoVGltZTogbnVtYmVyXG4gIHN0YWxlVGltZTogbnVtYmVyXG4gIGxhc3RVc2VkVGltZTogbnVtYmVyIHwgbnVsbFxuICBrZXk6IHN0cmluZ1xuICBzdGF0dXM6IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1c1xuICB1cmw6IFVSTFxufVxuXG5leHBvcnQgZW51bSBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMge1xuICBmcmVzaCA9ICdmcmVzaCcsXG4gIHJldXNhYmxlID0gJ3JldXNhYmxlJyxcbiAgZXhwaXJlZCA9ICdleHBpcmVkJyxcbiAgc3RhbGUgPSAnc3RhbGUnLFxufVxuXG4vKipcbiAqIEhhbmRsZXMga2VlcGluZyB0aGUgc3RhdGUgb2YgYXBwLXJvdXRlci5cbiAqL1xuZXhwb3J0IHR5cGUgQXBwUm91dGVyU3RhdGUgPSB7XG4gIC8qKlxuICAgKiBUaGUgcm91dGVyIHN0YXRlLCB0aGlzIGlzIHdyaXR0ZW4gaW50byB0aGUgaGlzdG9yeSBzdGF0ZSBpbiBhcHAtcm91dGVyIHVzaW5nIHJlcGxhY2VTdGF0ZS9wdXNoU3RhdGUuXG4gICAqIC0gSGFzIHRvIGJlIHNlcmlhbGl6YWJsZSBhcyBpdCBpcyB3cml0dGVuIGludG8gdGhlIGhpc3Rvcnkgc3RhdGUuXG4gICAqIC0gSG9sZHMgd2hpY2ggc2VnbWVudHMgYW5kIHBhcmFsbGVsIHJvdXRlcyBhcmUgc2hvd24gb24gdGhlIHNjcmVlbi5cbiAgICovXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIC8qKlxuICAgKiBUaGUgY2FjaGUgaG9sZHMgUmVhY3Qgbm9kZXMgZm9yIGV2ZXJ5IHNlZ21lbnQgdGhhdCBpcyBzaG93biBvbiBzY3JlZW4gYXMgd2VsbCBhcyBwcmV2aW91c2x5IHNob3duIHNlZ21lbnRzLlxuICAgKiBJdCBhbHNvIGhvbGRzIGluLXByb2dyZXNzIGRhdGEgcmVxdWVzdHMuXG4gICAqIFByZWZldGNoZWQgZGF0YSBpcyBzdG9yZWQgc2VwYXJhdGVseSBpbiBgcHJlZmV0Y2hDYWNoZWAsIHRoYXQgaXMgYXBwbGllZCBkdXJpbmcgQUNUSU9OX05BVklHQVRFLlxuICAgKi9cbiAgY2FjaGU6IENhY2hlTm9kZVxuICAvKipcbiAgICogQ2FjaGUgdGhhdCBob2xkcyBwcmVmZXRjaGVkIEZsaWdodCByZXNwb25zZXMga2V5ZWQgYnkgdXJsLlxuICAgKi9cbiAgcHJlZmV0Y2hDYWNoZTogTWFwPHN0cmluZywgUHJlZmV0Y2hDYWNoZUVudHJ5PlxuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgdXBkYXRlIHNob3VsZCBjcmVhdGUgYSBuZXcgaGlzdG9yeSBlbnRyeSBhbmQgaWYgdGhlIG5hdmlnYXRpb24gaGFzIHRvIHRyaWdnZXIgYSBicm93c2VyIG5hdmlnYXRpb24uXG4gICAqL1xuICBwdXNoUmVmOiBQdXNoUmVmXG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSB1cGRhdGUgc2hvdWxkIGFwcGx5IHNjcm9sbCBhbmQgZm9jdXMgbWFuYWdlbWVudC5cbiAgICovXG4gIGZvY3VzQW5kU2Nyb2xsUmVmOiBGb2N1c0FuZFNjcm9sbFJlZlxuICAvKipcbiAgICogVGhlIGNhbm9uaWNhbCB1cmwgdGhhdCBpcyBwdXNoZWQvcmVwbGFjZWQuXG4gICAqIC0gVGhpcyBpcyB0aGUgdXJsIHlvdSBzZWUgaW4gdGhlIGJyb3dzZXIuXG4gICAqL1xuICBjYW5vbmljYWxVcmw6IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgXCJ1cmxcIiByZXByZXNlbnRpbmcgdGhlIFVJIHN0YXRlLCB3aGljaCBpcyB1c2VkIGZvciBpbnRlcmNlcHRpbmcgcm91dGVzLlxuICAgKi9cbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBSZWFkb25seVJlZHVjZXJTdGF0ZSA9IFJlYWRvbmx5PEFwcFJvdXRlclN0YXRlPlxuZXhwb3J0IHR5cGUgUmVkdWNlclN0YXRlID0gUHJvbWlzZTxBcHBSb3V0ZXJTdGF0ZT4gfCBBcHBSb3V0ZXJTdGF0ZVxuZXhwb3J0IHR5cGUgUmVkdWNlckFjdGlvbnMgPSBSZWFkb25seTxcbiAgfCBSZWZyZXNoQWN0aW9uXG4gIHwgTmF2aWdhdGVBY3Rpb25cbiAgfCBSZXN0b3JlQWN0aW9uXG4gIHwgU2VydmVyUGF0Y2hBY3Rpb25cbiAgfCBQcmVmZXRjaEFjdGlvblxuICB8IEhtclJlZnJlc2hBY3Rpb25cbiAgfCBTZXJ2ZXJBY3Rpb25BY3Rpb25cbj5cbiJdLCJuYW1lcyI6WyJBQ1RJT05fSE1SX1JFRlJFU0giLCJBQ1RJT05fTkFWSUdBVEUiLCJBQ1RJT05fUFJFRkVUQ0giLCJBQ1RJT05fUkVGUkVTSCIsIkFDVElPTl9SRVNUT1JFIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iLCJBQ1RJT05fU0VSVkVSX1BBVENIIiwiUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzIiwiUHJlZmV0Y2hLaW5kIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/router-reducer.js ***! \***********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"reducer\", ({\n enumerable: true,\n get: function() {\n return reducer;\n }\n}));\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _serverpatchreducer = __webpack_require__(/*! ./reducers/server-patch-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\");\nconst _restorereducer = __webpack_require__(/*! ./reducers/restore-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\");\nconst _refreshreducer = __webpack_require__(/*! ./reducers/refresh-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _hmrrefreshreducer = __webpack_require__(/*! ./reducers/hmr-refresh-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\");\nconst _serveractionreducer = __webpack_require__(/*! ./reducers/server-action-reducer */ \"(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\");\n/**\n * Reducer that handles the app-router state updates.\n */ function clientReducer(state, action) {\n switch(action.type){\n case _routerreducertypes.ACTION_NAVIGATE:\n {\n return (0, _navigatereducer.navigateReducer)(state, action);\n }\n case _routerreducertypes.ACTION_SERVER_PATCH:\n {\n return (0, _serverpatchreducer.serverPatchReducer)(state, action);\n }\n case _routerreducertypes.ACTION_RESTORE:\n {\n return (0, _restorereducer.restoreReducer)(state, action);\n }\n case _routerreducertypes.ACTION_REFRESH:\n {\n return (0, _refreshreducer.refreshReducer)(state, action);\n }\n case _routerreducertypes.ACTION_HMR_REFRESH:\n {\n return (0, _hmrrefreshreducer.hmrRefreshReducer)(state, action);\n }\n case _routerreducertypes.ACTION_PREFETCH:\n {\n return (0, _prefetchreducer.prefetchReducer)(state, action);\n }\n case _routerreducertypes.ACTION_SERVER_ACTION:\n {\n return (0, _serveractionreducer.serverActionReducer)(state, action);\n }\n // This case should never be hit as dispatch is strongly typed.\n default:\n throw Object.defineProperty(new Error('Unknown action'), \"__NEXT_ERROR_CODE\", {\n value: \"E295\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction serverReducer(state, _action) {\n return state;\n}\nconst reducer = false ? 0 : clientReducer;\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-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FpRWFBOzs7ZUFBQUE7OztnREF6RE47NkNBTXlCO2dEQUNHOzRDQUNKOzRDQUNBOzZDQUNDOytDQUNFO2lEQUNFO0FBRXBDOztDQUVDLEdBQ0QsU0FBU0MsY0FDUEMsS0FBMkIsRUFDM0JDLE1BQXNCO0lBRXRCLE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBS0Msb0JBQUFBLGVBQWU7WUFBRTtnQkFDcEIsT0FBT0MsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCSixPQUFPQztZQUNoQztRQUNBLEtBQUtJLG9CQUFBQSxtQkFBbUI7WUFBRTtnQkFDeEIsT0FBT0MsQ0FBQUEsR0FBQUEsb0JBQUFBLGtCQUFBQSxFQUFtQk4sT0FBT0M7WUFDbkM7UUFDQSxLQUFLTSxvQkFBQUEsY0FBYztZQUFFO2dCQUNuQixPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZVIsT0FBT0M7WUFDL0I7UUFDQSxLQUFLUSxvQkFBQUEsY0FBYztZQUFFO2dCQUNuQixPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZVYsT0FBT0M7WUFDL0I7UUFDQSxLQUFLVSxvQkFBQUEsa0JBQWtCO1lBQUU7Z0JBQ3ZCLE9BQU9DLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JaLE9BQU9DO1lBQ2xDO1FBQ0EsS0FBS1ksb0JBQUFBLGVBQWU7WUFBRTtnQkFDcEIsT0FBT0MsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCZCxPQUFPQztZQUNoQztRQUNBLEtBQUtjLG9CQUFBQSxvQkFBb0I7WUFBRTtnQkFDekIsT0FBT0MsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQmhCLE9BQU9DO1lBQ3BDO1FBQ0EsK0RBQStEO1FBQy9EO1lBQ0UsTUFBTSxxQkFBMkIsQ0FBM0IsSUFBSWdCLE1BQU0sbUJBQVY7dUJBQUE7NEJBQUE7OEJBQUE7WUFBMEI7SUFDcEM7QUFDRjtBQUVBLFNBQVNDLGNBQ1BsQixLQUEyQixFQUMzQm1CLE9BQXVCO0lBRXZCLE9BQU9uQjtBQUNUO0FBR08sTUFBTUYsVUFDWCxNQUE2QixHQUFHb0IsQ0FBYUEsR0FBR25CIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFDVElPTl9OQVZJR0FURSxcbiAgQUNUSU9OX1NFUlZFUl9QQVRDSCxcbiAgQUNUSU9OX1JFU1RPUkUsXG4gIEFDVElPTl9SRUZSRVNILFxuICBBQ1RJT05fUFJFRkVUQ0gsXG4gIEFDVElPTl9ITVJfUkVGUkVTSCxcbiAgQUNUSU9OX1NFUlZFUl9BQ1RJT04sXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIFJlZHVjZXJBY3Rpb25zLFxuICBSZWR1Y2VyU3RhdGUsXG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxufSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgbmF2aWdhdGVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9uYXZpZ2F0ZS1yZWR1Y2VyJ1xuaW1wb3J0IHsgc2VydmVyUGF0Y2hSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9zZXJ2ZXItcGF0Y2gtcmVkdWNlcidcbmltcG9ydCB7IHJlc3RvcmVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9yZXN0b3JlLXJlZHVjZXInXG5pbXBvcnQgeyByZWZyZXNoUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlcnMvcmVmcmVzaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgcHJlZmV0Y2hSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9wcmVmZXRjaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgaG1yUmVmcmVzaFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL2htci1yZWZyZXNoLXJlZHVjZXInXG5pbXBvcnQgeyBzZXJ2ZXJBY3Rpb25SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9zZXJ2ZXItYWN0aW9uLXJlZHVjZXInXG5cbi8qKlxuICogUmVkdWNlciB0aGF0IGhhbmRsZXMgdGhlIGFwcC1yb3V0ZXIgc3RhdGUgdXBkYXRlcy5cbiAqL1xuZnVuY3Rpb24gY2xpZW50UmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlZHVjZXJBY3Rpb25zXG4pOiBSZWR1Y2VyU3RhdGUge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBBQ1RJT05fTkFWSUdBVEU6IHtcbiAgICAgIHJldHVybiBuYXZpZ2F0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbilcbiAgICB9XG4gICAgY2FzZSBBQ1RJT05fU0VSVkVSX1BBVENIOiB7XG4gICAgICByZXR1cm4gc2VydmVyUGF0Y2hSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIGNhc2UgQUNUSU9OX1JFU1RPUkU6IHtcbiAgICAgIHJldHVybiByZXN0b3JlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9SRUZSRVNIOiB7XG4gICAgICByZXR1cm4gcmVmcmVzaFJlZHVjZXIoc3RhdGUsIGFjdGlvbilcbiAgICB9XG4gICAgY2FzZSBBQ1RJT05fSE1SX1JFRlJFU0g6IHtcbiAgICAgIHJldHVybiBobXJSZWZyZXNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9QUkVGRVRDSDoge1xuICAgICAgcmV0dXJuIHByZWZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9TRVJWRVJfQUNUSU9OOiB7XG4gICAgICByZXR1cm4gc2VydmVyQWN0aW9uUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICAvLyBUaGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGJlIGhpdCBhcyBkaXNwYXRjaCBpcyBzdHJvbmdseSB0eXBlZC5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGFjdGlvbicpXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VydmVyUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBfYWN0aW9uOiBSZWR1Y2VyQWN0aW9uc1xuKTogUmVkdWNlclN0YXRlIHtcbiAgcmV0dXJuIHN0YXRlXG59XG5cbi8vIHdlIGRvbid0IHJ1biB0aGUgY2xpZW50IHJlZHVjZXIgb24gdGhlIHNlcnZlciwgc28gd2UgdXNlIGEgbm9vcCBmdW5jdGlvbiBmb3IgYmV0dGVyIHRyZWUgc2hha2luZ1xuZXhwb3J0IGNvbnN0IHJlZHVjZXIgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IHNlcnZlclJlZHVjZXIgOiBjbGllbnRSZWR1Y2VyXG4iXSwibmFtZXMiOlsicmVkdWNlciIsImNsaWVudFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJBQ1RJT05fTkFWSUdBVEUiLCJuYXZpZ2F0ZVJlZHVjZXIiLCJBQ1RJT05fU0VSVkVSX1BBVENIIiwic2VydmVyUGF0Y2hSZWR1Y2VyIiwiQUNUSU9OX1JFU1RPUkUiLCJyZXN0b3JlUmVkdWNlciIsIkFDVElPTl9SRUZSRVNIIiwicmVmcmVzaFJlZHVjZXIiLCJBQ1RJT05fSE1SX1JFRlJFU0giLCJobXJSZWZyZXNoUmVkdWNlciIsIkFDVElPTl9QUkVGRVRDSCIsInByZWZldGNoUmVkdWNlciIsIkFDVElPTl9TRVJWRVJfQUNUSU9OIiwic2VydmVyQWN0aW9uUmVkdWNlciIsIkVycm9yIiwic2VydmVyUmVkdWNlciIsIl9hY3Rpb24iLCJ3aW5kb3ciXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/router-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js": /*!***************************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js ***! \***************************************************************************************************/ /***/ ((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 setCacheBustingSearchParam: function() {\n return setCacheBustingSearchParam;\n },\n setCacheBustingSearchParamWithHash: function() {\n return setCacheBustingSearchParamWithHash;\n }\n});\nconst _cachebustingsearchparam = __webpack_require__(/*! ../../../shared/lib/router/utils/cache-busting-search-param */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst setCacheBustingSearchParam = (url, headers)=>{\n const uniqueCacheKey = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)(headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER], headers[_approuterheaders.NEXT_URL]);\n setCacheBustingSearchParamWithHash(url, uniqueCacheKey);\n};\nconst setCacheBustingSearchParamWithHash = (url, hash)=>{\n /**\n * Note that we intentionally do not use `url.searchParams.set` here:\n *\n * const url = new URL('https://example.com/search?q=custom%20spacing');\n * url.searchParams.set('_rsc', 'abc123');\n * console.log(url.toString()); // Outputs: https://example.com/search?q=custom+spacing&_rsc=abc123\n * ^ <--- this is causing confusion\n * This is in fact intended based on https://url.spec.whatwg.org/#interface-urlsearchparams, but\n * we want to preserve the %20 as %20 if that's what the user passed in, hence the custom\n * logic below.\n */ const existingSearch = url.search;\n const rawQuery = existingSearch.startsWith('?') ? existingSearch.slice(1) : existingSearch;\n // Always remove any existing cache busting param and add a fresh one to ensure\n // we have the correct value based on current request headers\n const pairs = rawQuery.split('&').filter((pair)=>pair && !pair.startsWith(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY + \"=\"));\n if (hash.length > 0) {\n pairs.push(_approuterheaders.NEXT_RSC_UNION_QUERY + \"=\" + hash);\n } else {\n pairs.push(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY);\n }\n url.search = pairs.length ? \"?\" + pairs.join('&') : '';\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=set-cache-busting-search-param.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTRCYUEsMEJBQTBCO2VBQTFCQTs7SUE2QkFDLGtDQUFrQztlQUFsQ0E7OztxREF2RGtDOzhDQU94QztBQW1CQSxNQUFNRCw2QkFBNkIsQ0FDeENFLEtBQ0FDO0lBRUEsTUFBTUMsaUJBQWlCQyxDQUFBQSxHQUFBQSx5QkFBQUEsOEJBQUFBLEVBQ3JCRixPQUFPLENBQUNHLGtCQUFBQSwyQkFBMkIsQ0FBQyxFQUNwQ0gsT0FBTyxDQUFDSSxrQkFBQUEsbUNBQW1DLENBQUMsRUFDNUNKLE9BQU8sQ0FBQ0ssa0JBQUFBLDZCQUE2QixDQUFDLEVBQ3RDTCxPQUFPLENBQUNNLGtCQUFBQSxRQUFRLENBQUM7SUFFbkJSLG1DQUFtQ0MsS0FBS0U7QUFDMUM7QUFrQk8sTUFBTUgscUNBQXFDLENBQ2hEQyxLQUNBUTtJQUVBOzs7Ozs7Ozs7O0dBVUMsR0FDRCxNQUFNQyxpQkFBaUJULElBQUlVLE1BQU07SUFDakMsTUFBTUMsV0FBV0YsZUFBZUcsVUFBVSxDQUFDLE9BQ3ZDSCxlQUFlSSxLQUFLLENBQUMsS0FDckJKO0lBRUosK0VBQStFO0lBQy9FLDZEQUE2RDtJQUM3RCxNQUFNSyxRQUFRSCxTQUNYSSxLQUFLLENBQUMsS0FDTkMsTUFBTSxDQUFDLENBQUNDLE9BQVNBLFFBQVEsQ0FBQ0EsS0FBS0wsVUFBVSxDQUFFLEtBQUVNLGtCQUFBQSxvQkFBb0IsR0FBQztJQUVyRSxJQUFJVixLQUFLVyxNQUFNLEdBQUcsR0FBRztRQUNuQkwsTUFBTU0sSUFBSSxDQUFJRixrQkFBQUEsb0JBQW9CLEdBQUMsTUFBR1Y7SUFDeEMsT0FBTztRQUNMTSxNQUFNTSxJQUFJLENBQUUsS0FBRUYsa0JBQUFBLG9CQUFvQjtJQUNwQztJQUNBbEIsSUFBSVUsTUFBTSxHQUFHSSxNQUFNSyxNQUFNLEdBQUksTUFBR0wsTUFBTU8sSUFBSSxDQUFDLE9BQVM7QUFDdEQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjb21wdXRlQ2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9jYWNoZS1idXN0aW5nLXNlYXJjaC1wYXJhbSdcbmltcG9ydCB7XG4gIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSLFxuICBORVhUX1VSTCxcbiAgTkVYVF9SU0NfVU5JT05fUVVFUlksXG59IGZyb20gJy4uL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB0eXBlIHsgUmVxdWVzdEhlYWRlcnMgfSBmcm9tICcuL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcblxuLyoqXG4gKiBNdXRhdGVzIHRoZSBwcm92aWRlZCBVUkwgYnkgYWRkaW5nIGEgY2FjaGUtYnVzdGluZyBzZWFyY2ggcGFyYW1ldGVyIGZvciBDRE5zIHRoYXQgZG9uJ3RcbiAqIHN1cHBvcnQgY3VzdG9tIGhlYWRlcnMuIFRoaXMgaGVscHMgYXZvaWQgY2FjaGluZyBjb25mbGljdHMgYnkgbWFraW5nIGVhY2ggcmVxdWVzdCB1bmlxdWUuXG4gKlxuICogUmF0aGVyIHRoYW4gcmVseWluZyBvbiB0aGUgVmFyeSBoZWFkZXIgd2hpY2ggc29tZSBDRE5zIGlnbm9yZSwgd2UgYXBwZW5kIGEgc2VhcmNoIHBhcmFtXG4gKiB0byBjcmVhdGUgYSB1bmlxdWUgVVJMIHRoYXQgZm9yY2VzIGEgZnJlc2ggcmVxdWVzdC5cbiAqXG4gKiBFeGFtcGxlOlxuICogVVJMIGJlZm9yZTogaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PTFcbiAqIFVSTCBhZnRlcjogaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PTEmX3JzYz1hYmMxMjNcbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIGlucHV0IFVSTCBkaXJlY3RseSBhbmQgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nLlxuICpcbiAqIFRPRE86IFNpbmNlIHdlIG5lZWQgdG8gdXNlIGEgc2VhcmNoIHBhcmFtIGFueXdheSwgd2UgY291bGQgc2ltcGxpZnkgYnkgcmVtb3ZpbmcgdGhlIGN1c3RvbVxuICogaGVhZGVycyBhcHByb2FjaCBlbnRpcmVseSBhbmQganVzdCB1c2Ugc2VhcmNoIHBhcmFtcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtID0gKFxuICB1cmw6IFVSTCxcbiAgaGVhZGVyczogUmVxdWVzdEhlYWRlcnNcbik6IHZvaWQgPT4ge1xuICBjb25zdCB1bmlxdWVDYWNoZUtleSA9IGNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbShcbiAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0sXG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUl0sXG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl0sXG4gICAgaGVhZGVyc1tORVhUX1VSTF1cbiAgKVxuICBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbVdpdGhIYXNoKHVybCwgdW5pcXVlQ2FjaGVLZXkpXG59XG5cbi8qKlxuICogU2V0cyBhIGNhY2hlLWJ1c3Rpbmcgc2VhcmNoIHBhcmFtZXRlciBvbiBhIFVSTCB1c2luZyBhIHByb3ZpZGVkIGhhc2ggdmFsdWUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgc2FtZSBsb2dpYyBhcyBgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW1gIGJ1dCBhY2NlcHRzXG4gKiBhIHByZS1jb21wdXRlZCBoYXNoIGluc3RlYWQgb2YgY29tcHV0aW5nIGl0IGZyb20gaGVhZGVycy5cbiAqXG4gKiBFeGFtcGxlOlxuICogVVJMIGJlZm9yZTogaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PTFcbiAqIGhhc2g6IFwiYWJjMTIzXCJcbiAqIFVSTCBhZnRlcjogaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PTEmX3JzYz1hYmMxMjNcbiAqXG4gKiBJZiB0aGUgaGFzaCBpcyBudWxsLCB3ZSB3aWxsIHNldCBgX3JzY2Agc2VhcmNoIHBhcmFtIHdpdGhvdXQgYSB2YWx1ZS5cbiAqIExpa2UgdGhpczogaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PTEmX3JzY1xuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXV0YXRlcyB0aGUgaW5wdXQgVVJMIGRpcmVjdGx5IGFuZCBkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbVdpdGhIYXNoID0gKFxuICB1cmw6IFVSTCxcbiAgaGFzaDogc3RyaW5nXG4pOiB2b2lkID0+IHtcbiAgLyoqXG4gICAqIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGRvIG5vdCB1c2UgYHVybC5zZWFyY2hQYXJhbXMuc2V0YCBoZXJlOlxuICAgKlxuICAgKiBjb25zdCB1cmwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUuY29tL3NlYXJjaD9xPWN1c3RvbSUyMHNwYWNpbmcnKTtcbiAgICogdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ19yc2MnLCAnYWJjMTIzJyk7XG4gICAqIGNvbnNvbGUubG9nKHVybC50b1N0cmluZygpKTsgLy8gT3V0cHV0czogaHR0cHM6Ly9leGFtcGxlLmNvbS9zZWFyY2g/cT1jdXN0b20rc3BhY2luZyZfcnNjPWFiYzEyM1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiA8LS0tIHRoaXMgaXMgY2F1c2luZyBjb25mdXNpb25cbiAgICogVGhpcyBpcyBpbiBmYWN0IGludGVuZGVkIGJhc2VkIG9uIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLXVybHNlYXJjaHBhcmFtcywgYnV0XG4gICAqIHdlIHdhbnQgdG8gcHJlc2VydmUgdGhlICUyMCBhcyAlMjAgaWYgdGhhdCdzIHdoYXQgdGhlIHVzZXIgcGFzc2VkIGluLCBoZW5jZSB0aGUgY3VzdG9tXG4gICAqIGxvZ2ljIGJlbG93LlxuICAgKi9cbiAgY29uc3QgZXhpc3RpbmdTZWFyY2ggPSB1cmwuc2VhcmNoXG4gIGNvbnN0IHJhd1F1ZXJ5ID0gZXhpc3RpbmdTZWFyY2guc3RhcnRzV2l0aCgnPycpXG4gICAgPyBleGlzdGluZ1NlYXJjaC5zbGljZSgxKVxuICAgIDogZXhpc3RpbmdTZWFyY2hcblxuICAvLyBBbHdheXMgcmVtb3ZlIGFueSBleGlzdGluZyBjYWNoZSBidXN0aW5nIHBhcmFtIGFuZCBhZGQgYSBmcmVzaCBvbmUgdG8gZW5zdXJlXG4gIC8vIHdlIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWUgYmFzZWQgb24gY3VycmVudCByZXF1ZXN0IGhlYWRlcnNcbiAgY29uc3QgcGFpcnMgPSByYXdRdWVyeVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZpbHRlcigocGFpcikgPT4gcGFpciAmJiAhcGFpci5zdGFydHNXaXRoKGAke05FWFRfUlNDX1VOSU9OX1FVRVJZfT1gKSlcblxuICBpZiAoaGFzaC5sZW5ndGggPiAwKSB7XG4gICAgcGFpcnMucHVzaChgJHtORVhUX1JTQ19VTklPTl9RVUVSWX09JHtoYXNofWApXG4gIH0gZWxzZSB7XG4gICAgcGFpcnMucHVzaChgJHtORVhUX1JTQ19VTklPTl9RVUVSWX1gKVxuICB9XG4gIHVybC5zZWFyY2ggPSBwYWlycy5sZW5ndGggPyBgPyR7cGFpcnMuam9pbignJicpfWAgOiAnJ1xufVxuIl0sIm5hbWVzIjpbInNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIiwic2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW1XaXRoSGFzaCIsInVybCIsImhlYWRlcnMiLCJ1bmlxdWVDYWNoZUtleSIsImNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIiLCJORVhUX1VSTCIsImhhc2giLCJleGlzdGluZ1NlYXJjaCIsInNlYXJjaCIsInJhd1F1ZXJ5Iiwic3RhcnRzV2l0aCIsInNsaWNlIiwicGFpcnMiLCJzcGxpdCIsImZpbHRlciIsInBhaXIiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsImxlbmd0aCIsInB1c2giLCJqb2luIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"shouldHardNavigate\", ({\n enumerable: true,\n get: function() {\n return shouldHardNavigate;\n }\n}));\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/next/dist/client/components/match-segments.js\");\nfunction shouldHardNavigate(flightSegmentPath, flightRouterState) {\n const [segment, parallelRoutes] = flightRouterState;\n // TODO-APP: Check if `as` can be replaced.\n const [currentSegment, parallelRouteKey] = flightSegmentPath;\n // Check if current segment matches the existing segment.\n if (!(0, _matchsegments.matchSegment)(currentSegment, segment)) {\n // If dynamic parameter in tree doesn't match up with segment path a hard navigation is triggered.\n if (Array.isArray(currentSegment)) {\n return true;\n }\n // If the existing segment did not match soft navigation is triggered.\n return false;\n }\n const lastSegment = flightSegmentPath.length <= 2;\n if (lastSegment) {\n return false;\n }\n return shouldHardNavigate((0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath), parallelRoutes[parallelRouteKey]);\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=should-hard-navigate.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2hvdWxkLWhhcmQtbmF2aWdhdGUuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFTZ0JBOzs7ZUFBQUE7OzsrQ0FKeUI7MkNBQ1o7QUFHdEIsU0FBU0EsbUJBQ2RDLGlCQUFpQyxFQUNqQ0MsaUJBQW9DO0lBRXBDLE1BQU0sQ0FBQ0MsU0FBU0MsZUFBZSxHQUFHRjtJQUNsQywyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDRyxnQkFBZ0JDLGlCQUFpQixHQUFHTDtJQUszQyx5REFBeUQ7SUFDekQsSUFBSSxDQUFDTSxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhRixnQkFBZ0JGLFVBQVU7UUFDMUMsa0dBQWtHO1FBQ2xHLElBQUlLLE1BQU1DLE9BQU8sQ0FBQ0osaUJBQWlCO1lBQ2pDLE9BQU87UUFDVDtRQUVBLHNFQUFzRTtRQUN0RSxPQUFPO0lBQ1Q7SUFDQSxNQUFNSyxjQUFjVCxrQkFBa0JVLE1BQU0sSUFBSTtJQUVoRCxJQUFJRCxhQUFhO1FBQ2YsT0FBTztJQUNUO0lBRUEsT0FBT1YsbUJBQ0xZLENBQUFBLEdBQUFBLG1CQUFBQSx3QkFBQUEsRUFBeUJYLG9CQUN6QkcsY0FBYyxDQUFDRSxpQkFBaUI7QUFFcEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2hvdWxkLWhhcmQtbmF2aWdhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgRmxpZ2h0RGF0YVBhdGgsXG4gIFNlZ21lbnQsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IG1hdGNoU2VnbWVudCB9IGZyb20gJy4uL21hdGNoLXNlZ21lbnRzJ1xuXG4vLyBUT0RPLUFQUDogZmxpZ2h0U2VnbWVudFBhdGggd2lsbCBiZSBlbXB0eSBpbiBjYXNlIG9mIHN0YXRpYyByZXNwb25zZSwgbmVlZHMgdG8gYmUgaGFuZGxlZC5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRIYXJkTmF2aWdhdGUoXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHREYXRhUGF0aCxcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBib29sZWFuIHtcbiAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzXSA9IGZsaWdodFJvdXRlclN0YXRlXG4gIC8vIFRPRE8tQVBQOiBDaGVjayBpZiBgYXNgIGNhbiBiZSByZXBsYWNlZC5cbiAgY29uc3QgW2N1cnJlbnRTZWdtZW50LCBwYXJhbGxlbFJvdXRlS2V5XSA9IGZsaWdodFNlZ21lbnRQYXRoIGFzIFtcbiAgICBTZWdtZW50LFxuICAgIHN0cmluZyxcbiAgXVxuXG4gIC8vIENoZWNrIGlmIGN1cnJlbnQgc2VnbWVudCBtYXRjaGVzIHRoZSBleGlzdGluZyBzZWdtZW50LlxuICBpZiAoIW1hdGNoU2VnbWVudChjdXJyZW50U2VnbWVudCwgc2VnbWVudCkpIHtcbiAgICAvLyBJZiBkeW5hbWljIHBhcmFtZXRlciBpbiB0cmVlIGRvZXNuJ3QgbWF0Y2ggdXAgd2l0aCBzZWdtZW50IHBhdGggYSBoYXJkIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkLlxuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRTZWdtZW50KSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZXhpc3Rpbmcgc2VnbWVudCBkaWQgbm90IG1hdGNoIHNvZnQgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBmbGlnaHRTZWdtZW50UGF0aC5sZW5ndGggPD0gMlxuXG4gIGlmIChsYXN0U2VnbWVudCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHNob3VsZEhhcmROYXZpZ2F0ZShcbiAgICBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgoZmxpZ2h0U2VnbWVudFBhdGgpLFxuICAgIHBhcmFsbGVsUm91dGVzW3BhcmFsbGVsUm91dGVLZXldXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJzaG91bGRIYXJkTmF2aWdhdGUiLCJmbGlnaHRTZWdtZW50UGF0aCIsImZsaWdodFJvdXRlclN0YXRlIiwic2VnbWVudCIsInBhcmFsbGVsUm91dGVzIiwiY3VycmVudFNlZ21lbnQiLCJwYXJhbGxlbFJvdXRlS2V5IiwibWF0Y2hTZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdFNlZ21lbnQiLCJsZW5ndGgiLCJnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/components/segment-cache.js ***! \*******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Entry point to the Segment Cache implementation.\n *\n * All code related to the Segment Cache lives `segment-cache-impl` directory.\n * Callers access it through this indirection.\n *\n * This is to ensure the code is dead code eliminated from the bundle if the\n * flag is disabled.\n *\n * TODO: This is super tedious. Since experimental flags are an essential part\n * of our workflow, we should establish a better pattern for dead code\n * elimination. Ideally it would be done at the bundler level, like how React's\n * build process works. In the React repo, you don't even need to add any extra\n * configuration per experiment — if the code is not reachable, it gets stripped\n * from the build automatically by Rollup. Or, shorter term, we could stub out\n * experimental modules at build time by updating the build config, i.e. a more\n * automated version of what I'm doing manually in this file.\n */ \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 FetchStrategy: function() {\n return FetchStrategy;\n },\n NavigationResultTag: function() {\n return NavigationResultTag;\n },\n PrefetchPriority: function() {\n return PrefetchPriority;\n },\n cancelPrefetchTask: function() {\n return cancelPrefetchTask;\n },\n createCacheKey: function() {\n return createCacheKey;\n },\n getCurrentCacheVersion: function() {\n return getCurrentCacheVersion;\n },\n isPrefetchTaskDirty: function() {\n return isPrefetchTaskDirty;\n },\n navigate: function() {\n return navigate;\n },\n prefetch: function() {\n return prefetch;\n },\n reschedulePrefetchTask: function() {\n return reschedulePrefetchTask;\n },\n revalidateEntireCache: function() {\n return revalidateEntireCache;\n },\n schedulePrefetchTask: function() {\n return schedulePrefetchTask;\n }\n});\nconst notEnabled = ()=>{\n throw Object.defineProperty(new Error('Segment Cache experiment is not enabled. This is a bug in Next.js.'), \"__NEXT_ERROR_CODE\", {\n value: \"E654\",\n enumerable: false,\n configurable: true\n });\n};\nconst prefetch = false ? 0 : notEnabled;\nconst navigate = false ? 0 : notEnabled;\nconst revalidateEntireCache = false ? 0 : notEnabled;\nconst getCurrentCacheVersion = false ? 0 : notEnabled;\nconst schedulePrefetchTask = false ? 0 : notEnabled;\nconst cancelPrefetchTask = false ? 0 : notEnabled;\nconst reschedulePrefetchTask = false ? 0 : notEnabled;\nconst isPrefetchTaskDirty = false ? 0 : notEnabled;\nconst createCacheKey = false ? 0 : notEnabled;\nvar NavigationResultTag = /*#__PURE__*/ function(NavigationResultTag) {\n NavigationResultTag[NavigationResultTag[\"MPA\"] = 0] = \"MPA\";\n NavigationResultTag[NavigationResultTag[\"Success\"] = 1] = \"Success\";\n NavigationResultTag[NavigationResultTag[\"NoOp\"] = 2] = \"NoOp\";\n NavigationResultTag[NavigationResultTag[\"Async\"] = 3] = \"Async\";\n return NavigationResultTag;\n}({});\nvar PrefetchPriority = /*#__PURE__*/ function(PrefetchPriority) {\n /**\n * Assigned to the most recently hovered/touched link. Special network\n * bandwidth is reserved for this task only. There's only ever one Intent-\n * priority task at a time; when a new Intent task is scheduled, the previous\n * one is bumped down to Default.\n */ PrefetchPriority[PrefetchPriority[\"Intent\"] = 2] = \"Intent\";\n /**\n * The default priority for prefetch tasks.\n */ PrefetchPriority[PrefetchPriority[\"Default\"] = 1] = \"Default\";\n /**\n * Assigned to tasks when they spawn non-blocking background work, like\n * revalidating a partially cached entry to see if more data is available.\n */ PrefetchPriority[PrefetchPriority[\"Background\"] = 0] = \"Background\";\n return PrefetchPriority;\n}({});\nvar FetchStrategy = /*#__PURE__*/ function(FetchStrategy) {\n // Deliberately ordered so we can easily compare two segments\n // and determine if one segment is \"more specific\" than another\n // (i.e. if it's likely that it contains more data)\n FetchStrategy[FetchStrategy[\"LoadingBoundary\"] = 0] = \"LoadingBoundary\";\n FetchStrategy[FetchStrategy[\"PPR\"] = 1] = \"PPR\";\n FetchStrategy[FetchStrategy[\"PPRRuntime\"] = 2] = \"PPRRuntime\";\n FetchStrategy[FetchStrategy[\"Full\"] = 3] = \"Full\";\n return FetchStrategy;\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=segment-cache.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkM7Ozs7Ozs7Ozs7OztJQStIaUJBLGFBQWE7ZUFBYkE7O0lBN0JBQyxtQkFBbUI7ZUFBbkJBOztJQVVBQyxnQkFBZ0I7ZUFBaEJBOztJQW5ETEMsa0JBQWtCO2VBQWxCQTs7SUEyQkFDLGNBQWM7ZUFBZEE7O0lBN0NBQyxzQkFBc0I7ZUFBdEJBOztJQW9DQUMsbUJBQW1CO2VBQW5CQTs7SUF0REFDLFFBQVE7ZUFBUkE7O0lBVEFDLFFBQVE7ZUFBUkE7O0lBc0RBQyxzQkFBc0I7ZUFBdEJBOztJQXBDQUMscUJBQXFCO2VBQXJCQTs7SUFrQkFDLG9CQUFvQjtlQUFwQkE7OztBQTFDYixNQUFNQyxhQUFrQjtJQUN0QixNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUix1RUFESTtlQUFBO29CQUFBO3NCQUFBO0lBRU47QUFDRjtBQUVPLE1BQU1MLFdBQ1hNLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNTCxXQUNYTyxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTUYsd0JBQ1hJLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNUCx5QkFDWFMsTUFBdUMsR0FDbkMsQ0FJQyxHQUNERjtBQUVDLE1BQU1ELHVCQUNYRyxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTVQscUJBQ1hXLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNSCx5QkFDWEssTUFBdUMsR0FDbkMsQ0FJQyxHQUNERjtBQUVDLE1BQU1OLHNCQUNYUSxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTVIsaUJBQ1hVLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFPQyxJQUFXWCxzQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsbUJBQUFBOzs7OztXQUFBQTs7QUFVWCxJQUFXQyxtQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsZ0JBQUFBO0lBQ2hCOzs7OztHQUtDO0lBRUQ7O0dBRUM7SUFFRDs7O0dBR0M7V0FmZUE7O0FBbUJYLElBQVdGLGdCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxhQUFBQTtJQUNoQiw2REFBNkQ7SUFDN0QsK0RBQStEO0lBQy9ELG1EQUFtRDs7Ozs7V0FIbkNBIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVudHJ5IHBvaW50IHRvIHRoZSBTZWdtZW50IENhY2hlIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEFsbCBjb2RlIHJlbGF0ZWQgdG8gdGhlIFNlZ21lbnQgQ2FjaGUgbGl2ZXMgYHNlZ21lbnQtY2FjaGUtaW1wbGAgZGlyZWN0b3J5LlxuICogQ2FsbGVycyBhY2Nlc3MgaXQgdGhyb3VnaCB0aGlzIGluZGlyZWN0aW9uLlxuICpcbiAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoZSBjb2RlIGlzIGRlYWQgY29kZSBlbGltaW5hdGVkIGZyb20gdGhlIGJ1bmRsZSBpZiB0aGVcbiAqIGZsYWcgaXMgZGlzYWJsZWQuXG4gKlxuICogVE9ETzogVGhpcyBpcyBzdXBlciB0ZWRpb3VzLiBTaW5jZSBleHBlcmltZW50YWwgZmxhZ3MgYXJlIGFuIGVzc2VudGlhbCBwYXJ0XG4gKiBvZiBvdXIgd29ya2Zsb3csIHdlIHNob3VsZCBlc3RhYmxpc2ggYSBiZXR0ZXIgcGF0dGVybiBmb3IgZGVhZCBjb2RlXG4gKiBlbGltaW5hdGlvbi4gSWRlYWxseSBpdCB3b3VsZCBiZSBkb25lIGF0IHRoZSBidW5kbGVyIGxldmVsLCBsaWtlIGhvdyBSZWFjdCdzXG4gKiBidWlsZCBwcm9jZXNzIHdvcmtzLiBJbiB0aGUgUmVhY3QgcmVwbywgeW91IGRvbid0IGV2ZW4gbmVlZCB0byBhZGQgYW55IGV4dHJhXG4gKiBjb25maWd1cmF0aW9uIHBlciBleHBlcmltZW50IOKAlCBpZiB0aGUgY29kZSBpcyBub3QgcmVhY2hhYmxlLCBpdCBnZXRzIHN0cmlwcGVkXG4gKiBmcm9tIHRoZSBidWlsZCBhdXRvbWF0aWNhbGx5IGJ5IFJvbGx1cC4gT3IsIHNob3J0ZXIgdGVybSwgd2UgY291bGQgc3R1YiBvdXRcbiAqIGV4cGVyaW1lbnRhbCBtb2R1bGVzIGF0IGJ1aWxkIHRpbWUgYnkgdXBkYXRpbmcgdGhlIGJ1aWxkIGNvbmZpZywgaS5lLiBhIG1vcmVcbiAqIGF1dG9tYXRlZCB2ZXJzaW9uIG9mIHdoYXQgSSdtIGRvaW5nIG1hbnVhbGx5IGluIHRoaXMgZmlsZS5cbiAqL1xuXG5leHBvcnQgdHlwZSB7IE5hdmlnYXRpb25SZXN1bHQgfSBmcm9tICcuL3NlZ21lbnQtY2FjaGUtaW1wbC9uYXZpZ2F0aW9uJ1xuZXhwb3J0IHR5cGUgeyBQcmVmZXRjaFRhc2sgfSBmcm9tICcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInXG5leHBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRTZWFyY2ggfSBmcm9tICcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZS1rZXknXG5cbmNvbnN0IG5vdEVuYWJsZWQ6IGFueSA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdTZWdtZW50IENhY2hlIGV4cGVyaW1lbnQgaXMgbm90IGVuYWJsZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy4nXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IHByZWZldGNoOiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9wcmVmZXRjaCcpLnByZWZldGNoID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3ByZWZldGNoJykgYXMgdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvcHJlZmV0Y2gnKVxuICAgICAgICApLnByZWZldGNoKC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbmV4cG9ydCBjb25zdCBuYXZpZ2F0ZTogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvbmF2aWdhdGlvbicpLm5hdmlnYXRlID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL25hdmlnYXRpb24nKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9uYXZpZ2F0aW9uJylcbiAgICAgICAgKS5uYXZpZ2F0ZSguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3QgcmV2YWxpZGF0ZUVudGlyZUNhY2hlOiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpLnJldmFsaWRhdGVFbnRpcmVDYWNoZSA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlJylcbiAgICAgICAgKS5yZXZhbGlkYXRlRW50aXJlQ2FjaGUoLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRDYWNoZVZlcnNpb246IHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlJykuZ2V0Q3VycmVudENhY2hlVmVyc2lvbiA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlJylcbiAgICAgICAgKS5nZXRDdXJyZW50Q2FjaGVWZXJzaW9uKC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbmV4cG9ydCBjb25zdCBzY2hlZHVsZVByZWZldGNoVGFzazogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykuc2NoZWR1bGVQcmVmZXRjaFRhc2sgPVxuICBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgICA/IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcmVxdWlyZSgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykgYXMgdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJylcbiAgICAgICAgKS5zY2hlZHVsZVByZWZldGNoVGFzayguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3QgY2FuY2VsUHJlZmV0Y2hUYXNrOiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInKS5jYW5jZWxQcmVmZXRjaFRhc2sgPVxuICBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgICA/IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcmVxdWlyZSgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykgYXMgdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJylcbiAgICAgICAgKS5jYW5jZWxQcmVmZXRjaFRhc2soLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuZXhwb3J0IGNvbnN0IHJlc2NoZWR1bGVQcmVmZXRjaFRhc2s6IHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpLnJlc2NoZWR1bGVQcmVmZXRjaFRhc2sgPVxuICBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgICA/IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcmVxdWlyZSgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykgYXMgdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJylcbiAgICAgICAgKS5yZXNjaGVkdWxlUHJlZmV0Y2hUYXNrKC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbmV4cG9ydCBjb25zdCBpc1ByZWZldGNoVGFza0RpcnR5OiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInKS5pc1ByZWZldGNoVGFza0RpcnR5ID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpXG4gICAgICAgICkuaXNQcmVmZXRjaFRhc2tEaXJ0eSguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2FjaGVLZXk6IHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlLWtleScpLmNyZWF0ZUNhY2hlS2V5ID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlLWtleScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL2NhY2hlLWtleScpXG4gICAgICAgICkuY3JlYXRlQ2FjaGVLZXkoLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuLyoqXG4gKiBCZWxvdyBhcmUgcHVibGljIGNvbnN0YW50cy4gVGhleSdyZSBzbWFsbCBlbm91Z2ggdGhhdCB3ZSBkb24ndCBuZWVkIHRvXG4gKiBEQ0UgdGhlbS5cbiAqL1xuXG5leHBvcnQgY29uc3QgZW51bSBOYXZpZ2F0aW9uUmVzdWx0VGFnIHtcbiAgTVBBLFxuICBTdWNjZXNzLFxuICBOb09wLFxuICBBc3luYyxcbn1cblxuLyoqXG4gKiBUaGUgcHJpb3JpdHkgb2YgdGhlIHByZWZldGNoIHRhc2suIEhpZ2hlciBudW1iZXJzIGFyZSBoaWdoZXIgcHJpb3JpdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIFByZWZldGNoUHJpb3JpdHkge1xuICAvKipcbiAgICogQXNzaWduZWQgdG8gdGhlIG1vc3QgcmVjZW50bHkgaG92ZXJlZC90b3VjaGVkIGxpbmsuIFNwZWNpYWwgbmV0d29ya1xuICAgKiBiYW5kd2lkdGggaXMgcmVzZXJ2ZWQgZm9yIHRoaXMgdGFzayBvbmx5LiBUaGVyZSdzIG9ubHkgZXZlciBvbmUgSW50ZW50LVxuICAgKiBwcmlvcml0eSB0YXNrIGF0IGEgdGltZTsgd2hlbiBhIG5ldyBJbnRlbnQgdGFzayBpcyBzY2hlZHVsZWQsIHRoZSBwcmV2aW91c1xuICAgKiBvbmUgaXMgYnVtcGVkIGRvd24gdG8gRGVmYXVsdC5cbiAgICovXG4gIEludGVudCA9IDIsXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBwcmlvcml0eSBmb3IgcHJlZmV0Y2ggdGFza3MuXG4gICAqL1xuICBEZWZhdWx0ID0gMSxcbiAgLyoqXG4gICAqIEFzc2lnbmVkIHRvIHRhc2tzIHdoZW4gdGhleSBzcGF3biBub24tYmxvY2tpbmcgYmFja2dyb3VuZCB3b3JrLCBsaWtlXG4gICAqIHJldmFsaWRhdGluZyBhIHBhcnRpYWxseSBjYWNoZWQgZW50cnkgdG8gc2VlIGlmIG1vcmUgZGF0YSBpcyBhdmFpbGFibGUuXG4gICAqL1xuICBCYWNrZ3JvdW5kID0gMCxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gRmV0Y2hTdHJhdGVneSB7XG4gIC8vIERlbGliZXJhdGVseSBvcmRlcmVkIHNvIHdlIGNhbiBlYXNpbHkgY29tcGFyZSB0d28gc2VnbWVudHNcbiAgLy8gYW5kIGRldGVybWluZSBpZiBvbmUgc2VnbWVudCBpcyBcIm1vcmUgc3BlY2lmaWNcIiB0aGFuIGFub3RoZXJcbiAgLy8gKGkuZS4gaWYgaXQncyBsaWtlbHkgdGhhdCBpdCBjb250YWlucyBtb3JlIGRhdGEpXG4gIExvYWRpbmdCb3VuZGFyeSA9IDAsXG4gIFBQUiA9IDEsXG4gIFBQUlJ1bnRpbWUgPSAyLFxuICBGdWxsID0gMyxcbn1cblxuLyoqXG4gKiBBIHN1YnNldCBvZiBmZXRjaCBzdHJhdGVnaWVzIHVzZWQgZm9yIHByZWZldGNoIHRhc2tzLlxuICogQSBwcmVmZXRjaCB0YXNrIGNhbid0IGtub3cgaWYgaXQgc2hvdWxkIHVzZSBgUFBSYCBvciBgTG9hZGluZ0JvdW5kYXJ5YFxuICogdW50aWwgd2UgY29tcGxldGUgdGhlIGluaXRpYWwgdHJlZSBwcmVmZXRjaCByZXF1ZXN0LCBzbyB3ZSB1c2UgYFBQUmAgdG8gc2lnbmFsIGJvdGggY2FzZXNcbiAqIGFuZCBhZGp1c3QgaXQgYmFzZWQgb24gdGhlIHJvdXRlIHdoZW4gYWN0dWFsbHkgZmV0Y2hpbmcuXG4gKiAqL1xuZXhwb3J0IHR5cGUgUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneSA9XG4gIHwgRmV0Y2hTdHJhdGVneS5QUFJcbiAgfCBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWVcbiAgfCBGZXRjaFN0cmF0ZWd5LkZ1bGxcbiJdLCJuYW1lcyI6WyJGZXRjaFN0cmF0ZWd5IiwiTmF2aWdhdGlvblJlc3VsdFRhZyIsIlByZWZldGNoUHJpb3JpdHkiLCJjYW5jZWxQcmVmZXRjaFRhc2siLCJjcmVhdGVDYWNoZUtleSIsImdldEN1cnJlbnRDYWNoZVZlcnNpb24iLCJpc1ByZWZldGNoVGFza0RpcnR5IiwibmF2aWdhdGUiLCJwcmVmZXRjaCIsInJlc2NoZWR1bGVQcmVmZXRjaFRhc2siLCJyZXZhbGlkYXRlRW50aXJlQ2FjaGUiLCJzY2hlZHVsZVByZWZldGNoVGFzayIsIm5vdEVuYWJsZWQiLCJFcnJvciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJhcmdzIiwicmVxdWlyZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/segment-cache.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/unauthorized.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/components/unauthorized.js ***! \******************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unauthorized\", ({\n enumerable: true,\n get: function() {\n return unauthorized;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";401\";\nfunction unauthorized() {\n if (true) {\n throw Object.defineProperty(new Error(\"`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E411\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=unauthorized.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5hdXRob3JpemVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBc0JnQkE7OztlQUFBQTs7O2dEQW5CVDtBQUVQLGdDQUFnQztBQUNoQzs7Ozs7Ozs7Ozs7O0NBWUMsR0FFRCxNQUFNQyxTQUFVLEtBQUVDLG9CQUFBQSw4QkFBOEIsR0FBQztBQUUxQyxTQUFTRjtJQUNkLElBQUksSUFBZ0QsRUFBRTtRQUNwRCxNQUFNLHFCQUVMLENBRkssSUFBSU0sTUFDUCxnSEFERzttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSw0Q0FBNEM7SUFDNUMsTUFBTUMsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUQsTUFBTUwsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCTSxNQUFrQ0MsTUFBTSxHQUFHUDtJQUM3QyxNQUFNTTtBQUNSIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvdW5hdXRob3JpemVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSxcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcblxuLy8gVE9ETzogQWRkIGB1bmF1dGhvcml6ZWRgIGRvY3Ncbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlbmRlciB0aGUgW3VuYXV0aG9yaXplZC5qcyBmaWxlXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9maWxlLWNvbnZlbnRpb25zL3VuYXV0aG9yaXplZClcbiAqIHdpdGhpbiBhIHJvdXRlIHNlZ21lbnQgYXMgd2VsbCBhcyBpbmplY3QgYSB0YWcuXG4gKlxuICogYHVuYXV0aG9yaXplZCgpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVuYXV0aG9yaXplZGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91bmF1dGhvcml6ZWQpXG4gKi9cblxuY29uc3QgRElHRVNUID0gYCR7SFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFfTs0MDFgXG5cbmV4cG9ydCBmdW5jdGlvbiB1bmF1dGhvcml6ZWQoKTogbmV2ZXIge1xuICBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFxcYHVuYXV0aG9yaXplZCgpXFxgIGlzIGV4cGVyaW1lbnRhbCBhbmQgb25seSBhbGxvd2VkIHRvIGJlIHVzZWQgd2hlbiBcXGBleHBlcmltZW50YWwuYXV0aEludGVycnVwdHNcXGAgaXMgZW5hYmxlZC5gXG4gICAgKVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoRElHRVNUKSBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvclxuICA7KGVycm9yIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKS5kaWdlc3QgPSBESUdFU1RcbiAgdGhyb3cgZXJyb3Jcbn1cbiJdLCJuYW1lcyI6WyJ1bmF1dGhvcml6ZWQiLCJESUdFU1QiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0VYUEVSSU1FTlRBTF9BVVRIX0lOVEVSUlVQVFMiLCJFcnJvciIsImVycm9yIiwiZGlnZXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/unauthorized.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/unrecognized-action-error.js": /*!*******************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unrecognized-action-error.js ***! \*******************************************************************************/ /***/ ((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 UnrecognizedActionError: function() {\n return UnrecognizedActionError;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n }\n});\nclass UnrecognizedActionError extends Error {\n constructor(...args){\n super(...args);\n this.name = 'UnrecognizedActionError';\n }\n}\nfunction unstable_isUnrecognizedActionError(error) {\n return !!(error && typeof error === 'object' && error instanceof UnrecognizedActionError);\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=unrecognized-action-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBYUEsdUJBQXVCO2VBQXZCQTs7SUF5QkdDLGtDQUFrQztlQUFsQ0E7OztBQXpCVCxNQUFNRCxnQ0FBZ0NFO0lBQzNDQyxZQUFZLEdBQUdDLElBQXlDLENBQUU7UUFDeEQsS0FBSyxJQUFJQTtRQUNULElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2Q7QUFDRjtBQW9CTyxTQUFTSixtQ0FDZEssS0FBYztJQUVkLE9BQU8sQ0FBQyxDQUNOQSxDQUFBQSxTQUNBLE9BQU9BLFVBQVUsWUFDakJBLGlCQUFpQk4sdUJBQUFBLENBQXNCO0FBRTNDIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRXJyb3I+KSB7XG4gICAgc3VwZXIoLi4uYXJncylcbiAgICB0aGlzLm5hbWUgPSAnVW5yZWNvZ25pemVkQWN0aW9uRXJyb3InXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgc2VydmVyIGFjdGlvbiBjYWxsIGZhaWxlZCBiZWNhdXNlIHRoZSBzZXJ2ZXIgYWN0aW9uIHdhcyBub3QgcmVjb2duaXplZCBieSB0aGUgc2VydmVyLlxuICogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgYXJlIG5vdCBmcm9tIHRoZSBzYW1lIGRlcGxveW1lbnQuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqIGBgYHRzXG4gKiB0cnkge1xuICogICBhd2FpdCBteVNlcnZlckFjdGlvbigpO1xuICogfSBjYXRjaCAoZXJyKSB7XG4gKiAgIGlmICh1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKGVycikpIHtcbiAqICAgICAvLyBUaGUgY2xpZW50IGlzIGZyb20gYSBkaWZmZXJlbnQgZGVwbG95bWVudCB0aGFuIHRoZSBzZXJ2ZXIuXG4gKiAgICAgLy8gUmVsb2FkaW5nIHRoZSBwYWdlIHdpbGwgZml4IHRoaXMgbWlzbWF0Y2guXG4gKiAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2UgYW5kIHRyeSBhZ2FpblwiKTtcbiAqICAgICByZXR1cm47XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3Ige1xuICByZXR1cm4gISEoXG4gICAgZXJyb3IgJiZcbiAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmXG4gICAgZXJyb3IgaW5zdGFuY2VvZiBVbnJlY29nbml6ZWRBY3Rpb25FcnJvclxuICApXG59XG4iXSwibmFtZXMiOlsiVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJ1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJuYW1lIiwiZXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/unrecognized-action-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/unresolved-thenable.js": /*!*************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unresolved-thenable.js ***! \*************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Create a \"Thenable\" that does not resolve. This is used to suspend indefinitely when data is not available yet.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unresolvedThenable\", ({\n enumerable: true,\n get: function() {\n return unresolvedThenable;\n }\n}));\nconst unresolvedThenable = {\n then: ()=>{}\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=unresolved-thenable.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5yZXNvbHZlZC10aGVuYWJsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQzs7OztzREFDWUE7OztlQUFBQTs7O0FBQU4sTUFBTUEscUJBQXFCO0lBQ2hDQyxNQUFNLEtBQU87QUFDZiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL3VucmVzb2x2ZWQtdGhlbmFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGUgYSBcIlRoZW5hYmxlXCIgdGhhdCBkb2VzIG5vdCByZXNvbHZlLiBUaGlzIGlzIHVzZWQgdG8gc3VzcGVuZCBpbmRlZmluaXRlbHkgd2hlbiBkYXRhIGlzIG5vdCBhdmFpbGFibGUgeWV0LlxuICovXG5leHBvcnQgY29uc3QgdW5yZXNvbHZlZFRoZW5hYmxlID0ge1xuICB0aGVuOiAoKSA9PiB7fSxcbn0gYXMgUHJvbWlzZUxpa2U8dm9pZD5cbiJdLCJuYW1lcyI6WyJ1bnJlc29sdmVkVGhlbmFibGUiLCJ0aGVuIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/unresolved-thenable.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.browser.js": /*!******************************************************************************!*\ !*** ./node_modules/next/dist/client/components/unstable-rethrow.browser.js ***! \******************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nfunction unstable_rethrow(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error) || (0, _bailouttocsr.isBailoutToCSRError)(error)) {\n throw error;\n }\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause);\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=unstable-rethrow.browser.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy5icm93c2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBR2dCQTs7O2VBQUFBOzs7MENBSG9COytDQUNGO0FBRTNCLFNBQVNBLGlCQUFpQkMsS0FBYztJQUM3QyxJQUFJQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxVQUFVRSxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JGLFFBQVE7UUFDMUQsTUFBTUE7SUFDUjtJQUVBLElBQUlBLGlCQUFpQkcsU0FBUyxXQUFXSCxPQUFPO1FBQzlDRCxpQkFBaUJDLE1BQU1JLEtBQUs7SUFDOUI7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cuYnJvd3Nlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0JhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4vaXMtbmV4dC1yb3V0ZXItZXJyb3InXG5cbmV4cG9ydCBmdW5jdGlvbiB1bnN0YWJsZV9yZXRocm93KGVycm9yOiB1bmtub3duKTogdm9pZCB7XG4gIGlmIChpc05leHRSb3V0ZXJFcnJvcihlcnJvcikgfHwgaXNCYWlsb3V0VG9DU1JFcnJvcihlcnJvcikpIHtcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgJ2NhdXNlJyBpbiBlcnJvcikge1xuICAgIHVuc3RhYmxlX3JldGhyb3coZXJyb3IuY2F1c2UpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1bnN0YWJsZV9yZXRocm93IiwiZXJyb3IiLCJpc05leHRSb3V0ZXJFcnJvciIsImlzQmFpbG91dFRvQ1NSRXJyb3IiLCJFcnJvciIsImNhdXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.browser.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/unstable-rethrow.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst unstable_rethrow = false ? 0 : (__webpack_require__(/*! ./unstable-rethrow.browser */ \"(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.browser.js\").unstable_rethrow);\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=unstable-rethrow.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUM7Ozs7b0RBQ1lBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLG1CQUNYLE1BQTZCLEdBRXZCRSxDQUNnQixHQUVoQkEsc0tBQ2dCIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gcmV0aHJvdyBpbnRlcm5hbCBOZXh0LmpzIGVycm9ycyBzbyB0aGF0IHRoZXkgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGZyYW1ld29yay5cbiAqIFdoZW4gd3JhcHBpbmcgYW4gQVBJIHRoYXQgdXNlcyBlcnJvcnMgdG8gaW50ZXJydXB0IGNvbnRyb2wgZmxvdywgeW91IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiBiZWZvcmUgeW91IGRvIGFueSBlcnJvciBoYW5kbGluZy5cbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXRocm93IHRoZSBlcnJvciBpZiBpdCBpcyBhIE5leHQuanMgZXJyb3Igc28gaXQgY2FuIGJlIGhhbmRsZWQsIG90aGVyd2lzZSBpdCB3aWxsIGRvIG5vdGhpbmcuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdW5zdGFibGVfcmV0aHJvd2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91bnN0YWJsZV9yZXRocm93KVxuICovXG5leHBvcnQgY29uc3QgdW5zdGFibGVfcmV0aHJvdyA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoXG4gICAgICAgIHJlcXVpcmUoJy4vdW5zdGFibGUtcmV0aHJvdy5zZXJ2ZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3Vuc3RhYmxlLXJldGhyb3cuc2VydmVyJylcbiAgICAgICkudW5zdGFibGVfcmV0aHJvd1xuICAgIDogKFxuICAgICAgICByZXF1aXJlKCcuL3Vuc3RhYmxlLXJldGhyb3cuYnJvd3NlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vdW5zdGFibGUtcmV0aHJvdy5icm93c2VyJylcbiAgICAgICkudW5zdGFibGVfcmV0aHJvd1xuIl0sIm5hbWVzIjpbInVuc3RhYmxlX3JldGhyb3ciLCJ3aW5kb3ciLCJyZXF1aXJlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/unstable-rethrow.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/components/use-action-queue.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/components/use-action-queue.js ***! \**********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\n\"use strict\";\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 dispatchAppRouterAction: function() {\n return dispatchAppRouterAction;\n },\n useActionQueue: function() {\n return useActionQueue;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"));\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/is-thenable.js\");\n// The app router state lives outside of React, so we can import the dispatch\n// method directly wherever we need it, rather than passing it around via props\n// or context.\nlet dispatch = null;\nfunction dispatchAppRouterAction(action) {\n if (dispatch === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n dispatch(action);\n}\nfunction useActionQueue(actionQueue) {\n _s();\n const [state, setState] = _react.default.useState(actionQueue.state);\n // Because of a known issue that requires to decode Flight streams inside the\n // render phase, we have to be a bit clever and assign the dispatch method to\n // a module-level variable upon initialization. The useState hook in this\n // module only exists to synchronize state that lives outside of React.\n // Ideally, what we'd do instead is pass the state as a prop to root.render;\n // this is conceptually how we're modeling the app router state, despite the\n // weird implementation details.\n if (true) {\n const { useAppDevRenderingIndicator } = __webpack_require__(/*! ../../next-devtools/userspace/use-app-dev-rendering-indicator */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\");\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const appDevRenderingIndicator = useAppDevRenderingIndicator();\n dispatch = (action)=>{\n appDevRenderingIndicator(()=>{\n actionQueue.dispatch(action, setState);\n });\n };\n } else {}\n return (0, _isthenable.isThenable)(state) ? (0, _react.use)(state) : state;\n}\n_s(useActionQueue, \"Rp0Tj1zyE8LTecjN/cjTzn46xPo=\");\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=use-action-queue.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdXNlLWFjdGlvbi1xdWV1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQWVnQkEsdUJBQXVCO2VBQXZCQTs7SUFTQUMsY0FBYztlQUFkQTs7Ozs2RUF2Qlc7d0NBQ0E7QUFRM0IsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxjQUFjO0FBQ2QsSUFBSUMsV0FBNEM7QUFFekMsU0FBU0Ysd0JBQXdCRyxNQUFzQjtJQUM1RCxJQUFJRCxhQUFhLE1BQU07UUFDckIsTUFBTSxxQkFFTCxDQUZLLElBQUlFLE1BQ1IsNEVBREk7bUJBQUE7d0JBQUE7MEJBQUE7UUFFTjtJQUNGO0lBQ0FGLFNBQVNDO0FBQ1g7QUFFTyx3QkFDTEUsV0FBaUM7O0lBRWpDLE1BQU0sQ0FBQ0MsT0FBT0MsU0FBUyxHQUFHQyxPQUFBQSxPQUFLLENBQUNDLFFBQVEsQ0FBZUosWUFBWUMsS0FBSztJQUV4RSw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLHlFQUF5RTtJQUN6RSx1RUFBdUU7SUFDdkUsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSxnQ0FBZ0M7SUFDaEMsSUFBSUksSUFBb0IsRUFBbUI7UUFDekMsTUFBTSxFQUFFRywyQkFBMkIsRUFBRSxHQUNuQ0MsbUJBQU9BLENBQUMsOEtBQStEO1FBQ3pFLHNEQUFzRDtRQUN0RCxNQUFNQywyQkFBMkJGO1FBRWpDWCxXQUFXLENBQUNDO1lBQ1ZZLHlCQUF5QjtnQkFDdkJWLFlBQVlILFFBQVEsQ0FBQ0MsUUFBUUk7WUFDL0I7UUFDRjtJQUNGLE9BQU8sRUFHTjtJQUVELE9BQU9TLENBQUFBLEdBQUFBLFlBQUFBLFVBQVUsRUFBQ1YsU0FBU1csQ0FBQUEsR0FBQUEsT0FBQUEsR0FBQUEsRUFBSVgsU0FBU0E7QUFDMUM7R0E3QmdCTCIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0LCB7IHVzZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgaXNUaGVuYWJsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaXMtdGhlbmFibGUnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlckFjdGlvblF1ZXVlIH0gZnJvbSAnLi9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IHR5cGUge1xuICBBcHBSb3V0ZXJTdGF0ZSxcbiAgUmVkdWNlckFjdGlvbnMsXG4gIFJlZHVjZXJTdGF0ZSxcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcblxuLy8gVGhlIGFwcCByb3V0ZXIgc3RhdGUgbGl2ZXMgb3V0c2lkZSBvZiBSZWFjdCwgc28gd2UgY2FuIGltcG9ydCB0aGUgZGlzcGF0Y2hcbi8vIG1ldGhvZCBkaXJlY3RseSB3aGVyZXZlciB3ZSBuZWVkIGl0LCByYXRoZXIgdGhhbiBwYXNzaW5nIGl0IGFyb3VuZCB2aWEgcHJvcHNcbi8vIG9yIGNvbnRleHQuXG5sZXQgZGlzcGF0Y2g6IERpc3BhdGNoPFJlZHVjZXJBY3Rpb25zPiB8IG51bGwgPSBudWxsXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbihhY3Rpb246IFJlZHVjZXJBY3Rpb25zKSB7XG4gIGlmIChkaXNwYXRjaCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnRlcm5hbCBOZXh0LmpzIGVycm9yOiBSb3V0ZXIgYWN0aW9uIGRpc3BhdGNoZWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLidcbiAgICApXG4gIH1cbiAgZGlzcGF0Y2goYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aW9uUXVldWUoXG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZVxuKTogQXBwUm91dGVyU3RhdGUge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IFJlYWN0LnVzZVN0YXRlPFJlZHVjZXJTdGF0ZT4oYWN0aW9uUXVldWUuc3RhdGUpXG5cbiAgLy8gQmVjYXVzZSBvZiBhIGtub3duIGlzc3VlIHRoYXQgcmVxdWlyZXMgdG8gZGVjb2RlIEZsaWdodCBzdHJlYW1zIGluc2lkZSB0aGVcbiAgLy8gcmVuZGVyIHBoYXNlLCB3ZSBoYXZlIHRvIGJlIGEgYml0IGNsZXZlciBhbmQgYXNzaWduIHRoZSBkaXNwYXRjaCBtZXRob2QgdG9cbiAgLy8gYSBtb2R1bGUtbGV2ZWwgdmFyaWFibGUgdXBvbiBpbml0aWFsaXphdGlvbi4gVGhlIHVzZVN0YXRlIGhvb2sgaW4gdGhpc1xuICAvLyBtb2R1bGUgb25seSBleGlzdHMgdG8gc3luY2hyb25pemUgc3RhdGUgdGhhdCBsaXZlcyBvdXRzaWRlIG9mIFJlYWN0LlxuICAvLyBJZGVhbGx5LCB3aGF0IHdlJ2QgZG8gaW5zdGVhZCBpcyBwYXNzIHRoZSBzdGF0ZSBhcyBhIHByb3AgdG8gcm9vdC5yZW5kZXI7XG4gIC8vIHRoaXMgaXMgY29uY2VwdHVhbGx5IGhvdyB3ZSdyZSBtb2RlbGluZyB0aGUgYXBwIHJvdXRlciBzdGF0ZSwgZGVzcGl0ZSB0aGVcbiAgLy8gd2VpcmQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB7IHVzZUFwcERldlJlbmRlcmluZ0luZGljYXRvciB9ID1cbiAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL3VzZS1hcHAtZGV2LXJlbmRlcmluZy1pbmRpY2F0b3InKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS91c2UtYXBwLWRldi1yZW5kZXJpbmctaW5kaWNhdG9yJylcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBjb25zdCBhcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IgPSB1c2VBcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IoKVxuXG4gICAgZGlzcGF0Y2ggPSAoYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4ge1xuICAgICAgYXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yKCgpID0+IHtcbiAgICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goYWN0aW9uLCBzZXRTdGF0ZSlcbiAgICAgIH0pXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGRpc3BhdGNoID0gKGFjdGlvbjogUmVkdWNlckFjdGlvbnMpID0+XG4gICAgICBhY3Rpb25RdWV1ZS5kaXNwYXRjaChhY3Rpb24sIHNldFN0YXRlKVxuICB9XG5cbiAgcmV0dXJuIGlzVGhlbmFibGUoc3RhdGUpID8gdXNlKHN0YXRlKSA6IHN0YXRlXG59XG4iXSwibmFtZXMiOlsiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ1c2VBY3Rpb25RdWV1ZSIsImRpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJhY3Rpb25RdWV1ZSIsInN0YXRlIiwic2V0U3RhdGUiLCJSZWFjdCIsInVzZVN0YXRlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwidXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yIiwicmVxdWlyZSIsImFwcERldlJlbmRlcmluZ0luZGljYXRvciIsImlzVGhlbmFibGUiLCJ1c2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/components/use-action-queue.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js ***! \********************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/// \n\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 default: function() {\n return HotReload;\n },\n waitForWebpackRuntimeHotUpdate: function() {\n return waitForWebpackRuntimeHotUpdate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(app-pages-browser)/./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../shared/lib/format-webpack-messages */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/format-webpack-messages.js\"));\nconst _navigation = __webpack_require__(/*! ../../../components/navigation */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation.js\");\nconst _shared = __webpack_require__(/*! ../shared */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(app-pages-browser)/./node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _replayssronlyerrors = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/replay-ssr-only-errors */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\");\nconst _appdevoverlayerrorboundary = __webpack_require__(/*! ../../../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\nconst _useerrorhandler = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-error-handler */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../runtime-error-handler */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _usewebsocket = __webpack_require__(/*! ./use-websocket */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../../../../server/dev/hot-reloader-types */ \"(app-pages-browser)/./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _navigationuntracked = __webpack_require__(/*! ../../../components/navigation-untracked */ \"(app-pages-browser)/./node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _reporthmrlatency = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../report-hmr-latency */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/report-hmr-latency.js\"));\nconst _turbopackhotreloadercommon = __webpack_require__(/*! ../turbopack-hot-reloader-common */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../../components/app-router-headers */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\");\nconst _useforwardconsolelog = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-forward-console-log */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js\");\nlet mostRecentCompilationHash = null;\nlet __nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet reloading = false;\nlet webpackStartMsSinceEpoch = null;\nconst turbopackHmr = false ? 0 : null;\nlet pendingHotUpdateWebpack = Promise.resolve();\nlet resolvePendingHotUpdateWebpack = ()=>{};\nfunction setPendingHotUpdateWebpack() {\n pendingHotUpdateWebpack = new Promise((resolve)=>{\n resolvePendingHotUpdateWebpack = ()=>{\n resolve();\n };\n });\n}\nfunction waitForWebpackRuntimeHotUpdate() {\n return pendingHotUpdateWebpack;\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/**\n * Is there a newer version of this code available?\n * For webpack: Check if the hash changed compared to __webpack_hash__\n * For Turbopack: Always true because it doesn't have __webpack_hash__\n */ function isUpdateAvailable() {\n if (false) {}\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 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 module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n module.hot.addStatusHandler(handler);\n }\n}\nfunction performFullReload(err, sendMessage) {\n const stackTrace = err && (err.stack && err.stack.split('\\n').slice(0, 5).join('\\n') || err.message || err + '');\n sendMessage(JSON.stringify({\n event: 'client-full-reload',\n stackTrace,\n hadRuntimeError: !!_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError,\n dependencyChain: err ? err.dependencyChain : undefined\n }));\n if (reloading) return;\n reloading = true;\n window.location.reload();\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdatesWebpack(sendMessage) {\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n resolvePendingHotUpdateWebpack();\n _nextdevtools.dispatcher.onBuildOk();\n (0, _reporthmrlatency.default)(sendMessage, [], webpackStartMsSinceEpoch, Date.now());\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || updatedModules == null) {\n if (err) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD);\n } else if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n }\n performFullReload(err, sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onBuildOk();\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n tryApplyUpdatesWebpack(sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onRefresh();\n resolvePendingHotUpdateWebpack();\n (0, _reporthmrlatency.default)(sendMessage, updatedModules, webpackStartMsSinceEpoch, Date.now());\n if (false) {}\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (updatedModules == null) {\n return null;\n }\n // We should always handle an update, even if updatedModules is empty (but\n // non-null) for any reason. That's what webpack would normally do:\n // https://github.com/webpack/webpack/blob/3aa6b6bc3a64/lib/hmr/HotModuleReplacement.runtime.js#L296-L298\n _nextdevtools.dispatcher.onBeforeRefresh();\n // https://webpack.js.org/api/hot-module-replacement/#apply\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\n/** Handles messages from the server for the App Router. */ function processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef) {\n if (!('action' in obj)) {\n return;\n }\n function handleErrors(errors) {\n // \"Massage\" webpack messages.\n const formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n _nextdevtools.dispatcher.onBuildError(formatted.errors[0]);\n // Also log them to the console.\n for(let i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n }\n function handleHotUpdate() {\n if (false) {} else {\n tryApplyUpdatesWebpack(sendMessage);\n }\n }\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ISR_MANIFEST:\n {\n if (true) {\n if (appIsrManifestRef) {\n appIsrManifestRef.current = obj.data;\n // handle initial status on receiving manifest\n // navigation is handled in useEffect for pathname changes\n // as we'll receive the updated manifest before usePathname\n // triggers for new value\n if (pathnameRef.current in obj.data) {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n {\n _nextdevtools.dispatcher.buildingIndicatorShow();\n if (false) {} else {\n webpackStartMsSinceEpoch = Date.now();\n setPendingHotUpdateWebpack();\n console.log('[Fast Refresh] rebuilding');\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n {\n _nextdevtools.dispatcher.buildingIndicatorHide();\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors, warnings } = obj;\n // Is undefined when it's a 'built' event\n if ('versionInfo' in obj) _nextdevtools.dispatcher.onVersionInfo(obj.versionInfo);\n if ('debug' in obj && obj.debug) _nextdevtools.dispatcher.onDebugInfo(obj.debug);\n if ('devIndicator' in obj) _nextdevtools.dispatcher.onDevIndicator(obj.devIndicator);\n if ('devToolsConfig' in obj) _nextdevtools.dispatcher.onDevToolsConfig(obj.devToolsConfig);\n const hasErrors = Boolean(errors && errors.length);\n // Compilation with errors (e.g. syntax error or missing modules).\n if (hasErrors) {\n sendMessage(JSON.stringify({\n event: 'client-error',\n errorCount: errors.length,\n clientId: __nextDevClientId\n }));\n handleErrors(errors);\n return;\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n sendMessage(JSON.stringify({\n event: 'client-warning',\n warningCount: warnings.length,\n clientId: __nextDevClientId\n }));\n // Print warnings to the console.\n const formattedMessages = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n for(let i = 0; i < formattedMessages.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)(formattedMessages.warnings[i]));\n }\n // No early return here as we need to apply modules in the same way between warnings only and compiles without warnings\n }\n sendMessage(JSON.stringify({\n event: 'client-success',\n clientId: __nextDevClientId\n }));\n if (obj.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT) {\n handleHotUpdate();\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED:\n {\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: {\n sessionId: obj.data.sessionId\n }\n });\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE:\n {\n turbopackHmr.onTurbopackMessage(obj);\n _nextdevtools.dispatcher.onBeforeRefresh();\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: obj.data\n });\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n performFullReload(null, sendMessage);\n }\n _nextdevtools.dispatcher.onRefresh();\n break;\n }\n // TODO-APP: make server component change more granular\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onServerComponentChanges();\n sendMessage(JSON.stringify({\n event: 'server-component-reload-page',\n clientId: __nextDevClientId,\n hash: obj.hash\n }));\n // Store the latest hash in a session cookie so that it's sent back to the\n // server with any subsequent requests.\n document.cookie = _approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE + \"=\" + obj.hash + \";path=/\";\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || document.documentElement.id === '__next_error__') {\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n (0, _react.startTransition)(()=>{\n router.hmrRefresh();\n _nextdevtools.dispatcher.onRefresh();\n });\n if (false) {}\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onReloadPage();\n sendMessage(JSON.stringify({\n event: 'client-reload-page',\n clientId: __nextDevClientId\n }));\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onPageAddRemove();\n // TODO-APP: potentially only refresh if the currently viewed page was added/removed.\n return router.hmrRefresh();\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 = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE:\n {\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEVTOOLS_CONFIG:\n {\n _nextdevtools.dispatcher.onDevToolsConfig(obj.data);\n return;\n }\n default:\n {\n obj;\n }\n }\n}\nfunction HotReload(param) {\n let { assetPrefix, children, globalError } = param;\n (0, _useerrorhandler.useErrorHandler)(_nextdevtools.dispatcher.onUnhandledError, _nextdevtools.dispatcher.onUnhandledRejection);\n const webSocketRef = (0, _usewebsocket.useWebsocket)(assetPrefix);\n (0, _usewebsocket.useWebsocketPing)(webSocketRef);\n const sendMessage = (0, _usewebsocket.useSendMessage)(webSocketRef);\n (0, _useforwardconsolelog.useForwardConsoleLog)(webSocketRef);\n const processTurbopackMessage = (0, _usewebsocket.useTurbopack)(sendMessage, (err)=>performFullReload(err, sendMessage));\n const router = (0, _navigation.useRouter)();\n // We don't want access of the pathname for the dev tools to trigger a dynamic\n // access (as the dev overlay will never be present in production).\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const appIsrManifestRef = (0, _react.useRef)({});\n const pathnameRef = (0, _react.useRef)(pathname);\n if (true) {\n // this conditional is only for dead-code elimination which\n // isn't a runtime conditional only build-time so ignore hooks rule\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n pathnameRef.current = pathname;\n const appIsrManifest = appIsrManifestRef.current;\n if (appIsrManifest) {\n if (pathname && pathname in appIsrManifest) {\n try {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } catch (reason) {\n let message = '';\n if (reason instanceof DOMException) {\n var _reason_stack;\n // Most likely a SecurityError, because of an unavailable localStorage\n message = (_reason_stack = reason.stack) != null ? _reason_stack : reason.message;\n } else if (reason instanceof Error) {\n var _reason_stack1;\n message = 'Error: ' + reason.message + '\\n' + ((_reason_stack1 = reason.stack) != null ? _reason_stack1 : '');\n } else {\n message = 'Unexpected Exception: ' + reason;\n }\n console.warn('[HMR] ' + message);\n }\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }, [\n pathname\n ]);\n }\n (0, _react.useEffect)(()=>{\n const websocket = webSocketRef.current;\n if (!websocket) return;\n const handler = (event)=>{\n try {\n const obj = JSON.parse(event.data);\n processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef);\n } catch (err) {\n (0, _shared.reportInvalidHmrMessage)(event, err);\n }\n };\n websocket.addEventListener('message', handler);\n return ()=>websocket.removeEventListener('message', handler);\n }, [\n sendMessage,\n router,\n webSocketRef,\n processTurbopackMessage,\n appIsrManifestRef\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_appdevoverlayerrorboundary.AppDevOverlayErrorBoundary, {\n globalError: globalError,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_replayssronlyerrors.ReplaySsrOnlyErrors, {\n onBlockingError: _nextdevtools.dispatcher.openErrorOverlay\n }),\n children\n ]\n });\n}\n_c = HotReload;\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-reloader-app.js.map\nvar _c;\n$RefreshReg$(_c, \"HotReload\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAuanMiLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDOzs7Ozs7Ozs7Ozs7O0lBeWM3QyxPQWlHQztlQWpHdUJBOztJQXBaUkMsOEJBQThCO2VBQTlCQTs7Ozs7bUNBbERtQztnRkFDN0I7NEZBQ1k7d0NBQ1I7b0NBS25COzBDQUNvQjtpREFDUzt3REFDTzs2Q0FDWDtpREFDSTswQ0FNN0I7OENBQ3FDO2lEQUtQO3VGQUNSO3dEQUNBOzhDQUNnQjtrREFFUjtBQUVyQyxJQUFJQyw0QkFBaUM7QUFDckMsSUFBSUMsb0JBQW9CQyxLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBSyxNQUFNQyxLQUFLQyxHQUFHO0FBQ2pFLElBQUlDLFlBQVk7QUFDaEIsSUFBSUMsMkJBQTBDO0FBQzlDLE1BQU1DLGVBQW9DQyxNQUFxQixHQUMzRCxDQUFrQixHQUNsQjtBQUVKLElBQUlJLDBCQUEwQkMsUUFBUUMsT0FBTztBQUM3QyxJQUFJQyxpQ0FBNkMsS0FBTztBQUN4RCxTQUFTQztJQUNQSiwwQkFBMEIsSUFBSUMsUUFBUSxDQUFDQztRQUNyQ0MsaUNBQWlDO1lBQy9CRDtRQUNGO0lBQ0Y7QUFDRjtBQUVPLFNBQVNqQjtJQUNkLE9BQU9lO0FBQ1Q7QUFFQSxrREFBa0Q7QUFDbEQsU0FBU0ssb0JBQW9CQyxJQUFZO0lBQ3ZDLHNDQUFzQztJQUN0Q3BCLDRCQUE0Qm9CO0FBQzlCO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVNDO0lBQ1AsSUFBSVgsS0FBcUIsRUFBRSxFQUUxQjtJQUVELDRCQUE0QixHQUM1QiwyREFBMkQ7SUFDM0QsOENBQThDO0lBQzlDLE9BQU9WLDhCQUE4QnNCLHVCQUFnQkE7QUFDdkQ7QUFFQSw2Q0FBNkM7QUFDN0MsU0FBU0M7SUFDUCxPQUFPQyxVQUFVLENBQUNFLE1BQU0sT0FBTztBQUNqQztBQUNB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QVUsQ0FBQ3dILGdCQUFnQjs7WUFDaEUxQjs7O0FBR1A7S0FqR3dCcEoiLCJzb3VyY2VzIjpbIi9zcmMvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwid2VicGFjay9tb2R1bGUuZC50c1wiIC8+XG5cbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHN0YXJ0VHJhbnNpdGlvbiwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gJ25leHQvZGlzdC9jb21waWxlZC9zdHJpcC1hbnNpJ1xuaW1wb3J0IGZvcm1hdFdlYnBhY2tNZXNzYWdlcyBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2Zvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9uYXZpZ2F0aW9uJ1xuaW1wb3J0IHtcbiAgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCxcbiAgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SLFxuICByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZSxcbn0gZnJvbSAnLi4vc2hhcmVkJ1xuaW1wb3J0IHsgZGlzcGF0Y2hlciB9IGZyb20gJ25leHQvZGlzdC9jb21waWxlZC9uZXh0LWRldnRvb2xzJ1xuaW1wb3J0IHsgUmVwbGF5U3NyT25seUVycm9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvcmVwbGF5LXNzci1vbmx5LWVycm9ycydcbmltcG9ydCB7IEFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2FwcC1kZXYtb3ZlcmxheS1lcnJvci1ib3VuZGFyeSdcbmltcG9ydCB7IHVzZUVycm9ySGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWVycm9yLWhhbmRsZXInXG5pbXBvcnQgeyBSdW50aW1lRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vLi4vcnVudGltZS1lcnJvci1oYW5kbGVyJ1xuaW1wb3J0IHtcbiAgdXNlU2VuZE1lc3NhZ2UsXG4gIHVzZVR1cmJvcGFjayxcbiAgdXNlV2Vic29ja2V0LFxuICB1c2VXZWJzb2NrZXRQaW5nLFxufSBmcm9tICcuL3VzZS13ZWJzb2NrZXQnXG5pbXBvcnQgeyBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgSE1SX0FDVElPTl9UWVBFUyxcbiAgVHVyYm9wYWNrTXNnVG9Ccm93c2VyLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcbmltcG9ydCB7IHVzZVVudHJhY2tlZFBhdGhuYW1lIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9uYXZpZ2F0aW9uLXVudHJhY2tlZCdcbmltcG9ydCByZXBvcnRIbXJMYXRlbmN5IGZyb20gJy4uLy4uL3JlcG9ydC1obXItbGF0ZW5jeSdcbmltcG9ydCB7IFR1cmJvcGFja0htciB9IGZyb20gJy4uL3R1cmJvcGFjay1ob3QtcmVsb2FkZXItY29tbW9uJ1xuaW1wb3J0IHsgTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxFcnJvclN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IHsgdXNlRm9yd2FyZENvbnNvbGVMb2cgfSBmcm9tICcuLi8uLi8uLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3VzZS1mb3J3YXJkLWNvbnNvbGUtbG9nJ1xuXG5sZXQgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaDogYW55ID0gbnVsbFxubGV0IF9fbmV4dERldkNsaWVudElkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwICsgRGF0ZS5ub3coKSlcbmxldCByZWxvYWRpbmcgPSBmYWxzZVxubGV0IHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbmNvbnN0IHR1cmJvcGFja0htcjogVHVyYm9wYWNrSG1yIHwgbnVsbCA9IHByb2Nlc3MuZW52LlRVUkJPUEFDS1xuICA/IG5ldyBUdXJib3BhY2tIbXIoKVxuICA6IG51bGxcblxubGV0IHBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrID0gUHJvbWlzZS5yZXNvbHZlKClcbmxldCByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7fVxuZnVuY3Rpb24gc2V0UGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKSB7XG4gIHBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2sgPSAoKSA9PiB7XG4gICAgICByZXNvbHZlKClcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKSB7XG4gIHJldHVybiBwZW5kaW5nSG90VXBkYXRlV2VicGFja1xufVxuXG4vLyBUaGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIGNvZGUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gaGFuZGxlQXZhaWxhYmxlSGFzaChoYXNoOiBzdHJpbmcpIHtcbiAgLy8gVXBkYXRlIGxhc3Qga25vd24gY29tcGlsYXRpb24gaGFzaC5cbiAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IGhhc2hcbn1cblxuLyoqXG4gKiBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbiAqIEZvciB3ZWJwYWNrOiBDaGVjayBpZiB0aGUgaGFzaCBjaGFuZ2VkIGNvbXBhcmVkIHRvIF9fd2VicGFja19oYXNoX19cbiAqIEZvciBUdXJib3BhY2s6IEFsd2F5cyB0cnVlIGJlY2F1c2UgaXQgZG9lc24ndCBoYXZlIF9fd2VicGFja19oYXNoX19cbiAqL1xuZnVuY3Rpb24gaXNVcGRhdGVBdmFpbGFibGUoKSB7XG4gIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyogZ2xvYmFscyBfX3dlYnBhY2tfaGFzaF9fICovXG4gIC8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4gIC8vIEl0J3MgYSBnbG9iYWwgdmFyaWFibGUgaW5qZWN0ZWQgYnkgV2VicGFjay5cbiAgcmV0dXJuIG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2ggIT09IF9fd2VicGFja19oYXNoX19cbn1cblxuLy8gV2VicGFjayBkaXNhbGxvd3MgdXBkYXRlcyBpbiBvdGhlciBzdGF0ZXMuXG5mdW5jdGlvbiBjYW5BcHBseVVwZGF0ZXMoKSB7XG4gIHJldHVybiBtb2R1bGUuaG90LnN0YXR1cygpID09PSAnaWRsZSdcbn1cbmZ1bmN0aW9uIGFmdGVyQXBwbHlVcGRhdGVzKGZuOiBhbnkpIHtcbiAgaWYgKGNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgZm4oKVxuICB9IGVsc2Uge1xuICAgIGZ1bmN0aW9uIGhhbmRsZXIoc3RhdHVzOiBhbnkpIHtcbiAgICAgIGlmIChzdGF0dXMgPT09ICdpZGxlJykge1xuICAgICAgICBtb2R1bGUuaG90LnJlbW92ZVN0YXR1c0hhbmRsZXIoaGFuZGxlcilcbiAgICAgICAgZm4oKVxuICAgICAgfVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFkZFN0YXR1c0hhbmRsZXIoaGFuZGxlcilcbiAgfVxufVxuXG5mdW5jdGlvbiBwZXJmb3JtRnVsbFJlbG9hZChlcnI6IGFueSwgc2VuZE1lc3NhZ2U6IGFueSkge1xuICBjb25zdCBzdGFja1RyYWNlID1cbiAgICBlcnIgJiZcbiAgICAoKGVyci5zdGFjayAmJiBlcnIuc3RhY2suc3BsaXQoJ1xcbicpLnNsaWNlKDAsIDUpLmpvaW4oJ1xcbicpKSB8fFxuICAgICAgZXJyLm1lc3NhZ2UgfHxcbiAgICAgIGVyciArICcnKVxuXG4gIHNlbmRNZXNzYWdlKFxuICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiAnY2xpZW50LWZ1bGwtcmVsb2FkJyxcbiAgICAgIHN0YWNrVHJhY2UsXG4gICAgICBoYWRSdW50aW1lRXJyb3I6ICEhUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IsXG4gICAgICBkZXBlbmRlbmN5Q2hhaW46IGVyciA/IGVyci5kZXBlbmRlbmN5Q2hhaW4gOiB1bmRlZmluZWQsXG4gICAgfSlcbiAgKVxuXG4gIGlmIChyZWxvYWRpbmcpIHJldHVyblxuICByZWxvYWRpbmcgPSB0cnVlXG4gIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxufVxuXG4vLyBBdHRlbXB0IHRvIHVwZGF0ZSBjb2RlIG9uIHRoZSBmbHksIGZhbGwgYmFjayB0byBhIGhhcmQgcmVsb2FkLlxuZnVuY3Rpb24gdHJ5QXBwbHlVcGRhdGVzV2VicGFjayhzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCkge1xuICBpZiAoIWlzVXBkYXRlQXZhaWxhYmxlKCkgfHwgIWNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgcmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrKClcbiAgICBkaXNwYXRjaGVyLm9uQnVpbGRPaygpXG4gICAgcmVwb3J0SG1yTGF0ZW5jeShzZW5kTWVzc2FnZSwgW10sIHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaCEsIERhdGUubm93KCkpXG4gICAgcmV0dXJuXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVBcHBseVVwZGF0ZXMoXG4gICAgZXJyOiBhbnksXG4gICAgdXBkYXRlZE1vZHVsZXM6IChzdHJpbmcgfCBudW1iZXIpW10gfCBudWxsXG4gICkge1xuICAgIGlmIChlcnIgfHwgUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IgfHwgdXBkYXRlZE1vZHVsZXMgPT0gbnVsbCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjb25zb2xlLndhcm4oUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRClcbiAgICAgIH0gZWxzZSBpZiAoUnVudGltZUVycm9ySGFuZGxlci5oYWRSdW50aW1lRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQURfRlJPTV9FUlJPUilcbiAgICAgIH1cbiAgICAgIHBlcmZvcm1GdWxsUmVsb2FkKGVyciwgc2VuZE1lc3NhZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkaXNwYXRjaGVyLm9uQnVpbGRPaygpXG5cbiAgICBpZiAoaXNVcGRhdGVBdmFpbGFibGUoKSkge1xuICAgICAgLy8gV2hpbGUgd2Ugd2VyZSB1cGRhdGluZywgdGhlcmUgd2FzIGEgbmV3IHVwZGF0ZSEgRG8gaXQgYWdhaW4uXG4gICAgICB0cnlBcHBseVVwZGF0ZXNXZWJwYWNrKHNlbmRNZXNzYWdlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGlzcGF0Y2hlci5vblJlZnJlc2goKVxuICAgIHJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjaygpXG4gICAgcmVwb3J0SG1yTGF0ZW5jeShcbiAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgdXBkYXRlZE1vZHVsZXMsXG4gICAgICB3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2ghLFxuICAgICAgRGF0ZS5ub3coKVxuICAgIClcblxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICBhZnRlckFwcGx5VXBkYXRlcygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKVxuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2FwaS9ob3QtbW9kdWxlLXJlcGxhY2VtZW50LyNjaGVja1xuICBtb2R1bGUuaG90XG4gICAgLmNoZWNrKC8qIGF1dG9BcHBseSAqLyBmYWxzZSlcbiAgICAudGhlbigodXBkYXRlZE1vZHVsZXM6IChzdHJpbmcgfCBudW1iZXIpW10gfCBudWxsKSA9PiB7XG4gICAgICBpZiAodXBkYXRlZE1vZHVsZXMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhbmRsZSBhbiB1cGRhdGUsIGV2ZW4gaWYgdXBkYXRlZE1vZHVsZXMgaXMgZW1wdHkgKGJ1dFxuICAgICAgLy8gbm9uLW51bGwpIGZvciBhbnkgcmVhc29uLiBUaGF0J3Mgd2hhdCB3ZWJwYWNrIHdvdWxkIG5vcm1hbGx5IGRvOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9ibG9iLzNhYTZiNmJjM2E2NC9saWIvaG1yL0hvdE1vZHVsZVJlcGxhY2VtZW50LnJ1bnRpbWUuanMjTDI5Ni1MMjk4XG4gICAgICBkaXNwYXRjaGVyLm9uQmVmb3JlUmVmcmVzaCgpXG4gICAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2FwaS9ob3QtbW9kdWxlLXJlcGxhY2VtZW50LyNhcHBseVxuICAgICAgcmV0dXJuIG1vZHVsZS5ob3QuYXBwbHkoKVxuICAgIH0pXG4gICAgLnRoZW4oXG4gICAgICAodXBkYXRlZE1vZHVsZXM6IChzdHJpbmcgfCBudW1iZXIpW10gfCBudWxsKSA9PiB7XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhudWxsLCB1cGRhdGVkTW9kdWxlcylcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgaGFuZGxlQXBwbHlVcGRhdGVzKGVyciwgbnVsbClcbiAgICAgIH1cbiAgICApXG59XG5cbi8qKiBIYW5kbGVzIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlciBmb3IgdGhlIEFwcCBSb3V0ZXIuICovXG5mdW5jdGlvbiBwcm9jZXNzTWVzc2FnZShcbiAgb2JqOiBITVJfQUNUSU9OX1RZUEVTLFxuICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCxcbiAgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2U6IChtc2c6IFR1cmJvcGFja01zZ1RvQnJvd3NlcikgPT4gdm9pZCxcbiAgcm91dGVyOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSb3V0ZXI+LFxuICBhcHBJc3JNYW5pZmVzdFJlZjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVmPixcbiAgcGF0aG5hbWVSZWY6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlZj5cbikge1xuICBpZiAoISgnYWN0aW9uJyBpbiBvYmopKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVFcnJvcnMoZXJyb3JzOiBSZWFkb25seUFycmF5PHVua25vd24+KSB7XG4gICAgLy8gXCJNYXNzYWdlXCIgd2VicGFjayBtZXNzYWdlcy5cbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRXZWJwYWNrTWVzc2FnZXMoe1xuICAgICAgZXJyb3JzOiBlcnJvcnMsXG4gICAgICB3YXJuaW5nczogW10sXG4gICAgfSlcblxuICAgIC8vIE9ubHkgc2hvdyB0aGUgZmlyc3QgZXJyb3IuXG4gICAgZGlzcGF0Y2hlci5vbkJ1aWxkRXJyb3IoZm9ybWF0dGVkLmVycm9yc1swXSlcblxuICAgIC8vIEFsc28gbG9nIHRoZW0gdG8gdGhlIGNvbnNvbGUuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWQuZXJyb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zb2xlLmVycm9yKHN0cmlwQW5zaShmb3JtYXR0ZWQuZXJyb3JzW2ldKSlcbiAgICB9XG5cbiAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byByZWxvYWQgbm93LlxuICAgIC8vIFdlIHdpbGwgcmVsb2FkIG9uIG5leHQgc3VjY2VzcyBpbnN0ZWFkLlxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQihmb3JtYXR0ZWQuZXJyb3JzWzBdKVxuICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlSG90VXBkYXRlKCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIGNvbnN0IGhtclVwZGF0ZSA9IHR1cmJvcGFja0htciEub25CdWlsdCgpXG4gICAgICBpZiAoaG1yVXBkYXRlICE9IG51bGwpIHtcbiAgICAgICAgcmVwb3J0SG1yTGF0ZW5jeShcbiAgICAgICAgICBzZW5kTWVzc2FnZSxcbiAgICAgICAgICBbLi4uaG1yVXBkYXRlLnVwZGF0ZWRNb2R1bGVzXSxcbiAgICAgICAgICBobXJVcGRhdGUuc3RhcnRNc1NpbmNlRXBvY2gsXG4gICAgICAgICAgaG1yVXBkYXRlLmVuZE1zU2luY2VFcG9jaCxcbiAgICAgICAgICAvLyBzdXBwcmVzcyB0aGUgYGNsaWVudC1obXItbGF0ZW5jeWAgZXZlbnQgaWYgdGhlIHVwZGF0ZSB3YXMgYSBuby1vcDpcbiAgICAgICAgICBobXJVcGRhdGUuaGFzVXBkYXRlc1xuICAgICAgICApXG4gICAgICB9XG4gICAgICBkaXNwYXRjaGVyLm9uQnVpbGRPaygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeUFwcGx5VXBkYXRlc1dlYnBhY2soc2VuZE1lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChvYmouYWN0aW9uKSB7XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuSVNSX01BTklGRVNUOiB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0RFVl9JTkRJQ0FUT1IpIHtcbiAgICAgICAgaWYgKGFwcElzck1hbmlmZXN0UmVmKSB7XG4gICAgICAgICAgYXBwSXNyTWFuaWZlc3RSZWYuY3VycmVudCA9IG9iai5kYXRhXG5cbiAgICAgICAgICAvLyBoYW5kbGUgaW5pdGlhbCBzdGF0dXMgb24gcmVjZWl2aW5nIG1hbmlmZXN0XG4gICAgICAgICAgLy8gbmF2aWdhdGlvbiBpcyBoYW5kbGVkIGluIHVzZUVmZmVjdCBmb3IgcGF0aG5hbWUgY2hhbmdlc1xuICAgICAgICAgIC8vIGFzIHdlJ2xsIHJlY2VpdmUgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYmVmb3JlIHVzZVBhdGhuYW1lXG4gICAgICAgICAgLy8gdHJpZ2dlcnMgZm9yIG5ldyB2YWx1ZVxuICAgICAgICAgIGlmICgocGF0aG5hbWVSZWYuY3VycmVudCBhcyBzdHJpbmcpIGluIG9iai5kYXRhKSB7XG4gICAgICAgICAgICBkaXNwYXRjaGVyLm9uU3RhdGljSW5kaWNhdG9yKHRydWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IoZmFsc2UpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5CVUlMRElORzoge1xuICAgICAgZGlzcGF0Y2hlci5idWlsZGluZ0luZGljYXRvclNob3coKVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgIHR1cmJvcGFja0htciEub25CdWlsZGluZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3ZWJwYWNrU3RhcnRNc1NpbmNlRXBvY2ggPSBEYXRlLm5vdygpXG4gICAgICAgIHNldFBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrKClcbiAgICAgICAgY29uc29sZS5sb2coJ1tGYXN0IFJlZnJlc2hdIHJlYnVpbGRpbmcnKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQ6XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuU1lOQzoge1xuICAgICAgZGlzcGF0Y2hlci5idWlsZGluZ0luZGljYXRvckhpZGUoKVxuXG4gICAgICBpZiAob2JqLmhhc2gpIHtcbiAgICAgICAgaGFuZGxlQXZhaWxhYmxlSGFzaChvYmouaGFzaClcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBlcnJvcnMsIHdhcm5pbmdzIH0gPSBvYmpcblxuICAgICAgLy8gSXMgdW5kZWZpbmVkIHdoZW4gaXQncyBhICdidWlsdCcgZXZlbnRcbiAgICAgIGlmICgndmVyc2lvbkluZm8nIGluIG9iaikgZGlzcGF0Y2hlci5vblZlcnNpb25JbmZvKG9iai52ZXJzaW9uSW5mbylcbiAgICAgIGlmICgnZGVidWcnIGluIG9iaiAmJiBvYmouZGVidWcpIGRpc3BhdGNoZXIub25EZWJ1Z0luZm8ob2JqLmRlYnVnKVxuICAgICAgaWYgKCdkZXZJbmRpY2F0b3InIGluIG9iaikgZGlzcGF0Y2hlci5vbkRldkluZGljYXRvcihvYmouZGV2SW5kaWNhdG9yKVxuICAgICAgaWYgKCdkZXZUb29sc0NvbmZpZycgaW4gb2JqKVxuICAgICAgICBkaXNwYXRjaGVyLm9uRGV2VG9vbHNDb25maWcob2JqLmRldlRvb2xzQ29uZmlnKVxuXG4gICAgICBjb25zdCBoYXNFcnJvcnMgPSBCb29sZWFuKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKVxuICAgICAgLy8gQ29tcGlsYXRpb24gd2l0aCBlcnJvcnMgKGUuZy4gc3ludGF4IGVycm9yIG9yIG1pc3NpbmcgbW9kdWxlcykuXG4gICAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiAnY2xpZW50LWVycm9yJyxcbiAgICAgICAgICAgIGVycm9yQ291bnQ6IGVycm9ycy5sZW5ndGgsXG4gICAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIGhhbmRsZUVycm9ycyhlcnJvcnMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNXYXJuaW5ncyA9IEJvb2xlYW4od2FybmluZ3MgJiYgd2FybmluZ3MubGVuZ3RoKVxuICAgICAgaWYgKGhhc1dhcm5pbmdzKSB7XG4gICAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiAnY2xpZW50LXdhcm5pbmcnLFxuICAgICAgICAgICAgd2FybmluZ0NvdW50OiB3YXJuaW5ncy5sZW5ndGgsXG4gICAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByaW50IHdhcm5pbmdzIHRvIHRoZSBjb25zb2xlLlxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlcyA9IGZvcm1hdFdlYnBhY2tNZXNzYWdlcyh7XG4gICAgICAgICAgd2FybmluZ3M6IHdhcm5pbmdzLFxuICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgIH0pXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWRNZXNzYWdlcy53YXJuaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICdUaGVyZSB3ZXJlIG1vcmUgd2FybmluZ3MgaW4gb3RoZXIgZmlsZXMuXFxuJyArXG4gICAgICAgICAgICAgICAgJ1lvdSBjYW4gZmluZCBhIGNvbXBsZXRlIGxvZyBpbiB0aGUgdGVybWluYWwuJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS53YXJuKHN0cmlwQW5zaShmb3JtYXR0ZWRNZXNzYWdlcy53YXJuaW5nc1tpXSkpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBObyBlYXJseSByZXR1cm4gaGVyZSBhcyB3ZSBuZWVkIHRvIGFwcGx5IG1vZHVsZXMgaW4gdGhlIHNhbWUgd2F5IGJldHdlZW4gd2FybmluZ3Mgb25seSBhbmQgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5nc1xuICAgICAgfVxuXG4gICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50OiAnY2xpZW50LXN1Y2Nlc3MnLFxuICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgfSlcbiAgICAgIClcblxuICAgICAgaWYgKG9iai5hY3Rpb24gPT09IEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5CVUlMVCkge1xuICAgICAgICBoYW5kbGVIb3RVcGRhdGUoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19DT05ORUNURUQ6IHtcbiAgICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlKHtcbiAgICAgICAgdHlwZTogSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19DT05ORUNURUQsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBzZXNzaW9uSWQ6IG9iai5kYXRhLnNlc3Npb25JZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5UVVJCT1BBQ0tfTUVTU0FHRToge1xuICAgICAgdHVyYm9wYWNrSG1yIS5vblR1cmJvcGFja01lc3NhZ2Uob2JqKVxuICAgICAgZGlzcGF0Y2hlci5vbkJlZm9yZVJlZnJlc2goKVxuICAgICAgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX01FU1NBR0UsXG4gICAgICAgIGRhdGE6IG9iai5kYXRhLFxuICAgICAgfSlcbiAgICAgIGlmIChSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SKVxuICAgICAgICBwZXJmb3JtRnVsbFJlbG9hZChudWxsLCBzZW5kTWVzc2FnZSlcbiAgICAgIH1cbiAgICAgIGRpc3BhdGNoZXIub25SZWZyZXNoKClcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIC8vIFRPRE8tQVBQOiBtYWtlIHNlcnZlciBjb21wb25lbnQgY2hhbmdlIG1vcmUgZ3JhbnVsYXJcbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfQ09NUE9ORU5UX0NIQU5HRVM6IHtcbiAgICAgIHR1cmJvcGFja0htcj8ub25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzKClcbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdzZXJ2ZXItY29tcG9uZW50LXJlbG9hZC1wYWdlJyxcbiAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgaGFzaDogb2JqLmhhc2gsXG4gICAgICAgIH0pXG4gICAgICApXG5cbiAgICAgIC8vIFN0b3JlIHRoZSBsYXRlc3QgaGFzaCBpbiBhIHNlc3Npb24gY29va2llIHNvIHRoYXQgaXQncyBzZW50IGJhY2sgdG8gdGhlXG4gICAgICAvLyBzZXJ2ZXIgd2l0aCBhbnkgc3Vic2VxdWVudCByZXF1ZXN0cy5cbiAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke05FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUV9PSR7b2JqLmhhc2h9O3BhdGg9L2BcblxuICAgICAgaWYgKFxuICAgICAgICBSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvciB8fFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaWQgPT09ICdfX25leHRfZXJyb3JfXydcbiAgICAgICkge1xuICAgICAgICBpZiAocmVsb2FkaW5nKSByZXR1cm5cbiAgICAgICAgcmVsb2FkaW5nID0gdHJ1ZVxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gICAgICB9XG5cbiAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgIHJvdXRlci5obXJSZWZyZXNoKClcbiAgICAgICAgZGlzcGF0Y2hlci5vblJlZnJlc2goKVxuICAgICAgfSlcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQigpXG4gICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5SRUxPQURfUEFHRToge1xuICAgICAgdHVyYm9wYWNrSG1yPy5vblJlbG9hZFBhZ2UoKVxuICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudDogJ2NsaWVudC1yZWxvYWQtcGFnZScsXG4gICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgaWYgKHJlbG9hZGluZykgcmV0dXJuXG4gICAgICByZWxvYWRpbmcgPSB0cnVlXG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkFEREVEX1BBR0U6XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuUkVNT1ZFRF9QQUdFOiB7XG4gICAgICB0dXJib3BhY2tIbXI/Lm9uUGFnZUFkZFJlbW92ZSgpXG4gICAgICAvLyBUT0RPLUFQUDogcG90ZW50aWFsbHkgb25seSByZWZyZXNoIGlmIHRoZSBjdXJyZW50bHkgdmlld2VkIHBhZ2Ugd2FzIGFkZGVkL3JlbW92ZWQuXG4gICAgICByZXR1cm4gcm91dGVyLmhtclJlZnJlc2goKVxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgZXJyb3JKU09OIH0gPSBvYmpcbiAgICAgIGlmIChlcnJvckpTT04pIHtcbiAgICAgICAgY29uc3QgeyBtZXNzYWdlLCBzdGFjayB9ID0gSlNPTi5wYXJzZShlcnJvckpTT04pXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpXG4gICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2tcbiAgICAgICAgaGFuZGxlRXJyb3JzKFtlcnJvcl0pXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuREVWX1BBR0VTX01BTklGRVNUX1VQREFURToge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkRFVlRPT0xTX0NPTkZJRzoge1xuICAgICAgZGlzcGF0Y2hlci5vbkRldlRvb2xzQ29uZmlnKG9iai5kYXRhKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIG9iaiBzYXRpc2ZpZXMgbmV2ZXJcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG90UmVsb2FkKHtcbiAgYXNzZXRQcmVmaXgsXG4gIGNoaWxkcmVuLFxuICBnbG9iYWxFcnJvcixcbn06IHtcbiAgYXNzZXRQcmVmaXg6IHN0cmluZ1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGdsb2JhbEVycm9yOiBHbG9iYWxFcnJvclN0YXRlXG59KSB7XG4gIHVzZUVycm9ySGFuZGxlcihkaXNwYXRjaGVyLm9uVW5oYW5kbGVkRXJyb3IsIGRpc3BhdGNoZXIub25VbmhhbmRsZWRSZWplY3Rpb24pXG5cbiAgY29uc3Qgd2ViU29ja2V0UmVmID0gdXNlV2Vic29ja2V0KGFzc2V0UHJlZml4KVxuXG4gIHVzZVdlYnNvY2tldFBpbmcod2ViU29ja2V0UmVmKVxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZVNlbmRNZXNzYWdlKHdlYlNvY2tldFJlZilcbiAgdXNlRm9yd2FyZENvbnNvbGVMb2cod2ViU29ja2V0UmVmKVxuICBjb25zdCBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSA9IHVzZVR1cmJvcGFjayhzZW5kTWVzc2FnZSwgKGVycikgPT5cbiAgICBwZXJmb3JtRnVsbFJlbG9hZChlcnIsIHNlbmRNZXNzYWdlKVxuICApXG5cbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICAvLyBXZSBkb24ndCB3YW50IGFjY2VzcyBvZiB0aGUgcGF0aG5hbWUgZm9yIHRoZSBkZXYgdG9vbHMgdG8gdHJpZ2dlciBhIGR5bmFtaWNcbiAgLy8gYWNjZXNzIChhcyB0aGUgZGV2IG92ZXJsYXkgd2lsbCBuZXZlciBiZSBwcmVzZW50IGluIHByb2R1Y3Rpb24pLlxuICBjb25zdCBwYXRobmFtZSA9IHVzZVVudHJhY2tlZFBhdGhuYW1lKClcbiAgY29uc3QgYXBwSXNyTWFuaWZlc3RSZWYgPSB1c2VSZWY8UmVjb3JkPHN0cmluZywgZmFsc2UgfCBudW1iZXI+Pih7fSlcbiAgY29uc3QgcGF0aG5hbWVSZWYgPSB1c2VSZWYocGF0aG5hbWUpXG5cbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9ERVZfSU5ESUNBVE9SKSB7XG4gICAgLy8gdGhpcyBjb25kaXRpb25hbCBpcyBvbmx5IGZvciBkZWFkLWNvZGUgZWxpbWluYXRpb24gd2hpY2hcbiAgICAvLyBpc24ndCBhIHJ1bnRpbWUgY29uZGl0aW9uYWwgb25seSBidWlsZC10aW1lIHNvIGlnbm9yZSBob29rcyBydWxlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHBhdGhuYW1lUmVmLmN1cnJlbnQgPSBwYXRobmFtZVxuXG4gICAgICBjb25zdCBhcHBJc3JNYW5pZmVzdCA9IGFwcElzck1hbmlmZXN0UmVmLmN1cnJlbnRcblxuICAgICAgaWYgKGFwcElzck1hbmlmZXN0KSB7XG4gICAgICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZSBpbiBhcHBJc3JNYW5pZmVzdCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkaXNwYXRjaGVyLm9uU3RhdGljSW5kaWNhdG9yKHRydWUpXG4gICAgICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgICAgICAgICAgIGlmIChyZWFzb24gaW5zdGFuY2VvZiBET01FeGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgLy8gTW9zdCBsaWtlbHkgYSBTZWN1cml0eUVycm9yLCBiZWNhdXNlIG9mIGFuIHVuYXZhaWxhYmxlIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICBtZXNzYWdlID0gcmVhc29uLnN0YWNrID8/IHJlYXNvbi5tZXNzYWdlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXJyb3I6ICcgKyByZWFzb24ubWVzc2FnZSArICdcXG4nICsgKHJlYXNvbi5zdGFjayA/PyAnJylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSAnVW5leHBlY3RlZCBFeGNlcHRpb246ICcgKyByZWFzb25cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbSE1SXSAnICsgbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlzcGF0Y2hlci5vblN0YXRpY0luZGljYXRvcihmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtwYXRobmFtZV0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHdlYnNvY2tldCA9IHdlYlNvY2tldFJlZi5jdXJyZW50XG4gICAgaWYgKCF3ZWJzb2NrZXQpIHJldHVyblxuXG4gICAgY29uc3QgaGFuZGxlciA9IChldmVudDogTWVzc2FnZUV2ZW50PGFueT4pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSlcbiAgICAgICAgcHJvY2Vzc01lc3NhZ2UoXG4gICAgICAgICAgb2JqLFxuICAgICAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgICAgIHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlLFxuICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICBhcHBJc3JNYW5pZmVzdFJlZixcbiAgICAgICAgICBwYXRobmFtZVJlZlxuICAgICAgICApXG4gICAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgICAgcmVwb3J0SW52YWxpZEhtck1lc3NhZ2UoZXZlbnQsIGVycilcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3ZWJzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZXIpXG4gICAgcmV0dXJuICgpID0+IHdlYnNvY2tldC5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlcilcbiAgfSwgW1xuICAgIHNlbmRNZXNzYWdlLFxuICAgIHJvdXRlcixcbiAgICB3ZWJTb2NrZXRSZWYsXG4gICAgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UsXG4gICAgYXBwSXNyTWFuaWZlc3RSZWYsXG4gIF0pXG4gIHJldHVybiAoXG4gICAgPEFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5IGdsb2JhbEVycm9yPXtnbG9iYWxFcnJvcn0+XG4gICAgICA8UmVwbGF5U3NyT25seUVycm9ycyBvbkJsb2NraW5nRXJyb3I9e2Rpc3BhdGNoZXIub3BlbkVycm9yT3ZlcmxheX0gLz5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0FwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5PlxuICApXG59XG4iXSwibmFtZXMiOlsiSG90UmVsb2FkIiwid2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlIiwibW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCIsIl9fbmV4dERldkNsaWVudElkIiwiTWF0aCIsInJvdW5kIiwicmFuZG9tIiwiRGF0ZSIsIm5vdyIsInJlbG9hZGluZyIsIndlYnBhY2tTdGFydE1zU2luY2VFcG9jaCIsInR1cmJvcGFja0htciIsInByb2Nlc3MiLCJlbnYiLCJUVVJCT1BBQ0siLCJUdXJib3BhY2tIbXIiLCJwZW5kaW5nSG90VXBkYXRlV2VicGFjayIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrIiwic2V0UGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2siLCJoYW5kbGVBdmFpbGFibGVIYXNoIiwiaGFzaCIsImlzVXBkYXRlQXZhaWxhYmxlIiwiX193ZWJwYWNrX2hhc2hfXyIsImNhbkFwcGx5VXBkYXRlcyIsIm1vZHVsZSIsImhvdCIsInN0YXR1cyIsImFmdGVyQXBwbHlVcGRhdGVzIiwiZm4iLCJoYW5kbGVyIiwicmVtb3ZlU3RhdHVzSGFuZGxlciIsImFkZFN0YXR1c0hhbmRsZXIiLCJwZXJmb3JtRnVsbFJlbG9hZCIsImVyciIsInNlbmRNZXNzYWdlIiwic3RhY2tUcmFjZSIsInN0YWNrIiwic3BsaXQiLCJzbGljZSIsImpvaW4iLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiaGFkUnVudGltZUVycm9yIiwiUnVudGltZUVycm9ySGFuZGxlciIsImRlcGVuZGVuY3lDaGFpbiIsInVuZGVmaW5lZCIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVsb2FkIiwidHJ5QXBwbHlVcGRhdGVzV2VicGFjayIsImRpc3BhdGNoZXIiLCJvbkJ1aWxkT2siLCJyZXBvcnRIbXJMYXRlbmN5IiwiaGFuZGxlQXBwbHlVcGRhdGVzIiwidXBkYXRlZE1vZHVsZXMiLCJjb25zb2xlIiwid2FybiIsIlJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQiLCJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IiLCJvblJlZnJlc2giLCJfX05FWFRfVEVTVF9NT0RFIiwic2VsZiIsIl9fTkVYVF9ITVJfQ0IiLCJjaGVjayIsInRoZW4iLCJvbkJlZm9yZVJlZnJlc2giLCJhcHBseSIsInByb2Nlc3NNZXNzYWdlIiwib2JqIiwicHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UiLCJyb3V0ZXIiLCJhcHBJc3JNYW5pZmVzdFJlZiIsInBhdGhuYW1lUmVmIiwiaGFuZGxlRXJyb3JzIiwiZXJyb3JzIiwiZm9ybWF0dGVkIiwiZm9ybWF0V2VicGFja01lc3NhZ2VzIiwid2FybmluZ3MiLCJvbkJ1aWxkRXJyb3IiLCJpIiwibGVuZ3RoIiwiZXJyb3IiLCJzdHJpcEFuc2kiLCJoYW5kbGVIb3RVcGRhdGUiLCJobXJVcGRhdGUiLCJvbkJ1aWx0Iiwic3RhcnRNc1NpbmNlRXBvY2giLCJlbmRNc1NpbmNlRXBvY2giLCJoYXNVcGRhdGVzIiwiYWN0aW9uIiwiSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSIiwiSVNSX01BTklGRVNUIiwiX19ORVhUX0RFVl9JTkRJQ0FUT1IiLCJjdXJyZW50IiwiZGF0YSIsIm9uU3RhdGljSW5kaWNhdG9yIiwiQlVJTERJTkciLCJidWlsZGluZ0luZGljYXRvclNob3ciLCJvbkJ1aWxkaW5nIiwibG9nIiwiQlVJTFQiLCJTWU5DIiwiYnVpbGRpbmdJbmRpY2F0b3JIaWRlIiwib25WZXJzaW9uSW5mbyIsInZlcnNpb25JbmZvIiwiZGVidWciLCJvbkRlYnVnSW5mbyIsIm9uRGV2SW5kaWNhdG9yIiwiZGV2SW5kaWNhdG9yIiwib25EZXZUb29sc0NvbmZpZyIsImRldlRvb2xzQ29uZmlnIiwiaGFzRXJyb3JzIiwiQm9vbGVhbiIsImVycm9yQ291bnQiLCJjbGllbnRJZCIsImhhc1dhcm5pbmdzIiwid2FybmluZ0NvdW50IiwiZm9ybWF0dGVkTWVzc2FnZXMiLCJUVVJCT1BBQ0tfQ09OTkVDVEVEIiwidHlwZSIsInNlc3Npb25JZCIsIlRVUkJPUEFDS19NRVNTQUdFIiwib25UdXJib3BhY2tNZXNzYWdlIiwiU0VSVkVSX0NPTVBPTkVOVF9DSEFOR0VTIiwib25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzIiwiZG9jdW1lbnQiLCJjb29raWUiLCJORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFIiwiZG9jdW1lbnRFbGVtZW50IiwiaWQiLCJzdGFydFRyYW5zaXRpb24iLCJobXJSZWZyZXNoIiwiUkVMT0FEX1BBR0UiLCJvblJlbG9hZFBhZ2UiLCJBRERFRF9QQUdFIiwiUkVNT1ZFRF9QQUdFIiwib25QYWdlQWRkUmVtb3ZlIiwiU0VSVkVSX0VSUk9SIiwiZXJyb3JKU09OIiwicGFyc2UiLCJFcnJvciIsIkRFVl9QQUdFU19NQU5JRkVTVF9VUERBVEUiLCJERVZUT09MU19DT05GSUciLCJhc3NldFByZWZpeCIsImNoaWxkcmVuIiwiZ2xvYmFsRXJyb3IiLCJ1c2VFcnJvckhhbmRsZXIiLCJvblVuaGFuZGxlZEVycm9yIiwib25VbmhhbmRsZWRSZWplY3Rpb24iLCJ3ZWJTb2NrZXRSZWYiLCJ1c2VXZWJzb2NrZXQiLCJ1c2VXZWJzb2NrZXRQaW5nIiwidXNlU2VuZE1lc3NhZ2UiLCJ1c2VGb3J3YXJkQ29uc29sZUxvZyIsInVzZVR1cmJvcGFjayIsInVzZVJvdXRlciIsInBhdGhuYW1lIiwidXNlVW50cmFja2VkUGF0aG5hbWUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJhcHBJc3JNYW5pZmVzdCIsInJlYXNvbiIsIkRPTUV4Y2VwdGlvbiIsIndlYnNvY2tldCIsInJlcG9ydEludmFsaWRIbXJNZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJBcHBEZXZPdmVybGF5RXJyb3JCb3VuZGFyeSIsIlJlcGxheVNzck9ubHlFcnJvcnMiLCJvbkJsb2NraW5nRXJyb3IiLCJvcGVuRXJyb3JPdmVybGF5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js": /*!*****************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js ***! \*****************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nvar _s = $RefreshSig$();\n\"use strict\";\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 useSendMessage: function() {\n return useSendMessage;\n },\n useTurbopack: function() {\n return useTurbopack;\n },\n useWebsocket: function() {\n return useWebsocket;\n },\n useWebsocketPing: function() {\n return useWebsocketPing;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _getsocketurl = __webpack_require__(/*! ../get-socket-url */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\");\nfunction useWebsocket(assetPrefix) {\n const webSocketRef = (0, _react.useRef)(undefined);\n (0, _react.useEffect)(()=>{\n if (webSocketRef.current) {\n return;\n }\n const url = (0, _getsocketurl.getSocketUrl)(assetPrefix);\n webSocketRef.current = new window.WebSocket(\"\" + url + \"/_next/webpack-hmr\");\n }, [\n assetPrefix\n ]);\n return webSocketRef;\n}\nfunction useSendMessage(webSocketRef) {\n const sendMessage = (0, _react.useCallback)((data)=>{\n const socket = webSocketRef.current;\n if (!socket || socket.readyState !== socket.OPEN) {\n return;\n }\n return socket.send(data);\n }, [\n webSocketRef\n ]);\n return sendMessage;\n}\nfunction useTurbopack(sendMessage, onUpdateError) {\n const turbopackState = (0, _react.useRef)({\n init: false,\n // Until the dynamic import resolves, queue any turbopack messages which will be replayed.\n queue: [],\n callback: undefined\n });\n const processTurbopackMessage = (0, _react.useCallback)((msg)=>{\n const { callback, queue } = turbopackState.current;\n if (callback) {\n callback(msg);\n } else {\n queue.push(msg);\n }\n }, []);\n (0, _react.useEffect)(()=>{\n const { current: initCurrent } = turbopackState;\n // TODO(WEB-1589): only install if `process.turbopack` set.\n if (initCurrent.init) {\n return;\n }\n initCurrent.init = true;\n Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! @vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts */ \"(app-pages-browser)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\"))).then((param)=>{\n let { connect } = param;\n const { current } = turbopackState;\n connect({\n addMessageListener (cb) {\n current.callback = cb;\n // Replay all Turbopack messages before we were able to establish the HMR client.\n for (const msg of current.queue){\n cb(msg);\n }\n current.queue = undefined;\n },\n sendMessage,\n onUpdateError\n });\n });\n }, [\n sendMessage,\n onUpdateError\n ]);\n return processTurbopackMessage;\n}\nfunction useWebsocketPing(websocketRef) {\n _s();\n const sendMessage = useSendMessage(websocketRef);\n const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n (0, _react.useEffect)(()=>{\n // Never send pings when using Turbopack as it's not used.\n // Pings were originally used to keep track of active routes in on-demand-entries with webpack.\n if (false) {}\n // Taken from on-demand-entries-client.js\n const interval = setInterval(()=>{\n sendMessage(JSON.stringify({\n event: 'ping',\n tree,\n appDirRoute: true\n }));\n }, 2500);\n return ()=>clearInterval(interval);\n }, [\n tree,\n sendMessage\n ]);\n}\n_s(useWebsocketPing, \"wUse5NG7XMV1uhKK1kY0LLDje8k=\", false, function() {\n return [\n useSendMessage\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=use-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL3VzZS13ZWJzb2NrZXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBcUJnQkEsY0FBYztlQUFkQTs7SUFjQUMsWUFBWTtlQUFaQTs7SUE5QkFDLFlBQVk7ZUFBWkE7O0lBc0ZBQyxnQkFBZ0I7ZUFBaEJBOzs7bUNBM0YyQzsyREFDakI7MENBQ2I7QUFHdEIsU0FBU0QsYUFBYUUsV0FBbUI7SUFDOUMsTUFBTUMsZUFBZUMsQ0FBQUEsR0FBQUEsT0FBQUEsTUFBTSxFQUFZQztJQUV2Q0MsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLElBQUlILGFBQWFJLE9BQU8sRUFBRTtZQUN4QjtRQUNGO1FBRUEsTUFBTUMsTUFBTUMsQ0FBQUEsR0FBQUEsY0FBQUEsWUFBQUEsRUFBYVA7UUFFekJDLGFBQWFJLE9BQU8sR0FBRyxJQUFJRyxPQUFPQyxTQUFTLENBQUUsS0FBRUgsTUFBSTtJQUNyRCxHQUFHO1FBQUNOO0tBQVk7SUFFaEIsT0FBT0M7QUFDVDtBQUVPLFNBQVNMLGVBQWVLLFlBQTZDO0lBQzFFLE1BQU1TLGNBQWNDLENBQUFBLEdBQUFBLE9BQUFBLFdBQUFBLEVBQ2xCLENBQUNDO1FBQ0MsTUFBTUMsU0FBU1osYUFBYUksT0FBTztRQUNuQyxJQUFJLENBQUNRLFVBQVVBLE9BQU9DLFVBQVUsS0FBS0QsT0FBT0UsSUFBSSxFQUFFO1lBQ2hEO1FBQ0Y7UUFDQSxPQUFPRixPQUFPRyxJQUFJLENBQUNKO0lBQ3JCLEdBQ0E7UUFBQ1g7S0FBYTtJQUVoQixPQUFPUztBQUNUO0FBRU8sU0FBU2IsYUFDZGEsV0FBOEMsRUFDOUNPLGFBQXFDO0lBRXJDLE1BQU1DLGlCQUFpQmhCLENBQUFBLEdBQUFBLE9BQUFBLE1BQUFBLEVBSXBCO1FBQ0RpQixNQUFNO1FBQ04sMEZBQTBGO1FBQzFGQyxPQUFPLEVBQUU7UUFDVEMsVUFBVWxCO0lBQ1o7SUFFQSxNQUFNbUIsMEJBQTBCWCxDQUFBQSxHQUFBQSxPQUFBQSxXQUFBQSxFQUFZLENBQUNZO1FBQzNDLE1BQU0sRUFBRUYsUUFBUSxFQUFFRCxLQUFLLEVBQUUsR0FBR0YsZUFBZWIsT0FBTztRQUNsRCxJQUFJZ0IsVUFBVTtZQUNaQSxTQUFTRTtRQUNYLE9BQU87WUFDTEgsTUFBT0ksSUFBSSxDQUFDRDtRQUNkO0lBQ0YsR0FBRyxFQUFFO0lBRUxuQixDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1IsTUFBTSxFQUFFQyxTQUFTb0IsV0FBVyxFQUFFLEdBQUdQO1FBQ2pDLDJEQUEyRDtRQUMzRCxJQUFJTyxZQUFZTixJQUFJLEVBQUU7WUFDcEI7UUFDRjtRQUNBTSxZQUFZTixJQUFJLEdBQUc7NkVBRW5CLG1CQUNFLENBQ0Esb0tBQ0FPLElBQUksQ0FBQztnQkFBQyxFQUFFQyxPQUFPLEVBQUU7WUFDakIsTUFBTSxFQUFFdEIsT0FBTyxFQUFFLEdBQUdhO1lBQ3BCUyxRQUFRO2dCQUNOQyxvQkFBbUJDLEVBQXdDO29CQUN6RHhCLFFBQVFnQixRQUFRLEdBQUdRO29CQUVuQixpRkFBaUY7b0JBQ2pGLEtBQUssTUFBTU4sT0FBT2xCLFFBQVFlLEtBQUssQ0FBRzt3QkFDaENTLEdBQUdOO29CQUNMO29CQUNBbEIsUUFBUWUsS0FBSyxHQUFHakI7Z0JBQ2xCO2dCQUNBTztnQkFDQU87WUFDRjtRQUNGO0lBQ0YsR0FBRztRQUFDUDtRQUFhTztLQUFjO0lBRS9CLE9BQU9LO0FBQ1Q7QUFFTywwQkFDTFEsWUFBNkM7O0lBRTdDLE1BQU1wQiw2QkFBNkJvQjtJQUNuQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxPQUFBQSxVQUFBQSxFQUFXQywrQkFBQUEseUJBQXlCO0lBRXJEN0IsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLDBEQUEwRDtRQUMxRCwrRkFBK0Y7UUFDL0YsSUFBSThCLEtBQXFCLEVBQUUsRUFFMUI7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTUcsV0FBV0MsWUFBWTtZQUMzQjVCLFlBQ0U2QixLQUFLQyxTQUFTLENBQUM7Z0JBQ2JDLE9BQU87Z0JBQ1BWO2dCQUNBVyxhQUFhO1lBQ2Y7UUFFSixHQUFHO1FBQ0gsT0FBTyxJQUFNQyxjQUFjTjtJQUM3QixHQUFHO1FBQUNOO1FBQU1yQjtLQUFZO0FBQ3hCO0dBekJnQlg7O1FBR01IIiwic291cmNlcyI6WyIvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2FwcC91c2Utd2Vic29ja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZ2V0U29ja2V0VXJsIH0gZnJvbSAnLi4vZ2V0LXNvY2tldC11cmwnXG5pbXBvcnQgdHlwZSB7IFR1cmJvcGFja01zZ1RvQnJvd3NlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlV2Vic29ja2V0KGFzc2V0UHJlZml4OiBzdHJpbmcpIHtcbiAgY29uc3Qgd2ViU29ja2V0UmVmID0gdXNlUmVmPFdlYlNvY2tldD4odW5kZWZpbmVkKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdlYlNvY2tldFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSBnZXRTb2NrZXRVcmwoYXNzZXRQcmVmaXgpXG5cbiAgICB3ZWJTb2NrZXRSZWYuY3VycmVudCA9IG5ldyB3aW5kb3cuV2ViU29ja2V0KGAke3VybH0vX25leHQvd2VicGFjay1obXJgKVxuICB9LCBbYXNzZXRQcmVmaXhdKVxuXG4gIHJldHVybiB3ZWJTb2NrZXRSZWZcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbmRNZXNzYWdlKHdlYlNvY2tldFJlZjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlV2Vic29ja2V0Pikge1xuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNvY2tldCA9IHdlYlNvY2tldFJlZi5jdXJyZW50XG4gICAgICBpZiAoIXNvY2tldCB8fCBzb2NrZXQucmVhZHlTdGF0ZSAhPT0gc29ja2V0Lk9QRU4pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICByZXR1cm4gc29ja2V0LnNlbmQoZGF0YSlcbiAgICB9LFxuICAgIFt3ZWJTb2NrZXRSZWZdXG4gIClcbiAgcmV0dXJuIHNlbmRNZXNzYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUdXJib3BhY2soXG4gIHNlbmRNZXNzYWdlOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VTZW5kTWVzc2FnZT4sXG4gIG9uVXBkYXRlRXJyb3I6IChlcnI6IHVua25vd24pID0+IHZvaWRcbikge1xuICBjb25zdCB0dXJib3BhY2tTdGF0ZSA9IHVzZVJlZjx7XG4gICAgaW5pdDogYm9vbGVhblxuICAgIHF1ZXVlOiBBcnJheTxUdXJib3BhY2tNc2dUb0Jyb3dzZXI+IHwgdW5kZWZpbmVkXG4gICAgY2FsbGJhY2s6ICgobXNnOiBUdXJib3BhY2tNc2dUb0Jyb3dzZXIpID0+IHZvaWQpIHwgdW5kZWZpbmVkXG4gIH0+KHtcbiAgICBpbml0OiBmYWxzZSxcbiAgICAvLyBVbnRpbCB0aGUgZHluYW1pYyBpbXBvcnQgcmVzb2x2ZXMsIHF1ZXVlIGFueSB0dXJib3BhY2sgbWVzc2FnZXMgd2hpY2ggd2lsbCBiZSByZXBsYXllZC5cbiAgICBxdWV1ZTogW10sXG4gICAgY2FsbGJhY2s6IHVuZGVmaW5lZCxcbiAgfSlcblxuICBjb25zdCBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtc2c6IFR1cmJvcGFja01zZ1RvQnJvd3NlcikgPT4ge1xuICAgIGNvbnN0IHsgY2FsbGJhY2ssIHF1ZXVlIH0gPSB0dXJib3BhY2tTdGF0ZS5jdXJyZW50XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhtc2cpXG4gICAgfSBlbHNlIHtcbiAgICAgIHF1ZXVlIS5wdXNoKG1zZylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgeyBjdXJyZW50OiBpbml0Q3VycmVudCB9ID0gdHVyYm9wYWNrU3RhdGVcbiAgICAvLyBUT0RPKFdFQi0xNTg5KTogb25seSBpbnN0YWxsIGlmIGBwcm9jZXNzLnR1cmJvcGFja2Agc2V0LlxuICAgIGlmIChpbml0Q3VycmVudC5pbml0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaW5pdEN1cnJlbnQuaW5pdCA9IHRydWVcblxuICAgIGltcG9ydChcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcmVxdWlyZXMgXCJtb2R1bGVSZXNvbHV0aW9uXCI6IFwibm9kZTE2XCIgaW4gdHNjb25maWcuanNvbiBhbmQgbm90IC50cyBleHRlbnNpb25cbiAgICAgICdAdmVyY2VsL3R1cmJvcGFjay1lY21hc2NyaXB0LXJ1bnRpbWUvYnJvd3Nlci9kZXYvaG1yLWNsaWVudC9obXItY2xpZW50LnRzJ1xuICAgICkudGhlbigoeyBjb25uZWN0IH0pID0+IHtcbiAgICAgIGNvbnN0IHsgY3VycmVudCB9ID0gdHVyYm9wYWNrU3RhdGVcbiAgICAgIGNvbm5lY3Qoe1xuICAgICAgICBhZGRNZXNzYWdlTGlzdGVuZXIoY2I6IChtc2c6IFR1cmJvcGFja01zZ1RvQnJvd3NlcikgPT4gdm9pZCkge1xuICAgICAgICAgIGN1cnJlbnQuY2FsbGJhY2sgPSBjYlxuXG4gICAgICAgICAgLy8gUmVwbGF5IGFsbCBUdXJib3BhY2sgbWVzc2FnZXMgYmVmb3JlIHdlIHdlcmUgYWJsZSB0byBlc3RhYmxpc2ggdGhlIEhNUiBjbGllbnQuXG4gICAgICAgICAgZm9yIChjb25zdCBtc2cgb2YgY3VycmVudC5xdWV1ZSEpIHtcbiAgICAgICAgICAgIGNiKG1zZylcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudC5xdWV1ZSA9IHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgICBzZW5kTWVzc2FnZSxcbiAgICAgICAgb25VcGRhdGVFcnJvcixcbiAgICAgIH0pXG4gICAgfSlcbiAgfSwgW3NlbmRNZXNzYWdlLCBvblVwZGF0ZUVycm9yXSlcblxuICByZXR1cm4gcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVdlYnNvY2tldFBpbmcoXG4gIHdlYnNvY2tldFJlZjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlV2Vic29ja2V0PlxuKSB7XG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlU2VuZE1lc3NhZ2Uod2Vic29ja2V0UmVmKVxuICBjb25zdCB7IHRyZWUgfSA9IHVzZUNvbnRleHQoR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE5ldmVyIHNlbmQgcGluZ3Mgd2hlbiB1c2luZyBUdXJib3BhY2sgYXMgaXQncyBub3QgdXNlZC5cbiAgICAvLyBQaW5ncyB3ZXJlIG9yaWdpbmFsbHkgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFjdGl2ZSByb3V0ZXMgaW4gb24tZGVtYW5kLWVudHJpZXMgd2l0aCB3ZWJwYWNrLlxuICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFRha2VuIGZyb20gb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50OiAncGluZycsXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgICBhcHBEaXJSb3V0ZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9LCAyNTAwKVxuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKVxuICB9LCBbdHJlZSwgc2VuZE1lc3NhZ2VdKVxufVxuIl0sIm5hbWVzIjpbInVzZVNlbmRNZXNzYWdlIiwidXNlVHVyYm9wYWNrIiwidXNlV2Vic29ja2V0IiwidXNlV2Vic29ja2V0UGluZyIsImFzc2V0UHJlZml4Iiwid2ViU29ja2V0UmVmIiwidXNlUmVmIiwidW5kZWZpbmVkIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInVybCIsImdldFNvY2tldFVybCIsIndpbmRvdyIsIldlYlNvY2tldCIsInNlbmRNZXNzYWdlIiwidXNlQ2FsbGJhY2siLCJkYXRhIiwic29ja2V0IiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwib25VcGRhdGVFcnJvciIsInR1cmJvcGFja1N0YXRlIiwiaW5pdCIsInF1ZXVlIiwiY2FsbGJhY2siLCJwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSIsIm1zZyIsInB1c2giLCJpbml0Q3VycmVudCIsInRoZW4iLCJjb25uZWN0IiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiY2IiLCJ3ZWJzb2NrZXRSZWYiLCJ0cmVlIiwidXNlQ29udGV4dCIsIkdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJwcm9jZXNzIiwiZW52IiwiVFVSQk9QQUNLIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImFwcERpclJvdXRlIiwiY2xlYXJJbnRlcnZhbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js": /*!**************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js ***! \**************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSocketUrl\", ({\n enumerable: true,\n get: function() {\n return getSocketUrl;\n }\n}));\nconst _normalizedassetprefix = __webpack_require__(/*! ../../../shared/lib/normalized-asset-prefix */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/normalized-asset-prefix.js\");\nfunction getSocketProtocol(assetPrefix) {\n let protocol = window.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 getSocketUrl(assetPrefix) {\n const prefix = (0, _normalizedassetprefix.normalizedAssetPrefix)(assetPrefix);\n const protocol = getSocketProtocol(assetPrefix || '');\n if (URL.canParse(prefix)) {\n // since normalized asset prefix is ensured to be a URL format,\n // we can safely replace the protocol\n return prefix.replace(/^http/, 'ws');\n }\n const { hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? \":\" + port : '') + prefix;\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=get-socket-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvZ2V0LXNvY2tldC11cmwuanMiLCJtYXBwaW5ncyI6Ijs7OztnREFhZ0JBOzs7ZUFBQUE7OzttREFic0I7QUFFdEMsU0FBU0Msa0JBQWtCQyxXQUFtQjtJQUM1QyxJQUFJQyxXQUFXQyxPQUFPQyxRQUFRLENBQUNGLFFBQVE7SUFFdkMsSUFBSTtRQUNGLHVCQUF1QjtRQUN2QkEsV0FBVyxJQUFJRyxJQUFJSixhQUFhQyxRQUFRO0lBQzFDLEVBQUUsVUFBTSxDQUFDO0lBRVQsT0FBT0EsYUFBYSxVQUFVLFFBQVE7QUFDeEM7QUFFTyxTQUFTSCxhQUFhRSxXQUErQjtJQUMxRCxNQUFNSyxTQUFTQyxDQUFBQSxHQUFBQSx1QkFBQUEscUJBQUFBLEVBQXNCTjtJQUNyQyxNQUFNQyxXQUFXRixrQkFBa0JDLGVBQWU7SUFFbEQsSUFBSUksSUFBSUcsUUFBUSxDQUFDRixTQUFTO1FBQ3hCLCtEQUErRDtRQUMvRCxxQ0FBcUM7UUFDckMsT0FBT0EsT0FBT0csT0FBTyxDQUFDLFNBQVM7SUFDakM7SUFFQSxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFLEdBQUdSLE9BQU9DLFFBQVE7SUFDMUMsT0FBVUYsV0FBUyxPQUFJUSxXQUFXQyxDQUFBQSxPQUFRLE1BQUdBLE9BQVMsR0FBQyxHQUFJTDtBQUM3RCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvZGV2L2hvdC1yZWxvYWRlci9nZXQtc29ja2V0LXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemVkQXNzZXRQcmVmaXggfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL25vcm1hbGl6ZWQtYXNzZXQtcHJlZml4J1xuXG5mdW5jdGlvbiBnZXRTb2NrZXRQcm90b2NvbChhc3NldFByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sXG5cbiAgdHJ5IHtcbiAgICAvLyBhc3NldFByZWZpeCBpcyBhIHVybFxuICAgIHByb3RvY29sID0gbmV3IFVSTChhc3NldFByZWZpeCkucHJvdG9jb2xcbiAgfSBjYXRjaCB7fVxuXG4gIHJldHVybiBwcm90b2NvbCA9PT0gJ2h0dHA6JyA/ICd3czonIDogJ3dzczonXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb2NrZXRVcmwoYXNzZXRQcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IHByZWZpeCA9IG5vcm1hbGl6ZWRBc3NldFByZWZpeChhc3NldFByZWZpeClcbiAgY29uc3QgcHJvdG9jb2wgPSBnZXRTb2NrZXRQcm90b2NvbChhc3NldFByZWZpeCB8fCAnJylcblxuICBpZiAoVVJMLmNhblBhcnNlKHByZWZpeCkpIHtcbiAgICAvLyBzaW5jZSBub3JtYWxpemVkIGFzc2V0IHByZWZpeCBpcyBlbnN1cmVkIHRvIGJlIGEgVVJMIGZvcm1hdCxcbiAgICAvLyB3ZSBjYW4gc2FmZWx5IHJlcGxhY2UgdGhlIHByb3RvY29sXG4gICAgcmV0dXJuIHByZWZpeC5yZXBsYWNlKC9eaHR0cC8sICd3cycpXG4gIH1cblxuICBjb25zdCB7IGhvc3RuYW1lLCBwb3J0IH0gPSB3aW5kb3cubG9jYXRpb25cbiAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0bmFtZX0ke3BvcnQgPyBgOiR7cG9ydH1gIDogJyd9JHtwcmVmaXh9YFxufVxuIl0sIm5hbWVzIjpbImdldFNvY2tldFVybCIsImdldFNvY2tldFByb3RvY29sIiwiYXNzZXRQcmVmaXgiLCJwcm90b2NvbCIsIndpbmRvdyIsImxvY2F0aW9uIiwiVVJMIiwicHJlZml4Iiwibm9ybWFsaXplZEFzc2V0UHJlZml4IiwiY2FuUGFyc2UiLCJyZXBsYWNlIiwiaG9zdG5hbWUiLCJwb3J0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/shared.js": /*!******************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/shared.js ***! \******************************************************************/ /***/ ((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 REACT_REFRESH_FULL_RELOAD: function() {\n return REACT_REFRESH_FULL_RELOAD;\n },\n REACT_REFRESH_FULL_RELOAD_FROM_ERROR: function() {\n return REACT_REFRESH_FULL_RELOAD_FROM_ERROR;\n },\n reportInvalidHmrMessage: function() {\n return reportInvalidHmrMessage;\n }\n});\nconst REACT_REFRESH_FULL_RELOAD = '[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.';\nconst REACT_REFRESH_FULL_RELOAD_FROM_ERROR = '[Fast Refresh] performing full reload because your application had an unrecoverable error';\nfunction reportInvalidHmrMessage(message, err) {\n console.warn('[HMR] Invalid message: ' + JSON.stringify(message) + '\\n' + (err instanceof Error && (err == null ? void 0 : err.stack) || ''));\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=shared.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvc2hhcmVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSx5QkFBeUI7ZUFBekJBOztJQVFBQyxvQ0FBb0M7ZUFBcENBOztJQUdHQyx1QkFBdUI7ZUFBdkJBOzs7QUFYVCxNQUFNRiw0QkFDWCw4Q0FDQSxtSUFDQSxxSUFDQSwrR0FDQSw4SEFDQTtBQUVLLE1BQU1DLHVDQUNYO0FBRUssU0FBU0Msd0JBQ2RDLE9BQWlELEVBQ2pEQyxHQUFZO0lBRVpDLFFBQVFDLElBQUksQ0FDViw0QkFDRUMsS0FBS0MsU0FBUyxDQUFDTCxXQUNmLE9BQ0MsQ0FBQ0MsZUFBZUssVUFBU0wsT0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsSUFBS00sS0FBQUEsS0FBVSxHQUFDO0FBRWhEIiwic291cmNlcyI6WyIvVXNlcnMvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3NoYXJlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhNUl9BQ1RJT05fVFlQRVMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcblxuZXhwb3J0IGNvbnN0IFJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQgPVxuICAnW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZFxcblxcbicgK1xuICBcIkZhc3QgUmVmcmVzaCB3aWxsIHBlcmZvcm0gYSBmdWxsIHJlbG9hZCB3aGVuIHlvdSBlZGl0IGEgZmlsZSB0aGF0J3MgaW1wb3J0ZWQgYnkgbW9kdWxlcyBvdXRzaWRlIG9mIHRoZSBSZWFjdCByZW5kZXJpbmcgdHJlZS5cXG5cIiArXG4gICdZb3UgbWlnaHQgaGF2ZSBhIGZpbGUgd2hpY2ggZXhwb3J0cyBhIFJlYWN0IGNvbXBvbmVudCBidXQgYWxzbyBleHBvcnRzIGEgdmFsdWUgdGhhdCBpcyBpbXBvcnRlZCBieSBhIG5vbi1SZWFjdCBjb21wb25lbnQgZmlsZS5cXG4nICtcbiAgJ0NvbnNpZGVyIG1pZ3JhdGluZyB0aGUgbm9uLVJlYWN0IGNvbXBvbmVudCBleHBvcnQgdG8gYSBzZXBhcmF0ZSBmaWxlIGFuZCBpbXBvcnRpbmcgaXQgaW50byBib3RoIGZpbGVzLlxcblxcbicgK1xuICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgcGFyZW50IGNvbXBvbmVudCBvZiB0aGUgY29tcG9uZW50IHlvdSBlZGl0ZWQgaXMgYSBjbGFzcyBjb21wb25lbnQsIHdoaWNoIGRpc2FibGVzIEZhc3QgUmVmcmVzaC5cXG4nICtcbiAgJ0Zhc3QgUmVmcmVzaCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyZW50IGZ1bmN0aW9uIGNvbXBvbmVudCBpbiB5b3VyIFJlYWN0IHRyZWUuJ1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SID1cbiAgJ1tGYXN0IFJlZnJlc2hdIHBlcmZvcm1pbmcgZnVsbCByZWxvYWQgYmVjYXVzZSB5b3VyIGFwcGxpY2F0aW9uIGhhZCBhbiB1bnJlY292ZXJhYmxlIGVycm9yJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0SW52YWxpZEhtck1lc3NhZ2UoXG4gIG1lc3NhZ2U6IEhNUl9BQ1RJT05fVFlQRVMgfCBNZXNzYWdlRXZlbnQ8dW5rbm93bj4sXG4gIGVycjogdW5rbm93blxuKSB7XG4gIGNvbnNvbGUud2FybihcbiAgICAnW0hNUl0gSW52YWxpZCBtZXNzYWdlOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpICtcbiAgICAgICdcXG4nICtcbiAgICAgICgoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyPy5zdGFjaykgfHwgJycpXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEIiwiUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SIiwicmVwb3J0SW52YWxpZEhtck1lc3NhZ2UiLCJtZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJKU09OIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJzdGFjayJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/shared.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js ***! \*****************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"TurbopackHmr\", ({\n enumerable: true,\n get: function() {\n return TurbopackHmr;\n }\n}));\nconst _class_private_field_loose_base = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_base */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\");\nconst _class_private_field_loose_key = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_key */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\");\n// How long to wait before reporting the HMR start, used to suppress irrelevant\n// `BUILDING` events. Does not impact reported latency.\nconst TURBOPACK_HMR_START_DELAY_MS = 100;\nvar _updatedModules = /*#__PURE__*/ _class_private_field_loose_key._(\"_updatedModules\"), _startMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_startMsSinceEpoch\"), _lastUpdateMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_lastUpdateMsSinceEpoch\"), _deferredReportHmrStartId = /*#__PURE__*/ _class_private_field_loose_key._(\"_deferredReportHmrStartId\"), _reportedHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_reportedHmrStart\"), // as it reports *any* compilation, including fully no-op/cached compilations\n// and those unrelated to HMR. Fixing this would require significant\n// architectural changes.\n//\n// Work around this by deferring any \"rebuilding\" message by 100ms. If we get\n// a BUILT event within that threshold and nothing has changed, just suppress\n// the message entirely.\n_runDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_runDeferredReportHmrStart\"), _cancelDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_cancelDeferredReportHmrStart\"), /** Helper for other `onEvent` methods. */ _onUpdate = /*#__PURE__*/ _class_private_field_loose_key._(\"_onUpdate\");\nclass TurbopackHmr {\n onBuilding() {\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = undefined;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] = Date.now();\n // report the HMR start after a short delay\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = setTimeout(()=>_class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart](), self.__NEXT_HMR_TURBOPACK_REPORT_NOISY_NOOP_EVENTS ? 0 : TURBOPACK_HMR_START_DELAY_MS);\n }\n onTurbopackMessage(msg) {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n const updatedModules = extractModulesFromTurbopackMessage(msg.data);\n for (const module1 of updatedModules){\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules].add(module1);\n }\n }\n onServerComponentChanges() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onReloadPage() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onPageAddRemove() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n /**\n * @returns `null` if the caller should ignore the update entirely. Returns an\n * object with `hasUpdates: false` if the caller should report the end of\n * the HMR in the browser console, but the HMR was a no-op.\n */ onBuilt() {\n // Check that we got *any* `TurbopackMessageAction`, even if\n // `updatedModules` is empty (not everything gets recorded there).\n //\n // There's also a case where `onBuilt` gets called before `onBuilding`,\n // which can happen during initial page load. Ignore that too!\n const hasUpdates = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] != null && _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] != null;\n if (!hasUpdates && !_class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart]) {\n // suppress the update entirely\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n return null;\n }\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n var _class_private_field_loose_base__lastUpdateMsSinceEpoch;\n const result = {\n hasUpdates,\n updatedModules: _class_private_field_loose_base._(this, _updatedModules)[_updatedModules],\n startMsSinceEpoch: _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch],\n endMsSinceEpoch: (_class_private_field_loose_base__lastUpdateMsSinceEpoch = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch]) != null ? _class_private_field_loose_base__lastUpdateMsSinceEpoch : Date.now()\n };\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n return result;\n }\n constructor(){\n Object.defineProperty(this, _runDeferredReportHmrStart, {\n value: runDeferredReportHmrStart\n });\n Object.defineProperty(this, _cancelDeferredReportHmrStart, {\n value: cancelDeferredReportHmrStart\n });\n Object.defineProperty(this, _onUpdate, {\n value: onUpdate\n });\n Object.defineProperty(this, _updatedModules, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _startMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _lastUpdateMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _deferredReportHmrStartId, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _reportedHmrStart, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n }\n}\nfunction runDeferredReportHmrStart() {\n if (_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] != null) {\n console.log('[Fast Refresh] rebuilding');\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = true;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n }\n}\nfunction cancelDeferredReportHmrStart() {\n clearTimeout(_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId]);\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = undefined;\n}\nfunction onUpdate() {\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = Date.now();\n}\nfunction extractModulesFromTurbopackMessage(data) {\n const updatedModules = new Set();\n const updates = Array.isArray(data) ? data : [\n data\n ];\n for (const update of updates){\n // TODO this won't capture changes to CSS since they don't result in a \"merged\" update\n if (update.type !== 'partial' || update.instruction.type !== 'ChunkListUpdate' || update.instruction.merged === undefined) {\n continue;\n }\n for (const mergedUpdate of update.instruction.merged){\n for (const name of Object.keys(mergedUpdate.entries)){\n const res = /(.*)\\s+\\[.*/.exec(name);\n if (res === null) {\n console.error('[Turbopack HMR] Expected module to match pattern: ' + name);\n continue;\n }\n updatedModules.add(res[1]);\n }\n }\n }\n return updatedModules;\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=turbopack-hot-reloader-common.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvdHVyYm9wYWNrLWhvdC1yZWxvYWRlci1jb21tb24uanMiLCJtYXBwaW5ncyI6Ijs7OztnREFvQmFBOzs7ZUFBQUE7Ozs7O0FBWGIsK0VBQStFO0FBQy9FLHVEQUF1RDtBQUN2RCxNQUFNQywrQkFBK0I7SUFVbkMscUZBQ0EsMkZBQ0EscUdBQ0EseUdBQ0EseUZBT0EsNEVBQTRFLENBQ0M7QUFDN0Usb0VBQW9FO0FBQ3BFLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx3QkFBd0I7QUFDeEIsMkdBUUEsaUhBb0JBLHdDQUF3QyxHQUN4QztBQWpESyxNQUFNRDtJQWlDWEUsYUFBYTtRQUNYLHNDQUFJLEVBQUMsb0RBQTBCQztRQUMvQixzQ0FBSSxFQUFDO1FBQ0wsc0NBQUksRUFBQywwQ0FBcUJDLEtBQUtDLEdBQUc7UUFFbEMsMkNBQTJDO1FBQzNDLHNDQUFJLEVBQUMsd0RBQTRCQyxXQUMvQixJQUFNLHNDQUFJLEVBQUMsMkRBRVhDLEtBQUtDLDZDQUE2QyxHQUM5QyxJQUNBUCxpQkFIc0U7SUFLOUU7SUFRQVEsbUJBQW1CQyxHQUEyQixFQUFFO1FBQzlDLHNDQUFJLEVBQUM7UUFDTCxNQUFNQyxpQkFBaUJDLG1DQUFtQ0YsSUFBSUcsSUFBSTtRQUNsRSxLQUFLLE1BQU1DLFdBQVVILGVBQWdCO1lBQ25DLHNDQUFJLEVBQUMsa0NBQWdCSSxHQUFHLENBQUNEO1FBQzNCO0lBQ0Y7SUFFQUUsMkJBQTJCO1FBQ3pCLHNDQUFJLEVBQUM7SUFDUDtJQUVBQyxlQUFlO1FBQ2Isc0NBQUksRUFBQztJQUNQO0lBRUFDLGtCQUFrQjtRQUNoQixzQ0FBSSxFQUFDO0lBQ1A7SUFFQTs7OztHQUlDLEdBQ0RDLFVBQTRCO1FBQzFCLDREQUE0RDtRQUM1RCxrRUFBa0U7UUFDbEUsRUFBRTtRQUNGLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsTUFBTUMsYUFDSixzQ0FBSSxFQUFDLHFEQUEyQixRQUFRLHNDQUFJLEVBQUMsMkNBQXNCO1FBQ3JFLElBQUksQ0FBQ0EsY0FBYyxDQUFDLHNDQUFJLEVBQUMsdUNBQW1CO1lBQzFDLCtCQUErQjtZQUMvQixzQ0FBSSxFQUFDO1lBQ0wsT0FBTztRQUNUO1FBQ0Esc0NBQUksRUFBQzs7UUFFTCxNQUFNQyxTQUFTO1lBQ2JEO1lBQ0FULGNBQWMsRUFBRSxzQ0FBSSxFQUFDO1lBQ3JCVyxpQkFBaUIsRUFBRSxzQ0FBSSxFQUFDO1lBQ3hCQyxpQkFBaUIsaUdBQUksRUFBQyx1SEFBMkJuQixLQUFLQyxHQUFHO1FBQzNEO1FBQ0Esc0NBQUksRUFBQyxvQ0FBa0IsSUFBSW1CO1FBQzNCLHNDQUFJLEVBQUMsd0NBQW9CO1FBQ3pCLE9BQU9IO0lBQ1Q7SUFoR0FJLGFBQWM7UUFhZDttQkFBQTs7UUFRQTttQkFBQTs7UUFxQkE7bUJBQUE7O1FBaERBOzttQkFBQTs7UUFDQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUNBOzttQkFBQTs7UUFDQTs7bUJBQUE7O1FBR0Usc0NBQUksRUFBQyxvQ0FBa0IsSUFBSUQ7UUFDM0Isc0NBQUksRUFBQyx3Q0FBb0I7SUFDM0I7QUE4RkY7QUFwRkU7SUFDRSxJQUFJLHNDQUFJLEVBQUMseURBQTZCLE1BQU07UUFDMUNFLFFBQVFDLEdBQUcsQ0FBQztRQUNaLHNDQUFJLEVBQUMsd0NBQW9CO1FBQ3pCLHNDQUFJLEVBQUM7SUFDUDtBQUNGO0FBRUE7SUFDRUMsYUFBYSxzQ0FBSSxFQUFDO0lBQ2xCLHNDQUFJLEVBQUMsd0RBQTRCekI7QUFDbkM7QUFrQkE7SUFDRSxzQ0FBSSxFQUFDO0lBQ0wsc0NBQUksRUFBQyxvREFBMEJDLEtBQUtDLEdBQUc7QUFDekM7QUFzREYsU0FBU08sbUNBQ1BDLElBQXlDO0lBRXpDLE1BQU1GLGlCQUE4QixJQUFJYTtJQUV4QyxNQUFNSyxVQUFVQyxNQUFNQyxPQUFPLENBQUNsQixRQUFRQSxPQUFPO1FBQUNBO0tBQUs7SUFDbkQsS0FBSyxNQUFNbUIsVUFBVUgsUUFBUztRQUM1QixzRkFBc0Y7UUFDdEYsSUFDRUcsT0FBT0MsSUFBSSxLQUFLLGFBQ2hCRCxPQUFPRSxXQUFXLENBQUNELElBQUksS0FBSyxxQkFDNUJELE9BQU9FLFdBQVcsQ0FBQ0MsTUFBTSxLQUFLaEMsV0FDOUI7WUFDQTtRQUNGO1FBRUEsS0FBSyxNQUFNaUMsZ0JBQWdCSixPQUFPRSxXQUFXLENBQUNDLE1BQU0sQ0FBRTtZQUNwRCxLQUFLLE1BQU1FLFFBQVFDLE9BQU9DLElBQUksQ0FBQ0gsYUFBYUksT0FBTyxFQUFHO2dCQUNwRCxNQUFNQyxNQUFNLGNBQWNDLElBQUksQ0FBQ0w7Z0JBQy9CLElBQUlJLFFBQVEsTUFBTTtvQkFDaEJmLFFBQVFpQixLQUFLLENBQ1gsdURBQXVETjtvQkFFekQ7Z0JBQ0Y7Z0JBRUExQixlQUFlSSxHQUFHLENBQUMwQixHQUFHLENBQUMsRUFBRTtZQUMzQjtRQUNGO0lBQ0Y7SUFFQSxPQUFPOUI7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL3NyYy9jbGllbnQvZGV2L2hvdC1yZWxvYWRlci90dXJib3BhY2staG90LXJlbG9hZGVyLWNvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR1cmJvcGFja01lc3NhZ2VBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlcydcbmltcG9ydCB0eXBlIHsgVXBkYXRlIGFzIFR1cmJvcGFja1VwZGF0ZSB9IGZyb20gJy4uLy4uLy4uL2J1aWxkL3N3Yy90eXBlcydcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX05FWFRfSE1SX1RVUkJPUEFDS19SRVBPUlRfTk9JU1lfTk9PUF9FVkVOVFM6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgfVxufVxuXG4vLyBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSByZXBvcnRpbmcgdGhlIEhNUiBzdGFydCwgdXNlZCB0byBzdXBwcmVzcyBpcnJlbGV2YW50XG4vLyBgQlVJTERJTkdgIGV2ZW50cy4gRG9lcyBub3QgaW1wYWN0IHJlcG9ydGVkIGxhdGVuY3kuXG5jb25zdCBUVVJCT1BBQ0tfSE1SX1NUQVJUX0RFTEFZX01TID0gMTAwXG5cbmludGVyZmFjZSBIbXJVcGRhdGUge1xuICBoYXNVcGRhdGVzOiBib29sZWFuXG4gIHVwZGF0ZWRNb2R1bGVzOiBTZXQ8c3RyaW5nPlxuICBzdGFydE1zU2luY2VFcG9jaDogbnVtYmVyXG4gIGVuZE1zU2luY2VFcG9jaDogbnVtYmVyXG59XG5cbmV4cG9ydCBjbGFzcyBUdXJib3BhY2tIbXIge1xuICAjdXBkYXRlZE1vZHVsZXM6IFNldDxzdHJpbmc+XG4gICNzdGFydE1zU2luY2VFcG9jaDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWRcbiAgI3JlcG9ydGVkSG1yU3RhcnQ6IGJvb2xlYW5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiN1cGRhdGVkTW9kdWxlcyA9IG5ldyBTZXQoKVxuICAgIHRoaXMuI3JlcG9ydGVkSG1yU3RhcnQgPSBmYWxzZVxuICB9XG5cbiAgLy8gSEFDSzogVHVyYm9wYWNrIHRlbmRzIHRvIGdlbmVyYXRlIGEgbG90IG9mIGlycmVsZXZhbnQgXCJCVUlMRElOR1wiIGFjdGlvbnMsXG4gIC8vIGFzIGl0IHJlcG9ydHMgKmFueSogY29tcGlsYXRpb24sIGluY2x1ZGluZyBmdWxseSBuby1vcC9jYWNoZWQgY29tcGlsYXRpb25zXG4gIC8vIGFuZCB0aG9zZSB1bnJlbGF0ZWQgdG8gSE1SLiBGaXhpbmcgdGhpcyB3b3VsZCByZXF1aXJlIHNpZ25pZmljYW50XG4gIC8vIGFyY2hpdGVjdHVyYWwgY2hhbmdlcy5cbiAgLy9cbiAgLy8gV29yayBhcm91bmQgdGhpcyBieSBkZWZlcnJpbmcgYW55IFwicmVidWlsZGluZ1wiIG1lc3NhZ2UgYnkgMTAwbXMuIElmIHdlIGdldFxuICAvLyBhIEJVSUxUIGV2ZW50IHdpdGhpbiB0aGF0IHRocmVzaG9sZCBhbmQgbm90aGluZyBoYXMgY2hhbmdlZCwganVzdCBzdXBwcmVzc1xuICAvLyB0aGUgbWVzc2FnZSBlbnRpcmVseS5cbiAgI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKSB7XG4gICAgaWYgKHRoaXMuI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZCAhPSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnW0Zhc3QgUmVmcmVzaF0gcmVidWlsZGluZycpXG4gICAgICB0aGlzLiNyZXBvcnRlZEhtclN0YXJ0ID0gdHJ1ZVxuICAgICAgdGhpcy4jY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG4gICAgfVxuICB9XG5cbiAgI2NhbmNlbERlZmVycmVkUmVwb3J0SG1yU3RhcnQoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZClcbiAgICB0aGlzLiNkZWZlcnJlZFJlcG9ydEhtclN0YXJ0SWQgPSB1bmRlZmluZWRcbiAgfVxuXG4gIG9uQnVpbGRpbmcoKSB7XG4gICAgdGhpcy4jbGFzdFVwZGF0ZU1zU2luY2VFcG9jaCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuI2NhbmNlbERlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuICAgIHRoaXMuI3N0YXJ0TXNTaW5jZUVwb2NoID0gRGF0ZS5ub3coKVxuXG4gICAgLy8gcmVwb3J0IHRoZSBITVIgc3RhcnQgYWZ0ZXIgYSBzaG9ydCBkZWxheVxuICAgIHRoaXMuI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB0aGlzLiNydW5EZWZlcnJlZFJlcG9ydEhtclN0YXJ0KCksXG4gICAgICAvLyBkZWJ1Z2dpbmcgZmVhdHVyZTogZG9uJ3QgZGVmZXIvc3VwcHJlc3Mgbm9pc3kgbm8tb3AgSE1SIHVwZGF0ZSBtZXNzYWdlc1xuICAgICAgc2VsZi5fX05FWFRfSE1SX1RVUkJPUEFDS19SRVBPUlRfTk9JU1lfTk9PUF9FVkVOVFNcbiAgICAgICAgPyAwXG4gICAgICAgIDogVFVSQk9QQUNLX0hNUl9TVEFSVF9ERUxBWV9NU1xuICAgIClcbiAgfVxuXG4gIC8qKiBIZWxwZXIgZm9yIG90aGVyIGBvbkV2ZW50YCBtZXRob2RzLiAqL1xuICAjb25VcGRhdGUoKSB7XG4gICAgdGhpcy4jcnVuRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG4gICAgdGhpcy4jbGFzdFVwZGF0ZU1zU2luY2VFcG9jaCA9IERhdGUubm93KClcbiAgfVxuXG4gIG9uVHVyYm9wYWNrTWVzc2FnZShtc2c6IFR1cmJvcGFja01lc3NhZ2VBY3Rpb24pIHtcbiAgICB0aGlzLiNvblVwZGF0ZSgpXG4gICAgY29uc3QgdXBkYXRlZE1vZHVsZXMgPSBleHRyYWN0TW9kdWxlc0Zyb21UdXJib3BhY2tNZXNzYWdlKG1zZy5kYXRhKVxuICAgIGZvciAoY29uc3QgbW9kdWxlIG9mIHVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICB0aGlzLiN1cGRhdGVkTW9kdWxlcy5hZGQobW9kdWxlKVxuICAgIH1cbiAgfVxuXG4gIG9uU2VydmVyQ29tcG9uZW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLiNvblVwZGF0ZSgpXG4gIH1cblxuICBvblJlbG9hZFBhZ2UoKSB7XG4gICAgdGhpcy4jb25VcGRhdGUoKVxuICB9XG5cbiAgb25QYWdlQWRkUmVtb3ZlKCkge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBgbnVsbGAgaWYgdGhlIGNhbGxlciBzaG91bGQgaWdub3JlIHRoZSB1cGRhdGUgZW50aXJlbHkuIFJldHVybnMgYW5cbiAgICogICBvYmplY3Qgd2l0aCBgaGFzVXBkYXRlczogZmFsc2VgIGlmIHRoZSBjYWxsZXIgc2hvdWxkIHJlcG9ydCB0aGUgZW5kIG9mXG4gICAqICAgdGhlIEhNUiBpbiB0aGUgYnJvd3NlciBjb25zb2xlLCBidXQgdGhlIEhNUiB3YXMgYSBuby1vcC5cbiAgICovXG4gIG9uQnVpbHQoKTogSG1yVXBkYXRlIHwgbnVsbCB7XG4gICAgLy8gQ2hlY2sgdGhhdCB3ZSBnb3QgKmFueSogYFR1cmJvcGFja01lc3NhZ2VBY3Rpb25gLCBldmVuIGlmXG4gICAgLy8gYHVwZGF0ZWRNb2R1bGVzYCBpcyBlbXB0eSAobm90IGV2ZXJ5dGhpbmcgZ2V0cyByZWNvcmRlZCB0aGVyZSkuXG4gICAgLy9cbiAgICAvLyBUaGVyZSdzIGFsc28gYSBjYXNlIHdoZXJlIGBvbkJ1aWx0YCBnZXRzIGNhbGxlZCBiZWZvcmUgYG9uQnVpbGRpbmdgLFxuICAgIC8vIHdoaWNoIGNhbiBoYXBwZW4gZHVyaW5nIGluaXRpYWwgcGFnZSBsb2FkLiBJZ25vcmUgdGhhdCB0b28hXG4gICAgY29uc3QgaGFzVXBkYXRlcyA9XG4gICAgICB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoICE9IG51bGwgJiYgdGhpcy4jc3RhcnRNc1NpbmNlRXBvY2ggIT0gbnVsbFxuICAgIGlmICghaGFzVXBkYXRlcyAmJiAhdGhpcy4jcmVwb3J0ZWRIbXJTdGFydCkge1xuICAgICAgLy8gc3VwcHJlc3MgdGhlIHVwZGF0ZSBlbnRpcmVseVxuICAgICAgdGhpcy4jY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICB0aGlzLiNydW5EZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcblxuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGhhc1VwZGF0ZXMsXG4gICAgICB1cGRhdGVkTW9kdWxlczogdGhpcy4jdXBkYXRlZE1vZHVsZXMsXG4gICAgICBzdGFydE1zU2luY2VFcG9jaDogdGhpcy4jc3RhcnRNc1NpbmNlRXBvY2ghLFxuICAgICAgZW5kTXNTaW5jZUVwb2NoOiB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoID8/IERhdGUubm93KCksXG4gICAgfVxuICAgIHRoaXMuI3VwZGF0ZWRNb2R1bGVzID0gbmV3IFNldCgpXG4gICAgdGhpcy4jcmVwb3J0ZWRIbXJTdGFydCA9IGZhbHNlXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RNb2R1bGVzRnJvbVR1cmJvcGFja01lc3NhZ2UoXG4gIGRhdGE6IFR1cmJvcGFja1VwZGF0ZSB8IFR1cmJvcGFja1VwZGF0ZVtdXG4pOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IHVwZGF0ZWRNb2R1bGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIGNvbnN0IHVwZGF0ZXMgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtkYXRhXVxuICBmb3IgKGNvbnN0IHVwZGF0ZSBvZiB1cGRhdGVzKSB7XG4gICAgLy8gVE9ETyB0aGlzIHdvbid0IGNhcHR1cmUgY2hhbmdlcyB0byBDU1Mgc2luY2UgdGhleSBkb24ndCByZXN1bHQgaW4gYSBcIm1lcmdlZFwiIHVwZGF0ZVxuICAgIGlmIChcbiAgICAgIHVwZGF0ZS50eXBlICE9PSAncGFydGlhbCcgfHxcbiAgICAgIHVwZGF0ZS5pbnN0cnVjdGlvbi50eXBlICE9PSAnQ2h1bmtMaXN0VXBkYXRlJyB8fFxuICAgICAgdXBkYXRlLmluc3RydWN0aW9uLm1lcmdlZCA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbWVyZ2VkVXBkYXRlIG9mIHVwZGF0ZS5pbnN0cnVjdGlvbi5tZXJnZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhtZXJnZWRVcGRhdGUuZW50cmllcykpIHtcbiAgICAgICAgY29uc3QgcmVzID0gLyguKilcXHMrXFxbLiovLmV4ZWMobmFtZSlcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnW1R1cmJvcGFjayBITVJdIEV4cGVjdGVkIG1vZHVsZSB0byBtYXRjaCBwYXR0ZXJuOiAnICsgbmFtZVxuICAgICAgICAgIClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlZE1vZHVsZXMuYWRkKHJlc1sxXSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZE1vZHVsZXNcbn1cbiJdLCJuYW1lcyI6WyJUdXJib3BhY2tIbXIiLCJUVVJCT1BBQ0tfSE1SX1NUQVJUX0RFTEFZX01TIiwib25CdWlsZGluZyIsInVuZGVmaW5lZCIsIkRhdGUiLCJub3ciLCJzZXRUaW1lb3V0Iiwic2VsZiIsIl9fTkVYVF9ITVJfVFVSQk9QQUNLX1JFUE9SVF9OT0lTWV9OT09QX0VWRU5UUyIsIm9uVHVyYm9wYWNrTWVzc2FnZSIsIm1zZyIsInVwZGF0ZWRNb2R1bGVzIiwiZXh0cmFjdE1vZHVsZXNGcm9tVHVyYm9wYWNrTWVzc2FnZSIsImRhdGEiLCJtb2R1bGUiLCJhZGQiLCJvblNlcnZlckNvbXBvbmVudENoYW5nZXMiLCJvblJlbG9hZFBhZ2UiLCJvblBhZ2VBZGRSZW1vdmUiLCJvbkJ1aWx0IiwiaGFzVXBkYXRlcyIsInJlc3VsdCIsInN0YXJ0TXNTaW5jZUVwb2NoIiwiZW5kTXNTaW5jZUVwb2NoIiwiU2V0IiwiY29uc3RydWN0b3IiLCJjb25zb2xlIiwibG9nIiwiY2xlYXJUaW1lb3V0IiwidXBkYXRlcyIsIkFycmF5IiwiaXNBcnJheSIsInVwZGF0ZSIsInR5cGUiLCJpbnN0cnVjdGlvbiIsIm1lcmdlZCIsIm1lcmdlZFVwZGF0ZSIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwiZW50cmllcyIsInJlcyIsImV4ZWMiLCJlcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/noop-turbopack-hmr.js ***! \*****************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// The Turbopack HMR client can't be properly omitted at the moment (WEB-1589),\n// so instead we remap its import to this file in webpack builds.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"connect\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nfunction connect() {}\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=noop-turbopack-hmr.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ub29wLXR1cmJvcGFjay1obXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBQy9FLGlFQUFpRTs7Ozs7MkNBQ2pEQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxXQUFXIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L2Rldi9ub29wLXR1cmJvcGFjay1obXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIFR1cmJvcGFjayBITVIgY2xpZW50IGNhbid0IGJlIHByb3Blcmx5IG9taXR0ZWQgYXQgdGhlIG1vbWVudCAoV0VCLTE1ODkpLFxuLy8gc28gaW5zdGVhZCB3ZSByZW1hcCBpdHMgaW1wb3J0IHRvIHRoaXMgZmlsZSBpbiB3ZWJwYWNrIGJ1aWxkcy5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0KCkge31cbiJdLCJuYW1lcyI6WyJjb25uZWN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/noop-turbopack-hmr.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/report-hmr-latency.js": /*!*****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/report-hmr-latency.js ***! \*****************************************************************/ /***/ ((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 reportHmrLatency;\n }\n}));\nfunction reportHmrLatency(sendMessage, updatedModules, startMsSinceEpoch, endMsSinceEpoch, hasUpdate) {\n if (hasUpdate === void 0) hasUpdate = true;\n const latencyMs = endMsSinceEpoch - startMsSinceEpoch;\n console.log(\"[Fast Refresh] done in \" + latencyMs + \"ms\");\n if (!hasUpdate) {\n return;\n }\n sendMessage(JSON.stringify({\n event: 'client-hmr-latency',\n id: window.__nextDevClientId,\n startTime: startMsSinceEpoch,\n endTime: endMsSinceEpoch,\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(latencyMs);\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=report-hmr-latency.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9yZXBvcnQtaG1yLWxhdGVuY3kuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FpQkE7OztlQUF3QkE7OztBQUFULFNBQVNBLGlCQUN0QkMsV0FBc0MsRUFDdENDLGNBQThDLEVBQzlDQyxpQkFBeUIsRUFDekJDLGVBQXVCLEVBQ3ZCQyxTQUF5QjtJQUF6QkEsSUFBQUEsY0FBQUEsS0FBQUEsR0FBQUEsWUFBcUI7SUFFckIsTUFBTUMsWUFBWUYsa0JBQWtCRDtJQUNwQ0ksUUFBUUMsR0FBRyxDQUFFLDRCQUF5QkYsWUFBVTtJQUNoRCxJQUFJLENBQUNELFdBQVc7UUFDZDtJQUNGO0lBQ0FKLFlBQ0VRLEtBQUtDLFNBQVMsQ0FBQztRQUNiQyxPQUFPO1FBQ1BDLElBQUlDLE9BQU9DLGlCQUFpQjtRQUM1QkMsV0FBV1o7UUFDWGEsU0FBU1o7UUFDVGEsTUFBTUosT0FBT0ssUUFBUSxDQUFDQyxRQUFRO1FBQzlCakI7UUFDQSxvRUFBb0U7UUFDcEUsc0RBQXNEO1FBQ3REa0IsY0FBY0MsU0FBU0MsZUFBZSxLQUFLO0lBQzdDO0lBRUYsSUFBSUMsS0FBS0MscUJBQXFCLEVBQUU7UUFDOUJELEtBQUtDLHFCQUFxQixDQUFDbEI7SUFDN0I7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9kZXYvcmVwb3J0LWhtci1sYXRlbmN5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19ORVhUX0hNUl9MQVRFTkNZX0NCOiAoKGxhdGVuY3lNczogbnVtYmVyKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogTG9ncyBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbXBsZXRlZCBITVIgdG8gdGhlIGNvbnNvbGUsIHRoZSBzZXJ2ZXIgKHZpYSBhXG4gKiBgY2xpZW50LWhtci1sYXRlbmN5YCBldmVudCksIGFuZCB0byBgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0JgIChhIGRlYnVnZ2luZ1xuICogaG9vaykuXG4gKlxuICogQHBhcmFtIGhhc1VwZGF0ZSBTZXQgdGhpcyB0byBgZmFsc2VgIHRvIGF2b2lkIHJlcG9ydGluZyB0aGUgSE1SIGV2ZW50IHZpYSBhXG4gKiAgIGBjbGllbnQtaG1yLWxhdGVuY3lgIGV2ZW50IG9yIHRvIGBzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQmAuIFVzZWQgYnlcbiAqICAgdHVyYm9wYWNrIHdoZW4gd2UgbXVzdCByZXBvcnQgYSBtZXNzYWdlIHRvIHRoZSBicm93c2VyIGNvbnNvbGUgKGJlY2F1c2Ugd2VcbiAqICAgYWxyZWFkeSBsb2dnZWQgYSBcInJlYnVpbGRpbmdcIiBtZXNzYWdlKSwgYnV0IGl0J3Mgbm90IGEgcmVhbCBITVIsIHNvIHdlXG4gKiAgIGRvbid0IHdhbnQgdG8gaW1wYWN0IG91ciB0ZWxlbWV0cnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcG9ydEhtckxhdGVuY3koXG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuICB1cGRhdGVkTW9kdWxlczogUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXI+LFxuICBzdGFydE1zU2luY2VFcG9jaDogbnVtYmVyLFxuICBlbmRNc1NpbmNlRXBvY2g6IG51bWJlcixcbiAgaGFzVXBkYXRlOiBib29sZWFuID0gdHJ1ZVxuKSB7XG4gIGNvbnN0IGxhdGVuY3lNcyA9IGVuZE1zU2luY2VFcG9jaCAtIHN0YXJ0TXNTaW5jZUVwb2NoXG4gIGNvbnNvbGUubG9nKGBbRmFzdCBSZWZyZXNoXSBkb25lIGluICR7bGF0ZW5jeU1zfW1zYClcbiAgaWYgKCFoYXNVcGRhdGUpIHtcbiAgICByZXR1cm5cbiAgfVxuICBzZW5kTWVzc2FnZShcbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ2NsaWVudC1obXItbGF0ZW5jeScsXG4gICAgICBpZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkLFxuICAgICAgc3RhcnRUaW1lOiBzdGFydE1zU2luY2VFcG9jaCxcbiAgICAgIGVuZFRpbWU6IGVuZE1zU2luY2VFcG9jaCxcbiAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHVwZGF0ZWRNb2R1bGVzLFxuICAgICAgLy8gV2hldGhlciB0aGUgcGFnZSAodGFiKSB3YXMgaGlkZGVuIGF0IHRoZSB0aW1lIHRoZSBldmVudCBvY2N1cnJlZC5cbiAgICAgIC8vIFRoaXMgY2FuIGltcGFjdCB0aGUgYWNjdXJhY3kgb2YgdGhlIGV2ZW50J3MgdGltaW5nLlxuICAgICAgaXNQYWdlSGlkZGVuOiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nLFxuICAgIH0pXG4gIClcbiAgaWYgKHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKSB7XG4gICAgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IobGF0ZW5jeU1zKVxuICB9XG59XG4iXSwibmFtZXMiOlsicmVwb3J0SG1yTGF0ZW5jeSIsInNlbmRNZXNzYWdlIiwidXBkYXRlZE1vZHVsZXMiLCJzdGFydE1zU2luY2VFcG9jaCIsImVuZE1zU2luY2VFcG9jaCIsImhhc1VwZGF0ZSIsImxhdGVuY3lNcyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJpZCIsIndpbmRvdyIsIl9fbmV4dERldkNsaWVudElkIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsInBhZ2UiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiaXNQYWdlSGlkZGVuIiwiZG9jdW1lbnQiLCJ2aXNpYmlsaXR5U3RhdGUiLCJzZWxmIiwiX19ORVhUX0hNUl9MQVRFTkNZX0NCIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/report-hmr-latency.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/dev/runtime-error-handler.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/runtime-error-handler.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RuntimeErrorHandler\", ({\n enumerable: true,\n get: function() {\n return RuntimeErrorHandler;\n }\n}));\nconst RuntimeErrorHandler = {\n hadRuntimeError: 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=runtime-error-handler.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ydW50aW1lLWVycm9yLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFBYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsc0JBQXNCO0lBQ2pDQyxpQkFBaUI7QUFDbkIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvZGV2L3J1bnRpbWUtZXJyb3ItaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUnVudGltZUVycm9ySGFuZGxlciA9IHtcbiAgaGFkUnVudGltZUVycm9yOiBmYWxzZSxcbn1cbiJdLCJuYW1lcyI6WyJSdW50aW1lRXJyb3JIYW5kbGVyIiwiaGFkUnVudGltZUVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/dev/runtime-error-handler.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/flight-data-helpers.js ***! \**************************************************************/ /***/ ((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 getFlightDataPartsFromPath: function() {\n return getFlightDataPartsFromPath;\n },\n getNextFlightSegmentPath: function() {\n return getNextFlightSegmentPath;\n },\n normalizeFlightData: function() {\n return normalizeFlightData;\n },\n prepareFlightRouterStateForRequest: function() {\n return prepareFlightRouterStateForRequest;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nfunction getFlightDataPartsFromPath(flightDataPath) {\n // Pick the last 4 items from the `FlightDataPath` to get the [tree, seedData, viewport, isHeadPartial].\n const flightDataPathLength = 4;\n // tree, seedData, and head are *always* the last three items in the `FlightDataPath`.\n const [tree, seedData, head, isHeadPartial] = flightDataPath.slice(-flightDataPathLength);\n // The `FlightSegmentPath` is everything except the last three items. For a root render, it won't be present.\n const segmentPath = flightDataPath.slice(0, -flightDataPathLength);\n var _segmentPath_;\n return {\n // TODO: Unify these two segment path helpers. We are inconsistently pushing an empty segment (\"\")\n // to the start of the segment path in some places which makes it hard to use solely the segment path.\n // Look for \"// TODO-APP: remove ''\" in the codebase.\n pathToSegment: segmentPath.slice(0, -1),\n segmentPath,\n // if the `FlightDataPath` corresponds with the root, there'll be no segment path,\n // in which case we default to ''.\n segment: (_segmentPath_ = segmentPath[segmentPath.length - 1]) != null ? _segmentPath_ : '',\n tree,\n seedData,\n head,\n isHeadPartial,\n isRootRender: flightDataPath.length === flightDataPathLength\n };\n}\nfunction getNextFlightSegmentPath(flightSegmentPath) {\n // Since `FlightSegmentPath` is a repeated tuple of `Segment` and `ParallelRouteKey`, we slice off two items\n // to get the next segment path.\n return flightSegmentPath.slice(2);\n}\nfunction normalizeFlightData(flightData) {\n // FlightData can be a string when the server didn't respond with a proper flight response,\n // or when a redirect happens, to signal to the client that it needs to perform an MPA navigation.\n if (typeof flightData === 'string') {\n return flightData;\n }\n return flightData.map((flightDataPath)=>getFlightDataPartsFromPath(flightDataPath));\n}\nfunction prepareFlightRouterStateForRequest(flightRouterState, isHmrRefresh) {\n // HMR requests need the complete, unmodified state for proper functionality\n if (isHmrRefresh) {\n return encodeURIComponent(JSON.stringify(flightRouterState));\n }\n return encodeURIComponent(JSON.stringify(stripClientOnlyDataFromFlightRouterState(flightRouterState)));\n}\n/**\n * Recursively strips client-only data from FlightRouterState while preserving\n * server-needed information for proper rendering decisions.\n */ function stripClientOnlyDataFromFlightRouterState(flightRouterState) {\n const [segment, parallelRoutes, _url, refreshMarker, isRootLayout, hasLoadingBoundary] = flightRouterState;\n // __PAGE__ segments are always fetched from the server, so there's\n // no need to send them up\n const cleanedSegment = stripSearchParamsFromPageSegment(segment);\n // Recursively process parallel routes\n const cleanedParallelRoutes = {};\n for (const [key, childState] of Object.entries(parallelRoutes)){\n cleanedParallelRoutes[key] = stripClientOnlyDataFromFlightRouterState(childState);\n }\n const result = [\n cleanedSegment,\n cleanedParallelRoutes,\n null,\n shouldPreserveRefreshMarker(refreshMarker) ? refreshMarker : null\n ];\n // Append optional fields if present\n if (isRootLayout !== undefined) {\n result[4] = isRootLayout;\n }\n if (hasLoadingBoundary !== undefined) {\n result[5] = hasLoadingBoundary;\n }\n return result;\n}\n/**\n * Strips search parameters from __PAGE__ segments to prevent sensitive\n * client-side data from being sent to the server.\n */ function stripSearchParamsFromPageSegment(segment) {\n if (typeof segment === 'string' && segment.startsWith(_segment.PAGE_SEGMENT_KEY + '?')) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n}\n/**\n * Determines whether the refresh marker should be sent to the server\n * Client-only markers like 'refresh' are stripped, while server-needed markers\n * like 'refetch' and 'inside-shared-layout' are preserved.\n */ function shouldPreserveRefreshMarker(refreshMarker) {\n return Boolean(refreshMarker && refreshMarker !== 'refresh');\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=flight-data-helpers.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2ZsaWdodC1kYXRhLWhlbHBlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0NnQkEsMEJBQTBCO2VBQTFCQTs7SUE0QkFDLHdCQUF3QjtlQUF4QkE7O0lBUUFDLG1CQUFtQjtlQUFuQkE7O0lBc0JBQyxrQ0FBa0M7ZUFBbENBOzs7cUNBakZpQjtBQXVCMUIsU0FBU0gsMkJBQ2RJLGNBQThCO0lBRTlCLHdHQUF3RztJQUN4RyxNQUFNQyx1QkFBdUI7SUFDN0Isc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQ0MsTUFBTUMsVUFBVUMsTUFBTUMsY0FBYyxHQUN6Q0wsZUFBZU0sS0FBSyxDQUFDLENBQUNMO0lBQ3hCLDZHQUE2RztJQUM3RyxNQUFNTSxjQUFjUCxlQUFlTSxLQUFLLENBQUMsR0FBRyxDQUFDTDtRQVVsQ007SUFSWCxPQUFPO1FBQ0wsa0dBQWtHO1FBQ2xHLHNHQUFzRztRQUN0RyxxREFBcUQ7UUFDckRDLGVBQWVELFlBQVlELEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDckNDO1FBQ0Esa0ZBQWtGO1FBQ2xGLGtDQUFrQztRQUNsQ0UsU0FBU0YsQ0FBQUEsZ0JBQUFBLFdBQVcsQ0FBQ0EsWUFBWUcsTUFBTSxHQUFHLE9BQUUsT0FBbkNILGdCQUF1QztRQUNoREw7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQU0sY0FBY1gsZUFBZVUsTUFBTSxLQUFLVDtJQUMxQztBQUNGO0FBRU8sU0FBU0oseUJBQ2RlLGlCQUFvQztJQUVwQyw0R0FBNEc7SUFDNUcsZ0NBQWdDO0lBQ2hDLE9BQU9BLGtCQUFrQk4sS0FBSyxDQUFDO0FBQ2pDO0FBRU8sU0FBU1Isb0JBQ2RlLFVBQXNCO0lBRXRCLDJGQUEyRjtJQUMzRixrR0FBa0c7SUFDbEcsSUFBSSxPQUFPQSxlQUFlLFVBQVU7UUFDbEMsT0FBT0E7SUFDVDtJQUVBLE9BQU9BLFdBQVdDLEdBQUcsQ0FBQyxDQUFDZCxpQkFDckJKLDJCQUEyQkk7QUFFL0I7QUFVTyxTQUFTRCxtQ0FDZGdCLGlCQUFvQyxFQUNwQ0MsWUFBc0I7SUFFdEIsNEVBQTRFO0lBQzVFLElBQUlBLGNBQWM7UUFDaEIsT0FBT0MsbUJBQW1CQyxLQUFLQyxTQUFTLENBQUNKO0lBQzNDO0lBRUEsT0FBT0UsbUJBQ0xDLEtBQUtDLFNBQVMsQ0FBQ0MseUNBQXlDTDtBQUU1RDtBQUVBOzs7Q0FHQyxHQUNELFNBQVNLLHlDQUNQTCxpQkFBb0M7SUFFcEMsTUFBTSxDQUNKTixTQUNBWSxnQkFDQUMsTUFDQUMsZUFDQUMsY0FDQUMsbUJBQ0QsR0FBR1Y7SUFFSixtRUFBbUU7SUFDbkUsMEJBQTBCO0lBQzFCLE1BQU1XLGlCQUFpQkMsaUNBQWlDbEI7SUFFeEQsc0NBQXNDO0lBQ3RDLE1BQU1tQix3QkFBOEQsQ0FBQztJQUNyRSxLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsV0FBVyxJQUFJQyxPQUFPQyxPQUFPLENBQUNYLGdCQUFpQjtRQUM5RE8scUJBQXFCLENBQUNDLElBQUksR0FDeEJULHlDQUF5Q1U7SUFDN0M7SUFFQSxNQUFNRyxTQUE0QjtRQUNoQ1A7UUFDQUU7UUFDQTtRQUNBTSw0QkFBNEJYLGlCQUFpQkEsZ0JBQWdCO0tBQzlEO0lBRUQsb0NBQW9DO0lBQ3BDLElBQUlDLGlCQUFpQlcsV0FBVztRQUM5QkYsTUFBTSxDQUFDLEVBQUUsR0FBR1Q7SUFDZDtJQUNBLElBQUlDLHVCQUF1QlUsV0FBVztRQUNwQ0YsTUFBTSxDQUFDLEVBQUUsR0FBR1I7SUFDZDtJQUVBLE9BQU9RO0FBQ1Q7QUFFQTs7O0NBR0MsR0FDRCxTQUFTTixpQ0FBaUNsQixPQUFnQjtJQUN4RCxJQUNFLE9BQU9BLFlBQVksWUFDbkJBLFFBQVEyQixVQUFVLENBQUNDLFNBQUFBLGdCQUFnQixHQUFHLE1BQ3RDO1FBQ0EsT0FBT0EsU0FBQUEsZ0JBQWdCO0lBQ3pCO0lBQ0EsT0FBTzVCO0FBQ1Q7QUFFQTs7OztDQUlDLEdBQ0QsU0FBU3lCLDRCQUNQWCxhQUFtQztJQUVuQyxPQUFPZSxRQUFRZixpQkFBaUJBLGtCQUFrQjtBQUNwRCIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L2ZsaWdodC1kYXRhLWhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBDYWNoZU5vZGVTZWVkRGF0YSxcbiAgRmxpZ2h0RGF0YSxcbiAgRmxpZ2h0RGF0YVBhdGgsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbiAgU2VnbWVudCxcbn0gZnJvbSAnLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEhlYWREYXRhIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSA9IHtcbiAgLyoqXG4gICAqIFRoZSBmdWxsIGBGbGlnaHRTZWdtZW50UGF0aGAgaW5jbHVzaXZlIG9mIHRoZSBmaW5hbCBgU2VnbWVudGBcbiAgICovXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuICAvKipcbiAgICogVGhlIGBGbGlnaHRTZWdtZW50UGF0aGAgZXhjbHVzaXZlIG9mIHRoZSBmaW5hbCBgU2VnbWVudGBcbiAgICovXG4gIHBhdGhUb1NlZ21lbnQ6IEZsaWdodFNlZ21lbnRQYXRoXG4gIHNlZ21lbnQ6IFNlZ21lbnRcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgc2VlZERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbFxuICBoZWFkOiBIZWFkRGF0YVxuICBpc0hlYWRQYXJ0aWFsOiBib29sZWFuXG4gIGlzUm9vdFJlbmRlcjogYm9vbGVhblxufVxuXG4vLyBUT0RPOiBXZSBzaG91bGQgb25seSBoYXZlIHRvIGV4cG9ydCBgbm9ybWFsaXplRmxpZ2h0RGF0YWAsIGhvd2V2ZXIgYmVjYXVzZSB0aGUgaW5pdGlhbCBmbGlnaHQgZGF0YVxuLy8gdGhhdCBnZXRzIHBhc3NlZCB0byBgY3JlYXRlSW5pdGlhbFJvdXRlclN0YXRlYCBkb2Vzbid0IGNvbmZvcm0gdG8gdGhlIGBGbGlnaHREYXRhUGF0aGAgdHlwZSAoaXQncyBtaXNzaW5nIHRoZSByb290IHNlZ21lbnQpXG4vLyB3ZSdyZSBjdXJyZW50bHkgZXhwb3J0aW5nIGl0IHNvIHdlIGNhbiB1c2UgaXQgZGlyZWN0bHkuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGFzIHBhcnQgb2YgdGhlIHVuaWZpY2F0aW9uIG9mXG4vLyB0aGUgZGlmZmVyZW50IHdheXMgd2UgZXhwcmVzcyBgRmxpZ2h0U2VnbWVudFBhdGhgLlxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsaWdodERhdGFQYXJ0c0Zyb21QYXRoKFxuICBmbGlnaHREYXRhUGF0aDogRmxpZ2h0RGF0YVBhdGhcbik6IE5vcm1hbGl6ZWRGbGlnaHREYXRhIHtcbiAgLy8gUGljayB0aGUgbGFzdCA0IGl0ZW1zIGZyb20gdGhlIGBGbGlnaHREYXRhUGF0aGAgdG8gZ2V0IHRoZSBbdHJlZSwgc2VlZERhdGEsIHZpZXdwb3J0LCBpc0hlYWRQYXJ0aWFsXS5cbiAgY29uc3QgZmxpZ2h0RGF0YVBhdGhMZW5ndGggPSA0XG4gIC8vIHRyZWUsIHNlZWREYXRhLCBhbmQgaGVhZCBhcmUgKmFsd2F5cyogdGhlIGxhc3QgdGhyZWUgaXRlbXMgaW4gdGhlIGBGbGlnaHREYXRhUGF0aGAuXG4gIGNvbnN0IFt0cmVlLCBzZWVkRGF0YSwgaGVhZCwgaXNIZWFkUGFydGlhbF0gPVxuICAgIGZsaWdodERhdGFQYXRoLnNsaWNlKC1mbGlnaHREYXRhUGF0aExlbmd0aClcbiAgLy8gVGhlIGBGbGlnaHRTZWdtZW50UGF0aGAgaXMgZXZlcnl0aGluZyBleGNlcHQgdGhlIGxhc3QgdGhyZWUgaXRlbXMuIEZvciBhIHJvb3QgcmVuZGVyLCBpdCB3b24ndCBiZSBwcmVzZW50LlxuICBjb25zdCBzZWdtZW50UGF0aCA9IGZsaWdodERhdGFQYXRoLnNsaWNlKDAsIC1mbGlnaHREYXRhUGF0aExlbmd0aClcblxuICByZXR1cm4ge1xuICAgIC8vIFRPRE86IFVuaWZ5IHRoZXNlIHR3byBzZWdtZW50IHBhdGggaGVscGVycy4gV2UgYXJlIGluY29uc2lzdGVudGx5IHB1c2hpbmcgYW4gZW1wdHkgc2VnbWVudCAoXCJcIilcbiAgICAvLyB0byB0aGUgc3RhcnQgb2YgdGhlIHNlZ21lbnQgcGF0aCBpbiBzb21lIHBsYWNlcyB3aGljaCBtYWtlcyBpdCBoYXJkIHRvIHVzZSBzb2xlbHkgdGhlIHNlZ21lbnQgcGF0aC5cbiAgICAvLyBMb29rIGZvciBcIi8vIFRPRE8tQVBQOiByZW1vdmUgJydcIiBpbiB0aGUgY29kZWJhc2UuXG4gICAgcGF0aFRvU2VnbWVudDogc2VnbWVudFBhdGguc2xpY2UoMCwgLTEpLFxuICAgIHNlZ21lbnRQYXRoLFxuICAgIC8vIGlmIHRoZSBgRmxpZ2h0RGF0YVBhdGhgIGNvcnJlc3BvbmRzIHdpdGggdGhlIHJvb3QsIHRoZXJlJ2xsIGJlIG5vIHNlZ21lbnQgcGF0aCxcbiAgICAvLyBpbiB3aGljaCBjYXNlIHdlIGRlZmF1bHQgdG8gJycuXG4gICAgc2VnbWVudDogc2VnbWVudFBhdGhbc2VnbWVudFBhdGgubGVuZ3RoIC0gMV0gPz8gJycsXG4gICAgdHJlZSxcbiAgICBzZWVkRGF0YSxcbiAgICBoZWFkLFxuICAgIGlzSGVhZFBhcnRpYWwsXG4gICAgaXNSb290UmVuZGVyOiBmbGlnaHREYXRhUGF0aC5sZW5ndGggPT09IGZsaWdodERhdGFQYXRoTGVuZ3RoLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgoXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuKTogRmxpZ2h0U2VnbWVudFBhdGgge1xuICAvLyBTaW5jZSBgRmxpZ2h0U2VnbWVudFBhdGhgIGlzIGEgcmVwZWF0ZWQgdHVwbGUgb2YgYFNlZ21lbnRgIGFuZCBgUGFyYWxsZWxSb3V0ZUtleWAsIHdlIHNsaWNlIG9mZiB0d28gaXRlbXNcbiAgLy8gdG8gZ2V0IHRoZSBuZXh0IHNlZ21lbnQgcGF0aC5cbiAgcmV0dXJuIGZsaWdodFNlZ21lbnRQYXRoLnNsaWNlKDIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVGbGlnaHREYXRhKFxuICBmbGlnaHREYXRhOiBGbGlnaHREYXRhXG4pOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nIHtcbiAgLy8gRmxpZ2h0RGF0YSBjYW4gYmUgYSBzdHJpbmcgd2hlbiB0aGUgc2VydmVyIGRpZG4ndCByZXNwb25kIHdpdGggYSBwcm9wZXIgZmxpZ2h0IHJlc3BvbnNlLFxuICAvLyBvciB3aGVuIGEgcmVkaXJlY3QgaGFwcGVucywgdG8gc2lnbmFsIHRvIHRoZSBjbGllbnQgdGhhdCBpdCBuZWVkcyB0byBwZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZsaWdodERhdGFcbiAgfVxuXG4gIHJldHVybiBmbGlnaHREYXRhLm1hcCgoZmxpZ2h0RGF0YVBhdGgpID0+XG4gICAgZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgoZmxpZ2h0RGF0YVBhdGgpXG4gIClcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJlcGFyZSB0aGUgZmxpZ2h0IHJvdXRlciBzdGF0ZSBmb3IgdGhlIHJlcXVlc3QuXG4gKiBJdCByZW1vdmVzIG1hcmtlcnMgdGhhdCBhcmUgbm90IG5lZWRlZCBieSB0aGUgc2VydmVyLCBhbmQgYXJlIHB1cmVseSB1c2VkXG4gKiBmb3Igc3Rhc2hpbmcgc3RhdGUgb24gdGhlIGNsaWVudC5cbiAqIEBwYXJhbSBmbGlnaHRSb3V0ZXJTdGF0ZSAtIFRoZSBmbGlnaHQgcm91dGVyIHN0YXRlIHRvIHByZXBhcmUuXG4gKiBAcGFyYW0gaXNIbXJSZWZyZXNoIC0gV2hldGhlciB0aGlzIGlzIGFuIEhNUiByZWZyZXNoIHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgcHJlcGFyZWQgZmxpZ2h0IHJvdXRlciBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gIGZsaWdodFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgaXNIbXJSZWZyZXNoPzogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgLy8gSE1SIHJlcXVlc3RzIG5lZWQgdGhlIGNvbXBsZXRlLCB1bm1vZGlmaWVkIHN0YXRlIGZvciBwcm9wZXIgZnVuY3Rpb25hbGl0eVxuICBpZiAoaXNIbXJSZWZyZXNoKSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShmbGlnaHRSb3V0ZXJTdGF0ZSkpXG4gIH1cblxuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgIEpTT04uc3RyaW5naWZ5KHN0cmlwQ2xpZW50T25seURhdGFGcm9tRmxpZ2h0Um91dGVyU3RhdGUoZmxpZ2h0Um91dGVyU3RhdGUpKVxuICApXG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgc3RyaXBzIGNsaWVudC1vbmx5IGRhdGEgZnJvbSBGbGlnaHRSb3V0ZXJTdGF0ZSB3aGlsZSBwcmVzZXJ2aW5nXG4gKiBzZXJ2ZXItbmVlZGVkIGluZm9ybWF0aW9uIGZvciBwcm9wZXIgcmVuZGVyaW5nIGRlY2lzaW9ucy5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDbGllbnRPbmx5RGF0YUZyb21GbGlnaHRSb3V0ZXJTdGF0ZShcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IFtcbiAgICBzZWdtZW50LFxuICAgIHBhcmFsbGVsUm91dGVzLFxuICAgIF91cmwsIC8vIEludGVudGlvbmFsbHkgdW51c2VkIC0gVVJMcyBhcmUgY2xpZW50LW9ubHlcbiAgICByZWZyZXNoTWFya2VyLFxuICAgIGlzUm9vdExheW91dCxcbiAgICBoYXNMb2FkaW5nQm91bmRhcnksXG4gIF0gPSBmbGlnaHRSb3V0ZXJTdGF0ZVxuXG4gIC8vIF9fUEFHRV9fIHNlZ21lbnRzIGFyZSBhbHdheXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIsIHNvIHRoZXJlJ3NcbiAgLy8gbm8gbmVlZCB0byBzZW5kIHRoZW0gdXBcbiAgY29uc3QgY2xlYW5lZFNlZ21lbnQgPSBzdHJpcFNlYXJjaFBhcmFtc0Zyb21QYWdlU2VnbWVudChzZWdtZW50KVxuXG4gIC8vIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgcGFyYWxsZWwgcm91dGVzXG4gIGNvbnN0IGNsZWFuZWRQYXJhbGxlbFJvdXRlczogeyBba2V5OiBzdHJpbmddOiBGbGlnaHRSb3V0ZXJTdGF0ZSB9ID0ge31cbiAgZm9yIChjb25zdCBba2V5LCBjaGlsZFN0YXRlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbGxlbFJvdXRlcykpIHtcbiAgICBjbGVhbmVkUGFyYWxsZWxSb3V0ZXNba2V5XSA9XG4gICAgICBzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlKGNoaWxkU3RhdGUpXG4gIH1cblxuICBjb25zdCByZXN1bHQ6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAgIGNsZWFuZWRTZWdtZW50LFxuICAgIGNsZWFuZWRQYXJhbGxlbFJvdXRlcyxcbiAgICBudWxsLCAvLyBVUkxzIG9taXR0ZWQgLSBzZXJ2ZXIgcmVjb25zdHJ1Y3RzIHBhdGhzIGZyb20gc2VnbWVudHNcbiAgICBzaG91bGRQcmVzZXJ2ZVJlZnJlc2hNYXJrZXIocmVmcmVzaE1hcmtlcikgPyByZWZyZXNoTWFya2VyIDogbnVsbCxcbiAgXVxuXG4gIC8vIEFwcGVuZCBvcHRpb25hbCBmaWVsZHMgaWYgcHJlc2VudFxuICBpZiAoaXNSb290TGF5b3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXN1bHRbNF0gPSBpc1Jvb3RMYXlvdXRcbiAgfVxuICBpZiAoaGFzTG9hZGluZ0JvdW5kYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXN1bHRbNV0gPSBoYXNMb2FkaW5nQm91bmRhcnlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBTdHJpcHMgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSBfX1BBR0VfXyBzZWdtZW50cyB0byBwcmV2ZW50IHNlbnNpdGl2ZVxuICogY2xpZW50LXNpZGUgZGF0YSBmcm9tIGJlaW5nIHNlbnQgdG8gdGhlIHNlcnZlci5cbiAqL1xuZnVuY3Rpb24gc3RyaXBTZWFyY2hQYXJhbXNGcm9tUGFnZVNlZ21lbnQoc2VnbWVudDogU2VnbWVudCk6IFNlZ21lbnQge1xuICBpZiAoXG4gICAgdHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnICYmXG4gICAgc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkgKyAnPycpXG4gICkge1xuICAgIHJldHVybiBQQUdFX1NFR01FTlRfS0VZXG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHJlZnJlc2ggbWFya2VyIHNob3VsZCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcbiAqIENsaWVudC1vbmx5IG1hcmtlcnMgbGlrZSAncmVmcmVzaCcgYXJlIHN0cmlwcGVkLCB3aGlsZSBzZXJ2ZXItbmVlZGVkIG1hcmtlcnNcbiAqIGxpa2UgJ3JlZmV0Y2gnIGFuZCAnaW5zaWRlLXNoYXJlZC1sYXlvdXQnIGFyZSBwcmVzZXJ2ZWQuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFByZXNlcnZlUmVmcmVzaE1hcmtlcihcbiAgcmVmcmVzaE1hcmtlcjogRmxpZ2h0Um91dGVyU3RhdGVbM11cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihyZWZyZXNoTWFya2VyICYmIHJlZnJlc2hNYXJrZXIgIT09ICdyZWZyZXNoJylcbn1cbiJdLCJuYW1lcyI6WyJnZXRGbGlnaHREYXRhUGFydHNGcm9tUGF0aCIsImdldE5leHRGbGlnaHRTZWdtZW50UGF0aCIsIm5vcm1hbGl6ZUZsaWdodERhdGEiLCJwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0IiwiZmxpZ2h0RGF0YVBhdGgiLCJmbGlnaHREYXRhUGF0aExlbmd0aCIsInRyZWUiLCJzZWVkRGF0YSIsImhlYWQiLCJpc0hlYWRQYXJ0aWFsIiwic2xpY2UiLCJzZWdtZW50UGF0aCIsInBhdGhUb1NlZ21lbnQiLCJzZWdtZW50IiwibGVuZ3RoIiwiaXNSb290UmVuZGVyIiwiZmxpZ2h0U2VnbWVudFBhdGgiLCJmbGlnaHREYXRhIiwibWFwIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJpc0htclJlZnJlc2giLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RyaXBDbGllbnRPbmx5RGF0YUZyb21GbGlnaHRSb3V0ZXJTdGF0ZSIsInBhcmFsbGVsUm91dGVzIiwiX3VybCIsInJlZnJlc2hNYXJrZXIiLCJpc1Jvb3RMYXlvdXQiLCJoYXNMb2FkaW5nQm91bmRhcnkiLCJjbGVhbmVkU2VnbWVudCIsInN0cmlwU2VhcmNoUGFyYW1zRnJvbVBhZ2VTZWdtZW50IiwiY2xlYW5lZFBhcmFsbGVsUm91dGVzIiwia2V5IiwiY2hpbGRTdGF0ZSIsIk9iamVjdCIsImVudHJpZXMiLCJyZXN1bHQiLCJzaG91bGRQcmVzZXJ2ZVJlZnJlc2hNYXJrZXIiLCJ1bmRlZmluZWQiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSIsIkJvb2xlYW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/flight-data-helpers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/has-base-path.js ***! \********************************************************/ /***/ ((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 */ \"(app-pages-browser)/./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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2hhcy1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OzsrQ0FJZ0JBOzs7ZUFBQUE7OzsyQ0FKYztBQUU5QixNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLFlBQVlLLElBQVk7SUFDdEMsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0QsTUFBTUo7QUFDN0IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvc3JjL2NsaWVudC9oYXMtYmFzZS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhdGhIYXNQcmVmaXggfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXRoLWhhcy1wcmVmaXgnXG5cbmNvbnN0IGJhc2VQYXRoID0gKHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggYXMgc3RyaW5nKSB8fCAnJ1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzQmFzZVBhdGgocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXRoSGFzUHJlZml4KHBhdGgsIGJhc2VQYXRoKVxufVxuIl0sIm5hbWVzIjpbImhhc0Jhc2VQYXRoIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJwYXRoSGFzUHJlZml4Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/has-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/lib/console.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/lib/console.js ***! \******************************************************/ /***/ ((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 formatConsoleArgs: function() {\n return formatConsoleArgs;\n },\n parseConsoleArgs: function() {\n return parseConsoleArgs;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(app-pages-browser)/./node_modules/next/dist/lib/is-error.js\"));\nfunction formatObject(arg, depth) {\n switch(typeof arg){\n case 'object':\n if (arg === null) {\n return 'null';\n } else if (Array.isArray(arg)) {\n let result = '[';\n if (depth < 1) {\n for(let i = 0; i < arg.length; i++){\n if (result !== '[') {\n result += ',';\n }\n if (Object.prototype.hasOwnProperty.call(arg, i)) {\n result += formatObject(arg[i], depth + 1);\n }\n }\n } else {\n result += arg.length > 0 ? '...' : '';\n }\n result += ']';\n return result;\n } else if (arg instanceof Error) {\n return arg + '';\n } else {\n const keys = Object.keys(arg);\n let result = '{';\n if (depth < 1) {\n for(let i = 0; i < keys.length; i++){\n const key = keys[i];\n const desc = Object.getOwnPropertyDescriptor(arg, 'key');\n if (desc && !desc.get && !desc.set) {\n const jsonKey = JSON.stringify(key);\n if (jsonKey !== '\"' + key + '\"') {\n result += jsonKey + ': ';\n } else {\n result += key + ': ';\n }\n result += formatObject(desc.value, depth + 1);\n }\n }\n } else {\n result += keys.length > 0 ? '...' : '';\n }\n result += '}';\n return result;\n }\n case 'string':\n return JSON.stringify(arg);\n case 'number':\n case 'bigint':\n case 'boolean':\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return String(arg);\n }\n}\nfunction formatConsoleArgs(args) {\n let message;\n let idx;\n if (typeof args[0] === 'string') {\n message = args[0];\n idx = 1;\n } else {\n message = '';\n idx = 0;\n }\n let result = '';\n let startQuote = false;\n for(let i = 0; i < message.length; ++i){\n const char = message[i];\n if (char !== '%' || i === message.length - 1 || idx >= args.length) {\n result += char;\n continue;\n }\n const code = message[++i];\n switch(code){\n case 'c':\n {\n // TODO: We should colorize with HTML instead of turning into a string.\n // Ignore for now.\n result = startQuote ? \"\" + result + \"]\" : \"[\" + result;\n startQuote = !startQuote;\n idx++;\n break;\n }\n case 'O':\n case 'o':\n {\n result += formatObject(args[idx++], 0);\n break;\n }\n case 'd':\n case 'i':\n {\n result += parseInt(args[idx++], 10);\n break;\n }\n case 'f':\n {\n result += parseFloat(args[idx++]);\n break;\n }\n case 's':\n {\n result += String(args[idx++]);\n break;\n }\n default:\n result += '%' + code;\n }\n }\n for(; idx < args.length; idx++){\n result += (idx > 0 ? ' ' : '') + formatObject(args[idx], 0);\n }\n return result;\n}\nfunction parseConsoleArgs(args) {\n // See\n // https://github.com/facebook/react/blob/65a56d0e99261481c721334a3ec4561d173594cd/packages/react-devtools-shared/src/backend/flight/renderer.js#L88-L93\n //\n // Logs replayed from the server look like this:\n // [\n // \"%c%s%c%o\\n\\n%s\\n\\n%s\\n\",\n // \"background: #e6e6e6; ...\",\n // \" Server \", // can also be e.g. \" Prerender \"\n // \"\",\n // Error,\n // \"The above error occurred in the component.\",\n // ...\n // ]\n if (args.length > 3 && typeof args[0] === 'string' && args[0].startsWith('%c%s%c') && typeof args[1] === 'string' && typeof args[2] === 'string' && typeof args[3] === 'string') {\n const environmentName = args[2];\n const maybeError = args[4];\n return {\n environmentName: environmentName.trim(),\n error: (0, _iserror.default)(maybeError) ? maybeError : null\n };\n }\n return {\n environmentName: null,\n error: null\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=console.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpYi9jb25zb2xlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTZEZ0JBLGlCQUFpQjtlQUFqQkE7O0lBMkRBQyxnQkFBZ0I7ZUFBaEJBOzs7OzhFQXhISTtBQUVwQixTQUFTQyxhQUFhQyxHQUFZLEVBQUVDLEtBQWE7SUFDL0MsT0FBUSxPQUFPRDtRQUNiLEtBQUs7WUFDSCxJQUFJQSxRQUFRLE1BQU07Z0JBQ2hCLE9BQU87WUFDVCxPQUFPLElBQUlFLE1BQU1DLE9BQU8sQ0FBQ0gsTUFBTTtnQkFDN0IsSUFBSUksU0FBUztnQkFDYixJQUFJSCxRQUFRLEdBQUc7b0JBQ2IsSUFBSyxJQUFJSSxJQUFJLEdBQUdBLElBQUlMLElBQUlNLE1BQU0sRUFBRUQsSUFBSzt3QkFDbkMsSUFBSUQsV0FBVyxLQUFLOzRCQUNsQkEsVUFBVTt3QkFDWjt3QkFDQSxJQUFJRyxPQUFPQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDVixLQUFLSyxJQUFJOzRCQUNoREQsVUFBVUwsYUFBYUMsR0FBRyxDQUFDSyxFQUFFLEVBQUVKLFFBQVE7d0JBQ3pDO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xHLFVBQVVKLElBQUlNLE1BQU0sR0FBRyxJQUFJLFFBQVE7Z0JBQ3JDO2dCQUNBRixVQUFVO2dCQUNWLE9BQU9BO1lBQ1QsT0FBTyxJQUFJSixlQUFlVyxPQUFPO2dCQUMvQixPQUFPWCxNQUFNO1lBQ2YsT0FBTztnQkFDTCxNQUFNWSxPQUFPTCxPQUFPSyxJQUFJLENBQUNaO2dCQUN6QixJQUFJSSxTQUFTO2dCQUNiLElBQUlILFFBQVEsR0FBRztvQkFDYixJQUFLLElBQUlJLElBQUksR0FBR0EsSUFBSU8sS0FBS04sTUFBTSxFQUFFRCxJQUFLO3dCQUNwQyxNQUFNUSxNQUFNRCxJQUFJLENBQUNQLEVBQUU7d0JBQ25CLE1BQU1TLE9BQU9QLE9BQU9RLHdCQUF3QixDQUFDZixL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T1IsSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUNuQixPQUFPQSxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQ25CLE9BQU9BLElBQUksQ0FBQyxFQUFFLEtBQUssVUFDbkI7UUFDQSxNQUFNUyxrQkFBa0JULElBQUksQ0FBQyxFQUFFO1FBQy9CLE1BQU1VLGFBQWFWLElBQUksQ0FBQyxFQUFFO1FBRTFCLE9BQU87WUFDTFMsaUJBQWlCQSxnQkFBZ0JFLElBQUk7WUFDckNDLE9BQU9DLENBQUFBLEdBQUFBLFNBQUFBLE9BQUFBLEVBQVFILGNBQWNBLGFBQWE7UUFDNUM7SUFDRjtJQUVBLE9BQU87UUFDTEQsaUJBQWlCO1FBQ2pCRyxPQUFPO0lBQ1Q7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvc3JjL2NsaWVudC9saWIvY29uc29sZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNFcnJvciBmcm9tICcuLi8uLi9saWIvaXMtZXJyb3InXG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdChhcmc6IHVua25vd24sIGRlcHRoOiBudW1iZXIpIHtcbiAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmIChhcmcgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJ1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdbJ1xuICAgICAgICBpZiAoZGVwdGggPCAxKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09ICdbJykge1xuICAgICAgICAgICAgICByZXN1bHQgKz0gJywnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZywgaSkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdE9iamVjdChhcmdbaV0sIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGFyZy5sZW5ndGggPiAwID8gJy4uLicgOiAnJ1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSAnXSdcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gYXJnICsgJydcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcmcpXG4gICAgICAgIGxldCByZXN1bHQgPSAneydcbiAgICAgICAgaWYgKGRlcHRoIDwgMSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxuICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJnLCAna2V5JylcbiAgICAgICAgICAgIGlmIChkZXNjICYmICFkZXNjLmdldCAmJiAhZGVzYy5zZXQpIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbktleSA9IEpTT04uc3RyaW5naWZ5KGtleSlcbiAgICAgICAgICAgICAgaWYgKGpzb25LZXkgIT09ICdcIicgKyBrZXkgKyAnXCInKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGpzb25LZXkgKyAnOiAnXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGtleSArICc6ICdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGRlc2MudmFsdWUsIGRlcHRoICsgMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGtleXMubGVuZ3RoID4gMCA/ICcuLi4nIDogJydcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gJ30nXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZylcbiAgICBjYXNlICdudW1iZXInOlxuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbnNvbGVBcmdzKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB7XG4gIGxldCBtZXNzYWdlOiBzdHJpbmdcbiAgbGV0IGlkeDogbnVtYmVyXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gYXJnc1swXVxuICAgIGlkeCA9IDFcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gJydcbiAgICBpZHggPSAwXG4gIH1cbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCBzdGFydFF1b3RlID0gZmFsc2VcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXNzYWdlLmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY2hhciA9IG1lc3NhZ2VbaV1cbiAgICBpZiAoY2hhciAhPT0gJyUnIHx8IGkgPT09IG1lc3NhZ2UubGVuZ3RoIC0gMSB8fCBpZHggPj0gYXJncy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvZGUgPSBtZXNzYWdlWysraV1cbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgIGNhc2UgJ2MnOiB7XG4gICAgICAgIC8vIFRPRE86IFdlIHNob3VsZCBjb2xvcml6ZSB3aXRoIEhUTUwgaW5zdGVhZCBvZiB0dXJuaW5nIGludG8gYSBzdHJpbmcuXG4gICAgICAgIC8vIElnbm9yZSBmb3Igbm93LlxuICAgICAgICByZXN1bHQgPSBzdGFydFF1b3RlID8gYCR7cmVzdWx0fV1gIDogYFske3Jlc3VsdH1gXG4gICAgICAgIHN0YXJ0UXVvdGUgPSAhc3RhcnRRdW90ZVxuICAgICAgICBpZHgrK1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnTyc6XG4gICAgICBjYXNlICdvJzoge1xuICAgICAgICByZXN1bHQgKz0gZm9ybWF0T2JqZWN0KGFyZ3NbaWR4KytdLCAwKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZCc6XG4gICAgICBjYXNlICdpJzoge1xuICAgICAgICByZXN1bHQgKz0gcGFyc2VJbnQoYXJnc1tpZHgrK10gYXMgYW55LCAxMClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2YnOiB7XG4gICAgICAgIHJlc3VsdCArPSBwYXJzZUZsb2F0KGFyZ3NbaWR4KytdIGFzIGFueSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3MnOiB7XG4gICAgICAgIHJlc3VsdCArPSBTdHJpbmcoYXJnc1tpZHgrK10pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXN1bHQgKz0gJyUnICsgY29kZVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBpZHggPCBhcmdzLmxlbmd0aDsgaWR4KyspIHtcbiAgICByZXN1bHQgKz0gKGlkeCA+IDAgPyAnICcgOiAnJykgKyBmb3JtYXRPYmplY3QoYXJnc1tpZHhdLCAwKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25zb2xlQXJncyhhcmdzOiB1bmtub3duW10pOiB7XG4gIGVudmlyb25tZW50TmFtZTogc3RyaW5nIHwgbnVsbFxuICBlcnJvcjogRXJyb3IgfCBudWxsXG59IHtcbiAgLy8gU2VlXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzY1YTU2ZDBlOTkyNjE0ODFjNzIxMzM0YTNlYzQ1NjFkMTczNTk0Y2QvcGFja2FnZXMvcmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL2ZsaWdodC9yZW5kZXJlci5qcyNMODgtTDkzXG4gIC8vXG4gIC8vIExvZ3MgcmVwbGF5ZWQgZnJvbSB0aGUgc2VydmVyIGxvb2sgbGlrZSB0aGlzOlxuICAvLyBbXG4gIC8vICAgXCIlYyVzJWMlb1xcblxcbiVzXFxuXFxuJXNcXG5cIixcbiAgLy8gICBcImJhY2tncm91bmQ6ICNlNmU2ZTY7IC4uLlwiLFxuICAvLyAgIFwiIFNlcnZlciBcIiwgLy8gY2FuIGFsc28gYmUgZS5nLiBcIiBQcmVyZW5kZXIgXCJcbiAgLy8gICBcIlwiLFxuICAvLyAgIEVycm9yLFxuICAvLyAgIFwiVGhlIGFib3ZlIGVycm9yIG9jY3VycmVkIGluIHRoZSA8UGFnZT4gY29tcG9uZW50LlwiLFxuICAvLyAgIC4uLlxuICAvLyBdXG4gIGlmIChcbiAgICBhcmdzLmxlbmd0aCA+IDMgJiZcbiAgICB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycgJiZcbiAgICBhcmdzWzBdLnN0YXJ0c1dpdGgoJyVjJXMlYycpICYmXG4gICAgdHlwZW9mIGFyZ3NbMV0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbMl0gPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGFyZ3NbM10gPT09ICdzdHJpbmcnXG4gICkge1xuICAgIGNvbnN0IGVudmlyb25tZW50TmFtZSA9IGFyZ3NbMl1cbiAgICBjb25zdCBtYXliZUVycm9yID0gYXJnc1s0XVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnROYW1lLnRyaW0oKSxcbiAgICAgIGVycm9yOiBpc0Vycm9yKG1heWJlRXJyb3IpID8gbWF5YmVFcnJvciA6IG51bGwsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbnZpcm9ubWVudE5hbWU6IG51bGwsXG4gICAgZXJyb3I6IG51bGwsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRDb25zb2xlQXJncyIsInBhcnNlQ29uc29sZUFyZ3MiLCJmb3JtYXRPYmplY3QiLCJhcmciLCJkZXB0aCIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImkiLCJsZW5ndGgiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJFcnJvciIsImtleXMiLCJrZXkiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0Iiwic2V0IiwianNvbktleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWx1ZSIsIlN0cmluZyIsImFyZ3MiLCJtZXNzYWdlIiwiaWR4Iiwic3RhcnRRdW90ZSIsImNoYXIiLCJjb2RlIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0Iiwic3RhcnRzV2l0aCIsImVudmlyb25tZW50TmFtZSIsIm1heWJlRXJyb3IiLCJ0cmltIiwiZXJyb3IiLCJpc0Vycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/lib/console.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***! \*******************************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"(app-pages-browser)/./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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiOzs7OzhEQU9hQTs7O2VBQUFBOzs7aURBUHVCO3VDQUNWO0FBTW5CLE1BQU1BLDZCQUE2QixDQUFDQztJQUN6QyxJQUFJLENBQUNBLEtBQUtDLFVBQVUsQ0FBQyxRQUFRQyxTQUF3QyxFQUFFO1FBQ3JFLE9BQU9GO0lBQ1Q7SUFFQSxNQUFNLEVBQUVLLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsQ0FBQUEsR0FBQUEsV0FBQUEsU0FBQUEsRUFBVVI7SUFDNUMsSUFBSUUsS0FBaUMsRUFBRSxFQVF0QztJQUVELE9BQVEsS0FBRVMsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQk4sWUFBWUMsUUFBUUM7QUFDcEQiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvc3JjL2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3ZlVHJhaWxpbmdTbGFzaCB9IGZyb20gJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaCdcbmltcG9ydCB7IHBhcnNlUGF0aCB9IGZyb20gJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXBhdGgnXG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgdHJhaWxpbmcgc2xhc2ggb2YgYSBwYXRoIGFjY29yZGluZyB0byB0aGUgYHRyYWlsaW5nU2xhc2hgIG9wdGlvblxuICogaW4gYG5leHQuY29uZmlnLmpzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgY29uc3QgeyBwYXRobmFtZSwgcXVlcnksIGhhc2ggfSA9IHBhcnNlUGF0aChwYXRoKVxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RSQUlMSU5HX1NMQVNIKSB7XG4gICAgaWYgKC9cXC5bXi9dK1xcLz8kLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgICAgcmV0dXJuIGAke3JlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpfSR7cXVlcnl9JHtoYXNofWBcbiAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHJldHVybiBgJHtwYXRobmFtZX0ke3F1ZXJ5fSR7aGFzaH1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtwYXRobmFtZX0vJHtxdWVyeX0ke2hhc2h9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBgJHtyZW1vdmVUcmFpbGluZ1NsYXNoKHBhdGhuYW1lKX0ke3F1ZXJ5fSR7aGFzaH1gXG59XG4iXSwibmFtZXMiOlsibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJwYXRoIiwic3RhcnRzV2l0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfTUFOVUFMX1RSQUlMSU5HX1NMQVNIIiwicGF0aG5hbWUiLCJxdWVyeSIsImhhc2giLCJwYXJzZVBhdGgiLCJfX05FWFRfVFJBSUxJTkdfU0xBU0giLCJ0ZXN0IiwicmVtb3ZlVHJhaWxpbmdTbGFzaCIsImVuZHNXaXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/normalize-trailing-slash.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js": /*!******************************************************************************************!*\ !*** ./node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js ***! \******************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This file is only used in app router due to the specific error state handling.\n\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 onCaughtError: function() {\n return onCaughtError;\n },\n onUncaughtError: function() {\n return onUncaughtError;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../components/is-next-router-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _reportglobalerror = __webpack_require__(/*! ./report-global-error */ \"(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/report-global-error.js\");\nconst _errorboundary = __webpack_require__(/*! ../components/error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js\");\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../components/builtin/global-error */ \"(app-pages-browser)/./node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst devToolErrorMod = true ? __webpack_require__(/*! ../../next-devtools/userspace/app/errors */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/index.js\") : 0;\nfunction onCaughtError(thrownValue, errorInfo) {\n var _errorInfo_errorBoundary;\n const errorBoundaryComponent = (_errorInfo_errorBoundary = errorInfo.errorBoundary) == null ? void 0 : _errorInfo_errorBoundary.constructor;\n let isImplicitErrorBoundary;\n if (true) {\n const { AppDevOverlayErrorBoundary } = __webpack_require__(/*! ../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\n isImplicitErrorBoundary = errorBoundaryComponent === AppDevOverlayErrorBoundary;\n }\n isImplicitErrorBoundary = isImplicitErrorBoundary || errorBoundaryComponent === _errorboundary.ErrorBoundaryHandler && errorInfo.errorBoundary.props.errorComponent === _globalerror.default;\n // Skip the segment explorer triggered error\n if (true) {\n const { SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n if (thrownValue instanceof Error && thrownValue.message === SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE) {\n return;\n }\n }\n if (isImplicitErrorBoundary) {\n // We don't consider errors caught unless they're caught by an explicit error\n // boundary. The built-in ones are considered implicit.\n // This mimics how the same app would behave without Next.js.\n return onUncaughtError(thrownValue);\n }\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(thrownValue) || (0, _isnextroutererror.isNextRouterError)(thrownValue)) return;\n if (true) {\n var _errorInfo_componentStack;\n const errorBoundaryName = (errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.displayName) || (errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.name) || 'Unknown';\n const componentThatErroredFrame = errorInfo == null ? void 0 : (_errorInfo_componentStack = errorInfo.componentStack) == null ? void 0 : _errorInfo_componentStack.split('\\n')[1];\n var // example 1: at Page (http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1)\n // example 2: Page@http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1\n _componentThatErroredFrame_match;\n // Match chrome or safari stack trace\n const matches = (_componentThatErroredFrame_match = componentThatErroredFrame == null ? void 0 : componentThatErroredFrame.match(/\\s+at (\\w+)\\s+|(\\w+)@/)) != null ? _componentThatErroredFrame_match : [];\n const componentThatErroredName = matches[1] || matches[2] || 'Unknown';\n // Create error location with errored component and error boundary, to match the behavior of default React onCaughtError handler.\n const errorBoundaryMessage = \"It was handled by the <\" + errorBoundaryName + \"> error boundary.\";\n const componentErrorMessage = componentThatErroredName ? \"The above error occurred in the <\" + componentThatErroredName + \"> component.\" : \"The above error occurred in one of your components.\";\n const errorLocation = componentErrorMessage + \" \" + errorBoundaryMessage;\n const error = devToolErrorMod.decorateDevError(thrownValue);\n // Log and report the error with location but without modifying the error stack\n devToolErrorMod.originConsoleError('%o\\n\\n%s', thrownValue, errorLocation);\n devToolErrorMod.handleClientError(error);\n } else {}\n}\nfunction onUncaughtError(thrownValue) {\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(thrownValue) || (0, _isnextroutererror.isNextRouterError)(thrownValue)) return;\n if (true) {\n const error = devToolErrorMod.decorateDevError(thrownValue);\n // TODO: Add an adendum to the overlay telling people about custom error boundaries.\n (0, _reportglobalerror.reportGlobalError)(error);\n } else {}\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=error-boundary-callbacks.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3MvZXJyb3ItYm91bmRhcnktY2FsbGJhY2tzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGlGQUFpRjs7Ozs7Ozs7Ozs7OztJQWtCakVBLGFBQWE7ZUFBYkE7O0lBK0VBQyxlQUFlO2VBQWZBOzs7OytDQTlGa0I7MENBQ0U7K0NBQ0Y7MkNBQ0c7a0ZBQ0o7QUFFakMsTUFBTUMsa0JBQ0pDLEtBQW9CLEdBQ2ZHLG1CQUFPQSxDQUFDLDBJQUEwQyxJQUNuRCxDQUlDO0FBRUEsU0FBU04sY0FDZGEsV0FBb0IsRUFDcEJDLFNBQTBEO1FBRTNCQTtJQUEvQixNQUFNQyx5QkFBQUEsQ0FBeUJELDJCQUFBQSxVQUFVRSxhQUFBQSxLQUFhLGdCQUF2QkYseUJBQXlCRyxXQUFXO0lBRW5FLElBQUlDO0lBRUosSUFBSWYsSUFBb0IsRUFBbUI7UUFDekMsTUFBTSxFQUFFZ0IsMEJBQTBCLEVBQUUsR0FDbENiLG1CQUFPQSxDQUFDLG9MQUFrRTtRQUU1RVksMEJBQ0VILDJCQUEyQkk7SUFDL0I7SUFFQUQsMEJBQ0VBLDJCQUNDSCwyQkFBMkJLLGVBQUFBLG9CQUFvQixJQUM3Q04sVUFBVUUsYUFBYSxDQUNyQkssS0FBSyxDQUFDQyxjQUFjLEtBQUtDLGFBQUFBLE9BQW9CO0lBRXBELDRDQUE0QztJQUM1QyxJQUFJcEIsSUFBb0IsRUFBbUI7UUFDekMsTUFBTSxFQUFFcUIsd0NBQXdDLEVBQUUsR0FDaERsQixtQkFBT0EsQ0FBQyxrS0FBeUQ7UUFDbkUsSUFDRU8sdUJBQXVCWSxTQUN2QlosWUFBWWEsT0FBTyxLQUFLRiwwQ0FDeEI7WUFDQTtRQUNGO0lBQ0Y7SUFFQSxJQUFJTix5QkFBeUI7UUFDM0IsNkVBQTZFO1FBQzdFLHVEQUF1RDtRQUN2RCw2REFBNkQ7UUFDN0QsT0FBT2pCLGdCQUFnQlk7SUFDekI7SUFFQSw2RUFBNkU7SUFDN0UsSUFBSWMsQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CZCxnQkFBZ0JlLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBaUIsRUFBQ2YsY0FBYztJQUV4RSxJQUFJVixJQUFvQixFQUFtQjtZQU9QVztRQU5sQyxNQUFNZSxvQkFFSixDQURBLDBCQUNDZCxPQUFBQSxFQURrQyxHQUNsQ0EsSUFBQUEsdUJBQWdDZSxXQUFBQSxNQUNqQ2YsMEJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLHVCQUF3QmdCLElBQUFBLEtBQ3hCO1FBRUYsTUFBTUMsNEJBQTRCbEIsYUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsNkJBQUFBLFVBQVdtQixjQUFBQSxLQUFjLGdCQUF6Qm5CLDBCQUEyQm9CLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUl6RSxzREFBc0QsK0NBQytDO1FBQ3JHLGdHQUFnRztRQUNoR0Y7UUFMRixxQ0FBcUM7UUFDckMsTUFBTUcsVUFJSkgsQ0FBQUEsbUNBQUFBLDZCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSwwQkFBMkJJLEtBQUssQ0FBQyxvQ0FBakNKLG1DQUE2RCxFQUFFO1FBQ2pFLE1BQU1LLDJCQUEyQkYsT0FBTyxDQUFDLEVBQUUsSUFBSUEsT0FBTyxDQUFDLEVBQUUsSUFBSTtRQUU3RCxpSUFBaUk7UUFDakksTUFBTUcsdUJBQXdCLDRCQUF5QlQsb0JBQWtCO1FBQ3pFLE1BQU1VLHdCQUF3QkYsMkJBQ3pCLHNDQUFtQ0EsMkJBQXlCLGlCQUM1RDtRQUVMLE1BQU1HLGdCQUFtQkQsd0JBQXNCLE1BQUdEO1FBQ2xELE1BQU05QixRQUFRTixnQkFBZ0JLLGdCQUFnQixDQUFDTTtRQUUvQywrRUFBK0U7UUFDL0VYLGdCQUFnQlEsa0JBQWtCLENBQUMsWUFBWUcsYUFBYTJCO1FBRTVEdEMsZ0JBQWdCTyxpQkFBaUIsQ0FBQ0Q7SUFDcEMsT0FBTyxFQUVOO0FBQ0g7QUFFTyxTQUFTUCxnQkFBZ0JZLFdBQW9CO0lBQ2xELDZFQUE2RTtJQUM3RSxJQUFJYyxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JkLGdCQUFnQmUsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQmYsY0FBYztJQUV4RSxJQUFJVixJQUFvQixFQUFtQjtRQUN6QyxNQUFNSyxRQUFRTixnQkFBZ0JLLGdCQUFnQixDQUFDTTtRQUUvQyxvRkFBb0Y7UUFDcEY0QixDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCakM7SUFDcEIsT0FBTyxFQUVOO0FBQ0giLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvcmVhY3QtY2xpZW50LWNhbGxiYWNrcy9lcnJvci1ib3VuZGFyeS1jYWxsYmFja3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIG9ubHkgdXNlZCBpbiBhcHAgcm91dGVyIGR1ZSB0byB0aGUgc3BlY2lmaWMgZXJyb3Igc3RhdGUgaGFuZGxpbmcuXG5cbmltcG9ydCB0eXBlIHsgRXJyb3JJbmZvIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4uL2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3InXG5pbXBvcnQgeyBpc0JhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyByZXBvcnRHbG9iYWxFcnJvciB9IGZyb20gJy4vcmVwb3J0LWdsb2JhbC1lcnJvcidcbmltcG9ydCB7IEVycm9yQm91bmRhcnlIYW5kbGVyIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeSdcbmltcG9ydCBEZWZhdWx0RXJyb3JCb3VuZGFyeSBmcm9tICcuLi9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yJ1xuXG5jb25zdCBkZXZUb29sRXJyb3JNb2Q6IHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMnKSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IChyZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycycpKVxuICAgIDoge1xuICAgICAgICBkZWNvcmF0ZURldkVycm9yOiAoZXJyb3I6IHVua25vd24pID0+IGVycm9yIGFzIEVycm9yLFxuICAgICAgICBoYW5kbGVDbGllbnRFcnJvcjogKCkgPT4ge30sXG4gICAgICAgIG9yaWdpbkNvbnNvbGVFcnJvcjogY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLFxuICAgICAgfVxuXG5leHBvcnQgZnVuY3Rpb24gb25DYXVnaHRFcnJvcihcbiAgdGhyb3duVmFsdWU6IHVua25vd24sXG4gIGVycm9ySW5mbzogRXJyb3JJbmZvICYgeyBlcnJvckJvdW5kYXJ5PzogUmVhY3QuQ29tcG9uZW50IH1cbikge1xuICBjb25zdCBlcnJvckJvdW5kYXJ5Q29tcG9uZW50ID0gZXJyb3JJbmZvLmVycm9yQm91bmRhcnk/LmNvbnN0cnVjdG9yXG5cbiAgbGV0IGlzSW1wbGljaXRFcnJvckJvdW5kYXJ5XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB7IEFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2FwcC1kZXYtb3ZlcmxheS1lcnJvci1ib3VuZGFyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnknKVxuXG4gICAgaXNJbXBsaWNpdEVycm9yQm91bmRhcnkgPVxuICAgICAgZXJyb3JCb3VuZGFyeUNvbXBvbmVudCA9PT0gQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnlcbiAgfVxuXG4gIGlzSW1wbGljaXRFcnJvckJvdW5kYXJ5ID1cbiAgICBpc0ltcGxpY2l0RXJyb3JCb3VuZGFyeSB8fFxuICAgIChlcnJvckJvdW5kYXJ5Q29tcG9uZW50ID09PSBFcnJvckJvdW5kYXJ5SGFuZGxlciAmJlxuICAgICAgKGVycm9ySW5mby5lcnJvckJvdW5kYXJ5ISBhcyBJbnN0YW5jZVR5cGU8dHlwZW9mIEVycm9yQm91bmRhcnlIYW5kbGVyPilcbiAgICAgICAgLnByb3BzLmVycm9yQ29tcG9uZW50ID09PSBEZWZhdWx0RXJyb3JCb3VuZGFyeSlcblxuICAvLyBTa2lwIHRoZSBzZWdtZW50IGV4cGxvcmVyIHRyaWdnZXJlZCBlcnJvclxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IHsgU0VHTUVOVF9FWFBMT1JFUl9TSU1VTEFURURfRVJST1JfTUVTU0FHRSB9ID1cbiAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJylcbiAgICBpZiAoXG4gICAgICB0aHJvd25WYWx1ZSBpbnN0YW5jZW9mIEVycm9yICYmXG4gICAgICB0aHJvd25WYWx1ZS5tZXNzYWdlID09PSBTRUdNRU5UX0VYUExPUkVSX1NJTVVMQVRFRF9FUlJPUl9NRVNTQUdFXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBpZiAoaXNJbXBsaWNpdEVycm9yQm91bmRhcnkpIHtcbiAgICAvLyBXZSBkb24ndCBjb25zaWRlciBlcnJvcnMgY2F1Z2h0IHVubGVzcyB0aGV5J3JlIGNhdWdodCBieSBhbiBleHBsaWNpdCBlcnJvclxuICAgIC8vIGJvdW5kYXJ5LiBUaGUgYnVpbHQtaW4gb25lcyBhcmUgY29uc2lkZXJlZCBpbXBsaWNpdC5cbiAgICAvLyBUaGlzIG1pbWljcyBob3cgdGhlIHNhbWUgYXBwIHdvdWxkIGJlaGF2ZSB3aXRob3V0IE5leHQuanMuXG4gICAgcmV0dXJuIG9uVW5jYXVnaHRFcnJvcih0aHJvd25WYWx1ZSlcbiAgfVxuXG4gIC8vIFNraXAgY2VydGFpbiBjdXN0b20gZXJyb3JzIHdoaWNoIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgcmVwb3J0ZWQgb24gY2xpZW50XG4gIGlmIChpc0JhaWxvdXRUb0NTUkVycm9yKHRocm93blZhbHVlKSB8fCBpc05leHRSb3V0ZXJFcnJvcih0aHJvd25WYWx1ZSkpIHJldHVyblxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgZXJyb3JCb3VuZGFyeU5hbWUgPVxuICAgICAgLy8gcmVhZCByZWFjdCBjb21wb25lbnQgZGlzcGxheU5hbWVcbiAgICAgIChlcnJvckJvdW5kYXJ5Q29tcG9uZW50IGFzIGFueSk/LmRpc3BsYXlOYW1lIHx8XG4gICAgICBlcnJvckJvdW5kYXJ5Q29tcG9uZW50Py5uYW1lIHx8XG4gICAgICAnVW5rbm93bidcblxuICAgIGNvbnN0IGNvbXBvbmVudFRoYXRFcnJvcmVkRnJhbWUgPSBlcnJvckluZm8/LmNvbXBvbmVudFN0YWNrPy5zcGxpdCgnXFxuJylbMV1cblxuICAgIC8vIE1hdGNoIGNocm9tZSBvciBzYWZhcmkgc3RhY2sgdHJhY2VcbiAgICBjb25zdCBtYXRjaGVzID1cbiAgICAgIC8vIHJlZ2V4IHRvIG1hdGNoIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzdGFjayB0cmFjZVxuICAgICAgLy8gZXhhbXBsZSAxOiBhdCBQYWdlIChodHRwOi8vbG9jYWxob3N0OjMwMDAvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcy9pbmRleC5qcz90cz0xNjMxNjAwMDAwMDAwOjI6MSlcbiAgICAgIC8vIGV4YW1wbGUgMjogUGFnZUBodHRwOi8vbG9jYWxob3N0OjMwMDAvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcy9pbmRleC5qcz90cz0xNjMxNjAwMDAwMDAwOjI6MVxuICAgICAgY29tcG9uZW50VGhhdEVycm9yZWRGcmFtZT8ubWF0Y2goL1xccythdCAoXFx3KylcXHMrfChcXHcrKUAvKSA/PyBbXVxuICAgIGNvbnN0IGNvbXBvbmVudFRoYXRFcnJvcmVkTmFtZSA9IG1hdGNoZXNbMV0gfHwgbWF0Y2hlc1syXSB8fCAnVW5rbm93bidcblxuICAgIC8vIENyZWF0ZSBlcnJvciBsb2NhdGlvbiB3aXRoIGVycm9yZWQgY29tcG9uZW50IGFuZCBlcnJvciBib3VuZGFyeSwgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGRlZmF1bHQgUmVhY3Qgb25DYXVnaHRFcnJvciBoYW5kbGVyLlxuICAgIGNvbnN0IGVycm9yQm91bmRhcnlNZXNzYWdlID0gYEl0IHdhcyBoYW5kbGVkIGJ5IHRoZSA8JHtlcnJvckJvdW5kYXJ5TmFtZX0+IGVycm9yIGJvdW5kYXJ5LmBcbiAgICBjb25zdCBjb21wb25lbnRFcnJvck1lc3NhZ2UgPSBjb21wb25lbnRUaGF0RXJyb3JlZE5hbWVcbiAgICAgID8gYFRoZSBhYm92ZSBlcnJvciBvY2N1cnJlZCBpbiB0aGUgPCR7Y29tcG9uZW50VGhhdEVycm9yZWROYW1lfT4gY29tcG9uZW50LmBcbiAgICAgIDogYFRoZSBhYm92ZSBlcnJvciBvY2N1cnJlZCBpbiBvbmUgb2YgeW91ciBjb21wb25lbnRzLmBcblxuICAgIGNvbnN0IGVycm9yTG9jYXRpb24gPSBgJHtjb21wb25lbnRFcnJvck1lc3NhZ2V9ICR7ZXJyb3JCb3VuZGFyeU1lc3NhZ2V9YFxuICAgIGNvbnN0IGVycm9yID0gZGV2VG9vbEVycm9yTW9kLmRlY29yYXRlRGV2RXJyb3IodGhyb3duVmFsdWUpXG5cbiAgICAvLyBMb2cgYW5kIHJlcG9ydCB0aGUgZXJyb3Igd2l0aCBsb2NhdGlvbiBidXQgd2l0aG91dCBtb2RpZnlpbmcgdGhlIGVycm9yIHN0YWNrXG4gICAgZGV2VG9vbEVycm9yTW9kLm9yaWdpbkNvbnNvbGVFcnJvcignJW9cXG5cXG4lcycsIHRocm93blZhbHVlLCBlcnJvckxvY2F0aW9uKVxuXG4gICAgZGV2VG9vbEVycm9yTW9kLmhhbmRsZUNsaWVudEVycm9yKGVycm9yKVxuICB9IGVsc2Uge1xuICAgIGRldlRvb2xFcnJvck1vZC5vcmlnaW5Db25zb2xlRXJyb3IodGhyb3duVmFsdWUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uVW5jYXVnaHRFcnJvcih0aHJvd25WYWx1ZTogdW5rbm93bikge1xuICAvLyBTa2lwIGNlcnRhaW4gY3VzdG9tIGVycm9ycyB3aGljaCBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIHJlcG9ydGVkIG9uIGNsaWVudFxuICBpZiAoaXNCYWlsb3V0VG9DU1JFcnJvcih0aHJvd25WYWx1ZSkgfHwgaXNOZXh0Um91dGVyRXJyb3IodGhyb3duVmFsdWUpKSByZXR1cm5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IGVycm9yID0gZGV2VG9vbEVycm9yTW9kLmRlY29yYXRlRGV2RXJyb3IodGhyb3duVmFsdWUpXG5cbiAgICAvLyBUT0RPOiBBZGQgYW4gYWRlbmR1bSB0byB0aGUgb3ZlcmxheSB0ZWxsaW5nIHBlb3BsZSBhYm91dCBjdXN0b20gZXJyb3IgYm91bmRhcmllcy5cbiAgICByZXBvcnRHbG9iYWxFcnJvcihlcnJvcilcbiAgfSBlbHNlIHtcbiAgICByZXBvcnRHbG9iYWxFcnJvcih0aHJvd25WYWx1ZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbIm9uQ2F1Z2h0RXJyb3IiLCJvblVuY2F1Z2h0RXJyb3IiLCJkZXZUb29sRXJyb3JNb2QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJyZXF1aXJlIiwiZGVjb3JhdGVEZXZFcnJvciIsImVycm9yIiwiaGFuZGxlQ2xpZW50RXJyb3IiLCJvcmlnaW5Db25zb2xlRXJyb3IiLCJjb25zb2xlIiwiYmluZCIsInRocm93blZhbHVlIiwiZXJyb3JJbmZvIiwiZXJyb3JCb3VuZGFyeUNvbXBvbmVudCIsImVycm9yQm91bmRhcnkiLCJjb25zdHJ1Y3RvciIsImlzSW1wbGljaXRFcnJvckJvdW5kYXJ5IiwiQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkiLCJFcnJvckJvdW5kYXJ5SGFuZGxlciIsInByb3BzIiwiZXJyb3JDb21wb25lbnQiLCJEZWZhdWx0RXJyb3JCb3VuZGFyeSIsIlNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UiLCJFcnJvciIsIm1lc3NhZ2UiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJlcnJvckJvdW5kYXJ5TmFtZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsImNvbXBvbmVudFRoYXRFcnJvcmVkRnJhbWUiLCJjb21wb25lbnRTdGFjayIsInNwbGl0IiwibWF0Y2hlcyIsIm1hdGNoIiwiY29tcG9uZW50VGhhdEVycm9yZWROYW1lIiwiZXJyb3JCb3VuZGFyeU1lc3NhZ2UiLCJjb21wb25lbnRFcnJvck1lc3NhZ2UiLCJlcnJvckxvY2F0aW9uIiwicmVwb3J0R2xvYmFsRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js": /*!**************************************************************************************!*\ !*** ./node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js ***! \**************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This module can be shared between both pages router and app router\n\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 isRecoverableError: function() {\n return isRecoverableError;\n },\n onRecoverableError: function() {\n return onRecoverableError;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(app-pages-browser)/./node_modules/next/dist/lib/is-error.js\"));\nconst _reportglobalerror = __webpack_require__(/*! ./report-global-error */ \"(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/report-global-error.js\");\nconst recoverableErrors = new WeakSet();\nfunction isRecoverableError(error) {\n return recoverableErrors.has(error);\n}\nconst onRecoverableError = (error)=>{\n // x-ref: https://github.com/facebook/react/pull/28736\n let cause = (0, _iserror.default)(error) && 'cause' in error ? error.cause : error;\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(cause)) return;\n if (true) {\n const { decorateDevError } = __webpack_require__(/*! ../../next-devtools/userspace/app/errors/stitched-error */ \"(app-pages-browser)/./node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\n const causeError = decorateDevError(cause);\n recoverableErrors.add(causeError);\n cause = causeError;\n }\n (0, _reportglobalerror.reportGlobalError)(cause);\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3Mvb24tcmVjb3ZlcmFibGUtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQUEscUVBQXFFOzs7Ozs7Ozs7Ozs7O0lBU3JEQSxrQkFBa0I7ZUFBbEJBOztJQUlIQyxrQkFBa0I7ZUFBbEJBOzs7OzBDQVZ1Qjs4RUFDaEI7K0NBQ2M7QUFFbEMsTUFBTUMsb0JBQW9CLElBQUlDO0FBRXZCLFNBQVNILG1CQUFtQkksS0FBWTtJQUM3QyxPQUFPRixrQkFBa0JHLEdBQUcsQ0FBQ0Q7QUFDL0I7QUFFTyxNQUFNSCxxQkFBNkQsQ0FDeEVHO0lBRUEsc0RBQXNEO0lBQ3RELElBQUlFLFFBQVFDLENBQUFBLEdBQUFBLFNBQUFBLE9BQUFBLEVBQVFILFVBQVUsV0FBV0EsUUFBUUEsTUFBTUUsS0FBSyxHQUFHRjtJQUMvRCw2RUFBNkU7SUFDN0UsSUFBSUksQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CRixRQUFRO0lBRWhDLElBQUlHLElBQW9CLEVBQW1CO1FBQ3pDLE1BQU0sRUFBRUcsZ0JBQWdCLEVBQUUsR0FDeEJDLG1CQUFPQSxDQUFDLGtLQUF5RDtRQUNuRSxNQUFNQyxhQUFhRixpQkFBaUJOO1FBQ3BDSixrQkFBa0JhLEdBQUcsQ0FBQ0Q7UUFDdEJSLFFBQVFRO0lBQ1Y7SUFFQUUsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQlY7QUFDcEIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L3NyYy9jbGllbnQvcmVhY3QtY2xpZW50LWNhbGxiYWNrcy9vbi1yZWNvdmVyYWJsZS1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIG1vZHVsZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gYm90aCBwYWdlcyByb3V0ZXIgYW5kIGFwcCByb3V0ZXJcblxuaW1wb3J0IHR5cGUgeyBIeWRyYXRpb25PcHRpb25zIH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCdcbmltcG9ydCB7IGlzQmFpbG91dFRvQ1NSRXJyb3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2xhenktZHluYW1pYy9iYWlsb3V0LXRvLWNzcidcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4uLy4uL2xpYi9pcy1lcnJvcidcbmltcG9ydCB7IHJlcG9ydEdsb2JhbEVycm9yIH0gZnJvbSAnLi9yZXBvcnQtZ2xvYmFsLWVycm9yJ1xuXG5jb25zdCByZWNvdmVyYWJsZUVycm9ycyA9IG5ldyBXZWFrU2V0PEVycm9yPigpXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlY292ZXJhYmxlRXJyb3IoZXJyb3I6IEVycm9yKTogYm9vbGVhbiB7XG4gIHJldHVybiByZWNvdmVyYWJsZUVycm9ycy5oYXMoZXJyb3IpXG59XG5cbmV4cG9ydCBjb25zdCBvblJlY292ZXJhYmxlRXJyb3I6IEh5ZHJhdGlvbk9wdGlvbnNbJ29uUmVjb3ZlcmFibGVFcnJvciddID0gKFxuICBlcnJvclxuKSA9PiB7XG4gIC8vIHgtcmVmOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yODczNlxuICBsZXQgY2F1c2UgPSBpc0Vycm9yKGVycm9yKSAmJiAnY2F1c2UnIGluIGVycm9yID8gZXJyb3IuY2F1c2UgOiBlcnJvclxuICAvLyBTa2lwIGNlcnRhaW4gY3VzdG9tIGVycm9ycyB3aGljaCBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIHJlcG9ydGVkIG9uIGNsaWVudFxuICBpZiAoaXNCYWlsb3V0VG9DU1JFcnJvcihjYXVzZSkpIHJldHVyblxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyBkZWNvcmF0ZURldkVycm9yIH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy9zdGl0Y2hlZC1lcnJvcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvc3RpdGNoZWQtZXJyb3InKVxuICAgIGNvbnN0IGNhdXNlRXJyb3IgPSBkZWNvcmF0ZURldkVycm9yKGNhdXNlKVxuICAgIHJlY292ZXJhYmxlRXJyb3JzLmFkZChjYXVzZUVycm9yKVxuICAgIGNhdXNlID0gY2F1c2VFcnJvclxuICB9XG5cbiAgcmVwb3J0R2xvYmFsRXJyb3IoY2F1c2UpXG59XG4iXSwibmFtZXMiOlsiaXNSZWNvdmVyYWJsZUVycm9yIiwib25SZWNvdmVyYWJsZUVycm9yIiwicmVjb3ZlcmFibGVFcnJvcnMiLCJXZWFrU2V0IiwiZXJyb3IiLCJoYXMiLCJjYXVzZSIsImlzRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZGVjb3JhdGVEZXZFcnJvciIsInJlcXVpcmUiLCJjYXVzZUVycm9yIiwiYWRkIiwicmVwb3J0R2xvYmFsRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/report-global-error.js": /*!*************************************************************************************!*\ !*** ./node_modules/next/dist/client/react-client-callbacks/report-global-error.js ***! \*************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"reportGlobalError\", ({\n enumerable: true,\n get: function() {\n return reportGlobalError;\n }\n}));\nconst reportGlobalError = typeof reportError === 'function' ? reportError : (error)=>{\n // TODO: Dispatch error event\n globalThis.console.error(error);\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=report-global-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3MvcmVwb3J0LWdsb2JhbC1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7O3FEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxvQkFDWCxPQUFPQyxnQkFBZ0IsYUFFbkIsY0FFQSxDQUFDQztJQUNDLDZCQUE2QjtJQUM3QkMsV0FBV0MsT0FBTyxDQUFDRixLQUFLLENBQUNBO0FBQzNCIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9zcmMvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3MvcmVwb3J0LWdsb2JhbC1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVwb3J0R2xvYmFsRXJyb3IgPVxuICB0eXBlb2YgcmVwb3J0RXJyb3IgPT09ICdmdW5jdGlvbidcbiAgICA/IC8vIEluIG1vZGVybiBicm93c2VycywgcmVwb3J0RXJyb3Igd2lsbCBkaXNwYXRjaCBhbiBlcnJvciBldmVudCxcbiAgICAgIC8vIGVtdWxhdGluZyBhbiB1bmNhdWdodCBKYXZhU2NyaXB0IGVycm9yLlxuICAgICAgcmVwb3J0RXJyb3JcbiAgICA6IChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAvLyBUT0RPOiBEaXNwYXRjaCBlcnJvciBldmVudFxuICAgICAgICBnbG9iYWxUaGlzLmNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICB9XG4iXSwibmFtZXMiOlsicmVwb3J0R2xvYmFsRXJyb3IiLCJyZXBvcnRFcnJvciIsImVycm9yIiwiZ2xvYmFsVGhpcyIsImNvbnNvbGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/react-client-callbacks/report-global-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/remove-base-path.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/client/remove-base-path.js ***! \***********************************************************/ /***/ ((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 */ \"(app-pages-browser)/./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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OztrREFJZ0JBOzs7ZUFBQUE7Ozt5Q0FKWTtBQUU1QixNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLGVBQWVLLElBQVk7SUFDekMsSUFBSUgsS0FBMEMsRUFBRSxFQUkvQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJRCxTQUFTTyxNQUFNLEtBQUssR0FBRyxPQUFPSDtJQUVsQ0EsT0FBT0EsS0FBS0ksS0FBSyxDQUFDUixTQUFTTyxNQUFNO0lBQ2pDLElBQUksQ0FBQ0gsS0FBS0ssVUFBVSxDQUFDLE1BQU1MLE9BQVEsTUFBR0E7SUFDdEMsT0FBT0E7QUFDVCIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L3JlbW92ZS1iYXNlLXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzQmFzZVBhdGggfSBmcm9tICcuL2hhcy1iYXNlLXBhdGgnXG5cbmNvbnN0IGJhc2VQYXRoID0gKHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggYXMgc3RyaW5nKSB8fCAnJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQmFzZVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCkge1xuICAgIGlmICghaGFzQmFzZVBhdGgocGF0aCkpIHtcbiAgICAgIHJldHVybiBwYXRoXG4gICAgfVxuICB9XG5cbiAgLy8gQ2FuJ3QgdHJpbSB0aGUgYmFzZVBhdGggaWYgaXQgaGFzIHplcm8gbGVuZ3RoIVxuICBpZiAoYmFzZVBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gcGF0aFxuXG4gIHBhdGggPSBwYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aClcbiAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcGF0aCA9IGAvJHtwYXRofWBcbiAgcmV0dXJuIHBhdGhcbn1cbiJdLCJuYW1lcyI6WyJyZW1vdmVCYXNlUGF0aCIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwiX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIIiwiaGFzQmFzZVBhdGgiLCJsZW5ndGgiLCJzbGljZSIsInN0YXJ0c1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/remove-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/route-params.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/route-params.js ***! \*******************************************************/ /***/ ((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 doesStaticSegmentAppearInURL: function() {\n return doesStaticSegmentAppearInURL;\n },\n getCacheKeyForDynamicParam: function() {\n return getCacheKeyForDynamicParam;\n },\n getParamValueFromCacheKey: function() {\n return getParamValueFromCacheKey;\n },\n getRenderedPathname: function() {\n return getRenderedPathname;\n },\n getRenderedSearch: function() {\n return getRenderedSearch;\n },\n parseDynamicParamFromURLPart: function() {\n return parseDynamicParamFromURLPart;\n },\n urlToUrlWithoutFlightMarker: function() {\n return urlToUrlWithoutFlightMarker;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../shared/lib/segment-cache/segment-value-encoding */ \"(app-pages-browser)/./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _approuterheaders = __webpack_require__(/*! ./components/app-router-headers */ \"(app-pages-browser)/./node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getRenderedSearch(response) {\n // If the server performed a rewrite, the search params used to render the\n // page will be different from the params in the request URL. In this case,\n // the response will include a header that gives the rewritten search query.\n const rewrittenQuery = response.headers.get(_approuterheaders.NEXT_REWRITTEN_QUERY_HEADER);\n if (rewrittenQuery !== null) {\n return rewrittenQuery === '' ? '' : '?' + rewrittenQuery;\n }\n // If the header is not present, there was no rewrite, so we use the search\n // query of the response URL.\n return urlToUrlWithoutFlightMarker(new URL(response.url)).search;\n}\nfunction getRenderedPathname(response) {\n // If the server performed a rewrite, the pathname used to render the\n // page will be different from the pathname in the request URL. In this case,\n // the response will include a header that gives the rewritten pathname.\n const rewrittenPath = response.headers.get(_approuterheaders.NEXT_REWRITTEN_PATH_HEADER);\n return rewrittenPath != null ? rewrittenPath : urlToUrlWithoutFlightMarker(new URL(response.url)).pathname;\n}\nfunction parseDynamicParamFromURLPart(paramType, pathnameParts, partIndex) {\n // This needs to match the behavior in get-dynamic-param.ts.\n switch(paramType){\n // Catchalls\n case 'c':\n case 'ci':\n {\n // Catchalls receive all the remaining URL parts. If there are no\n // remaining pathname parts, return an empty array.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : [];\n }\n // Optional catchalls\n case 'oc':\n {\n // Optional catchalls receive all the remaining URL parts, unless this is\n // the end of the pathname, in which case they return null.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : null;\n }\n // Dynamic\n case 'd':\n case 'di':\n {\n if (partIndex >= pathnameParts.length) {\n // The route tree expected there to be more parts in the URL than there\n // actually are. This could happen if the x-nextjs-rewritten-path header\n // is incorrectly set, or potentially due to bug in Next.js. TODO:\n // Should this be a hard error? During a prefetch, we can just abort.\n // During a client navigation, we could trigger a hard refresh. But if\n // it happens during initial render, we don't really have any\n // recovery options.\n return '';\n }\n return encodeURIComponent(pathnameParts[partIndex]);\n }\n default:\n paramType;\n return '';\n }\n}\nfunction doesStaticSegmentAppearInURL(segment) {\n // This is not a parameterized segment; however, we need to determine\n // whether or not this segment appears in the URL. For example, this route\n // groups do not appear in the URL, so they should be skipped. Any other\n // special cases must be handled here.\n // TODO: Consider encoding this directly into the router tree instead of\n // inferring it on the client based on the segment type. Something like\n // a `doesAppearInURL` flag in FlightRouterState.\n if (segment === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY || // For some reason, the loader tree sometimes includes extra __PAGE__\n // \"layouts\" when part of a parallel route. But it's not a leaf node.\n // Otherwise, we wouldn't need this special case because pages are\n // always leaf nodes.\n // TODO: Investigate why the loader produces these fake page segments.\n segment.startsWith(_segment.PAGE_SEGMENT_KEY) || // Route groups.\n segment[0] === '(' && segment.endsWith(')') || segment === _segment.DEFAULT_SEGMENT_KEY || segment === '/_not-found') {\n return false;\n } else {\n // All other segment types appear in the URL\n return true;\n }\n}\nfunction getCacheKeyForDynamicParam(paramValue, renderedSearch) {\n // This needs to match the logic in get-dynamic-param.ts, until we're able to\n // unify the various implementations so that these are always computed on\n // the client.\n if (typeof paramValue === 'string') {\n // TODO: Refactor or remove this helper function to accept a string rather\n // than the whole segment type. Also we can probably just append the\n // search string instead of turning it into JSON.\n const pageSegmentWithSearchParams = (0, _segment.addSearchParamsIfPageSegment)(paramValue, Object.fromEntries(new URLSearchParams(renderedSearch)));\n return pageSegmentWithSearchParams;\n } else if (paramValue === null) {\n return '';\n } else {\n return paramValue.join('/');\n }\n}\nfunction urlToUrlWithoutFlightMarker(url) {\n const urlWithoutFlightParameters = new URL(url);\n urlWithoutFlightParameters.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n if (false) {}\n return urlWithoutFlightParameters;\n}\nfunction getParamValueFromCacheKey(paramCacheKey, paramType) {\n // Turn the cache key string sent by the server (as part of FlightRouterState)\n // into a value that can be passed to `useParams` and client components.\n const isCatchAll = paramType === 'c' || paramType === 'oc';\n if (isCatchAll) {\n // Catch-all param keys are a concatenation of the path segments.\n // See equivalent logic in `getSelectedParams`.\n // TODO: We should just pass the array directly, rather than concatenate\n // it to a string and then split it back to an array. It needs to be an\n // array in some places, like when passing a key React, but we can convert\n // it at runtime in those places.\n return paramCacheKey.split('/');\n }\n return paramCacheKey;\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-params.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlLXBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE4RmdCQSw0QkFBNEI7ZUFBNUJBOztJQTRCQUMsNEJBQTBCO2VBQTFCQTs7SUF3Q0FDLHlCQUF5QjtlQUF6QkE7O0lBM0hBQyxtQkFBbUI7ZUFBbkJBOztJQWhCQUMsaUJBQWlCO2VBQWpCQTs7SUEwQkFDLDRCQUE0QjtlQUE1QkE7O0lBZ0dBQywyQkFBMkI7ZUFBM0JBOzs7cUNBNUlUO2tEQUNrQzs4Q0FLbEM7QUFZQSxTQUFTRixrQkFBa0JHLFFBQXFCO0lBQ3JELDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLE1BQU1DLGlCQUFpQkQsU0FBU0UsT0FBTyxDQUFDQyxHQUFHLENBQUNDLGtCQUFBQSwyQkFBMkI7SUFDdkUsSUFBSUgsbUJBQW1CLE1BQU07UUFDM0IsT0FDRUEsbUJBQW1CLEtBQUssS0FBSyxNQUFNQTtJQUV2QztJQUNBLDJFQUEyRTtJQUMzRSw2QkFBNkI7SUFDN0IsT0FBT0YsNEJBQTRCLElBQUlNLElBQUlMLFNBQVNNLEdBQUcsR0FDcERDLE1BQU07QUFDWDtBQUVPLFNBQVNYLG9CQUFvQkksUUFBcUI7SUFDdkQscUVBQXFFO0lBQ3JFLDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsTUFBTVEsZ0JBQWdCUixTQUFTRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ00sa0JBQUFBLDBCQUEwQjtJQUNyRSxPQUNFRCxpQkFBQUEsT0FBQUEsZ0JBQWlCVCw0QkFBNEIsSUFBSU0sSUFBSUwsU0FBU00sR0FBRyxHQUFHSSxRQUFRO0FBRWhGO0FBRU8sU0FBU1osNkJBQ2RhLFNBQWlDLEVBQ2pDQyxhQUE0QixFQUM1QkMsU0FBaUI7SUFFakIsNERBQTREO0lBQzVELE9BQVFGO1FBQ04sWUFBWTtRQUNaLEtBQUs7UUFDTCxLQUFLO1lBQU07Z0JBQ1QsaUVBQWlFO2dCQUNqRSxtREFBbUQ7Z0JBQ25ELE9BQU9FLFlBQVlELGNBQWNFLE1BQU0sR0FDbkNGLGNBQWNHLEtBQUssQ0FBQ0YsV0FBV0csR0FBRyxDQUFDLENBQUNDLElBQU1DLG1CQUFtQkQsTUFDN0QsRUFBRTtZQUNSO1FBQ0EscUJBQXFCO1FBQ3JCLEtBQUs7WUFBTTtnQkFDVCx5RUFBeUU7Z0JBQ3pFLDJEQUEyRDtnQkFDM0QsT0FBT0osWUFBWUQsY0FBY0UsTUFBTSxHQUNuQ0YsY0FBY0csS0FBSyxDQUFDRixXQUFXRyxHQUFHLENBQUMsQ0FBQ0MsSUFBTUMsbUJBQW1CRCxNQUM3RDtZQUNOO1FBQ0EsVUFBVTtRQUNWLEtBQUs7UUFDTCxLQUFLO1lBQU07Z0JBQ1QsSUFBSUosYUFBYUQsY0FBY0UsTUFBTSxFQUFFO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLHdFQUF3RTtvQkFDeEUsa0VBQWtFO29CQUNsRSxxRUFBcUU7b0JBQ3JFLHNFQUFzRTtvQkFDdEUsNkRBQTZEO29CQUM3RCxvQkFBb0I7b0JBQ3BCLE9BQU87Z0JBQ1Q7Z0JBQ0EsT0FBT0ksbUJBQW1CTixhQUFhLENBQUNDLFVBQVU7WUFDcEQ7UUFDQTtZQUNFRjtZQUNBLE9BQU87SUFDWDtBQUNGO0FBRU8sU0FBU2xCLDZCQUE2QjBCLE9BQWU7SUFDMUQscUVBQXFFO0lBQ3JFLDBFQUEwRTtJQUMxRSx3RUFBd0U7SUFDeEUsc0NBQXNDO0lBQ3RDLHdFQUF3RTtJQUN4RSx1RUFBdUU7SUFDdkUsaURBQWlEO0lBQ2pELElBQ0VBLFlBQVlDLHNCQUFBQSx3QkFBd0IsSUFDcEMscUVBQXFFO0lBQ3JFLHFFQUFxRTtJQUNyRSxrRUFBa0U7SUFDbEUscUJBQXFCO0lBQ3JCLHNFQUFzRTtJQUN0RUQsUUFBUUUsVUFBVSxDQUFDQyxTQUFBQSxnQkFBZ0IsS0FDbkMsZ0JBQWdCO0lBQ2ZILE9BQU8sQ0FBQyxFQUFFLEtBQUssT0FBT0EsUUFBUUksUUFBUSxDQUFDLFFBQ3hDSixZQUFZSyxTQUFBQSxtQkFBbUIsSUFDL0JMLFlBQVksZUFDWjtRQUNBLE9BQU87SUFDVCxPQUFPO1FBQ0wsNENBQTRDO1FBQzVDLE9BQU87SUFDVDtBQUNGO0FBRU8sU0FBU3pCLDJCQUNkK0IsVUFBMkIsRUFDM0JDLGNBQWdDO0lBRWhDLDZFQUE2RTtJQUM3RSx5RUFBeUU7SUFDekUsY0FBYztJQUNkLElBQUksT0FBT0QsZUFBZSxVQUFVO1FBQ2xDLDBFQUEwRTtRQUMxRSxvRUFBb0U7UUFDcEUsaURBQWlEO1FBQ2pELE1BQU1FLDhCQUE4QkMsQ0FBQUEsR0FBQUEsU0FBQUEsNEJBQUFBLEVBQ2xDSCxZQUNBSSxPQUFPQyxXQUFXLENBQUMsSUFBSUMsZ0JBQWdCTDtRQUV6QyxPQUFPQztJQUNULE9BQU8sSUFBSUYsZUFBZSxNQUFNO1FBQzlCLE9BQU87SUFDVCxPQUFPO1FBQ0wsT0FBT0EsV0FBV08sSUFBSSxDQUFDO0lBQ3pCO0FBQ0Y7QUFFTyxTQUFTakMsNEJBQTRCTyxHQUFRO0lBQ2xELE1BQU0yQiw2QkFBNkIsSUFBSTVCLElBQUlDO0lBQzNDMkIsMkJBQTJCQyxZQUFZLENBQUNDLE1BQU0sQ0FBQ0Msa0JBQUFBLG9CQUFvQjtJQUNuRSxJQTFCYzFDLEtBQTBCLEVBMEJHLEVBVTFDO0lBQ0QsT0FBT3VDO0FBQ1Q7QUFFTyxTQUFTdEMsMEJBQ2Q4QyxhQUFxQixFQUNyQjlCLFNBQWlDO0lBRWpDLDhFQUE4RTtJQUM5RSx3RUFBd0U7SUFDeEUsTUFBTStCLGFBQWEvQixjQUFjLE9BQU9BLGNBQWM7SUFDdEQsSUFBSStCLFlBQVk7UUFDZCxpRUFBaUU7UUFDakUsK0NBQStDO1FBQy9DLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsMEVBQTBFO1FBQzFFLGlDQUFpQztRQUNqQyxPQUFPRCxjQUFjRSxLQUFLLENBQUM7SUFDN0I7SUFDQSxPQUFPRjtBQUNUIiwic291cmNlcyI6WyIvVXNlcnMvamV0dGNoZW5nMTAxOC9jb2RlL3NyYy9jbGllbnQvcm91dGUtcGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHluYW1pY1BhcmFtVHlwZXNTaG9ydCB9IGZyb20gJy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHtcbiAgYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCxcbiAgREVGQVVMVF9TRUdNRU5UX0tFWSxcbiAgUEFHRV9TRUdNRU5UX0tFWSxcbn0gZnJvbSAnLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9zZWdtZW50LWNhY2hlL3NlZ21lbnQtdmFsdWUtZW5jb2RpbmcnXG5pbXBvcnQge1xuICBORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUixcbiAgTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSLFxuICBORVhUX1JTQ19VTklPTl9RVUVSWSxcbn0gZnJvbSAnLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB0eXBlIHsgTm9ybWFsaXplZFNlYXJjaCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWdtZW50LWNhY2hlJ1xuaW1wb3J0IHR5cGUgeyBSU0NSZXNwb25zZSB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5cbmV4cG9ydCB0eXBlIFJvdXRlUGFyYW1WYWx1ZSA9IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCBudWxsXG5cbmV4cG9ydCB0eXBlIFJvdXRlUGFyYW0gPSB7XG4gIG5hbWU6IHN0cmluZ1xuICB2YWx1ZTogUm91dGVQYXJhbVZhbHVlXG4gIHR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlcmVkU2VhcmNoKHJlc3BvbnNlOiBSU0NSZXNwb25zZSk6IE5vcm1hbGl6ZWRTZWFyY2gge1xuICAvLyBJZiB0aGUgc2VydmVyIHBlcmZvcm1lZCBhIHJld3JpdGUsIHRoZSBzZWFyY2ggcGFyYW1zIHVzZWQgdG8gcmVuZGVyIHRoZVxuICAvLyBwYWdlIHdpbGwgYmUgZGlmZmVyZW50IGZyb20gdGhlIHBhcmFtcyBpbiB0aGUgcmVxdWVzdCBVUkwuIEluIHRoaXMgY2FzZSxcbiAgLy8gdGhlIHJlc3BvbnNlIHdpbGwgaW5jbHVkZSBhIGhlYWRlciB0aGF0IGdpdmVzIHRoZSByZXdyaXR0ZW4gc2VhcmNoIHF1ZXJ5LlxuICBjb25zdCByZXdyaXR0ZW5RdWVyeSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUilcbiAgaWYgKHJld3JpdHRlblF1ZXJ5ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJld3JpdHRlblF1ZXJ5ID09PSAnJyA/ICcnIDogJz8nICsgcmV3cml0dGVuUXVlcnlcbiAgICApIGFzIE5vcm1hbGl6ZWRTZWFyY2hcbiAgfVxuICAvLyBJZiB0aGUgaGVhZGVyIGlzIG5vdCBwcmVzZW50LCB0aGVyZSB3YXMgbm8gcmV3cml0ZSwgc28gd2UgdXNlIHRoZSBzZWFyY2hcbiAgLy8gcXVlcnkgb2YgdGhlIHJlc3BvbnNlIFVSTC5cbiAgcmV0dXJuIHVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlcihuZXcgVVJMKHJlc3BvbnNlLnVybCkpXG4gICAgLnNlYXJjaCBhcyBOb3JtYWxpemVkU2VhcmNoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW5kZXJlZFBhdGhuYW1lKHJlc3BvbnNlOiBSU0NSZXNwb25zZSk6IHN0cmluZyB7XG4gIC8vIElmIHRoZSBzZXJ2ZXIgcGVyZm9ybWVkIGEgcmV3cml0ZSwgdGhlIHBhdGhuYW1lIHVzZWQgdG8gcmVuZGVyIHRoZVxuICAvLyBwYWdlIHdpbGwgYmUgZGlmZmVyZW50IGZyb20gdGhlIHBhdGhuYW1lIGluIHRoZSByZXF1ZXN0IFVSTC4gSW4gdGhpcyBjYXNlLFxuICAvLyB0aGUgcmVzcG9uc2Ugd2lsbCBpbmNsdWRlIGEgaGVhZGVyIHRoYXQgZ2l2ZXMgdGhlIHJld3JpdHRlbiBwYXRobmFtZS5cbiAgY29uc3QgcmV3cml0dGVuUGF0aCA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSKVxuICByZXR1cm4gKFxuICAgIHJld3JpdHRlblBhdGggPz8gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzcG9uc2UudXJsKSkucGF0aG5hbWVcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEeW5hbWljUGFyYW1Gcm9tVVJMUGFydChcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1Nob3J0LFxuICBwYXRobmFtZVBhcnRzOiBBcnJheTxzdHJpbmc+LFxuICBwYXJ0SW5kZXg6IG51bWJlclxuKTogUm91dGVQYXJhbVZhbHVlIHtcbiAgLy8gVGhpcyBuZWVkcyB0byBtYXRjaCB0aGUgYmVoYXZpb3IgaW4gZ2V0LWR5bmFtaWMtcGFyYW0udHMuXG4gIHN3aXRjaCAocGFyYW1UeXBlKSB7XG4gICAgLy8gQ2F0Y2hhbGxzXG4gICAgY2FzZSAnYyc6XG4gICAgY2FzZSAnY2knOiB7XG4gICAgICAvLyBDYXRjaGFsbHMgcmVjZWl2ZSBhbGwgdGhlIHJlbWFpbmluZyBVUkwgcGFydHMuIElmIHRoZXJlIGFyZSBub1xuICAgICAgLy8gcmVtYWluaW5nIHBhdGhuYW1lIHBhcnRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgICByZXR1cm4gcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGhcbiAgICAgICAgPyBwYXRobmFtZVBhcnRzLnNsaWNlKHBhcnRJbmRleCkubWFwKChzKSA9PiBlbmNvZGVVUklDb21wb25lbnQocykpXG4gICAgICAgIDogW11cbiAgICB9XG4gICAgLy8gT3B0aW9uYWwgY2F0Y2hhbGxzXG4gICAgY2FzZSAnb2MnOiB7XG4gICAgICAvLyBPcHRpb25hbCBjYXRjaGFsbHMgcmVjZWl2ZSBhbGwgdGhlIHJlbWFpbmluZyBVUkwgcGFydHMsIHVubGVzcyB0aGlzIGlzXG4gICAgICAvLyB0aGUgZW5kIG9mIHRoZSBwYXRobmFtZSwgaW4gd2hpY2ggY2FzZSB0aGV5IHJldHVybiBudWxsLlxuICAgICAgcmV0dXJuIHBhcnRJbmRleCA8IHBhdGhuYW1lUGFydHMubGVuZ3RoXG4gICAgICAgID8gcGF0aG5hbWVQYXJ0cy5zbGljZShwYXJ0SW5kZXgpLm1hcCgocykgPT4gZW5jb2RlVVJJQ29tcG9uZW50KHMpKVxuICAgICAgICA6IG51bGxcbiAgICB9XG4gICAgLy8gRHluYW1pY1xuICAgIGNhc2UgJ2QnOlxuICAgIGNhc2UgJ2RpJzoge1xuICAgICAgaWYgKHBhcnRJbmRleCA+PSBwYXRobmFtZVBhcnRzLmxlbmd0aCkge1xuICAgICAgICAvLyBUaGUgcm91dGUgdHJlZSBleHBlY3RlZCB0aGVyZSB0byBiZSBtb3JlIHBhcnRzIGluIHRoZSBVUkwgdGhhbiB0aGVyZVxuICAgICAgICAvLyBhY3R1YWxseSBhcmUuIFRoaXMgY291bGQgaGFwcGVuIGlmIHRoZSB4LW5leHRqcy1yZXdyaXR0ZW4tcGF0aCBoZWFkZXJcbiAgICAgICAgLy8gaXMgaW5jb3JyZWN0bHkgc2V0LCBvciBwb3RlbnRpYWxseSBkdWUgdG8gYnVnIGluIE5leHQuanMuIFRPRE86XG4gICAgICAgIC8vIFNob3VsZCB0aGlzIGJlIGEgaGFyZCBlcnJvcj8gRHVyaW5nIGEgcHJlZmV0Y2gsIHdlIGNhbiBqdXN0IGFib3J0LlxuICAgICAgICAvLyBEdXJpbmcgYSBjbGllbnQgbmF2aWdhdGlvbiwgd2UgY291bGQgdHJpZ2dlciBhIGhhcmQgcmVmcmVzaC4gQnV0IGlmXG4gICAgICAgIC8vIGl0IGhhcHBlbnMgZHVyaW5nIGluaXRpYWwgcmVuZGVyLCB3ZSBkb24ndCByZWFsbHkgaGF2ZSBhbnlcbiAgICAgICAgLy8gcmVjb3Zlcnkgb3B0aW9ucy5cbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG4gICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lUGFydHNbcGFydEluZGV4XSlcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHBhcmFtVHlwZSBzYXRpc2ZpZXMgbmV2ZXJcbiAgICAgIHJldHVybiAnJ1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2VzU3RhdGljU2VnbWVudEFwcGVhckluVVJMKHNlZ21lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBUaGlzIGlzIG5vdCBhIHBhcmFtZXRlcml6ZWQgc2VnbWVudDsgaG93ZXZlciwgd2UgbmVlZCB0byBkZXRlcm1pbmVcbiAgLy8gd2hldGhlciBvciBub3QgdGhpcyBzZWdtZW50IGFwcGVhcnMgaW4gdGhlIFVSTC4gRm9yIGV4YW1wbGUsIHRoaXMgcm91dGVcbiAgLy8gZ3JvdXBzIGRvIG5vdCBhcHBlYXIgaW4gdGhlIFVSTCwgc28gdGhleSBzaG91bGQgYmUgc2tpcHBlZC4gQW55IG90aGVyXG4gIC8vIHNwZWNpYWwgY2FzZXMgbXVzdCBiZSBoYW5kbGVkIGhlcmUuXG4gIC8vIFRPRE86IENvbnNpZGVyIGVuY29kaW5nIHRoaXMgZGlyZWN0bHkgaW50byB0aGUgcm91dGVyIHRyZWUgaW5zdGVhZCBvZlxuICAvLyBpbmZlcnJpbmcgaXQgb24gdGhlIGNsaWVudCBiYXNlZCBvbiB0aGUgc2VnbWVudCB0eXBlLiBTb21ldGhpbmcgbGlrZVxuICAvLyBhIGBkb2VzQXBwZWFySW5VUkxgIGZsYWcgaW4gRmxpZ2h0Um91dGVyU3RhdGUuXG4gIGlmIChcbiAgICBzZWdtZW50ID09PSBST09UX1NFR01FTlRfUkVRVUVTVF9LRVkgfHxcbiAgICAvLyBGb3Igc29tZSByZWFzb24sIHRoZSBsb2FkZXIgdHJlZSBzb21ldGltZXMgaW5jbHVkZXMgZXh0cmEgX19QQUdFX19cbiAgICAvLyBcImxheW91dHNcIiB3aGVuIHBhcnQgb2YgYSBwYXJhbGxlbCByb3V0ZS4gQnV0IGl0J3Mgbm90IGEgbGVhZiBub2RlLlxuICAgIC8vIE90aGVyd2lzZSwgd2Ugd291bGRuJ3QgbmVlZCB0aGlzIHNwZWNpYWwgY2FzZSBiZWNhdXNlIHBhZ2VzIGFyZVxuICAgIC8vIGFsd2F5cyBsZWFmIG5vZGVzLlxuICAgIC8vIFRPRE86IEludmVzdGlnYXRlIHdoeSB0aGUgbG9hZGVyIHByb2R1Y2VzIHRoZXNlIGZha2UgcGFnZSBzZWdtZW50cy5cbiAgICBzZWdtZW50LnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSkgfHxcbiAgICAvLyBSb3V0ZSBncm91cHMuXG4gICAgKHNlZ21lbnRbMF0gPT09ICcoJyAmJiBzZWdtZW50LmVuZHNXaXRoKCcpJykpIHx8XG4gICAgc2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSB8fFxuICAgIHNlZ21lbnQgPT09ICcvX25vdC1mb3VuZCdcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSB7XG4gICAgLy8gQWxsIG90aGVyIHNlZ21lbnQgdHlwZXMgYXBwZWFyIGluIHRoZSBVUkxcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZUtleUZvckR5bmFtaWNQYXJhbShcbiAgcGFyYW1WYWx1ZTogUm91dGVQYXJhbVZhbHVlLFxuICByZW5kZXJlZFNlYXJjaDogTm9ybWFsaXplZFNlYXJjaFxuKTogc3RyaW5nIHtcbiAgLy8gVGhpcyBuZWVkcyB0byBtYXRjaCB0aGUgbG9naWMgaW4gZ2V0LWR5bmFtaWMtcGFyYW0udHMsIHVudGlsIHdlJ3JlIGFibGUgdG9cbiAgLy8gdW5pZnkgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIHNvIHRoYXQgdGhlc2UgYXJlIGFsd2F5cyBjb21wdXRlZCBvblxuICAvLyB0aGUgY2xpZW50LlxuICBpZiAodHlwZW9mIHBhcmFtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gVE9ETzogUmVmYWN0b3Igb3IgcmVtb3ZlIHRoaXMgaGVscGVyIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHN0cmluZyByYXRoZXJcbiAgICAvLyB0aGFuIHRoZSB3aG9sZSBzZWdtZW50IHR5cGUuIEFsc28gd2UgY2FuIHByb2JhYmx5IGp1c3QgYXBwZW5kIHRoZVxuICAgIC8vIHNlYXJjaCBzdHJpbmcgaW5zdGVhZCBvZiB0dXJuaW5nIGl0IGludG8gSlNPTi5cbiAgICBjb25zdCBwYWdlU2VnbWVudFdpdGhTZWFyY2hQYXJhbXMgPSBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50KFxuICAgICAgcGFyYW1WYWx1ZSxcbiAgICAgIE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHJlbmRlcmVkU2VhcmNoKSlcbiAgICApIGFzIHN0cmluZ1xuICAgIHJldHVybiBwYWdlU2VnbWVudFdpdGhTZWFyY2hQYXJhbXNcbiAgfSBlbHNlIGlmIChwYXJhbVZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuICcnXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcmFtVmFsdWUuam9pbignLycpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlcih1cmw6IFVSTCk6IFVSTCB7XG4gIGNvbnN0IHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzID0gbmV3IFVSTCh1cmwpXG4gIHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzLnNlYXJjaFBhcmFtcy5kZWxldGUoTkVYVF9SU0NfVU5JT05fUVVFUlkpXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnICYmXG4gICAgICB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVycy5wYXRobmFtZS5lbmRzV2l0aCgnLnR4dCcpXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVyc1xuICAgICAgY29uc3QgbGVuZ3RoID0gcGF0aG5hbWUuZW5kc1dpdGgoJy9pbmRleC50eHQnKSA/IDEwIDogNFxuICAgICAgLy8gU2xpY2Ugb2ZmIGAvaW5kZXgudHh0YCBvciBgLnR4dGAgZnJvbSB0aGUgZW5kIG9mIHRoZSBwYXRobmFtZVxuICAgICAgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMucGF0aG5hbWUgPSBwYXRobmFtZS5zbGljZSgwLCAtbGVuZ3RoKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXkoXG4gIHBhcmFtQ2FjaGVLZXk6IHN0cmluZyxcbiAgcGFyYW1UeXBlOiBEeW5hbWljUGFyYW1UeXBlc1Nob3J0XG4pIHtcbiAgLy8gVHVybiB0aGUgY2FjaGUga2V5IHN0cmluZyBzZW50IGJ5IHRoZSBzZXJ2ZXIgKGFzIHBhcnQgb2YgRmxpZ2h0Um91dGVyU3RhdGUpXG4gIC8vIGludG8gYSB2YWx1ZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYHVzZVBhcmFtc2AgYW5kIGNsaWVudCBjb21wb25lbnRzLlxuICBjb25zdCBpc0NhdGNoQWxsID0gcGFyYW1UeXBlID09PSAnYycgfHwgcGFyYW1UeXBlID09PSAnb2MnXG4gIGlmIChpc0NhdGNoQWxsKSB7XG4gICAgLy8gQ2F0Y2gtYWxsIHBhcmFtIGtleXMgYXJlIGEgY29uY2F0ZW5hdGlvbiBvZiB0aGUgcGF0aCBzZWdtZW50cy5cbiAgICAvLyBTZWUgZXF1aXZhbGVudCBsb2dpYyBpbiBgZ2V0U2VsZWN0ZWRQYXJhbXNgLlxuICAgIC8vIFRPRE86IFdlIHNob3VsZCBqdXN0IHBhc3MgdGhlIGFycmF5IGRpcmVjdGx5LCByYXRoZXIgdGhhbiBjb25jYXRlbmF0ZVxuICAgIC8vIGl0IHRvIGEgc3RyaW5nIGFuZCB0aGVuIHNwbGl0IGl0IGJhY2sgdG8gYW4gYXJyYXkuIEl0IG5lZWRzIHRvIGJlIGFuXG4gICAgLy8gYXJyYXkgaW4gc29tZSBwbGFjZXMsIGxpa2Ugd2hlbiBwYXNzaW5nIGEga2V5IFJlYWN0LCBidXQgd2UgY2FuIGNvbnZlcnRcbiAgICAvLyBpdCBhdCBydW50aW1lIGluIHRob3NlIHBsYWNlcy5cbiAgICByZXR1cm4gcGFyYW1DYWNoZUtleS5zcGxpdCgnLycpXG4gIH1cbiAgcmV0dXJuIHBhcmFtQ2FjaGVLZXlcbn1cbiJdLCJuYW1lcyI6WyJkb2VzU3RhdGljU2VnbWVudEFwcGVhckluVVJMIiwiZ2V0Q2FjaGVLZXlGb3JEeW5hbWljUGFyYW0iLCJnZXRQYXJhbVZhbHVlRnJvbUNhY2hlS2V5IiwiZ2V0UmVuZGVyZWRQYXRobmFtZSIsImdldFJlbmRlcmVkU2VhcmNoIiwicGFyc2VEeW5hbWljUGFyYW1Gcm9tVVJMUGFydCIsInVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlciIsInJlc3BvbnNlIiwicmV3cml0dGVuUXVlcnkiLCJoZWFkZXJzIiwiZ2V0IiwiTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSIiwiVVJMIiwidXJsIiwic2VhcmNoIiwicmV3cml0dGVuUGF0aCIsIk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSIiwicGF0aG5hbWUiLCJwYXJhbVR5cGUiLCJwYXRobmFtZVBhcnRzIiwicGFydEluZGV4IiwibGVuZ3RoIiwic2xpY2UiLCJtYXAiLCJzIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic2VnbWVudCIsIlJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwiZW5kc1dpdGgiLCJERUZBVUxUX1NFR01FTlRfS0VZIiwicGFyYW1WYWx1ZSIsInJlbmRlcmVkU2VhcmNoIiwicGFnZVNlZ21lbnRXaXRoU2VhcmNoUGFyYW1zIiwiYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiVVJMU2VhcmNoUGFyYW1zIiwiam9pbiIsInVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiZGVsZXRlIiwiTkVYVF9SU0NfVU5JT05fUVVFUlkiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJfX05FWFRfQ09ORklHX09VVFBVVCIsInBhcmFtQ2FjaGVLZXkiLCJpc0NhdGNoQWxsIiwic3BsaXQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/route-params.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/client/set-attributes-from-props.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/set-attributes-from-props.js ***! \********************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"setAttributesFromProps\", ({\n enumerable: true,\n get: function() {\n return setAttributesFromProps;\n }\n}));\nconst DOMAttributeNames = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule'\n};\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets'\n];\nfunction isBooleanScriptAttribute(attr) {\n return [\n 'async',\n 'defer',\n 'noModule'\n ].includes(attr);\n}\nfunction setAttributesFromProps(el, props) {\n for (const [p, value] of Object.entries(props)){\n if (!props.hasOwnProperty(p)) continue;\n if (ignoreProps.includes(p)) continue;\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue;\n }\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n ;\n el[attr] = !!value;\n } else {\n el.setAttribute(attr, String(value));\n }\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (value === false || el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr) && (!value || value === 'false')) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '');\n el.removeAttribute(attr);\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=set-attributes-from-props.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NldC1hdHRyaWJ1dGVzLWZyb20tcHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7OzswREF3QmdCQTs7O2VBQUFBOzs7QUF4QmhCLE1BQU1DLG9CQUE0QztJQUNoREMsZUFBZTtJQUNmQyxXQUFXO0lBQ1hDLFNBQVM7SUFDVEMsV0FBVztJQUNYQyxVQUFVO0FBQ1o7QUFFQSxNQUFNQyxjQUFjO0lBQ2xCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxTQUFTQyx5QkFDUEMsSUFBWTtJQUVaLE9BQU87UUFBQztRQUFTO1FBQVM7S0FBVyxDQUFDQyxRQUFRLENBQUNEO0FBQ2pEO0FBRU8sU0FBU1QsdUJBQXVCVyxFQUFlLEVBQUVDLEtBQWE7SUFDbkUsS0FBSyxNQUFNLENBQUNDLEdBQUdDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDSixPQUFRO1FBQzlDLElBQUksQ0FBQ0EsTUFBTUssY0FBYyxDQUFDSixJQUFJO1FBQzlCLElBQUlOLFlBQVlHLFFBQVEsQ0FBQ0csSUFBSTtRQUU3Qiw2Q0FBNkM7UUFDN0MsSUFBSUMsVUFBVUksV0FBVztZQUN2QjtRQUNGO1FBRUEsTUFBTVQsT0FBT1IsaUJBQWlCLENBQUNZLEVBQUUsSUFBSUEsRUFBRU0sV0FBVztRQUVsRCxJQUFJUixHQUFHUyxPQUFPLEtBQUssWUFBWVoseUJBQXlCQyxPQUFPO1lBQzdELDZDQUE2QztZQUM3QywrQ0FBK0M7O1lBQzdDRSxFQUF3QixDQUFDRixLQUFLLEdBQUcsQ0FBQyxDQUFDSztRQUN2QyxPQUFPO1lBQ0xILEdBQUdVLFlBQVksQ0FBQ1osTUFBTWEsT0FBT1I7UUFDL0I7UUFFQSw2RUFBNkU7UUFDN0UsMkdBQTJHO1FBQzNHLElBQ0VBLFVBQVUsU0FDVEgsR0FBR1MsT0FBTyxLQUFLLFlBQ2RaLHlCQUF5QkMsU0FDeEIsRUFBQ0ssU0FBU0EsVUFBVSxRQUFNLEVBQzdCO1lBQ0EsK0ZBQStGO1lBQy9GLDJFQUEyRTtZQUMzRUgsR0FBR1UsWUFBWSxDQUFDWixNQUFNO1lBQ3RCRSxHQUFHWSxlQUFlLENBQUNkO1FBQ3JCO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9zcmMvY2xpZW50L3NldC1hdHRyaWJ1dGVzLWZyb20tcHJvcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRE9NQXR0cmlidXRlTmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgaHRtbEZvcjogJ2ZvcicsXG4gIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnLFxuICBub01vZHVsZTogJ25vTW9kdWxlJyxcbn1cblxuY29uc3QgaWdub3JlUHJvcHMgPSBbXG4gICdvbkxvYWQnLFxuICAnb25SZWFkeScsXG4gICdkYW5nZXJvdXNseVNldElubmVySFRNTCcsXG4gICdjaGlsZHJlbicsXG4gICdvbkVycm9yJyxcbiAgJ3N0cmF0ZWd5JyxcbiAgJ3N0eWxlc2hlZXRzJyxcbl1cblxuZnVuY3Rpb24gaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlKFxuICBhdHRyOiBzdHJpbmdcbik6IGF0dHIgaXMgJ2FzeW5jJyB8ICdkZWZlcicgfCAnbm9Nb2R1bGUnIHtcbiAgcmV0dXJuIFsnYXN5bmMnLCAnZGVmZXInLCAnbm9Nb2R1bGUnXS5pbmNsdWRlcyhhdHRyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QXR0cmlidXRlc0Zyb21Qcm9wcyhlbDogSFRNTEVsZW1lbnQsIHByb3BzOiBvYmplY3QpIHtcbiAgZm9yIChjb25zdCBbcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlXG4gICAgaWYgKGlnbm9yZVByb3BzLmluY2x1ZGVzKHApKSBjb250aW51ZVxuXG4gICAgLy8gd2UgZG9uJ3QgcmVuZGVyIHVuZGVmaW5lZCBwcm9wcyB0byB0aGUgRE9NXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgYXR0ciA9IERPTUF0dHJpYnV0ZU5hbWVzW3BdIHx8IHAudG9Mb3dlckNhc2UoKVxuXG4gICAgaWYgKGVsLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIGlzQm9vbGVhblNjcmlwdEF0dHJpYnV0ZShhdHRyKSkge1xuICAgICAgLy8gQ29ycmVjdGx5IGFzc2lnbiBib29sZWFuIHNjcmlwdCBhdHRyaWJ1dGVzXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvcHVsbC8yMDc0OFxuICAgICAgOyhlbCBhcyBIVE1MU2NyaXB0RWxlbWVudClbYXR0cl0gPSAhIXZhbHVlXG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBTdHJpbmcodmFsdWUpKVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBmYWxzeSBub24temVybyBib29sZWFuIGF0dHJpYnV0ZXMgc28gdGhleSBhcmUgY29ycmVjdGx5IGludGVycHJldGVkXG4gICAgLy8gKGUuZy4gaWYgd2Ugc2V0IHRoZW0gdG8gZmFsc2UsIHRoaXMgY29lcmNlcyB0byB0aGUgc3RyaW5nIFwiZmFsc2VcIiwgd2hpY2ggdGhlIGJyb3dzZXIgaW50ZXJwcmV0cyBhcyB0cnVlKVxuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgKGVsLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmXG4gICAgICAgIGlzQm9vbGVhblNjcmlwdEF0dHJpYnV0ZShhdHRyKSAmJlxuICAgICAgICAoIXZhbHVlIHx8IHZhbHVlID09PSAnZmFsc2UnKSlcbiAgICApIHtcbiAgICAgIC8vIENhbGwgc2V0QXR0cmlidXRlIGJlZm9yZSwgYXMgd2UgbmVlZCB0byBzZXQgYW5kIHVuc2V0IHRoZSBhdHRyaWJ1dGUgdG8gb3ZlcnJpZGUgZm9yY2UgYXN5bmM6XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzY3JpcHQtZm9yY2UtYXN5bmNcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCAnJylcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShhdHRyKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInNldEF0dHJpYnV0ZXNGcm9tUHJvcHMiLCJET01BdHRyaWJ1dGVOYW1lcyIsImFjY2VwdENoYXJzZXQiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwibm9Nb2R1bGUiLCJpZ25vcmVQcm9wcyIsImlzQm9vbGVhblNjcmlwdEF0dHJpYnV0ZSIsImF0dHIiLCJpbmNsdWRlcyIsImVsIiwicHJvcHMiLCJwIiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCJ0b0xvd2VyQ2FzZSIsInRhZ05hbWUiLCJzZXRBdHRyaWJ1dGUiLCJTdHJpbmciLCJyZW1vdmVBdHRyaWJ1dGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/client/set-attributes-from-props.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js": /*!********************************************************************************************!*\ !*** ./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js ***! \********************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\n/**\n * MIT License\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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 */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n// This file is copied from the Metro JavaScript bundler, with minor tweaks for\n// webpack 4 compatibility.\n//\n// https://github.com/facebook/metro/blob/d6b9685c730d0d63577db40f41369157f28dfa3a/packages/metro/src/lib/polyfills/require.js\nconst runtime_1 = __importDefault(__webpack_require__(/*! next/dist/compiled/react-refresh/runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-refresh/runtime.js\"));\nfunction isSafeExport(key) {\n return (key === '__esModule' ||\n key === '__N_SSG' ||\n key === '__N_SSP' ||\n // TODO: remove this key from page config instead of allow listing it\n key === 'config');\n}\nfunction registerExportsForReactRefresh(moduleExports, moduleID) {\n runtime_1.default.register(moduleExports, moduleID + ' %exports%');\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n // (This is important for legacy environments.)\n return;\n }\n for (var key in moduleExports) {\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n continue;\n }\n var typeID = moduleID + ' %exports% ' + key;\n runtime_1.default.register(exportValue, typeID);\n }\n}\nfunction getRefreshBoundarySignature(moduleExports) {\n var signature = [];\n signature.push(runtime_1.default.getFamilyByType(moduleExports));\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n // (This is important for legacy environments.)\n return signature;\n }\n for (var key in moduleExports) {\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n continue;\n }\n signature.push(key);\n signature.push(runtime_1.default.getFamilyByType(exportValue));\n }\n return signature;\n}\nfunction isReactRefreshBoundary(moduleExports) {\n if (runtime_1.default.isLikelyComponentType(moduleExports)) {\n return true;\n }\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n return false;\n }\n var hasExports = false;\n var areAllExportsComponents = true;\n for (var key in moduleExports) {\n hasExports = true;\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n return false;\n }\n if (!runtime_1.default.isLikelyComponentType(exportValue)) {\n areAllExportsComponents = false;\n }\n }\n return hasExports && areAllExportsComponents;\n}\nfunction shouldInvalidateReactRefreshBoundary(prevSignature, nextSignature) {\n if (prevSignature.length !== nextSignature.length) {\n return true;\n }\n for (var i = 0; i < nextSignature.length; i++) {\n if (prevSignature[i] !== nextSignature[i]) {\n return true;\n }\n }\n return false;\n}\nvar isUpdateScheduled = false;\n// This function aggregates updates from multiple modules into a single React Refresh call.\nfunction scheduleUpdate() {\n if (isUpdateScheduled) {\n return;\n }\n isUpdateScheduled = true;\n function canApplyUpdate(status) {\n return status === 'idle';\n }\n function applyUpdate() {\n isUpdateScheduled = false;\n try {\n runtime_1.default.performReactRefresh();\n }\n catch (err) {\n console.warn('Warning: Failed to re-render. We will retry on the next Fast Refresh event.\\n' +\n err);\n }\n }\n if (canApplyUpdate(module.hot.status())) {\n // Apply update on the next tick.\n Promise.resolve().then(() => {\n applyUpdate();\n });\n return;\n }\n const statusHandler = (status) => {\n if (canApplyUpdate(status)) {\n module.hot.removeStatusHandler(statusHandler);\n applyUpdate();\n }\n };\n // Apply update once the HMR runtime's status is idle.\n module.hot.addStatusHandler(statusHandler);\n}\n// Needs to be compatible with IE11\nexports[\"default\"] = {\n registerExportsForReactRefresh: registerExportsForReactRefresh,\n isReactRefreshBoundary: isReactRefreshBoundary,\n shouldInvalidateReactRefreshBoundary: shouldInvalidateReactRefreshBoundary,\n getRefreshBoundarySignature: getRefreshBoundarySignature,\n scheduleUpdate: scheduleUpdate,\n};\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtcmVmcmVzaC11dGlscy9kaXN0L2ludGVybmFsL2hlbHBlcnMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsbUJBQU8sQ0FBQyxnSUFBMEM7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMEJBQTBCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVU7QUFDZDtBQUNBO0FBQ0Esa0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL2pldHRjaGVuZzEwMTgvY29kZS9kcmFtYWxpbmctdm9jYWItbGVhcm5pbmcvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1yZWZyZXNoLXV0aWxzL2Rpc3QvaW50ZXJuYWwvaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogTUlUIExpY2Vuc2VcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBUaGlzIGZpbGUgaXMgY29waWVkIGZyb20gdGhlIE1ldHJvIEphdmFTY3JpcHQgYnVuZGxlciwgd2l0aCBtaW5vciB0d2Vha3MgZm9yXG4vLyB3ZWJwYWNrIDQgY29tcGF0aWJpbGl0eS5cbi8vXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svbWV0cm8vYmxvYi9kNmI5Njg1YzczMGQwZDYzNTc3ZGI0MGY0MTM2OTE1N2YyOGRmYTNhL3BhY2thZ2VzL21ldHJvL3NyYy9saWIvcG9seWZpbGxzL3JlcXVpcmUuanNcbmNvbnN0IHJ1bnRpbWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXJlZnJlc2gvcnVudGltZVwiKSk7XG5mdW5jdGlvbiBpc1NhZmVFeHBvcnQoa2V5KSB7XG4gICAgcmV0dXJuIChrZXkgPT09ICdfX2VzTW9kdWxlJyB8fFxuICAgICAgICBrZXkgPT09ICdfX05fU1NHJyB8fFxuICAgICAgICBrZXkgPT09ICdfX05fU1NQJyB8fFxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBrZXkgZnJvbSBwYWdlIGNvbmZpZyBpbnN0ZWFkIG9mIGFsbG93IGxpc3RpbmcgaXRcbiAgICAgICAga2V5ID09PSAnY29uZmlnJyk7XG59XG5mdW5jdGlvbiByZWdpc3RlckV4cG9ydHNGb3JSZWFjdFJlZnJlc2gobW9kdWxlRXhwb3J0cywgbW9kdWxlSUQpIHtcbiAgICBydW50aW1lXzEuZGVmYXVsdC5yZWdpc3Rlcihtb2R1bGVFeHBvcnRzLCBtb2R1bGVJRCArICcgJWV4cG9ydHMlJyk7XG4gICAgaWYgKG1vZHVsZUV4cG9ydHMgPT0gbnVsbCB8fCB0eXBlb2YgbW9kdWxlRXhwb3J0cyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gRXhpdCBpZiB3ZSBjYW4ndCBpdGVyYXRlIG92ZXIgZXhwb3J0cy5cbiAgICAgICAgLy8gKFRoaXMgaXMgaW1wb3J0YW50IGZvciBsZWdhY3kgZW52aXJvbm1lbnRzLilcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKHZhciBrZXkgaW4gbW9kdWxlRXhwb3J0cykge1xuICAgICAgICBpZiAoaXNTYWZlRXhwb3J0KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZXhwb3J0VmFsdWUgPSBtb2R1bGVFeHBvcnRzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGZhaWwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHR5cGVJRCA9IG1vZHVsZUlEICsgJyAlZXhwb3J0cyUgJyArIGtleTtcbiAgICAgICAgcnVudGltZV8xLmRlZmF1bHQucmVnaXN0ZXIoZXhwb3J0VmFsdWUsIHR5cGVJRCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0UmVmcmVzaEJvdW5kYXJ5U2lnbmF0dXJlKG1vZHVsZUV4cG9ydHMpIHtcbiAgICB2YXIgc2lnbmF0dXJlID0gW107XG4gICAgc2lnbmF0dXJlLnB1c2gocnVudGltZV8xLmRlZmF1bHQuZ2V0RmFtaWx5QnlUeXBlKG1vZHVsZUV4cG9ydHMpKTtcbiAgICBpZiAobW9kdWxlRXhwb3J0cyA9PSBudWxsIHx8IHR5cGVvZiBtb2R1bGVFeHBvcnRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBFeGl0IGlmIHdlIGNhbid0IGl0ZXJhdGUgb3ZlciBleHBvcnRzLlxuICAgICAgICAvLyAoVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGxlZ2FjeSBlbnZpcm9ubWVudHMuKVxuICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgIH1cbiAgICBmb3IgKHZhciBrZXkgaW4gbW9kdWxlRXhwb3J0cykge1xuICAgICAgICBpZiAoaXNTYWZlRXhwb3J0KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZXhwb3J0VmFsdWUgPSBtb2R1bGVFeHBvcnRzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGZhaWwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0dXJlLnB1c2goa2V5KTtcbiAgICAgICAgc2lnbmF0dXJlLnB1c2gocnVudGltZV8xLmRlZmF1bHQuZ2V0RmFtaWx5QnlUeXBlKGV4cG9ydFZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBzaWduYXR1cmU7XG59XG5mdW5jdGlvbiBpc1JlYWN0UmVmcmVzaEJvdW5kYXJ5KG1vZHVsZUV4cG9ydHMpIHtcbiAgICBpZiAocnVudGltZV8xLmRlZmF1bHQuaXNMaWtlbHlDb21wb25lbnRUeXBlKG1vZHVsZUV4cG9ydHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobW9kdWxlRXhwb3J0cyA9PSBudWxsIHx8IHR5cGVvZiBtb2R1bGVFeHBvcnRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBFeGl0IGlmIHdlIGNhbid0IGl0ZXJhdGUgb3ZlciBleHBvcnRzLlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBoYXNFeHBvcnRzID0gZmFsc2U7XG4gICAgdmFyIGFyZUFsbEV4cG9ydHNDb21wb25lbnRzID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBrZXkgaW4gbW9kdWxlRXhwb3J0cykge1xuICAgICAgICBoYXNFeHBvcnRzID0gdHJ1ZTtcbiAgICAgICAgaWYgKGlzU2FmZUV4cG9ydChrZXkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGV4cG9ydFZhbHVlID0gbW9kdWxlRXhwb3J0c1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgLy8gVGhpcyBtaWdodCBmYWlsIGR1ZSB0byBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJ1bnRpbWVfMS5kZWZhdWx0LmlzTGlrZWx5Q29tcG9uZW50VHlwZShleHBvcnRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGFyZUFsbEV4cG9ydHNDb21wb25lbnRzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0V4cG9ydHMgJiYgYXJlQWxsRXhwb3J0c0NvbXBvbmVudHM7XG59XG5mdW5jdGlvbiBzaG91bGRJbnZhbGlkYXRlUmVhY3RSZWZyZXNoQm91bmRhcnkocHJldlNpZ25hdHVyZSwgbmV4dFNpZ25hdHVyZSkge1xuICAgIGlmIChwcmV2U2lnbmF0dXJlLmxlbmd0aCAhPT0gbmV4dFNpZ25hdHVyZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dFNpZ25hdHVyZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocHJldlNpZ25hdHVyZVtpXSAhPT0gbmV4dFNpZ25hdHVyZVtpXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxudmFyIGlzVXBkYXRlU2NoZWR1bGVkID0gZmFsc2U7XG4vLyBUaGlzIGZ1bmN0aW9uIGFnZ3JlZ2F0ZXMgdXBkYXRlcyBmcm9tIG11bHRpcGxlIG1vZHVsZXMgaW50byBhIHNpbmdsZSBSZWFjdCBSZWZyZXNoIGNhbGwuXG5mdW5jdGlvbiBzY2hlZHVsZVVwZGF0ZSgpIHtcbiAgICBpZiAoaXNVcGRhdGVTY2hlZHVsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpc1VwZGF0ZVNjaGVkdWxlZCA9IHRydWU7XG4gICAgZnVuY3Rpb24gY2FuQXBwbHlVcGRhdGUoc3RhdHVzKSB7XG4gICAgICAgIHJldHVybiBzdGF0dXMgPT09ICdpZGxlJztcbiAgICB9XG4gICAgZnVuY3Rpb24gYXBwbHlVcGRhdGUoKSB7XG4gICAgICAgIGlzVXBkYXRlU2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBydW50aW1lXzEuZGVmYXVsdC5wZXJmb3JtUmVhY3RSZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdXYXJuaW5nOiBGYWlsZWQgdG8gcmUtcmVuZGVyLiBXZSB3aWxsIHJldHJ5IG9uIHRoZSBuZXh0IEZhc3QgUmVmcmVzaCBldmVudC5cXG4nICtcbiAgICAgICAgICAgICAgICBlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjYW5BcHBseVVwZGF0ZShtb2R1bGUuaG90LnN0YXR1cygpKSkge1xuICAgICAgICAvLyBBcHBseSB1cGRhdGUgb24gdGhlIG5leHQgdGljay5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBhcHBseVVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGF0dXNIYW5kbGVyID0gKHN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoY2FuQXBwbHlVcGRhdGUoc3RhdHVzKSkge1xuICAgICAgICAgICAgbW9kdWxlLmhvdC5yZW1vdmVTdGF0dXNIYW5kbGVyKHN0YXR1c0hhbmRsZXIpO1xuICAgICAgICAgICAgYXBwbHlVcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gQXBwbHkgdXBkYXRlIG9uY2UgdGhlIEhNUiBydW50aW1lJ3Mgc3RhdHVzIGlzIGlkbGUuXG4gICAgbW9kdWxlLmhvdC5hZGRTdGF0dXNIYW5kbGVyKHN0YXR1c0hhbmRsZXIpO1xufVxuLy8gTmVlZHMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIElFMTFcbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICByZWdpc3RlckV4cG9ydHNGb3JSZWFjdFJlZnJlc2g6IHJlZ2lzdGVyRXhwb3J0c0ZvclJlYWN0UmVmcmVzaCxcbiAgICBpc1JlYWN0UmVmcmVzaEJvdW5kYXJ5OiBpc1JlYWN0UmVmcmVzaEJvdW5kYXJ5LFxuICAgIHNob3VsZEludmFsaWRhdGVSZWFjdFJlZnJlc2hCb3VuZGFyeTogc2hvdWxkSW52YWxpZGF0ZVJlYWN0UmVmcmVzaEJvdW5kYXJ5LFxuICAgIGdldFJlZnJlc2hCb3VuZGFyeVNpZ25hdHVyZTogZ2V0UmVmcmVzaEJvdW5kYXJ5U2lnbmF0dXJlLFxuICAgIHNjaGVkdWxlVXBkYXRlOiBzY2hlZHVsZVVwZGF0ZSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWxwZXJzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js": /*!***********************************************************************************!*\ !*** ./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js ***! \***********************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst runtime_1 = __importDefault(__webpack_require__(/*! next/dist/compiled/react-refresh/runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-refresh/runtime.js\"));\nconst helpers_1 = __importDefault(__webpack_require__(/*! ./internal/helpers */ \"(app-pages-browser)/./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js\"));\n// Hook into ReactDOM initialization\nruntime_1.default.injectIntoGlobalHook(self);\n// Register global helpers\nself.$RefreshHelpers$ = helpers_1.default;\n// Register a helper for module execution interception\nself.$RefreshInterceptModuleExecution$ = function (webpackModuleId) {\n var prevRefreshReg = self.$RefreshReg$;\n var prevRefreshSig = self.$RefreshSig$;\n self.$RefreshReg$ = function (type, id) {\n runtime_1.default.register(type, webpackModuleId + ' ' + id);\n };\n self.$RefreshSig$ = runtime_1.default.createSignatureFunctionForTransform;\n // Modeled after `useEffect` cleanup pattern:\n // https://react.dev/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed\n return function () {\n self.$RefreshReg$ = prevRefreshReg;\n self.$RefreshSig$ = prevRefreshSig;\n };\n};\n//# sourceMappingURL=runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtcmVmcmVzaC11dGlscy9kaXN0L3J1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLDZDQUE2QztBQUM3QztBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxrQ0FBa0MsbUJBQU8sQ0FBQyxnSUFBMEM7QUFDcEYsa0NBQWtDLG1CQUFPLENBQUMsb0lBQW9CO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtcmVmcmVzaC11dGlscy9kaXN0L3J1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBydW50aW1lXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9yZWFjdC1yZWZyZXNoL3J1bnRpbWVcIikpO1xuY29uc3QgaGVscGVyc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2ludGVybmFsL2hlbHBlcnNcIikpO1xuLy8gSG9vayBpbnRvIFJlYWN0RE9NIGluaXRpYWxpemF0aW9uXG5ydW50aW1lXzEuZGVmYXVsdC5pbmplY3RJbnRvR2xvYmFsSG9vayhzZWxmKTtcbi8vIFJlZ2lzdGVyIGdsb2JhbCBoZWxwZXJzXG5zZWxmLiRSZWZyZXNoSGVscGVycyQgPSBoZWxwZXJzXzEuZGVmYXVsdDtcbi8vIFJlZ2lzdGVyIGEgaGVscGVyIGZvciBtb2R1bGUgZXhlY3V0aW9uIGludGVyY2VwdGlvblxuc2VsZi4kUmVmcmVzaEludGVyY2VwdE1vZHVsZUV4ZWN1dGlvbiQgPSBmdW5jdGlvbiAod2VicGFja01vZHVsZUlkKSB7XG4gICAgdmFyIHByZXZSZWZyZXNoUmVnID0gc2VsZi4kUmVmcmVzaFJlZyQ7XG4gICAgdmFyIHByZXZSZWZyZXNoU2lnID0gc2VsZi4kUmVmcmVzaFNpZyQ7XG4gICAgc2VsZi4kUmVmcmVzaFJlZyQgPSBmdW5jdGlvbiAodHlwZSwgaWQpIHtcbiAgICAgICAgcnVudGltZV8xLmRlZmF1bHQucmVnaXN0ZXIodHlwZSwgd2VicGFja01vZHVsZUlkICsgJyAnICsgaWQpO1xuICAgIH07XG4gICAgc2VsZi4kUmVmcmVzaFNpZyQgPSBydW50aW1lXzEuZGVmYXVsdC5jcmVhdGVTaWduYXR1cmVGdW5jdGlvbkZvclRyYW5zZm9ybTtcbiAgICAvLyBNb2RlbGVkIGFmdGVyIGB1c2VFZmZlY3RgIGNsZWFudXAgcGF0dGVybjpcbiAgICAvLyBodHRwczovL3JlYWN0LmRldi9sZWFybi9zeW5jaHJvbml6aW5nLXdpdGgtZWZmZWN0cyNzdGVwLTMtYWRkLWNsZWFudXAtaWYtbmVlZGVkXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2VsZi4kUmVmcmVzaFJlZyQgPSBwcmV2UmVmcmVzaFJlZztcbiAgICAgICAgc2VsZi4kUmVmcmVzaFNpZyQgPSBwcmV2UmVmcmVzaFNpZztcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJ1bnRpbWUuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/compiled/next-devtools/index.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/compiled/next-devtools/index.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\");\nvar __webpack_modules__={\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`[data-nextjs-toast] {\n &[data-hidden='true'] {\n display: none;\n }\n}\n\n.dev-tools-indicator-menu {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-menu);\n border-radius: var(--rounded-xl);\n position: absolute;\n font-family: var(--font-stack-sans);\n z-index: 3;\n overflow: hidden;\n opacity: 0;\n outline: 0;\n min-width: 248px;\n transition: opacity var(--animate-out-duration-ms)\n var(--animate-out-timing-function);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n}\n\n.dev-tools-indicator-inner {\n padding: 6px;\n width: 100%;\n}\n\n.dev-tools-indicator-item {\n display: flex;\n align-items: center;\n padding: 8px 6px;\n height: var(--size-36);\n border-radius: 6px;\n text-decoration: none !important;\n user-select: none;\n white-space: nowrap;\n\n svg {\n width: var(--size-16);\n height: var(--size-16);\n }\n\n &:focus-visible {\n outline: 0;\n }\n}\n\n.dev-tools-indicator-footer {\n background: var(--color-background-200);\n padding: 6px;\n border-top: 1px solid var(--color-gray-400);\n width: 100%;\n}\n\n.dev-tools-indicator-item[data-selected='true'] {\n cursor: pointer;\n background-color: var(--color-gray-200);\n}\n\n.dev-tools-indicator-label {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-1000);\n}\n\n.dev-tools-indicator-value {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-900);\n margin-left: auto;\n}\n\n.dev-tools-indicator-issue-count {\n --color-primary: var(--color-gray-800);\n --color-secondary: var(--color-gray-100);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-width: var(--size-40);\n height: var(--size-24);\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-small);\n padding: 2px;\n color: var(--color-gray-1000);\n border-radius: 128px;\n font-weight: 500;\n font-size: var(--size-13);\n font-variant-numeric: tabular-nums;\n\n &[data-has-issues='true'] {\n --color-primary: var(--color-red-800);\n --color-secondary: var(--color-red-100);\n }\n\n .dev-tools-indicator-issue-count-indicator {\n width: var(--size-8);\n height: var(--size-8);\n background: var(--color-primary);\n box-shadow: 0 0 0 2px var(--color-secondary);\n border-radius: 50%;\n }\n}\n\n.dev-tools-indicator-shortcut {\n display: flex;\n gap: 4px;\n\n kbd {\n width: var(--size-20);\n height: var(--size-20);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: var(--rounded-md);\n border: 1px solid var(--color-gray-400);\n font-family: var(--font-stack-sans);\n background: var(--color-background-100);\n color: var(--color-gray-1000);\n text-align: center;\n font-size: var(--size-12);\n line-height: var(--size-16);\n }\n}\n\n.dev-tools-grabbing {\n cursor: grabbing;\n\n > * {\n pointer-events: none;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\"],names:[],mappings:\"AAAA;EACE;IACE,aAAa;EACf;AACF;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,8BAA8B;EAC9B,gCAAgC;EAChC,kBAAkB;EAClB,mCAAmC;EACnC,UAAU;EACV,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,gBAAgB;EAChB;sCACoC;;EAEpC;IACE,UAAU;IACV,QAAQ;EACV;AACF;;AAEA;EACE,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,gCAAgC;EAChC,iBAAiB;EACjB,mBAAmB;;EAEnB;IACE,qBAAqB;IACrB,sBAAsB;EACxB;;EAEA;IACE,UAAU;EACZ;AACF;;AAEA;EACE,uCAAuC;EACvC,YAAY;EACZ,2CAA2C;EAC3C,WAAW;AACb;;AAEA;EACE,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,6BAA6B;AAC/B;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,4BAA4B;EAC5B,iBAAiB;AACnB;;AAEA;EACE,sCAAsC;EACtC,wCAAwC;EACxC,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,yBAAyB;EACzB,sBAAsB;EACtB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,+BAA+B;EAC/B,YAAY;EACZ,6BAA6B;EAC7B,oBAAoB;EACpB,gBAAgB;EAChB,yBAAyB;EACzB,kCAAkC;;EAElC;IACE,qCAAqC;IACrC,uCAAuC;EACzC;;EAEA;IACE,oBAAoB;IACpB,qBAAqB;IACrB,gCAAgC;IAChC,4CAA4C;IAC5C,kBAAkB;EACpB;AACF;;AAEA;EACE,aAAa;EACb,QAAQ;;EAER;IACE,qBAAqB;IACrB,sBAAsB;IACtB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,gCAAgC;IAChC,uCAAuC;IACvC,mCAAmC;IACnC,uCAAuC;IACvC,6BAA6B;IAC7B,kBAAkB;IAClB,yBAAyB;IACzB,2BAA2B;EAC7B;AACF;;AAEA;EACE,gBAAgB;;EAEhB;IACE,oBAAoB;EACtB;AACF\",sourcesContent:[\"[data-nextjs-toast] {\\n &[data-hidden='true'] {\\n display: none;\\n }\\n}\\n\\n.dev-tools-indicator-menu {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-menu);\\n border-radius: var(--rounded-xl);\\n position: absolute;\\n font-family: var(--font-stack-sans);\\n z-index: 3;\\n overflow: hidden;\\n opacity: 0;\\n outline: 0;\\n min-width: 248px;\\n transition: opacity var(--animate-out-duration-ms)\\n var(--animate-out-timing-function);\\n\\n &[data-rendered='true'] {\\n opacity: 1;\\n scale: 1;\\n }\\n}\\n\\n.dev-tools-indicator-inner {\\n padding: 6px;\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item {\\n display: flex;\\n align-items: center;\\n padding: 8px 6px;\\n height: var(--size-36);\\n border-radius: 6px;\\n text-decoration: none !important;\\n user-select: none;\\n white-space: nowrap;\\n\\n svg {\\n width: var(--size-16);\\n height: var(--size-16);\\n }\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n}\\n\\n.dev-tools-indicator-footer {\\n background: var(--color-background-200);\\n padding: 6px;\\n border-top: 1px solid var(--color-gray-400);\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item[data-selected='true'] {\\n cursor: pointer;\\n background-color: var(--color-gray-200);\\n}\\n\\n.dev-tools-indicator-label {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-1000);\\n}\\n\\n.dev-tools-indicator-value {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-900);\\n margin-left: auto;\\n}\\n\\n.dev-tools-indicator-issue-count {\\n --color-primary: var(--color-gray-800);\\n --color-secondary: var(--color-gray-100);\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n min-width: var(--size-40);\\n height: var(--size-24);\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-small);\\n padding: 2px;\\n color: var(--color-gray-1000);\\n border-radius: 128px;\\n font-weight: 500;\\n font-size: var(--size-13);\\n font-variant-numeric: tabular-nums;\\n\\n &[data-has-issues='true'] {\\n --color-primary: var(--color-red-800);\\n --color-secondary: var(--color-red-100);\\n }\\n\\n .dev-tools-indicator-issue-count-indicator {\\n width: var(--size-8);\\n height: var(--size-8);\\n background: var(--color-primary);\\n box-shadow: 0 0 0 2px var(--color-secondary);\\n border-radius: 50%;\\n }\\n}\\n\\n.dev-tools-indicator-shortcut {\\n display: flex;\\n gap: 4px;\\n\\n kbd {\\n width: var(--size-20);\\n height: var(--size-20);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: var(--rounded-md);\\n border: 1px solid var(--color-gray-400);\\n font-family: var(--font-stack-sans);\\n background: var(--color-background-100);\\n color: var(--color-gray-1000);\\n text-align: center;\\n font-size: var(--size-12);\\n line-height: var(--size-16);\\n }\\n}\\n\\n.dev-tools-grabbing {\\n cursor: grabbing;\\n\\n > * {\\n pointer-events: none;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.resize-container {\n position: absolute;\n /* todo: better z index */\n z-index: 10;\n /* todo: is this needed */\n background: transparent;\n}\n\n.resize-line {\n position: absolute;\n /* todo smarter z index */\n z-index: -1;\n pointer-events: none;\n /* a normal exit animation curve- at this point the exit animation is */\n /* immediately responsive so we don't need a bespoke curve */\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n /* todo: better var? */\n border: 1px solid var(--color-gray-400);\n}\n\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\n.resize-container:hover ~ .resize-line {\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\n}\n\n.resize-container.right,\n.resize-container.left {\n top: 0;\n height: 100%;\n width: 22px;\n cursor: ew-resize;\n}\n\n/* todo: don't hard code all these values/use vars */\n\n.resize-container.bottom,\n.resize-container.top {\n left: 0;\n width: 100%;\n height: 22px;\n cursor: ns-resize;\n}\n\n.resize-container.top {\n top: -7px;\n}\n.resize-container.bottom {\n bottom: -7px;\n}\n.resize-container.left {\n left: -7px;\n}\n.resize-container.right {\n right: -7px;\n}\n\n.resize-container.top-left,\n.resize-container.top-right,\n.resize-container.bottom-left,\n.resize-container.bottom-right {\n width: 26px;\n height: 26px;\n z-index: 15;\n}\n\n.resize-container.top-left {\n top: -5px;\n left: -5px;\n cursor: nwse-resize;\n}\n.resize-container.top-right {\n top: -5px;\n right: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-left {\n bottom: -5px;\n left: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-right {\n bottom: -5px;\n right: -5px;\n cursor: nwse-resize;\n}\n\n.resize-line.top,\n.resize-line.bottom {\n height: 18px;\n width: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.left,\n.resize-line.right {\n width: 18px;\n height: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.top {\n top: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n transform: translateY(18px);\n}\n\n.resize-line.bottom {\n bottom: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n transform: translateY(-18px);\n}\n\n.resize-line.left {\n top: calc(-1 * var(--border-top, 2px));\n left: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\n transform: translateX(18px);\n}\n\n.resize-line.right {\n top: calc(-1 * var(--border-top, 2px));\n right: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\n transform: translateX(-18px);\n}\n\n.resize-container.right:hover ~ .resize-line.right,\n.resize-container.left:hover ~ .resize-line.left,\n.resize-line.right.dragging,\n.resize-line.left.dragging {\n transform: translateX(0);\n}\n\n.resize-container.bottom:hover ~ .resize-line.bottom,\n.resize-container.top:hover ~ .resize-line.top,\n.resize-line.bottom.dragging,\n.resize-line.top.dragging {\n transform: translateY(0);\n}\n\n/* make sure that we don't show multiple handles at once\n * we should only ever show the currently resizing handle\n * regardless of hover state \n */\n.resize-container.no-hover.right:hover ~ .resize-line.right {\n transform: translateX(-20px);\n}\n.resize-container.no-hover.left:hover ~ .resize-line.left {\n transform: translateX(20px);\n}\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\n transform: translateY(-20px);\n}\n.resize-container.no-hover.top:hover ~ .resize-line.top {\n transform: translateY(20px);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,yBAAyB;EACzB,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,oBAAoB;EACpB,uEAAuE;EACvE,4DAA4D;EAC5D,uDAAuD;EACvD,sBAAsB;EACtB,uCAAuC;AACzC;;AAEA,mIAAmI;AACnI;EACE,4DAA4D;AAC9D;;AAEA;;EAEE,MAAM;EACN,YAAY;EACZ,WAAW;EACX,iBAAiB;AACnB;;AAEA,oDAAoD;;AAEpD;;EAEE,OAAO;EACP,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,WAAW;AACb;;AAEA;;;;EAIE,WAAW;EACX,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,SAAS;EACT,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,SAAS;EACT,WAAW;EACX,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,WAAW;EACX,mBAAmB;AACrB;;AAEA;;EAEE,YAAY;EACZ,WAAW;EACX,6CAA6C;AAC/C;;AAEA;;EAEE,WAAW;EACX,YAAY;EACZ,6CAA6C;AAC/C;;AAEA;EACE,SAAS;EACT,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,YAAY;EACZ,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;EACE,sCAAsC;EACtC,UAAU;EACV,gDAAgD;EAChD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,sCAAsC;EACtC,WAAW;EACX,gDAAgD;EAChD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;EAGE;AACF;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".resize-container {\\n position: absolute;\\n /* todo: better z index */\\n z-index: 10;\\n /* todo: is this needed */\\n background: transparent;\\n}\\n\\n.resize-line {\\n position: absolute;\\n /* todo smarter z index */\\n z-index: -1;\\n pointer-events: none;\\n /* a normal exit animation curve- at this point the exit animation is */\\n /* immediately responsive so we don't need a bespoke curve */\\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\\n /* todo: better var? */\\n border: 1px solid var(--color-gray-400);\\n}\\n\\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\\n.resize-container:hover ~ .resize-line {\\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\\n}\\n\\n.resize-container.right,\\n.resize-container.left {\\n top: 0;\\n height: 100%;\\n width: 22px;\\n cursor: ew-resize;\\n}\\n\\n/* todo: don't hard code all these values/use vars */\\n\\n.resize-container.bottom,\\n.resize-container.top {\\n left: 0;\\n width: 100%;\\n height: 22px;\\n cursor: ns-resize;\\n}\\n\\n.resize-container.top {\\n top: -7px;\\n}\\n.resize-container.bottom {\\n bottom: -7px;\\n}\\n.resize-container.left {\\n left: -7px;\\n}\\n.resize-container.right {\\n right: -7px;\\n}\\n\\n.resize-container.top-left,\\n.resize-container.top-right,\\n.resize-container.bottom-left,\\n.resize-container.bottom-right {\\n width: 26px;\\n height: 26px;\\n z-index: 15;\\n}\\n\\n.resize-container.top-left {\\n top: -5px;\\n left: -5px;\\n cursor: nwse-resize;\\n}\\n.resize-container.top-right {\\n top: -5px;\\n right: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-left {\\n bottom: -5px;\\n left: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-right {\\n bottom: -5px;\\n right: -5px;\\n cursor: nwse-resize;\\n}\\n\\n.resize-line.top,\\n.resize-line.bottom {\\n height: 18px;\\n width: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.left,\\n.resize-line.right {\\n width: 18px;\\n height: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.top {\\n top: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\\n transform: translateY(18px);\\n}\\n\\n.resize-line.bottom {\\n bottom: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\\n transform: translateY(-18px);\\n}\\n\\n.resize-line.left {\\n top: calc(-1 * var(--border-top, 2px));\\n left: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\\n transform: translateX(18px);\\n}\\n\\n.resize-line.right {\\n top: calc(-1 * var(--border-top, 2px));\\n right: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\\n transform: translateX(-18px);\\n}\\n\\n.resize-container.right:hover ~ .resize-line.right,\\n.resize-container.left:hover ~ .resize-line.left,\\n.resize-line.right.dragging,\\n.resize-line.left.dragging {\\n transform: translateX(0);\\n}\\n\\n.resize-container.bottom:hover ~ .resize-line.bottom,\\n.resize-container.top:hover ~ .resize-line.top,\\n.resize-line.bottom.dragging,\\n.resize-line.top.dragging {\\n transform: translateY(0);\\n}\\n\\n/* make sure that we don't show multiple handles at once\\n * we should only ever show the currently resizing handle\\n * regardless of hover state \\n */\\n.resize-container.no-hover.right:hover ~ .resize-line.right {\\n transform: translateX(-20px);\\n}\\n.resize-container.no-hover.left:hover ~ .resize-line.left {\\n transform: translateX(20px);\\n}\\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\\n transform: translateY(-20px);\\n}\\n.resize-container.no-hover.top:hover ~ .resize-line.top {\\n transform: translateY(20px);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-boundary-trigger {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 6px;\n line-height: 16px;\n font-weight: 500;\n color: var(--color-gray-1000);\n border-radius: 999px;\n border: none;\n font-size: var(--size-12);\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-boundary-trigger-text {\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.segment-boundary-trigger-text .plus-icon {\n transition: transform 0.25s ease;\n}\n\n.segment-boundary-trigger-text:hover .plus-icon {\n color: var(--color-gray-800);\n}\n\n.segment-boundary-trigger svg {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n vertical-align: middle;\n}\n\n.segment-boundary-trigger:hover svg {\n color: var(--color-gray-700);\n}\n\n.segment-boundary-trigger[disabled] svg,\n.segment-boundary-trigger[disabled]:hover svg {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown {\n padding: 8px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 16px;\n min-width: 120px;\n user-select: none;\n cursor: default;\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\n}\n\n.segment-boundary-dropdown-positioner {\n z-index: var(--top-z-index);\n}\n\n.segment-boundary-dropdown-item {\n display: flex;\n align-items: center;\n padding: 8px;\n line-height: 20px;\n font-size: 14px;\n border-radius: 6px;\n color: var(--color-gray-1000);\n cursor: pointer;\n min-width: 220px;\n border: none;\n background: none;\n width: 100%;\n}\n\n.segment-boundary-dropdown-item[data-disabled] {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown-item svg {\n margin-right: 12px;\n color: currentColor;\n}\n\n.segment-boundary-dropdown-item:hover {\n background: var(--color-gray-200);\n}\n\n.segment-boundary-dropdown-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n\n.segment-boundary-dropdown-item:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.segment-boundary-group-label {\n padding: 8px;\n font-size: 13px;\n line-height: 16px;\n font-weight: 400;\n color: var(--color-gray-900);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"],names:[],mappings:\"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,6BAA6B;EAC7B,oBAAoB;EACpB,YAAY;EACZ,yBAAyB;EACzB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;EACd,sBAAsB;AACxB;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;;EAEE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,sFAAsF;AACxF;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,iBAAiB;EACjB,eAAe;EACf,kBAAkB;EAClB,6BAA6B;EAC7B,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,WAAW;AACb;;AAEA;EACE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,8BAA8B;EAC9B,+BAA+B;AACjC;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,4BAA4B;AAC9B\",sourcesContent:[\".segment-boundary-trigger {\\n display: flex;\\n align-items: center;\\n gap: 4px;\\n padding: 4px 6px;\\n line-height: 16px;\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n border-radius: 999px;\\n border: none;\\n font-size: var(--size-12);\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-boundary-trigger-text {\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.segment-boundary-trigger-text .plus-icon {\\n transition: transform 0.25s ease;\\n}\\n\\n.segment-boundary-trigger-text:hover .plus-icon {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-boundary-trigger svg {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n vertical-align: middle;\\n}\\n\\n.segment-boundary-trigger:hover svg {\\n color: var(--color-gray-700);\\n}\\n\\n.segment-boundary-trigger[disabled] svg,\\n.segment-boundary-trigger[disabled]:hover svg {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown {\\n padding: 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 16px;\\n min-width: 120px;\\n user-select: none;\\n cursor: default;\\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\\n}\\n\\n.segment-boundary-dropdown-positioner {\\n z-index: var(--top-z-index);\\n}\\n\\n.segment-boundary-dropdown-item {\\n display: flex;\\n align-items: center;\\n padding: 8px;\\n line-height: 20px;\\n font-size: 14px;\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n cursor: pointer;\\n min-width: 220px;\\n border: none;\\n background: none;\\n width: 100%;\\n}\\n\\n.segment-boundary-dropdown-item[data-disabled] {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown-item svg {\\n margin-right: 12px;\\n color: currentColor;\\n}\\n\\n.segment-boundary-dropdown-item:hover {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-boundary-dropdown-item:first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n\\n.segment-boundary-dropdown-item:last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n\\n.segment-boundary-group-label {\\n padding: 8px;\\n font-size: 13px;\\n line-height: 16px;\\n font-weight: 400;\\n color: var(--color-gray-900);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-explorer-content {\n font-size: var(--size-14);\n padding: 0 8px;\n width: 100%;\n height: 100%;\n}\n\n.segment-explorer-page-route-bar {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n background-color: var(--color-background-200);\n gap: 12px;\n}\n\n.segment-explorer-page-route-bar-path {\n font-size: var(--size-14);\n font-weight: 500;\n color: var(--color-gray-1000);\n font-family: var(--font-mono);\n white-space: nowrap;\n line-height: 20px;\n}\n\n.segment-explorer-item {\n margin: 4px 0;\n border-radius: 6px;\n}\n\n.segment-explorer-item:nth-child(even) {\n background-color: var(--color-background-200);\n}\n.segment-explorer-item-row {\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-right: 4px;\n}\n.segment-explorer-item-row-main {\n display: flex;\n align-items: center;\n white-space: pre;\n cursor: default;\n color: var(--color-gray-1000);\n}\n\n.segment-explorer-children--intended {\n padding-left: 16px;\n}\n\n.segment-explorer-filename {\n display: inline-flex;\n width: 100%;\n align-items: center;\n}\n\n.segment-explorer-filename select {\n margin-left: auto;\n}\n.segment-explorer-filename--path {\n margin-right: 8px;\n}\n.segment-explorer-filename--path small {\n display: inline-block;\n width: 0;\n opacity: 0;\n}\n.segment-explorer-filename--name {\n color: var(--color-gray-800);\n}\n\n.segment-explorer-files {\n display: inline-flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.segment-explorer-files + .segment-boundary-trigger {\n margin-left: 8px;\n}\n\n.segment-explorer-file-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n height: 20px;\n border-radius: 16px;\n line-height: 16px;\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n cursor: pointer;\n background-color: var(--color-gray-300);\n color: var(--color-gray-1000);\n}\n.segment-explorer-file-label-text {\n display: inline-flex;\n align-items: center;\n}\n\n.segment-explorer-file-label--overridden {\n background-color: var(--color-amber-300);\n color: var(--color-amber-900);\n}\n\n.segment-explorer-file-label .code-icon {\n opacity: 0;\n margin-left: 0;\n width: 0;\n transition: all 0.15s ease-in-out;\n}\n.segment-explorer-file-label:hover .code-icon {\n opacity: 1;\n width: 12px;\n margin-left: 4px;\n}\n\n.segment-explorer-file-label:hover {\n filter: brightness(0.95);\n}\n\n.segment-explorer-file-label--builtin {\n background-color: transparent;\n color: var(--color-gray-900);\n border: 1px dashed var(--color-gray-500);\n height: 24px;\n cursor: default;\n}\n.segment-explorer-file-label--builtin svg {\n margin-left: 4px;\n margin-right: -4px;\n}\n\n/* Footer styles */\n.segment-explorer-footer {\n padding: 8px;\n border-top: 1px solid var(--color-gray-400);\n user-select: none;\n}\n\n.segment-explorer-footer-button {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n width: 100%;\n padding: 6px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 6px;\n color: var(--color-gray-1000);\n font-size: var(--size-14);\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-explorer-footer-button:hover:not(:disabled) {\n background: var(--color-gray-200);\n}\n\n.segment-explorer-footer-button--disabled {\n cursor: not-allowed;\n}\n\n.segment-explorer-footer-text {\n text-align: center;\n}\n\n.segment-explorer-footer-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: var(--color-amber-300);\n color: var(--color-amber-900);\n border-radius: 10px;\n font-size: var(--size-12);\n font-weight: 600;\n line-height: 1;\n}\n\n.segment-explorer-file-label-tooltip--sm {\n white-space: nowrap;\n}\n\n.segment-explorer-file-label-tooltip--lg {\n min-width: 200px;\n}\n\n.segment-explorer-suggestions {\n display: inline-flex;\n gap: 8px;\n}\n\n.segment-explorer-suggestions-tooltip {\n width: 200px;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"],names:[],mappings:\"AAAA;EACE,yBAAyB;EACzB,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,6CAA6C;EAC7C,SAAS;AACX;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,6BAA6B;EAC7B,6BAA6B;EAC7B,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,kBAAkB;AACpB;;AAEA;EACE,6CAA6C;AAC/C;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;EACf,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,QAAQ;EACR,UAAU;AACZ;AACA;EACE,4BAA4B;AAC9B;;AAEA;EACE,oBAAoB;EACpB,QAAQ;EACR,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;EACd,YAAY;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,uCAAuC;EACvC,6BAA6B;AAC/B;AACA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,6BAA6B;AAC/B;;AAEA;EACE,UAAU;EACV,cAAc;EACd,QAAQ;EACR,iCAAiC;AACnC;AACA;EACE,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,6BAA6B;EAC7B,4BAA4B;EAC5B,wCAAwC;EACxC,YAAY;EACZ,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA,kBAAkB;AAClB;EACE,YAAY;EACZ,2CAA2C;EAC3C,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,kBAAkB;EAClB,6BAA6B;EAC7B,yBAAyB;EACzB,gBAAgB;EAChB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,YAAY;EACZ,cAAc;EACd,kCAAkC;EAClC,6BAA6B;EAC7B,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,QAAQ;AACV;;AAEA;EACE,YAAY;AACd\",sourcesContent:[\".segment-explorer-content {\\n font-size: var(--size-14);\\n padding: 0 8px;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.segment-explorer-page-route-bar {\\n display: flex;\\n align-items: center;\\n padding: 14px 16px;\\n background-color: var(--color-background-200);\\n gap: 12px;\\n}\\n\\n.segment-explorer-page-route-bar-path {\\n font-size: var(--size-14);\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n font-family: var(--font-mono);\\n white-space: nowrap;\\n line-height: 20px;\\n}\\n\\n.segment-explorer-item {\\n margin: 4px 0;\\n border-radius: 6px;\\n}\\n\\n.segment-explorer-item:nth-child(even) {\\n background-color: var(--color-background-200);\\n}\\n.segment-explorer-item-row {\\n display: flex;\\n flex-direction: column;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n padding-right: 4px;\\n}\\n.segment-explorer-item-row-main {\\n display: flex;\\n align-items: center;\\n white-space: pre;\\n cursor: default;\\n color: var(--color-gray-1000);\\n}\\n\\n.segment-explorer-children--intended {\\n padding-left: 16px;\\n}\\n\\n.segment-explorer-filename {\\n display: inline-flex;\\n width: 100%;\\n align-items: center;\\n}\\n\\n.segment-explorer-filename select {\\n margin-left: auto;\\n}\\n.segment-explorer-filename--path {\\n margin-right: 8px;\\n}\\n.segment-explorer-filename--path small {\\n display: inline-block;\\n width: 0;\\n opacity: 0;\\n}\\n.segment-explorer-filename--name {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-explorer-files {\\n display: inline-flex;\\n gap: 8px;\\n margin-left: auto;\\n}\\n\\n.segment-explorer-files + .segment-boundary-trigger {\\n margin-left: 8px;\\n}\\n\\n.segment-explorer-file-label {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 6px;\\n height: 20px;\\n border-radius: 16px;\\n line-height: 16px;\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n cursor: pointer;\\n background-color: var(--color-gray-300);\\n color: var(--color-gray-1000);\\n}\\n.segment-explorer-file-label-text {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.segment-explorer-file-label--overridden {\\n background-color: var(--color-amber-300);\\n color: var(--color-amber-900);\\n}\\n\\n.segment-explorer-file-label .code-icon {\\n opacity: 0;\\n margin-left: 0;\\n width: 0;\\n transition: all 0.15s ease-in-out;\\n}\\n.segment-explorer-file-label:hover .code-icon {\\n opacity: 1;\\n width: 12px;\\n margin-left: 4px;\\n}\\n\\n.segment-explorer-file-label:hover {\\n filter: brightness(0.95);\\n}\\n\\n.segment-explorer-file-label--builtin {\\n background-color: transparent;\\n color: var(--color-gray-900);\\n border: 1px dashed var(--color-gray-500);\\n height: 24px;\\n cursor: default;\\n}\\n.segment-explorer-file-label--builtin svg {\\n margin-left: 4px;\\n margin-right: -4px;\\n}\\n\\n/* Footer styles */\\n.segment-explorer-footer {\\n padding: 8px;\\n border-top: 1px solid var(--color-gray-400);\\n user-select: none;\\n}\\n\\n.segment-explorer-footer-button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n width: 100%;\\n padding: 6px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n font-size: var(--size-14);\\n font-weight: 500;\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-explorer-footer-button:hover:not(:disabled) {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-explorer-footer-button--disabled {\\n cursor: not-allowed;\\n}\\n\\n.segment-explorer-footer-text {\\n text-align: center;\\n}\\n\\n.segment-explorer-footer-badge {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n min-width: 20px;\\n height: 20px;\\n padding: 0 6px;\\n background: var(--color-amber-300);\\n color: var(--color-amber-900);\\n border-radius: 10px;\\n font-size: var(--size-12);\\n font-weight: 600;\\n line-height: 1;\\n}\\n\\n.segment-explorer-file-label-tooltip--sm {\\n white-space: nowrap;\\n}\\n\\n.segment-explorer-file-label-tooltip--lg {\\n min-width: 200px;\\n}\\n\\n.segment-explorer-suggestions {\\n display: inline-flex;\\n gap: 8px;\\n}\\n\\n.segment-explorer-suggestions-tooltip {\\n width: 200px;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.nextjs-toast {\n position: fixed;\n z-index: var(--top-z-index);\n max-width: 420px;\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\n}\n\n.nextjs-toast-errors-parent {\n padding: 16px;\n border-radius: var(--rounded-4xl);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/toast/style.css\"],names:[],mappings:\"AAAA;EACE,eAAe;EACf,2BAA2B;EAC3B,gBAAgB;EAChB,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,iCAAiC;EACjC,gBAAgB;EAChB,qCAAqC;EACrC,uCAAuC;AACzC\",sourcesContent:[\".nextjs-toast {\\n position: fixed;\\n z-index: var(--top-z-index);\\n max-width: 420px;\\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\\n}\\n\\n.nextjs-toast-errors-parent {\\n padding: 16px;\\n border-radius: var(--rounded-4xl);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.tooltip-wrapper {\n position: relative;\n display: inline-block;\n line-height: 1;\n}\n\n.tooltip {\n position: relative;\n padding: 6px 12px;\n border-radius: 8px;\n font-size: 14px;\n line-height: 1.4;\n pointer-events: none;\n color: var(--color-gray-100);\n background-color: var(--color-gray-1000);\n}\n\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: var(--arrow-size, 6px);\n border-color: transparent;\n}\n\n.tooltip-arrow--top {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\n var(--arrow-size, 6px);\n border-top-color: var(--color-gray-1000);\n bottom: 0;\n transform: translateY(100%);\n}\n\n.tooltip-arrow--bottom {\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-bottom-color: var(--color-gray-1000);\n top: 0;\n transform: translateY(-100%);\n}\n\n.tooltip-arrow--left {\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-left-color: var(--color-gray-1000);\n right: 0;\n transform: translateX(100%);\n}\n\n.tooltip-arrow--right {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px) 0;\n border-right-color: var(--color-gray-1000);\n left: 0;\n transform: translateX(-100%);\n}\n\n.tooltip-positioner {\n z-index: var(--top-z-index);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;EACf,gBAAgB;EAChB,oBAAoB;EACpB,4BAA4B;EAC5B,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,mBAAmB;EACnB,oCAAoC;EACpC,yBAAyB;AAC3B;;AAEA;EACE;0BACwB;EACxB,wCAAwC;EACxC,SAAS;EACT,2BAA2B;AAC7B;;AAEA;EACE;0BACwB;EACxB,2CAA2C;EAC3C,MAAM;EACN,4BAA4B;AAC9B;;AAEA;EACE;0BACwB;EACxB,yCAAyC;EACzC,QAAQ;EACR,2BAA2B;AAC7B;;AAEA;EACE;4BAC0B;EAC1B,0CAA0C;EAC1C,OAAO;EACP,4BAA4B;AAC9B;;AAEA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".tooltip-wrapper {\\n position: relative;\\n display: inline-block;\\n line-height: 1;\\n}\\n\\n.tooltip {\\n position: relative;\\n padding: 6px 12px;\\n border-radius: 8px;\\n font-size: 14px;\\n line-height: 1.4;\\n pointer-events: none;\\n color: var(--color-gray-100);\\n background-color: var(--color-gray-1000);\\n}\\n\\n.tooltip-arrow {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: var(--arrow-size, 6px);\\n border-color: transparent;\\n}\\n\\n.tooltip-arrow--top {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\\n var(--arrow-size, 6px);\\n border-top-color: var(--color-gray-1000);\\n bottom: 0;\\n transform: translateY(100%);\\n}\\n\\n.tooltip-arrow--bottom {\\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-bottom-color: var(--color-gray-1000);\\n top: 0;\\n transform: translateY(-100%);\\n}\\n\\n.tooltip-arrow--left {\\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-left-color: var(--color-gray-1000);\\n right: 0;\\n transform: translateX(100%);\\n}\\n\\n.tooltip-arrow--right {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px) 0;\\n border-right-color: var(--color-gray-1000);\\n left: 0;\\n transform: translateX(-100%);\\n}\\n\\n.tooltip-positioner {\\n z-index: var(--top-z-index);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>f});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a),l=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\"),s=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\"),c=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\"),u=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\"),d=i()(o());d.i(l.Z),d.i(s.Z),d.i(c.Z),d.i(u.Z),d.push([e.id,`/* devtool global css variables */\n:host {\n /* variables */\n --top-z-index: 2147483647;\n}\n\n/* global styles */\n* {\n -webkit-font-smoothing: antialiased;\n}\n\n/* global reset for draggable content scrollbar styles */\n[data-nextjs-scrollable-content],\n[data-nextjs-scrollable-content] * {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n border-radius: 0 0 1rem 1rem;\n margin-bottom: 1rem;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n\n &::-webkit-scrollbar-track {\n border-radius: 0 0 1rem 1rem;\n background-color: var(--color-background-100);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 1rem;\n background-color: var(--color-gray-500);\n }\n}\n\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n[data-nextjs-scrollable-content] {\n overflow: hidden;\n border-radius: inherit;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/global.css\"],names:[],mappings:\"AAKA,iCAAiC;AACjC;EACE,cAAc;EACd,yBAAyB;AAC3B;;AAEA,kBAAkB;AAClB;EACE,mCAAmC;AACrC;;AAEA,wDAAwD;AACxD;;EAEE;IACE,UAAU;IACV,WAAW;IACX,4BAA4B;IAC5B,mBAAmB;EACrB;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,4BAA4B;IAC5B,6CAA6C;EAC/C;;EAEA;IACE,mBAAmB;IACnB,uCAAuC;EACzC;AACF;;AAEA,iFAAiF;AACjF;EACE,gBAAgB;EAChB,sBAAsB;AACxB\",sourcesContent:[\"@import './normalize.css';\\n@import './styles/default-theme.css';\\n@import './styles/dark-theme.css';\\n@import './styles/colors.css';\\n\\n/* devtool global css variables */\\n:host {\\n /* variables */\\n --top-z-index: 2147483647;\\n}\\n\\n/* global styles */\\n* {\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n/* global reset for draggable content scrollbar styles */\\n[data-nextjs-scrollable-content],\\n[data-nextjs-scrollable-content] * {\\n &::-webkit-scrollbar {\\n width: 6px;\\n height: 6px;\\n border-radius: 0 0 1rem 1rem;\\n margin-bottom: 1rem;\\n }\\n\\n &::-webkit-scrollbar-button {\\n display: none;\\n }\\n\\n &::-webkit-scrollbar-track {\\n border-radius: 0 0 1rem 1rem;\\n background-color: var(--color-background-100);\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n border-radius: 1rem;\\n background-color: var(--color-gray-500);\\n }\\n}\\n\\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\\n[data-nextjs-scrollable-content] {\\n overflow: hidden;\\n border-radius: inherit;\\n}\\n\"],sourceRoot:\"\"}]);let f=d},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel content padding styles */\n.panel-content {\n padding: 16px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* User preferences wrapper styles */\n.user-preferences-wrapper {\n padding: 20px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* Panel route base styles */\n.panel-route {\n opacity: var(--panel-opacity);\n transition: var(--panel-transition);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/menu/panel-router.css\"],names:[],mappings:\"AAAA,iCAAiC;AACjC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,oCAAoC;AACpC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,4BAA4B;AAC5B;EACE,6BAA6B;EAC7B,mCAAmC;AACrC\",sourcesContent:[\"/* Panel content padding styles */\\n.panel-content {\\n padding: 16px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* User preferences wrapper styles */\\n.user-preferences-wrapper {\\n padding: 20px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* Panel route base styles */\\n.panel-route {\\n opacity: var(--panel-opacity);\\n transition: var(--panel-transition);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`: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\narticle,\naside,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection {\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, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol', '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}\n\n:host:not(button) {\n background-color: #fff;\n}\n\n[tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 8px;\n}\n\np {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nabbr[title],\nabbr[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\naddress {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 8px;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 16px;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n 'Courier New', monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 16px;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 8px;\n}\n\nbutton {\n border-radius: 0;\n border: 0;\n padding: 0;\n margin: 0;\n background: none;\n appearance: none;\n -webkit-appearance: none;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: none;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type='button']:not(:disabled),\n[type='reset']:not(:disabled),\n[type='submit']:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-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\ninput[type='radio'],\ninput[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type='date'],\ninput[type='time'],\ninput[type='datetime-local'],\ninput[type='month'] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\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\nprogress {\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\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/normalize.css\"],names:[],mappings:\"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\",sourcesContent:[\":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\\narticle,\\naside,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nnav,\\nsection {\\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, 'Apple Color Emoji',\\n 'Segoe UI Emoji', 'Segoe UI Symbol', '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}\\n\\n:host:not(button) {\\n background-color: #fff;\\n}\\n\\n[tabindex='-1']:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n\\nhr {\\n box-sizing: content-box;\\n height: 0;\\n overflow: visible;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-top: 0;\\n margin-bottom: 8px;\\n}\\n\\np {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nabbr[title],\\nabbr[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\\naddress {\\n margin-bottom: 16px;\\n font-style: normal;\\n line-height: inherit;\\n}\\n\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\n\\ndt {\\n font-weight: 700;\\n}\\n\\ndd {\\n margin-bottom: 8px;\\n margin-left: 0;\\n}\\n\\nblockquote {\\n margin: 0 0 16px;\\n}\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\nsub,\\nsup {\\n position: relative;\\n font-size: 75%;\\n line-height: 0;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\na {\\n color: #007bff;\\n text-decoration: none;\\n background-color: transparent;\\n}\\n\\na:hover {\\n color: #0056b3;\\n text-decoration: underline;\\n}\\n\\na:not([href]) {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\na:not([href]):hover {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\\n 'Courier New', monospace;\\n font-size: 1em;\\n}\\n\\npre {\\n margin-top: 0;\\n margin-bottom: 16px;\\n overflow: auto;\\n}\\n\\nfigure {\\n margin: 0 0 16px;\\n}\\n\\nimg {\\n vertical-align: middle;\\n border-style: none;\\n}\\n\\nsvg {\\n overflow: hidden;\\n vertical-align: middle;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n}\\n\\ncaption {\\n padding-top: 12px;\\n padding-bottom: 12px;\\n color: #6c757d;\\n text-align: left;\\n caption-side: bottom;\\n}\\n\\nth {\\n text-align: inherit;\\n}\\n\\nlabel {\\n display: inline-block;\\n margin-bottom: 8px;\\n}\\n\\nbutton {\\n border-radius: 0;\\n border: 0;\\n padding: 0;\\n margin: 0;\\n background: none;\\n appearance: none;\\n -webkit-appearance: none;\\n}\\n\\nbutton:focus {\\n outline: 1px dotted;\\n outline: 5px auto -webkit-focus-ring-color;\\n}\\n\\nbutton:focus:not(:focus-visible) {\\n outline: none;\\n}\\n\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0;\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\nbutton,\\ninput {\\n overflow: visible;\\n}\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\nselect {\\n word-wrap: normal;\\n}\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n\\nbutton:not(:disabled),\\n[type='button']:not(:disabled),\\n[type='reset']:not(:disabled),\\n[type='submit']:not(:disabled) {\\n cursor: pointer;\\n}\\n\\nbutton::-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\\ninput[type='radio'],\\ninput[type='checkbox'] {\\n box-sizing: border-box;\\n padding: 0;\\n}\\n\\ninput[type='date'],\\ninput[type='time'],\\ninput[type='datetime-local'],\\ninput[type='month'] {\\n -webkit-appearance: listbox;\\n}\\n\\ntextarea {\\n overflow: auto;\\n resize: vertical;\\n}\\n\\nfieldset {\\n min-width: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n}\\n\\nlegend {\\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\\nprogress {\\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\\noutput {\\n display: inline-block;\\n}\\n\\nsummary {\\n display: list-item;\\n cursor: pointer;\\n}\\n\\ntemplate {\\n display: none;\\n}\\n\\n[hidden] {\\n display: none !important;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/panel/dynamic-panel.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel container base styles with dynamic positioning and sizing */\n.dynamic-panel-container {\n position: fixed;\n z-index: 2147483646;\n outline: none;\n top: var(--panel-top, auto);\n bottom: var(--panel-bottom, auto);\n left: var(--panel-left, auto);\n right: var(--panel-right, auto);\n width: var(--panel-width);\n height: var(--panel-height);\n min-width: var(--panel-min-width);\n min-height: var(--panel-min-height);\n max-width: var(--panel-max-width);\n max-height: var(--panel-max-height);\n}\n\n/* Panel content container styles */\n.panel-content-container {\n position: relative;\n width: 100%;\n height: 100%;\n border: 1px solid var(--color-gray-alpha-400);\n border-radius: var(--rounded-xl);\n background: var(--color-background-100);\n display: flex;\n flex-direction: column;\n}\n\n/* Draggable content area styles */\n.draggable-content {\n flex: 1;\n overflow: auto;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/panel/dynamic-panel.css\"],names:[],mappings:\"AAAA,oEAAoE;AACpE;EACE,eAAe;EACf,mBAAmB;EACnB,aAAa;EACb,2BAA2B;EAC3B,iCAAiC;EACjC,6BAA6B;EAC7B,+BAA+B;EAC/B,yBAAyB;EACzB,2BAA2B;EAC3B,iCAAiC;EACjC,mCAAmC;EACnC,iCAAiC;EACjC,mCAAmC;AACrC;;AAEA,mCAAmC;AACnC;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,6CAA6C;EAC7C,gCAAgC;EAChC,uCAAuC;EACvC,aAAa;EACb,sBAAsB;AACxB;;AAEA,kCAAkC;AAClC;EACE,OAAO;EACP,cAAc;AAChB\",sourcesContent:[\"/* Panel container base styles with dynamic positioning and sizing */\\n.dynamic-panel-container {\\n position: fixed;\\n z-index: 2147483646;\\n outline: none;\\n top: var(--panel-top, auto);\\n bottom: var(--panel-bottom, auto);\\n left: var(--panel-left, auto);\\n right: var(--panel-right, auto);\\n width: var(--panel-width);\\n height: var(--panel-height);\\n min-width: var(--panel-min-width);\\n min-height: var(--panel-min-height);\\n max-width: var(--panel-max-width);\\n max-height: var(--panel-max-height);\\n}\\n\\n/* Panel content container styles */\\n.panel-content-container {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-xl);\\n background: var(--color-background-100);\\n display: flex;\\n flex-direction: column;\\n}\\n\\n/* Draggable content area styles */\\n.draggable-content {\\n flex: 1;\\n overflow: auto;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * CAUTION: THIS IS A WORKAROUND!\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\n * So, we do a workaround mapping to change the color matching the theme.\n *\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\n */\n /* cyan: keyword */\n --color-ansi-cyan: var(--color-syntax-keyword);\n /* yellow: capitalized, jsxIdentifier, punctuation */\n --color-ansi-yellow: var(--color-syntax-function);\n /* magenta: number, regex */\n --color-ansi-magenta: var(--color-syntax-keyword);\n /* green: string */\n --color-ansi-green: var(--color-syntax-string);\n /* gray (bright black): comment, gutter */\n --color-ansi-bright-black: var(--color-syntax-comment);\n\n /* Ansi - Temporary */\n --color-ansi-selection: var(--color-gray-alpha-300);\n --color-ansi-bg: var(--color-background-200);\n --color-ansi-fg: var(--color-gray-1000);\n\n --color-ansi-white: var(--color-gray-700);\n --color-ansi-black: var(--color-gray-200);\n --color-ansi-blue: var(--color-blue-700);\n --color-ansi-red: var(--color-red-700);\n --color-ansi-bright-white: var(--color-gray-1000);\n --color-ansi-bright-blue: var(--color-blue-800);\n --color-ansi-bright-cyan: var(--color-blue-800);\n --color-ansi-bright-green: var(--color-green-800);\n --color-ansi-bright-magenta: var(--color-blue-800);\n --color-ansi-bright-red: var(--color-red-800);\n --color-ansi-bright-yellow: var(--color-amber-900);\n\n /* Background Light */\n --color-background-100: #ffffff;\n --color-background-200: #fafafa;\n\n /* Syntax Light */\n --color-syntax-comment: #545454;\n --color-syntax-constant: #171717;\n --color-syntax-function: #0054ad;\n --color-syntax-keyword: #a51850;\n --color-syntax-link: #066056;\n --color-syntax-parameter: #8f3e00;\n --color-syntax-punctuation: #171717;\n --color-syntax-string: #036157;\n --color-syntax-string-expression: #066056;\n\n /* Gray Scale Light */\n --color-gray-100: #f2f2f2;\n --color-gray-200: #ebebeb;\n --color-gray-300: #e6e6e6;\n --color-gray-400: #eaeaea;\n --color-gray-500: #c9c9c9;\n --color-gray-600: #a8a8a8;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #666666;\n --color-gray-1000: #171717;\n\n /* Gray Alpha Scale Light */\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\n\n /* Blue Scale Light */\n --color-blue-100: #f0f7ff;\n --color-blue-200: #edf6ff;\n --color-blue-300: #e1f0ff;\n --color-blue-400: #cde7ff;\n --color-blue-500: #99ceff;\n --color-blue-600: #52aeff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #0067d6;\n --color-blue-1000: #0025ad;\n\n /* Red Scale Light */\n --color-red-100: #fff0f0;\n --color-red-200: #ffebeb;\n --color-red-300: #ffe5e5;\n --color-red-400: #fdd8d8;\n --color-red-500: #f8baba;\n --color-red-600: #f87274;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ca2a30;\n --color-red-1000: #381316;\n\n /* Amber Scale Light */\n --color-amber-100: #fff6e5;\n --color-amber-200: #fff4d5;\n --color-amber-300: #fef0cd;\n --color-amber-400: #ffddbf;\n --color-amber-500: #ffc96b;\n --color-amber-600: #f5b047;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #a35200;\n --color-amber-1000: #4e2009;\n\n /* Green Scale Light */\n --color-green-100: #effbef;\n --color-green-200: #eafaea;\n --color-green-300: #dcf6dc;\n --color-green-400: #c8f1c9;\n --color-green-500: #99e59f;\n --color-green-600: #6cda76;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #297c3b;\n --color-green-1000: #18311e;\n\n /* Turbopack Light - Temporary */\n --color-turbopack-text-red: #ff1e56;\n --color-turbopack-text-blue: #0096ff;\n --color-turbopack-border-red: #f0adbe;\n --color-turbopack-border-blue: #adccea;\n --color-turbopack-background-red: #fff7f9;\n --color-turbopack-background-blue: #f6fbff;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/colors.css\"],names:[],mappings:\"AAAA;EACE;;;;;;;;;IASE;EACF,kBAAkB;EAClB,8CAA8C;EAC9C,oDAAoD;EACpD,iDAAiD;EACjD,2BAA2B;EAC3B,iDAAiD;EACjD,kBAAkB;EAClB,8CAA8C;EAC9C,yCAAyC;EACzC,sDAAsD;;EAEtD,qBAAqB;EACrB,mDAAmD;EACnD,4CAA4C;EAC5C,uCAAuC;;EAEvC,yCAAyC;EACzC,yCAAyC;EACzC,wCAAwC;EACxC,sCAAsC;EACtC,iDAAiD;EACjD,+CAA+C;EAC/C,+CAA+C;EAC/C,iDAAiD;EACjD,kDAAkD;EAClD,6CAA6C;EAC7C,kDAAkD;;EAElD,qBAAqB;EACrB,+BAA+B;EAC/B,+BAA+B;;EAE/B,iBAAiB;EACjB,+BAA+B;EAC/B,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,4BAA4B;EAC5B,iCAAiC;EACjC,mCAAmC;EACnC,8BAA8B;EAC9B,yCAAyC;;EAEzC,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,2BAA2B;EAC3B,2CAA2C;EAC3C,4CAA4C;EAC5C,0CAA0C;EAC1C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,4CAA4C;EAC5C,4CAA4C;;EAE5C,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,oBAAoB;EACpB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,yBAAyB;;EAEzB,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,gCAAgC;EAChC,mCAAmC;EACnC,oCAAoC;EACpC,qCAAqC;EACrC,sCAAsC;EACtC,yCAAyC;EACzC,0CAA0C;AAC5C\",sourcesContent:[':host {\\n /* \\n * CAUTION: THIS IS A WORKAROUND!\\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\\n * So, we do a workaround mapping to change the color matching the theme.\\n *\\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\\n */\\n /* cyan: keyword */\\n --color-ansi-cyan: var(--color-syntax-keyword);\\n /* yellow: capitalized, jsxIdentifier, punctuation */\\n --color-ansi-yellow: var(--color-syntax-function);\\n /* magenta: number, regex */\\n --color-ansi-magenta: var(--color-syntax-keyword);\\n /* green: string */\\n --color-ansi-green: var(--color-syntax-string);\\n /* gray (bright black): comment, gutter */\\n --color-ansi-bright-black: var(--color-syntax-comment);\\n\\n /* Ansi - Temporary */\\n --color-ansi-selection: var(--color-gray-alpha-300);\\n --color-ansi-bg: var(--color-background-200);\\n --color-ansi-fg: var(--color-gray-1000);\\n\\n --color-ansi-white: var(--color-gray-700);\\n --color-ansi-black: var(--color-gray-200);\\n --color-ansi-blue: var(--color-blue-700);\\n --color-ansi-red: var(--color-red-700);\\n --color-ansi-bright-white: var(--color-gray-1000);\\n --color-ansi-bright-blue: var(--color-blue-800);\\n --color-ansi-bright-cyan: var(--color-blue-800);\\n --color-ansi-bright-green: var(--color-green-800);\\n --color-ansi-bright-magenta: var(--color-blue-800);\\n --color-ansi-bright-red: var(--color-red-800);\\n --color-ansi-bright-yellow: var(--color-amber-900);\\n\\n /* Background Light */\\n --color-background-100: #ffffff;\\n --color-background-200: #fafafa;\\n\\n /* Syntax Light */\\n --color-syntax-comment: #545454;\\n --color-syntax-constant: #171717;\\n --color-syntax-function: #0054ad;\\n --color-syntax-keyword: #a51850;\\n --color-syntax-link: #066056;\\n --color-syntax-parameter: #8f3e00;\\n --color-syntax-punctuation: #171717;\\n --color-syntax-string: #036157;\\n --color-syntax-string-expression: #066056;\\n\\n /* Gray Scale Light */\\n --color-gray-100: #f2f2f2;\\n --color-gray-200: #ebebeb;\\n --color-gray-300: #e6e6e6;\\n --color-gray-400: #eaeaea;\\n --color-gray-500: #c9c9c9;\\n --color-gray-600: #a8a8a8;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #666666;\\n --color-gray-1000: #171717;\\n\\n /* Gray Alpha Scale Light */\\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\\n\\n /* Blue Scale Light */\\n --color-blue-100: #f0f7ff;\\n --color-blue-200: #edf6ff;\\n --color-blue-300: #e1f0ff;\\n --color-blue-400: #cde7ff;\\n --color-blue-500: #99ceff;\\n --color-blue-600: #52aeff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #0067d6;\\n --color-blue-1000: #0025ad;\\n\\n /* Red Scale Light */\\n --color-red-100: #fff0f0;\\n --color-red-200: #ffebeb;\\n --color-red-300: #ffe5e5;\\n --color-red-400: #fdd8d8;\\n --color-red-500: #f8baba;\\n --color-red-600: #f87274;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ca2a30;\\n --color-red-1000: #381316;\\n\\n /* Amber Scale Light */\\n --color-amber-100: #fff6e5;\\n --color-amber-200: #fff4d5;\\n --color-amber-300: #fef0cd;\\n --color-amber-400: #ffddbf;\\n --color-amber-500: #ffc96b;\\n --color-amber-600: #f5b047;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #a35200;\\n --color-amber-1000: #4e2009;\\n\\n /* Green Scale Light */\\n --color-green-100: #effbef;\\n --color-green-200: #eafaea;\\n --color-green-300: #dcf6dc;\\n --color-green-400: #c8f1c9;\\n --color-green-500: #99e59f;\\n --color-green-600: #6cda76;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #297c3b;\\n --color-green-1000: #18311e;\\n\\n /* Turbopack Light - Temporary */\\n --color-turbopack-text-red: #ff1e56;\\n --color-turbopack-text-blue: #0096ff;\\n --color-turbopack-border-red: #f0adbe;\\n --color-turbopack-border-blue: #adccea;\\n --color-turbopack-background-red: #fff7f9;\\n --color-turbopack-background-blue: #f6fbff;\\n}\\n'],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host(.dark) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n}\n\n@media (prefers-color-scheme: dark) {\n :host(:not(.light)) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/dark-theme.css\"],names:[],mappings:\"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\",sourcesContent:[\":host(.dark) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n}\\n\\n@media (prefers-color-scheme: dark) {\\n :host(:not(.light)) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * Although the style applied to the shadow host is isolated,\n * the element that attached the shadow host (i.e. \"nextjs-portal\")\n * is still affected by the parent's style (e.g. \"body\"). This may\n * occur style conflicts like \"display: flex\", with other children\n * elements therefore give the shadow host an absolute position.\n */\n position: absolute;\n\n --color-font: #757575;\n --color-backdrop: rgba(250, 250, 250, 0.8);\n --color-border-shadow: rgba(0, 0, 0, 0.145);\n\n --color-title-color: #1f1f1f;\n --color-stack-notes: #777;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\n sans-serif;\n\n font-family: var(--font-stack-sans);\n font-variant-ligatures: none;\n\n /* TODO: Remove replaced ones. */\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --shadow-none: 0 0 #0000;\n\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\n\n --focus-color: var(--color-blue-800);\n --focus-ring: 2px solid var(--focus-color);\n\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\n /* prettier-ignore */\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\n\n --rounded-none: 0px;\n --rounded-sm: 2px;\n --rounded-md: 4px;\n --rounded-md-2: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n --rounded-3xl: 24px;\n --rounded-4xl: 32px;\n --rounded-full: 9999px;\n\n /* \n This value gets set from the Dev Tools preferences,\n and we use the following --size-* variables to \n scale the relevant elements.\n\n The reason why we don't rely on rem values is because\n if an app sets their root font size to something tiny, \n it feels unexpected to have the app root size leak \n into a Next.js surface.\n\n https://github.com/vercel/next.js/discussions/76812\n */\n --nextjs-dev-tools-scale: 1;\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\n\n @media print {\n display: none;\n }\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-bottom: 8px;\n font-weight: 500;\n line-height: 1.5;\n}\n\na {\n color: var(--color-blue-900);\n &:hover {\n color: var(--color-blue-900);\n }\n &:focus-visible {\n outline: var(--focus-ring);\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/default-theme.css\"],names:[],mappings:\"AAAA;EACE;;;;;;IAME;EACF,kBAAkB;;EAElB,qBAAqB;EACrB,0CAA0C;EAC1C,2CAA2C;;EAE3C,4BAA4B;EAC5B,yBAAyB;;EAEzB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;;EAE1B;0DACwD;EACxD;cACY;;EAEZ,mCAAmC;EACnC,4BAA4B;;EAE5B,gCAAgC;EAChC,0CAA0C;EAC1C,uEAAuE;EACvE,6EAA6E;EAC7E;mCACiC;EACjC;oCACkC;EAClC,iDAAiD;EACjD,mDAAmD;EACnD,wBAAwB;;EAExB,+CAA+C;EAC/C;gFAC8E;;EAE9E,oCAAoC;EACpC,0CAA0C;;EAE1C,oDAAoD;EACpD,uDAAuD;EACvD,oBAAoB;EACpB,i3CAAi3C;;EAEj3C,mBAAmB;EACnB,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;EACnB,iBAAiB;EACjB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;EACnB,sBAAsB;;EAEtB;;;;;;;;;;;GAWC;EACD,2BAA2B;EAC3B,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;;EAErD;IACE,aAAa;EACf;AACF;;AAEA;;;;;;EAME,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,4BAA4B;EAC5B;IACE,4BAA4B;EAC9B;EACA;IACE,0BAA0B;EAC5B;AACF\",sourcesContent:[\":host {\\n /* \\n * Although the style applied to the shadow host is isolated,\\n * the element that attached the shadow host (i.e. \\\"nextjs-portal\\\")\\n * is still affected by the parent's style (e.g. \\\"body\\\"). This may\\n * occur style conflicts like \\\"display: flex\\\", with other children\\n * elements therefore give the shadow host an absolute position.\\n */\\n position: absolute;\\n\\n --color-font: #757575;\\n --color-backdrop: rgba(250, 250, 250, 0.8);\\n --color-border-shadow: rgba(0, 0, 0, 0.145);\\n\\n --color-title-color: #1f1f1f;\\n --color-stack-notes: #777;\\n\\n --color-accents-1: #808080;\\n --color-accents-2: #222222;\\n --color-accents-3: #404040;\\n\\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\\n sans-serif;\\n\\n font-family: var(--font-stack-sans);\\n font-variant-ligatures: none;\\n\\n /* TODO: Remove replaced ones. */\\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n --shadow-none: 0 0 #0000;\\n\\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\\n /* prettier-ignore */\\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\\n\\n --rounded-none: 0px;\\n --rounded-sm: 2px;\\n --rounded-md: 4px;\\n --rounded-md-2: 6px;\\n --rounded-lg: 8px;\\n --rounded-xl: 12px;\\n --rounded-2xl: 16px;\\n --rounded-3xl: 24px;\\n --rounded-4xl: 32px;\\n --rounded-full: 9999px;\\n\\n /* \\n This value gets set from the Dev Tools preferences,\\n and we use the following --size-* variables to \\n scale the relevant elements.\\n\\n The reason why we don't rely on rem values is because\\n if an app sets their root font size to something tiny, \\n it feels unexpected to have the app root size leak \\n into a Next.js surface.\\n\\n https://github.com/vercel/next.js/discussions/76812\\n */\\n --nextjs-dev-tools-scale: 1;\\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\\n\\n @media print {\\n display: none;\\n }\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-bottom: 8px;\\n font-weight: 500;\\n line-height: 1.5;\\n}\\n\\na {\\n color: var(--color-blue-900);\\n &:hover {\\n color: var(--color-blue-900);\\n }\\n &:focus-visible {\\n outline: var(--focus-ring);\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\":function(e){\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=\"\",r=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),r&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),r&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n}).join(\"\")},t.i=function(e,n,r,o,a){\"string\"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=a),n&&(u[2]&&(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\")),u[2]=n),o&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=o):u[4]=\"\".concat(o)),t.push(u))}},t}},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\":function(e){\"use strict\";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n))));return[t].concat([\"/*# \".concat(\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(r),\" */\")]).join(\"\\n\")}return[t].join(\"\\n\")}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":function(e){\"use strict\";var t=[];function n(e){for(var n=-1,r=0;r0?\" \".concat(n.layer):\"\",\" {\")),r+=n.css,o&&(r+=\"}\"),n.media&&(r+=\"}\"),n.supports&&(r+=\"}\"),(a=n.sourceMap)&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))),\" */\")),e.styleTagTransform(r,t,e.options)},remove:function(){!function(e){if(null!==e.parentNode)e.parentNode.removeChild(e)}(t)}}}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\":function(e){\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},\"./dist/compiled/anser/index.js\":function(e){(()=>{\"use strict\";var t={211:e=>{var t=function(){function e(e,t){for(var n=0;n]/gm,function(e){return\"&\"==e?\"&\":\"<\"==e?\"<\":\">\"==e?\">\":\"\"})}},{key:\"linkify\",value:function(e){return e.replace(/(https?:\\/\\/[^\\s]+)/gm,function(e){return''+e+\"\"})}},{key:\"ansiToHtml\",value:function(e,t){return this.process(e,t,!0)}},{key:\"ansiToJson\",value:function(e,t){return(t=t||{}).json=!0,t.clearLine=!1,this.process(e,t,!0)}},{key:\"ansiToText\",value:function(e){return this.process(e,{},!1)}},{key:\"process\",value:function(e,t,n){var r=this,o=e.split(/\\033\\[/),a=o.shift();null==t&&(t={}),t.clearLine=/\\r/.test(e);var i=o.map(function(e){return r.processChunk(e,t,n)});if(t&&t.json){var l=this.processChunkJson(\"\");return l.content=a,l.clearLine=t.clearLine,i.unshift(l),t.remove_empty&&(i=i.filter(function(e){return!e.isEmpty()})),i}return i.unshift(a),i.join(\"\")}},{key:\"processChunkJson\",value:function(e,t,r){var o=(t=void 0===t?{}:t).use_classes=void 0!==t.use_classes&&t.use_classes,a=t.key=o?\"class\":\"color\",i={content:e,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,clearLine:t.clearLine,decoration:null,was_processed:!1,isEmpty:function(){return!i.content}},l=e.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);if(!l)return i;i.content=l[4];var s=l[2].split(\";\");if(\"\"!==l[1]||\"m\"!==l[3]||!r)return i;for(this.decoration=null;s.length>0;){var c=parseInt(s.shift());if(isNaN(c)||0===c)this.fg=this.bg=this.decoration=null;else if(1===c)this.decoration=\"bold\";else if(2===c)this.decoration=\"dim\";else if(3==c)this.decoration=\"italic\";else if(4==c)this.decoration=\"underline\";else if(5==c)this.decoration=\"blink\";else if(7===c)this.decoration=\"reverse\";else if(8===c)this.decoration=\"hidden\";else if(9===c)this.decoration=\"strikethrough\";else if(39==c)this.fg=null;else if(49==c)this.bg=null;else if(c>=30&&c<38)this.fg=n[0][c%10][a];else if(c>=90&&c<98)this.fg=n[1][c%10][a];else if(c>=40&&c<48)this.bg=n[0][c%10][a];else if(c>=100&&c<108)this.bg=n[1][c%10][a];else if(38===c||48===c){var u=38===c;if(s.length>=1){var d=s.shift();if(\"5\"===d&&s.length>=1){var f=parseInt(s.shift());if(f>=0&&f<=255)if(o){var p=f>=16?\"ansi-palette-\"+f:n[+(f>7)][f%8].class;u?this.fg=p:this.bg=p}else this.PALETTE_COLORS||this.setupPalette(),u?this.fg=this.PALETTE_COLORS[f]:this.bg=this.PALETTE_COLORS[f]}else if(\"2\"===d&&s.length>=3){var h=parseInt(s.shift()),m=parseInt(s.shift()),g=parseInt(s.shift());if(h>=0&&h<=255&&m>=0&&m<=255&&g>=0&&g<=255){var y=h+\", \"+m+\", \"+g;o?u?(this.fg=\"ansi-truecolor\",this.fg_truecolor=y):(this.bg=\"ansi-truecolor\",this.bg_truecolor=y):u?this.fg=y:this.bg=y}}}}}return null===this.fg&&null===this.bg&&null===this.decoration||(i.fg=this.fg,i.bg=this.bg,i.fg_truecolor=this.fg_truecolor,i.bg_truecolor=this.bg_truecolor,i.decoration=this.decoration,i.was_processed=!0),i}},{key:\"processChunk\",value:function(e,t,n){var r=this;t=t||{};var o=this.processChunkJson(e,t,n);if(t.json)return o;if(o.isEmpty())return\"\";if(!o.was_processed)return o.content;var a=t.use_classes,i=[],l=[],s={},c=function(e){var t=[],n=void 0;for(n in e)e.hasOwnProperty(n)&&t.push(\"data-\"+n+'=\"'+r.escapeForHtml(e[n])+'\"');return t.length>0?\" \"+t.join(\" \"):\"\"};return(o.fg&&(a?(l.push(o.fg+\"-fg\"),null!==o.fg_truecolor&&(s[\"ansi-truecolor-fg\"]=o.fg_truecolor,o.fg_truecolor=null)):i.push(\"color:rgb(\"+o.fg+\")\")),o.bg&&(a?(l.push(o.bg+\"-bg\"),null!==o.bg_truecolor&&(s[\"ansi-truecolor-bg\"]=o.bg_truecolor,o.bg_truecolor=null)):i.push(\"background-color:rgb(\"+o.bg+\")\")),o.decoration&&(a?l.push(\"ansi-\"+o.decoration):\"bold\"===o.decoration?i.push(\"font-weight:bold\"):\"dim\"===o.decoration?i.push(\"opacity:0.5\"):\"italic\"===o.decoration?i.push(\"font-style:italic\"):\"reverse\"===o.decoration?i.push(\"filter:invert(100%)\"):\"hidden\"===o.decoration?i.push(\"visibility:hidden\"):\"strikethrough\"===o.decoration?i.push(\"text-decoration:line-through\"):i.push(\"text-decoration:\"+o.decoration)),a)?'\"+o.content+\"\":'\"+o.content+\"\"}}]),e}()}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(211)})()},\"./dist/compiled/react-dom/cjs/react-dom-client.production.js\":function(e,t,n){\"use strict\";var r,o=n(\"./dist/compiled/scheduler/index.js\"),a=n(\"./dist/compiled/react/index.js\"),i=n(\"./dist/compiled/react-dom/index.js\");function l(e){var t=\"https://react.dev/errors/\"+e;if(1L||(e.current=D[L],D[L]=null,L--)}function M(e,t){D[++L]=e.current,e.current=t}var Z=N(null),U=N(null),F=N(null),q=N(null);function H(e,t){switch(M(F,t),M(U,e),M(Z,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?ch(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=cm(t=ch(t),e);else switch(e){case\"svg\":e=1;break;case\"math\":e=2;break;default:e=0}}R(Z),M(Z,e)}function V(){R(Z),R(U),R(F)}function $(e){null!==e.memoizedState&&M(q,e);var t=Z.current,n=cm(t,e.type);t!==n&&(M(U,e),M(Z,n))}function W(e){U.current===e&&(R(Z),R(U)),q.current===e&&(R(q),c9._currentValue=T)}function Y(e){if(void 0===tL)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);tL=t&&t[1]||\"\",tN=-1)\":-1o||s[r]!==c[o]){var u=\"\\n\"+s[r].replace(\" at new \",\" at \");return e.displayName&&u.includes(\"\")&&(u=u.replace(\"\",e.displayName)),u}while(1<=r&&0<=o);break}}}finally{K=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:\"\")?Y(n):\"\"}function G(e){try{var t=\"\",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return Y(e.type);case 16:return Y(\"Lazy\");case 13:return e.child!==t&&null!==t?Y(\"Suspense Fallback\"):Y(\"Suspense\");case 19:return Y(\"SuspenseList\");case 0:case 15:return X(e.type,!1);case 11:return X(e.type.render,!1);case 1:return X(e.type,!0);case 31:return Y(\"Activity\");default:return\"\"}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return\"\\nError generating stack: \"+e.message+\"\\n\"+e.stack}}var Q=Object.prototype.hasOwnProperty,J=o.unstable_scheduleCallback,ee=o.unstable_cancelCallback,et=o.unstable_shouldYield,en=o.unstable_requestPaint,er=o.unstable_now,eo=o.unstable_getCurrentPriorityLevel,ea=o.unstable_ImmediatePriority,ei=o.unstable_UserBlockingPriority,el=o.unstable_NormalPriority,es=o.unstable_LowPriority,ec=o.unstable_IdlePriority,eu=o.log,ed=o.unstable_setDisableYieldValue,ef=null,ep=null;function eh(e){if(\"function\"==typeof eu&&ed(e),ep&&\"function\"==typeof ep.setStrictMode)try{ep.setStrictMode(ef,e)}catch(e){}}var em=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=4194304;function eA(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ex(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=0x7ffffff&r;return 0!==l?0!=(r=l&~a)?o=eA(r):0!=(i&=l)?o=eA(i):n||0!=(n=l&~e)&&(o=eA(n)):0!=(l=r&~a)?o=eA(l):0!==i?o=eA(i):n||0!=(n=r&~e)&&(o=eA(n)),0===o?0:0!==t&&t!==o&&0==(t&a)&&((a=o&-o)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:o}function ew(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eC(){var e=ev;return 0==(4194048&(ev<<=1))&&(ev=256),e}function e_(){var e=eb;return 0==(0x3c00000&(eb<<=1))&&(eb=4194304),e}function ek(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function eE(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ej(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-em(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&n}function eS(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-em(n),o=1<=nt),no=!1;function na(e,t){switch(e){case\"keyup\":return -1!==t7.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function ni(e){return\"object\"==typeof(e=e.detail)&&\"data\"in e?e.data:null}var nl=!1,ns={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function nc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!ns[e.type]:\"textarea\"===t}function nu(e,t,n,r){tb?tA?tA.push(r):tA=[r]:tb=r,0<(t=ct(t,\"onChange\")).length&&(n=new tF(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var nd=null,nf=null;function np(e){s4(e,0)}function nh(e){if(e8(e$(e)))return e}function nm(e,t){if(\"change\"===e)return t}var ng=!1;if(tk){if(tk){var ny=\"oninput\"in document;if(!ny){var nv=document.createElement(\"div\");nv.setAttribute(\"oninput\",\"return;\"),ny=\"function\"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=nj(r)}}function nO(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n=\"string\"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nB(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}var nP=tk&&\"documentMode\"in document&&11>=document.documentMode,nI=null,nz=null,nT=null,nD=!1;function nL(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nD||null==nI||nI!==e7(r)||(r=\"selectionStart\"in(r=nI)&&nB(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nT&&nE(nT,r)||(nT=r,0<(r=ct(nz,\"onSelect\")).length&&(t=new tF(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=nI)))}function nN(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var nR={animationend:nN(\"Animation\",\"AnimationEnd\"),animationiteration:nN(\"Animation\",\"AnimationIteration\"),animationstart:nN(\"Animation\",\"AnimationStart\"),transitionrun:nN(\"Transition\",\"TransitionRun\"),transitionstart:nN(\"Transition\",\"TransitionStart\"),transitioncancel:nN(\"Transition\",\"TransitionCancel\"),transitionend:nN(\"Transition\",\"TransitionEnd\")},nM={},nZ={};function nU(e){if(nM[e])return nM[e];if(!nR[e])return e;var t,n=nR[e];for(t in n)if(n.hasOwnProperty(t)&&t in nZ)return nM[e]=n[t];return e}tk&&(nZ=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete nR.animationend.animation,delete nR.animationiteration.animation,delete nR.animationstart.animation),\"TransitionEvent\"in window||delete nR.transitionend.transition);var nF=nU(\"animationend\"),nq=nU(\"animationiteration\"),nH=nU(\"animationstart\"),nV=nU(\"transitionrun\"),n$=nU(\"transitionstart\"),nW=nU(\"transitioncancel\"),nY=nU(\"transitionend\"),nK=new Map,nX=\"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function nG(e,t){nK.set(e,t),eG(t,[e])}nX.push(\"scrollEnd\");var nQ=\"function\"==typeof reportError?reportError:function(e){if(\"object\"==typeof window&&\"function\"==typeof window.ErrorEvent){var t=new window.ErrorEvent(\"error\",{bubbles:!0,cancelable:!0,message:\"object\"==typeof e&&null!==e&&\"string\"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(\"object\"==typeof process&&\"function\"==typeof process.emit)return void process.emit(\"uncaughtException\",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=i,o-=i,rv=1<<32-em(t)+o|n<h?(m=d,d=null):m=d.sibling;var g=p(o,d,l[h],s);if(null===g){null===d&&(d=m);break}e&&d&&null===g.alternate&&t(o,d),i=a(g,i,h),null===u?c=g:u.sibling=g,u=g,d=m}if(h===l.length)return n(o,d),rj&&rA(o,h),c;if(null===d){for(;hm?(g=h,h=null):g=h.sibling;var b=p(o,h,v.value,c);if(null===b){null===h&&(h=g);break}e&&h&&null===b.alternate&&t(o,h),i=a(b,i,m),null===d?u=b:d.sibling=b,d=b,h=g}if(v.done)return n(o,h),rj&&rA(o,m),u;if(null===h){for(;!v.done;m++,v=s.next())null!==(v=f(o,v.value,c))&&(i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return rj&&rA(o,m),u}for(h=r(h);!v.done;m++,v=s.next())null!==(v=y(h,o,m,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?m:v.key),i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(o,e)}),rj&&rA(o,m),u}(c,u,d=b.call(d),v)}if(\"function\"==typeof d.then)return s(c,u,om(d),v);if(d.$$typeof===A)return s(c,u,rK(c,d),v);oy(c,d)}return\"string\"==typeof d&&\"\"!==d||\"number\"==typeof d||\"bigint\"==typeof d?(d=\"\"+d,null!==u&&6===u.tag?(n(c,u.sibling),(v=o(u,d)).return=c):(n(c,u),(v=ri(d,c.mode,v)).return=c),i(c=v)):n(c,u)}(s,c,u,d);return op=null,v}catch(e){if(e===or||e===oa)throw e;var b=re(29,e,null,s.mode);return b.lanes=d,b.return=s,b}finally{}}}var ob=ov(!0),oA=ov(!1),ox=!1;function ow(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oC(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function o_(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ok(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&lD)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,t=n9(e),n6(e,null,n),t}return n4(e,r,t,n),n9(e)}function oE(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eS(e,n)}}function oj(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var oS=!1;function oO(){if(oS){var e=r6;if(null!==e)throw e}}function oB(e,t,n,r){oS=!1;var o=e.updateQueue;ox=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?a=c:i.next=c,i=s;var u=e.alternate;null!==u&&(l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s)}if(null!==a){var d=o.baseState;for(i=0,u=c=s=null,l=a;;){var p=-0x20000001&l.lane,h=p!==l.lane;if(h?(lR&p)===p:(r&p)===p){0!==p&&p===r3&&(oS=!0),null!==u&&(u=u.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var m=e,g=l;switch(p=t,g.tag){case 1:if(\"function\"==typeof(m=g.payload)){d=m.call(n,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p=\"function\"==typeof(m=g.payload)?m.call(n,d,p):m))break e;d=f({},d,p);break e;case 2:ox=!0}}null!==(p=l.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=o.callbacks)?o.callbacks=[p]:h.push(p))}else h={lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=h,s=d):u=u.next=h,i|=p;if(null===(l=l.next))if(null===(l=o.shared.pending))break;else l=(h=l).next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}null===u&&(s=d),o.baseState=s,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null===a&&(o.shared.lanes=0),l$|=i,e.lanes=i,e.memoizedState=d}}function oP(e,t){if(\"function\"!=typeof e)throw Error(l(191,e));e.call(t)}function oI(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var i=I.T,l={};I.T=l,a6(e,!1,t,n);try{var s=o(),c=I.S;if(null!==c&&c(l,s),null!==s&&\"object\"==typeof s&&\"function\"==typeof s.then){var u,d,f=(u=[],d={status:\"pending\",value:null,reason:null,then:function(e){u.push(e)}},s.then(function(){d.status=\"fulfilled\",d.value=r;for(var e=0;e title\"))),cu(a,r,n),a[eD]=e,eY(a),r=a;break e;case\"link\":var i=cJ(\"link\",\"href\",o).get(r+(n.href||\"\"));if(i){for(var s=0;s<\\/script>\",a=a.removeChild(a.firstChild);break;case\"select\":a=\"string\"==typeof r.is?i.createElement(\"select\",{is:r.is}):i.createElement(\"select\"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=\"string\"==typeof r.is?i.createElement(o,{is:r.is}):i.createElement(o)}}a[eD]=t,a[eL]=r;e:for(i=t.child;null!==i;){if(5===i.tag||6===i.tag)a.appendChild(i.stateNode);else if(4!==i.tag&&27!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}switch(t.stateNode=a,cu(a,o,r),o){case\"button\":case\"input\":case\"select\":case\"textarea\":r=!!r.autoFocus;break;case\"img\":r=!0;break;default:r=!1}r&&iY(t)}}return iJ(t),iK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iY(t);else{if(\"string\"!=typeof r&&null===t.stateNode)throw Error(l(166));if(e=F.current,rT(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(o=rk))switch(o.tag){case 27:case 5:r=o.memoizedProps}e[eD]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||cl(e.nodeValue,n)))||rP(t,!0)}else(e=cp(e).createTextNode(r))[eD]=t,t.stateNode=e}return iJ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rT(t),null!==n){if(null===e){if(!r)throw Error(l(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(l(557));e[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),e=!1}else n=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return oH(t),t;return oH(t),null}if(0!=(128&t.flags))throw Error(l(558))}return iJ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(o=rT(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(l(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(l(317));o[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),o=!1}else o=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o){if(256&t.flags)return oH(t),t;return oH(t),null}}if(oH(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,o=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(o=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==o&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),iG(t,t.updateQueue),iJ(t),null;case 4:return V(),null===e&&s9(t.stateNode.containerInfo),iJ(t),null;case 10:return rF(t.type),iJ(t),null;case 19:if(R(oV),null===(r=t.memoizedState))return iJ(t),null;if(o=0!=(128&t.flags),null===(a=r.rendering))if(o)iQ(r,!1);else{if(0!==lV||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=o$(e))){for(t.flags|=128,iQ(r,!1),t.updateQueue=e=a.updateQueue,iG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return M(oV,1&oV.current|2),rj&&rA(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>l1&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304)}else{if(!o)if(null!==(e=o$(a))){if(t.flags|=128,o=!0,t.updateQueue=e=e.updateQueue,iG(t,e),iQ(r,!0),null===r.tail&&\"hidden\"===r.tailMode&&!a.alternate&&!rj)return iJ(t),null}else 2*er()-r.renderingStartTime>l1&&0x20000000!==n&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=oV.current,M(oV,o?1&n|2:1&n),rj&&rA(t,r.treeForkCount),e;return iJ(t),null;case 22:case 23:return oH(t),oN(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(iJ(t),6&t.subtreeFlags&&(t.flags|=8192)):iJ(t),null!==(n=t.updateQueue)&&iG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&R(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rF(r0),iJ(t),null;case 25:case 30:return null}throw Error(l(156,t.tag))}(t.alternate,t,lH);if(null!==n){lN=n;return}if(null!==(t=t.sibling)){lN=t;return}lN=t=e}while(null!==t);0===lV&&(lV=5)}function sw(e,t){do{var n=function(e,t){switch(rC(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rF(r0),V(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return W(t),null;case 31:if(null!==t.memoizedState){if(oH(t),null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(oH(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return R(oV),null;case 4:return V(),null;case 10:return rF(t.type),null;case 22:case 23:return oH(t),oN(),null!==e&&R(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rF(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lN=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lN=e;return}lN=e=n}while(null!==e);lV=6,lN=null}function sC(e,t,n,r,o,a,i,s,c){e.cancelPendingCommit=null;do sS();while(0!==l5);if(0!=(6&lD))throw Error(l(327));if(null!==t){if(t===e.current)throw Error(l(177));if(!function(e,t,n,r,o,a){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,c=e.hiddenUpdates;for(n=i&~n;0g&&(i=g,g=m,m=i);var y=nS(l,m),v=nS(l,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=d.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),m>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(\"function\"==typeof l.focus&&l.focus(),l=0;ln?32:n,I.T=null,n=l7,l7=null;var a=l3,i=l9;if(l5=0,l6=l3=null,l9=0,0!=(6&lD))throw Error(l(331));var s=lD;if(lD|=4,lP(a.current),l_(a,a.current,i,n),lD=s,sH(0,!1),ep&&\"function\"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ef,a)}catch(e){}return!0}finally{z.p=o,I.T=r,sj(e,t)}}function sB(e,t,n){t=ru(n,t),t=ig(e.stateNode,t,2),null!==(e=ok(e,t,2))&&(eE(e,2),sq(e))}function sP(e,t,n){if(3===e.tag)sB(e,e,n);else for(;null!==t;){if(3===t.tag){sB(t,e,n);break}if(1===t.tag){var r=t.stateNode;if(\"function\"==typeof t.type.getDerivedStateFromError||\"function\"==typeof r.componentDidCatch&&(null===l4||!l4.has(r))){e=ru(n,e),null!==(r=ok(t,n=iy(2),2))&&(iv(n,r,t,e),eE(r,2),sq(r));break}}t=t.return}}function sI(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new lT;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(lq=!0,o.add(n),e=sz.bind(null,e,t,n),t.then(e,e))}function sz(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lL===e&&(lR&n)===n&&(4===lV||3===lV&&(0x3c00000&lR)===lR&&300>er()-l0?0==(2&lD)&&sd(e,0):lY|=n,lX===lR&&(lX=0)),sq(e)}function sT(e,t){0===t&&(t=e_()),null!==(e=n3(e,t))&&(eE(e,t),sq(e))}function sD(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),sT(e,n)}function sL(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(l(314))}null!==r&&r.delete(t),sT(e,n)}var sN=null,sR=null,sM=!1,sZ=!1,sU=!1,sF=0;function sq(e){e!==sR&&null===e.next&&(null===sR?sN=sR=e:sR=sR.next=e),sZ=!0,sM||(sM=!0,cx(function(){0!=(6&lD)?J(ea,sV):s$()}))}function sH(e,t){if(!sU&&sZ){sU=!0;do for(var n=!1,r=sN;null!==r;){if(!t)if(0!==e){var o=r.pendingLanes;if(0===o)var a=0;else{var i=r.suspendedLanes,l=r.pingedLanes;a=0xc000095&(a=(1<<31-em(42|e)+1)-1&(o&~(i&~l)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,sK(r,a))}else a=lR,0==(3&(a=ex(r,r===lL?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ew(r,a)||(n=!0,sK(r,a));r=r.next}while(n);sU=!1}}function sV(){s$()}function s$(){sZ=sM=!1;var e,t=0;0===sF||((e=window.event)&&\"popstate\"===e.type?e===cy||(cy=e,0):(cy=null,1))||(t=sF);for(var n=er(),r=null,o=sN;null!==o;){var a=o.next,i=sW(o,n);0===i?(o.next=null,null===r?sN=a:r.next=a,null===a&&(sR=r)):(r=o,(0!==t||0!=(3&i))&&(sZ=!0)),o=a}0!==l5&&5!==l5||sH(t,!1),0!==sF&&(sF=0)}function sW(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title\"):null)}function c1(e){return\"stylesheet\"!==e.type||0!=(3&e.state.loading)}var c2=null;function c4(){if(this.count--,0===this.count){if(this.stylesheets)c3(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var c5=null;function c3(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,c5=new Map,t.forEach(c6,e),c5=null,c4.call(e))}function c6(e,t){if(!(4&t.state.loading)){var n=c5.get(e);if(n)var r=n.get(null);else{n=new Map,c5.set(e,n);for(var o=e.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),a=0;a>>1,o=e[r];if(0>>1;ra(s,n))ca(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else if(ca(u,n))e[r]=u,e[c]=n,r=c;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,\"object\"==typeof performance&&\"function\"==typeof performance.now){var i,l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,c=s.now();t.unstable_now=function(){return s.now()-c}}var u=[],d=[],f=1,p=null,h=3,m=!1,g=!1,y=!1,v=!1,b=\"function\"==typeof setTimeout?setTimeout:null,A=\"function\"==typeof clearTimeout?clearTimeout:null,x=\"undefined\"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(d);null!==t;){if(null===t.callback)o(d);else if(t.startTime<=e)o(d),t.sortIndex=t.expirationTime,n(u,t);else break;t=r(d)}}function C(e){if(y=!1,w(e),!g)if(null!==r(u))g=!0,_||(_=!0,i());else{var t=r(d);null!==t&&I(C,t.startTime-e)}}var _=!1,k=-1,E=5,j=-1;function S(){return!!v||!(t.unstable_now()-je&&S());){var l=p.callback;if(\"function\"==typeof l){p.callback=null,h=p.priorityLevel;var s=l(p.expirationTime<=e);if(e=t.unstable_now(),\"function\"==typeof s){p.callback=s,w(e),n=!0;break t}p===r(u)&&o(u),w(e)}else o(u);p=r(u)}if(null!==p)n=!0;else{var c=r(d);null!==c&&I(C,c.startTime-e),n=!1}}break e}finally{p=null,h=a,m=!1}}}finally{n?i():_=!1}}}if(\"function\"==typeof x)i=function(){x(O)};else if(\"undefined\"!=typeof MessageChannel){var B=new MessageChannel,P=B.port2;B.port1.onmessage=O,i=function(){P.postMessage(null)}}else i=function(){b(O,0)};function I(e,n){k=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=a,n(d,e),null===r(u)&&e===r(d)&&(y?(A(k),k=-1):y=!0,I(C,a-l))):(e.sortIndex=s,n(u,e),g||m||(g=!0,_||(_=!0,i()))),e},t.unstable_shouldYield=S,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},\"./dist/compiled/scheduler/index.js\":function(e,t,n){\"use strict\";e.exports=n(\"./dist/compiled/scheduler/cjs/scheduler.production.js\")},\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\":function(e){(()=>{\"use strict\";\"undefined\"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab=\"//\");var t,n,r,o,a,i,l,s,c={};Object.defineProperty(c,\"__esModule\",{value:!0}),t=\"\",n=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|webpack-internal|rsc|about|turbopack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,r=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,o=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|webpack-internal|rsc|about|turbopack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,a=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|webpack-internal|rsc|about|turbopack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,i=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,l=/^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i,s=/^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,c.parse=function(e){return e.split(\"\\n\").reduce(function(e,c){var u,d,f,p,h,m,g=function(e){var o=n.exec(e);if(!o)return null;var a=o[2]&&0===o[2].indexOf(\"native\"),i=o[2]&&0===o[2].indexOf(\"eval\"),l=r.exec(o[2]);return i&&null!=l&&(o[2]=l[1],o[3]=l[2],o[4]=l[3]),{file:a?null:o[2],methodName:o[1]||t,arguments:a?[o[2]]:[],lineNumber:o[3]?+o[3]:null,column:o[4]?+o[4]:null}}(c)||(u=c,(d=o.exec(u))?{file:d[2],methodName:d[1]||t,arguments:[],lineNumber:+d[3],column:d[4]?+d[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(\" > eval\")>-1,o=i.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(\",\"):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(c)||(f=c,(p=s.exec(f))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||(h=c,(m=l.exec(h))?{file:m[3],methodName:m[1]||t,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return g&&e.push(g),e},[])},e.exports=c})()},\"./dist/compiled/strip-ansi/index.js\":function(e){(()=>{\"use strict\";var t={511:e=>{e.exports=({onlyFirst:e=!1}={})=>RegExp(\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\",e?void 0:\"g\")},532:(e,t,n)=>{let r=n(511);e.exports=e=>\"string\"==typeof e?e.replace(r(),\"\"):e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(532)})()},\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\":function(e){function t(){let e=window._nextjsDevtoolsStyleCache;if(e.cachedShadowRoot)return e.cachedShadowRoot;let t=document.querySelector(\"nextjs-portal\"),n=t?.shadowRoot||null;return n&&(e.cachedShadowRoot=n),n}function n(e,t){let n=window._nextjsDevtoolsStyleCache;n.lastInsertedElement?n.lastInsertedElement.nextSibling?t.insertBefore(e,n.lastInsertedElement.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),n.lastInsertedElement=e}function r(){let e=window._nextjsDevtoolsStyleCache,r=t();r&&(e.pendingElements.forEach(e=>{n(e,r)}),e.pendingElements=[])}\"undefined\"!=typeof window&&(window._nextjsDevtoolsStyleCache=window._nextjsDevtoolsStyleCache||{pendingElements:[],isObserving:!1,lastInsertedElement:null,cachedShadowRoot:null}),e.exports=function(e){e.setAttribute(\"data-nextjs-dev-tool-style\",\"true\");let o=t();o?n(e,o):(window._nextjsDevtoolsStyleCache.pendingElements.push(e),function(){let e=window._nextjsDevtoolsStyleCache;if(e.isObserving)return;if(e.isObserving=!0,t())return r();let n=new MutationObserver(o=>{if(0===o.length||0===o[0].addedNodes.length)return;let a=o[0].addedNodes[0],i=null;if(\"SCRIPT\"===a.tagName&&a.getAttribute(\"data-nextjs-dev-overlay\")?i=a.firstChild:\"NEXTJS-PORTAL\"===a.tagName&&(i=a),!i)return;let l=()=>{t()?(r(),n.disconnect(),e.isObserving=!1):setTimeout(l,20)};l()});n.observe(document.body,{childList:!0,subtree:!0})}())}},\"./dist/compiled/zod/index.cjs\":function(e){(()=>{\"use strict\";var t={629:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},i=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),t.z=void 0;let l=a(n(923));t.z=l,i(n(923),t),t.default=l},348:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0}),t.ZodError=t.quotelessJson=t.ZodIssueCode=void 0;let r=n(709);t.ZodIssueCode=r.util.arrayToEnum([\"invalid_type\",\"invalid_literal\",\"custom\",\"invalid_union\",\"invalid_union_discriminator\",\"invalid_enum_value\",\"unrecognized_keys\",\"invalid_arguments\",\"invalid_return_type\",\"invalid_date\",\"invalid_string\",\"too_small\",\"too_big\",\"invalid_intersection_types\",\"not_multiple_of\",\"not_finite\"]),t.quotelessJson=e=>JSON.stringify(e,null,2).replace(/\"([^\"]+)\":/g,\"$1:\");class o extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=\"ZodError\",this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let o of e.issues)if(\"invalid_union\"===o.code)o.unionErrors.map(r);else if(\"invalid_return_type\"===o.code)r(o.returnTypeError);else if(\"invalid_arguments\"===o.code)r(o.argumentsError);else if(0===o.path.length)n._errors.push(t(o));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}t.ZodError=o,o.create=e=>new o(e)},61:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.defaultErrorMap=void 0,t.setErrorMap=function(e){a=e},t.getErrorMap=function(){return a};let o=r(n(871));t.defaultErrorMap=o.default;let a=o.default},923:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),o(n(61),t),o(n(818),t),o(n(515),t),o(n(709),t),o(n(155),t),o(n(348),t)},538:(e,t)=>{var n,r;Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorUtil=void 0,(r=n||(t.errorUtil=n={})).errToObj=e=>\"string\"==typeof e?{message:e}:e||{},r.toString=e=>\"string\"==typeof e?e:e?.message},818:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.isAsync=t.isValid=t.isDirty=t.isAborted=t.OK=t.DIRTY=t.INVALID=t.ParseStatus=t.EMPTY_PATH=t.makeIssue=void 0,t.addIssueToContext=function(e,n){let r=(0,o.getErrorMap)(),i=(0,t.makeIssue)({issueData:n,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===a.default?void 0:a.default].filter(e=>!!e)});e.common.issues.push(i)};let o=n(61),a=r(n(871));t.makeIssue=e=>{let{data:t,path:n,errorMaps:r,issueData:o}=e,a=[...n,...o.path||[]],i={...o,path:a};if(void 0!==o.message)return{...o,path:a,message:o.message};let l=\"\";for(let e of r.filter(e=>!!e).slice().reverse())l=e(i,{data:t,defaultError:l}).message;return{...o,path:a,message:l}},t.EMPTY_PATH=[];class i{constructor(){this.value=\"valid\"}dirty(){\"valid\"===this.value&&(this.value=\"dirty\")}abort(){\"aborted\"!==this.value&&(this.value=\"aborted\")}static mergeArray(e,n){let r=[];for(let o of n){if(\"aborted\"===o.status)return t.INVALID;\"dirty\"===o.status&&e.dirty(),r.push(o.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let n=[];for(let e of t){let t=await e.key,r=await e.value;n.push({key:t,value:r})}return i.mergeObjectSync(e,n)}static mergeObjectSync(e,n){let r={};for(let o of n){let{key:n,value:a}=o;if(\"aborted\"===n.status||\"aborted\"===a.status)return t.INVALID;\"dirty\"===n.status&&e.dirty(),\"dirty\"===a.status&&e.dirty(),\"__proto__\"!==n.value&&(void 0!==a.value||o.alwaysSet)&&(r[n.value]=a.value)}return{status:e.value,value:r}}}t.ParseStatus=i,t.INVALID=Object.freeze({status:\"aborted\"}),t.DIRTY=e=>({status:\"dirty\",value:e}),t.OK=e=>({status:\"valid\",value:e}),t.isAborted=e=>\"aborted\"===e.status,t.isDirty=e=>\"dirty\"===e.status,t.isValid=e=>\"valid\"===e.status,t.isAsync=e=>\"undefined\"!=typeof Promise&&e instanceof Promise},515:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:!0})},709:(e,t)=>{var n,r,o;Object.defineProperty(t,\"__esModule\",{value:!0}),t.getParsedType=t.ZodParsedType=t.objectUtil=t.util=void 0,(o=n||(t.util=n={})).assertEqual=e=>{},o.assertIs=function(e){},o.assertNever=function(e){throw Error()},o.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},o.getValidEnumValues=e=>{let t=o.objectKeys(e).filter(t=>\"number\"!=typeof e[e[t]]),n={};for(let r of t)n[r]=e[r];return o.objectValues(n)},o.objectValues=e=>o.objectKeys(e).map(function(t){return e[t]}),o.objectKeys=\"function\"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},o.find=(e,t)=>{for(let n of e)if(t(n))return n},o.isInteger=\"function\"==typeof Number.isInteger?e=>Number.isInteger(e):e=>\"number\"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,o.joinValues=function(e,t=\" | \"){return e.map(e=>\"string\"==typeof e?`'${e}'`:e).join(t)},o.jsonStringifyReplacer=(e,t)=>\"bigint\"==typeof t?t.toString():t,(r||(t.objectUtil=r={})).mergeShapes=(e,t)=>({...e,...t}),t.ZodParsedType=n.arrayToEnum([\"string\",\"nan\",\"number\",\"integer\",\"float\",\"boolean\",\"date\",\"bigint\",\"symbol\",\"function\",\"undefined\",\"null\",\"array\",\"object\",\"unknown\",\"promise\",\"void\",\"never\",\"map\",\"set\"]),t.getParsedType=e=>{switch(typeof e){case\"undefined\":return t.ZodParsedType.undefined;case\"string\":return t.ZodParsedType.string;case\"number\":return Number.isNaN(e)?t.ZodParsedType.nan:t.ZodParsedType.number;case\"boolean\":return t.ZodParsedType.boolean;case\"function\":return t.ZodParsedType.function;case\"bigint\":return t.ZodParsedType.bigint;case\"symbol\":return t.ZodParsedType.symbol;case\"object\":if(Array.isArray(e))return t.ZodParsedType.array;if(null===e)return t.ZodParsedType.null;if(e.then&&\"function\"==typeof e.then&&e.catch&&\"function\"==typeof e.catch)return t.ZodParsedType.promise;if(\"undefined\"!=typeof Map&&e instanceof Map)return t.ZodParsedType.map;if(\"undefined\"!=typeof Set&&e instanceof Set)return t.ZodParsedType.set;if(\"undefined\"!=typeof Date&&e instanceof Date)return t.ZodParsedType.date;return t.ZodParsedType.object;default:return t.ZodParsedType.unknown}}},871:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0});let r=n(348),o=n(709);t.default=(e,t)=>{let n;switch(e.code){case r.ZodIssueCode.invalid_type:n=e.received===o.ZodParsedType.undefined?\"Required\":`Expected ${e.expected}, received ${e.received}`;break;case r.ZodIssueCode.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,o.util.jsonStringifyReplacer)}`;break;case r.ZodIssueCode.unrecognized_keys:n=`Unrecognized key(s) in object: ${o.util.joinValues(e.keys,\", \")}`;break;case r.ZodIssueCode.invalid_union:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${o.util.joinValues(e.options)}`;break;case r.ZodIssueCode.invalid_enum_value:n=`Invalid enum value. Expected ${o.util.joinValues(e.options)}, received '${e.received}'`;break;case r.ZodIssueCode.invalid_arguments:n=\"Invalid function arguments\";break;case r.ZodIssueCode.invalid_return_type:n=\"Invalid function return type\";break;case r.ZodIssueCode.invalid_date:n=\"Invalid date\";break;case r.ZodIssueCode.invalid_string:\"object\"==typeof e.validation?\"includes\"in e.validation?(n=`Invalid input: must include \"${e.validation.includes}\"`,\"number\"==typeof e.validation.position&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):\"startsWith\"in e.validation?n=`Invalid input: must start with \"${e.validation.startsWith}\"`:\"endsWith\"in e.validation?n=`Invalid input: must end with \"${e.validation.endsWith}\"`:o.util.assertNever(e.validation):n=\"regex\"!==e.validation?`Invalid ${e.validation}`:\"Invalid\";break;case r.ZodIssueCode.too_small:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"more than\"} ${e.minimum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"over\"} ${e.minimum} character(s)`:\"number\"===e.type||\"bigint\"===e.type?`Number must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${e.minimum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${new Date(Number(e.minimum))}`:\"Invalid input\";break;case r.ZodIssueCode.too_big:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"less than\"} ${e.maximum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"under\"} ${e.maximum} character(s)`:\"number\"===e.type?`Number must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"bigint\"===e.type?`BigInt must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly\":e.inclusive?\"smaller than or equal to\":\"smaller than\"} ${new Date(Number(e.maximum))}`:\"Invalid input\";break;case r.ZodIssueCode.custom:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_intersection_types:n=\"Intersection results could not be merged\";break;case r.ZodIssueCode.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case r.ZodIssueCode.not_finite:n=\"Number must be finite\";break;default:n=t.defaultError,o.util.assertNever(e)}return{message:n}}},155:(e,t,n)=>{var r,o;let a;Object.defineProperty(t,\"__esModule\",{value:!0}),t.discriminatedUnion=t.date=t.boolean=t.bigint=t.array=t.any=t.coerce=t.ZodFirstPartyTypeKind=t.late=t.ZodSchema=t.Schema=t.ZodReadonly=t.ZodPipeline=t.ZodBranded=t.BRAND=t.ZodNaN=t.ZodCatch=t.ZodDefault=t.ZodNullable=t.ZodOptional=t.ZodTransformer=t.ZodEffects=t.ZodPromise=t.ZodNativeEnum=t.ZodEnum=t.ZodLiteral=t.ZodLazy=t.ZodFunction=t.ZodSet=t.ZodMap=t.ZodRecord=t.ZodTuple=t.ZodIntersection=t.ZodDiscriminatedUnion=t.ZodUnion=t.ZodObject=t.ZodArray=t.ZodVoid=t.ZodNever=t.ZodUnknown=t.ZodAny=t.ZodNull=t.ZodUndefined=t.ZodSymbol=t.ZodDate=t.ZodBoolean=t.ZodBigInt=t.ZodNumber=t.ZodString=t.ZodType=void 0,t.NEVER=t.void=t.unknown=t.union=t.undefined=t.tuple=t.transformer=t.symbol=t.string=t.strictObject=t.set=t.record=t.promise=t.preprocess=t.pipeline=t.ostring=t.optional=t.onumber=t.oboolean=t.object=t.number=t.nullable=t.null=t.never=t.nativeEnum=t.nan=t.map=t.literal=t.lazy=t.intersection=t.instanceof=t.function=t.enum=t.effect=void 0,t.datetimeRegex=I,t.custom=ev;let i=n(348),l=n(61),s=n(538),c=n(818),u=n(709);class d{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let f=(e,t)=>{if((0,c.isValid)(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(\"Validation failed but no issues detected.\");return{success:!1,get error(){if(this._error)return this._error;let t=new i.ZodError(e.common.issues);return this._error=t,this._error}}};function p(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:o}=e;if(t&&(n||r))throw Error('Can\\'t use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.');return t?{errorMap:t,description:o}:{errorMap:(t,o)=>{let{message:a}=e;return\"invalid_enum_value\"===t.code?{message:a??o.defaultError}:void 0===o.data?{message:a??r??o.defaultError}:\"invalid_type\"!==t.code?{message:o.defaultError}:{message:a??n??o.defaultError}},description:o}}class h{get description(){return this._def.description}_getType(e){return(0,u.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new c.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if((0,c.isAsync)(t))throw Error(\"Synchronous parse encountered promise.\");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parseSync({data:e,path:n.path,parent:n});return f(n,r)}\"~validate\"(e){let t={common:{issues:[],async:!!this[\"~standard\"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)};if(!this[\"~standard\"].async)try{let n=this._parseSync({data:e,path:[],parent:t});return(0,c.isValid)(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(\"encountered\")&&(this[\"~standard\"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>(0,c.isValid)(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parse({data:e,path:n.path,parent:n});return f(n,await ((0,c.isAsync)(r)?r:Promise.resolve(r)))}refine(e,t){return this._refinement((n,r)=>{let o=e(n),a=()=>r.addIssue({code:i.ZodIssueCode.custom,...\"string\"==typeof t||void 0===t?{message:t}:\"function\"==typeof t?t(n):t});return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then(e=>!!e||(a(),!1)):!!o||(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>!!e(n)||(r.addIssue(\"function\"==typeof t?t(n,r):t),!1))}_refinement(e){return new es({schema:this,typeName:r.ZodEffects,effect:{type:\"refinement\",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[\"~standard\"]={version:1,vendor:\"zod\",validate:e=>this[\"~validate\"](e)}}optional(){return ec.create(this,this._def)}nullable(){return eu.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return V.create(this)}promise(){return el.create(this,this._def)}or(e){return W.create([this,e],this._def)}and(e){return X.create(this,e,this._def)}transform(e){return new es({...p(this._def),schema:this,typeName:r.ZodEffects,effect:{type:\"transform\",transform:e}})}default(e){return new ed({...p(this._def),innerType:this,defaultValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodDefault})}brand(){return new eh({typeName:r.ZodBranded,type:this,...p(this._def)})}catch(e){return new ef({...p(this._def),innerType:this,catchValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return em.create(this,e)}readonly(){return eg.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}t.ZodType=h,t.Schema=h,t.ZodSchema=h;let m=/^c[^\\s-]{8,}$/i,g=/^[0-9a-z]+$/,y=/^[0-9A-HJKMNP-TV-Z]{26}$/i,v=/^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i,b=/^[a-z0-9_-]{21}$/i,A=/^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,x=/^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/,w=/^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i,C=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,k=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,E=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,j=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,S=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,O=\"((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))\",B=RegExp(`^${O}$`);function P(e){let t=\"[0-5]\\\\d\";e.precision?t=`${t}\\\\.\\\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\\\.\\\\d+)?`);let n=e.precision?\"+\":\"?\";return`([01]\\\\d|2[0-3]):[0-5]\\\\d(:${t})${n}`}function I(e){let t=`${O}T${P(e)}`,n=[];return n.push(e.local?\"Z?\":\"Z\"),e.offset&&n.push(\"([+-]\\\\d{2}:?\\\\d{2})\"),t=`${t}(${n.join(\"|\")})`,RegExp(`^${t}$`)}class z extends h{_parse(e){var t,n,r,o;let l;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==u.ZodParsedType.string){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.string,received:t.parsedType}),c.INVALID}let s=new c.ParseStatus;for(let d of this._def.checks)if(\"min\"===d.kind)e.data.lengthd.value&&(l=this._getOrReturnCtx(e,l),(0,c.addIssueToContext)(l,{code:i.ZodIssueCode.too_big,maximum:d.value,type:\"string\",inclusive:!0,exact:!1,message:d.message}),s.dirty());else if(\"length\"===d.kind){let t=e.data.length>d.value,n=e.data.lengthe.test(t),{validation:t,code:i.ZodIssueCode.invalid_string,...s.errorUtil.errToObj(n)})}_addCheck(e){return new z({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:\"email\",...s.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:\"url\",...s.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:\"emoji\",...s.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:\"uuid\",...s.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:\"nanoid\",...s.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:\"cuid\",...s.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:\"cuid2\",...s.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:\"ulid\",...s.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:\"base64\",...s.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:\"base64url\",...s.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:\"jwt\",...s.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:\"ip\",...s.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:\"cidr\",...s.errorUtil.errToObj(e)})}datetime(e){return\"string\"==typeof e?this._addCheck({kind:\"datetime\",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:\"datetime\",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...s.errorUtil.errToObj(e?.message)})}date(e){return this._addCheck({kind:\"date\",message:e})}time(e){return\"string\"==typeof e?this._addCheck({kind:\"time\",precision:null,message:e}):this._addCheck({kind:\"time\",precision:void 0===e?.precision?null:e?.precision,...s.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:\"duration\",...s.errorUtil.errToObj(e)})}regex(e,t){return this._addCheck({kind:\"regex\",regex:e,...s.errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:\"includes\",value:e,position:t?.position,...s.errorUtil.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:\"startsWith\",value:e,...s.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:\"endsWith\",value:e,...s.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:\"min\",value:e,...s.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e,...s.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:\"length\",value:e,...s.errorUtil.errToObj(t)})}nonempty(e){return this.min(1,s.errorUtil.errToObj(e))}trim(){return new z({...this._def,checks:[...this._def.checks,{kind:\"trim\"}]})}toLowerCase(){return new z({...this._def,checks:[...this._def.checks,{kind:\"toLowerCase\"}]})}toUpperCase(){return new z({...this._def,checks:[...this._def.checks,{kind:\"toUpperCase\"}]})}get isDatetime(){return!!this._def.checks.find(e=>\"datetime\"===e.kind)}get isDate(){return!!this._def.checks.find(e=>\"date\"===e.kind)}get isTime(){return!!this._def.checks.find(e=>\"time\"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>\"duration\"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>\"email\"===e.kind)}get isURL(){return!!this._def.checks.find(e=>\"url\"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>\"emoji\"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>\"uuid\"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>\"nanoid\"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>\"cuid\"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>\"cuid2\"===e.kind)}get isULID(){return!!this._def.checks.find(e=>\"ulid\"===e.kind)}get isIP(){return!!this._def.checks.find(e=>\"ip\"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>\"cidr\"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>\"base64\"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>\"base64url\"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew z({checks:[],typeName:r.ZodString,coerce:e?.coerce??!1,...p(e)});class T extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==u.ZodParsedType.number){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.number,received:t.parsedType}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"int\"===r.kind?u.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:\"integer\",received:\"float\",message:r.message}),n.dirty()):\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.value,type:\"number\",inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?0!==function(e,t){let n=(e.toString().split(\".\")[1]||\"\").length,r=(t.toString().split(\".\")[1]||\"\").length,o=n>r?n:r;return Number.parseInt(e.toFixed(o).replace(\".\",\"\"))%Number.parseInt(t.toFixed(o).replace(\".\",\"\"))/10**o}(e.data,r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):\"finite\"===r.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_finite,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new T({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new T({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:\"int\",message:s.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:\"min\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:\"finite\",message:s.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:\"min\",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:s.errorUtil.toString(e)})._addCheck({kind:\"max\",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:s.errorUtil.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.value\"int\"===e.kind||\"multipleOf\"===e.kind&&u.util.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(\"finite\"===n.kind||\"int\"===n.kind||\"multipleOf\"===n.kind)return!0;else\"min\"===n.kind?(null===t||n.value>t)&&(t=n.value):\"max\"===n.kind&&(null===e||n.valuenew T({checks:[],typeName:r.ZodNumber,coerce:e?.coerce||!1,...p(e)});class D extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==u.ZodParsedType.bigint)return this._getInvalidInput(e);let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,type:\"bigint\",maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.bigint,received:t.parsedType}),c.INVALID}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new D({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new D({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew D({checks:[],typeName:r.ZodBigInt,coerce:e?.coerce??!1,...p(e)});class L extends h{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==u.ZodParsedType.boolean){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.boolean,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodBoolean=L,L.create=e=>new L({typeName:r.ZodBoolean,coerce:e?.coerce||!1,...p(e)});class N extends h{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==u.ZodParsedType.date){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.date,received:t.parsedType}),c.INVALID}if(Number.isNaN(e.data.getTime())){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_date}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?e.data.getTime()r.value&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:\"date\"}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:\"min\",value:e.getTime(),message:s.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e.getTime(),message:s.errorUtil.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew N({checks:[],coerce:e?.coerce||!1,typeName:r.ZodDate,...p(e)});class R extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.symbol){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.symbol,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodSymbol=R,R.create=e=>new R({typeName:r.ZodSymbol,...p(e)});class M extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.undefined,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodUndefined=M,M.create=e=>new M({typeName:r.ZodUndefined,...p(e)});class Z extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.null){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.null,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodNull=Z,Z.create=e=>new Z({typeName:r.ZodNull,...p(e)});class U extends h{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodAny=U,U.create=e=>new U({typeName:r.ZodAny,...p(e)});class F extends h{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodUnknown=F,F.create=e=>new F({typeName:r.ZodUnknown,...p(e)});class q extends h{_parse(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.never,received:t.parsedType}),c.INVALID}}t.ZodNever=q,q.create=e=>new q({typeName:r.ZodNever,...p(e)});class H extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.void,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodVoid=H,H.create=e=>new H({typeName:r.ZodVoid,...p(e)});class V extends h{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:t.parsedType}),c.INVALID;if(null!==r.exactLength){let e=t.data.length>r.exactLength.value,o=t.data.lengthr.maxLength.value&&((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.maxLength.value,type:\"array\",inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new d(t,e,t.path,n)))).then(e=>c.ParseStatus.mergeArray(n,e));let o=[...t.data].map((e,n)=>r.type._parseSync(new d(t,e,t.path,n)));return c.ParseStatus.mergeArray(n,o)}get element(){return this._def.type}min(e,t){return new V({...this._def,minLength:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new V({...this._def,maxLength:{value:e,message:s.errorUtil.toString(t)}})}length(e,t){return new V({...this._def,exactLength:{value:e,message:s.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}t.ZodArray=V,V.create=(e,t)=>new V({type:e,minLength:null,maxLength:null,exactLength:null,typeName:r.ZodArray,...p(t)});class $ extends h{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=u.util.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==u.ZodParsedType.object){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:o}=this._getCached(),a=[];if(!(this._def.catchall instanceof q&&\"strip\"===this._def.unknownKeys))for(let e in n.data)o.includes(e)||a.push(e);let l=[];for(let e of o){let t=r[e],o=n.data[e];l.push({key:{status:\"valid\",value:e},value:t._parse(new d(n,o,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof q){let e=this._def.unknownKeys;if(\"passthrough\"===e)for(let e of a)l.push({key:{status:\"valid\",value:e},value:{status:\"valid\",value:n.data[e]}});else if(\"strict\"===e)a.length>0&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.unrecognized_keys,keys:a}),t.dirty());else if(\"strip\"===e);else throw Error(\"Internal ZodObject error: invalid unknownKeys value.\")}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];l.push({key:{status:\"valid\",value:t},value:e._parse(new d(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of l){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>c.ParseStatus.mergeObjectSync(t,e)):c.ParseStatus.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return s.errorUtil.errToObj,new $({...this._def,unknownKeys:\"strict\",...void 0!==e?{errorMap:(t,n)=>{let r=this._def.errorMap?.(t,n).message??n.defaultError;return\"unrecognized_keys\"===t.code?{message:s.errorUtil.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new $({...this._def,unknownKeys:\"strip\"})}passthrough(){return new $({...this._def,unknownKeys:\"passthrough\"})}extend(e){return new $({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new $({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:r.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new $({...this._def,catchall:e})}pick(e){let t={};for(let n of u.util.objectKeys(e))e[n]&&this.shape[n]&&(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}omit(e){let t={};for(let n of u.util.objectKeys(this.shape))e[n]||(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof $){let n={};for(let r in t.shape){let o=t.shape[r];n[r]=ec.create(e(o))}return new $({...t._def,shape:()=>n})}if(t instanceof V)return new V({...t._def,type:e(t.element)});if(t instanceof ec)return ec.create(e(t.unwrap()));if(t instanceof eu)return eu.create(e(t.unwrap()));if(t instanceof G)return G.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let n of u.util.objectKeys(this.shape)){let r=this.shape[n];e&&!e[n]?t[n]=r:t[n]=r.optional()}return new $({...this._def,shape:()=>t})}required(e){let t={};for(let n of u.util.objectKeys(this.shape))if(e&&!e[n])t[n]=this.shape[n];else{let e=this.shape[n];for(;e instanceof ec;)e=e._def.innerType;t[n]=e}return new $({...this._def,shape:()=>t})}keyof(){return eo(u.util.objectKeys(this.shape))}}t.ZodObject=$,$.create=(e,t)=>new $({shape:()=>e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.strictCreate=(e,t)=>new $({shape:()=>e,unknownKeys:\"strict\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.lazycreate=(e,t)=>new $({shape:e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)});class W extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(function(e){for(let t of e)if(\"valid\"===t.result.status)return t.result;for(let n of e)if(\"dirty\"===n.result.status)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new i.ZodError(e.ctx.common.issues));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:n}),c.INVALID});{let e,r=[];for(let o of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=o._parseSync({data:t.data,path:t.path,parent:n});if(\"valid\"===a.status)return a;\"dirty\"!==a.status||e||(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let o=r.map(e=>new i.ZodError(e));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:o}),c.INVALID}}get options(){return this._def.options}}t.ZodUnion=W,W.create=(e,t)=>new W({options:e,typeName:r.ZodUnion,...p(t)});let Y=e=>{if(e instanceof en)return Y(e.schema);if(e instanceof es)return Y(e.innerType());if(e instanceof er)return[e.value];if(e instanceof ea)return e.options;if(e instanceof ei)return u.util.objectValues(e.enum);else if(e instanceof ed)return Y(e._def.innerType);else if(e instanceof M)return[void 0];else if(e instanceof Z)return[null];else if(e instanceof ec)return[void 0,...Y(e.unwrap())];else if(e instanceof eu)return[null,...Y(e.unwrap())];else if(e instanceof eh)return Y(e.unwrap());else if(e instanceof eg)return Y(e.unwrap());else if(e instanceof ef)return Y(e._def.innerType);else return[]};class K extends h{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID;let n=this.discriminator,r=t.data[n],o=this.optionsMap.get(r);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),c.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){let o=new Map;for(let n of t){let t=Y(n.shape[e]);if(!t.length)throw Error(`A discriminator value for key \\`${e}\\` could not be extracted from all schema options`);for(let r of t){if(o.has(r))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(r)}`);o.set(r,n)}}return new K({typeName:r.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:o,...p(n)})}}t.ZodDiscriminatedUnion=K;class X extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if((0,c.isAborted)(e)||(0,c.isAborted)(r))return c.INVALID;let o=function e(t,n){let r=(0,u.getParsedType)(t),o=(0,u.getParsedType)(n);if(t===n)return{valid:!0,data:t};if(r===u.ZodParsedType.object&&o===u.ZodParsedType.object){let r=u.util.objectKeys(n),o=u.util.objectKeys(t).filter(e=>-1!==r.indexOf(e)),a={...t,...n};for(let r of o){let o=e(t[r],n[r]);if(!o.valid)return{valid:!1};a[r]=o.data}return{valid:!0,data:a}}if(r===u.ZodParsedType.array&&o===u.ZodParsedType.array){if(t.length!==n.length)return{valid:!1};let r=[];for(let o=0;or(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}t.ZodIntersection=X,X.create=(e,t,n)=>new X({left:e,right:t,typeName:r.ZodIntersection,...p(n)});class G extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:n.parsedType}),c.INVALID;if(n.data.lengththis._def.items.length&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:\"array\"}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new d(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>c.ParseStatus.mergeArray(t,e)):c.ParseStatus.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new G({...this._def,rest:e})}}t.ZodTuple=G,G.create=(e,t)=>{if(!Array.isArray(e))throw Error(\"You must pass an array of schemas to z.tuple([ ... ])\");return new G({items:e,typeName:r.ZodTuple,rest:null,...p(t)})};class Q extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:n.parsedType}),c.INVALID;let r=[],o=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:o._parse(new d(n,e,n.path,e)),value:a._parse(new d(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?c.ParseStatus.mergeObjectAsync(t,r):c.ParseStatus.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,n){return new Q(t instanceof h?{keyType:e,valueType:t,typeName:r.ZodRecord,...p(n)}:{keyType:z.create(),valueType:e,typeName:r.ZodRecord,...p(t)})}}t.ZodRecord=Q;class J extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.map)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.map,received:n.parsedType}),c.INVALID;let r=this._def.keyType,o=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new d(n,e,n.path,[a,\"key\"])),value:o._parse(new d(n,t,n.path,[a,\"value\"]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,o=await n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}})}{let e=new Map;for(let n of a){let r=n.key,o=n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}}}}t.ZodMap=J,J.create=(e,t,n)=>new J({valueType:t,keyType:e,typeName:r.ZodMap,...p(n)});class ee extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.set)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.set,received:n.parsedType}),c.INVALID;let r=this._def;null!==r.minSize&&n.data.sizer.maxSize.value&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:r.maxSize.value,type:\"set\",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let o=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(\"aborted\"===r.status)return c.INVALID;\"dirty\"===r.status&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let l=[...n.data.values()].map((e,t)=>o._parse(new d(n,e,n.path,t)));return n.common.async?Promise.all(l).then(e=>a(e)):a(l)}min(e,t){return new ee({...this._def,minSize:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new ee({...this._def,maxSize:{value:e,message:s.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}t.ZodSet=ee,ee.create=(e,t)=>new ee({valueType:e,minSize:null,maxSize:null,typeName:r.ZodSet,...p(t)});class et extends h{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.function)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.function,received:t.parsedType}),c.INVALID;function n(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_arguments,argumentsError:n}})}function r(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_return_type,returnTypeError:n}})}let o={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof el){let e=this;return(0,c.OK)(async function(...t){let l=new i.ZodError([]),s=await e._def.args.parseAsync(t,o).catch(e=>{throw l.addIssue(n(t,e)),l}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,o).catch(e=>{throw l.addIssue(r(c,e)),l})})}{let e=this;return(0,c.OK)(function(...t){let l=e._def.args.safeParse(t,o);if(!l.success)throw new i.ZodError([n(t,l.error)]);let s=Reflect.apply(a,this,l.data),c=e._def.returns.safeParse(s,o);if(!c.success)throw new i.ZodError([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new et({...this._def,args:G.create(e).rest(F.create())})}returns(e){return new et({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new et({args:e||G.create([]).rest(F.create()),returns:t||F.create(),typeName:r.ZodFunction,...p(n)})}}t.ZodFunction=et;class en extends h{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}t.ZodLazy=en,en.create=(e,t)=>new en({getter:e,typeName:r.ZodLazy,...p(t)});class er extends h{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_literal,expected:this._def.value}),c.INVALID}return{status:\"valid\",value:e.data}}get value(){return this._def.value}}function eo(e,t){return new ea({values:e,typeName:r.ZodEnum,...p(t)})}t.ZodLiteral=er,er.create=(e,t)=>new er({value:e,typeName:r.ZodLiteral,...p(t)});class ea extends h{_parse(e){if(\"string\"!=typeof e.data){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{expected:u.util.joinValues(n),received:t.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_enum_value,options:n}),c.INVALID}return(0,c.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return ea.create(e,{...this._def,...t})}exclude(e,t=this._def){return ea.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}t.ZodEnum=ea,ea.create=eo;class ei extends h{_parse(e){let t=u.util.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==u.ZodParsedType.string&&n.parsedType!==u.ZodParsedType.number){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{expected:u.util.joinValues(e),received:n.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(u.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{received:n.data,code:i.ZodIssueCode.invalid_enum_value,options:e}),c.INVALID}return(0,c.OK)(e.data)}get enum(){return this._def.values}}t.ZodNativeEnum=ei,ei.create=(e,t)=>new ei({values:e,typeName:r.ZodNativeEnum,...p(t)});class el extends h{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.promise&&!1===t.common.async)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.promise,received:t.parsedType}),c.INVALID;let n=t.parsedType===u.ZodParsedType.promise?t.data:Promise.resolve(t.data);return(0,c.OK)(n.then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}t.ZodPromise=el,el.create=(e,t)=>new el({type:e,typeName:r.ZodPromise,...p(t)});class es extends h{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===r.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,o={addIssue:e=>{(0,c.addIssueToContext)(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(o.addIssue=o.addIssue.bind(o),\"preprocess\"===r.type){let e=r.transform(n.data,o);if(n.common.async)return Promise.resolve(e).then(async e=>{if(\"aborted\"===t.value)return c.INVALID;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r});{if(\"aborted\"===t.value)return c.INVALID;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r}}if(\"refinement\"===r.type){let e=e=>{let t=r.refinement(e,o);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");return e};if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>\"aborted\"===n.status?c.INVALID:(\"dirty\"===n.status&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))));{let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:(\"dirty\"===r.status&&t.dirty(),e(r.value),{status:t.value,value:r.value})}}if(\"transform\"===r.type)if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>(0,c.isValid)(e)?Promise.resolve(r.transform(e.value,o)).then(e=>({status:t.value,value:e})):c.INVALID);else{let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!(0,c.isValid)(e))return c.INVALID;let a=r.transform(e.value,o);if(a instanceof Promise)throw Error(\"Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.\");return{status:t.value,value:a}}u.util.assertNever(r)}}t.ZodEffects=es,t.ZodTransformer=es,es.create=(e,t,n)=>new es({schema:e,typeName:r.ZodEffects,effect:t,...p(n)}),es.createWithPreprocess=(e,t,n)=>new es({schema:t,effect:{type:\"preprocess\",transform:e},typeName:r.ZodEffects,...p(n)});class ec extends h{_parse(e){return this._getType(e)===u.ZodParsedType.undefined?(0,c.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodOptional=ec,ec.create=(e,t)=>new ec({innerType:e,typeName:r.ZodOptional,...p(t)});class eu extends h{_parse(e){return this._getType(e)===u.ZodParsedType.null?(0,c.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodNullable=eu,eu.create=(e,t)=>new eu({innerType:e,typeName:r.ZodNullable,...p(t)});class ed extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===u.ZodParsedType.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}t.ZodDefault=ed,ed.create=(e,t)=>new ed({innerType:e,typeName:r.ZodDefault,defaultValue:\"function\"==typeof t.default?t.default:()=>t.default,...p(t)});class ef extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return(0,c.isAsync)(r)?r.then(e=>({status:\"valid\",value:\"valid\"===e.status?e.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})})):{status:\"valid\",value:\"valid\"===r.status?r.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}t.ZodCatch=ef,ef.create=(e,t)=>new ef({innerType:e,typeName:r.ZodCatch,catchValue:\"function\"==typeof t.catch?t.catch:()=>t.catch,...p(t)});class ep extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.nan){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.nan,received:t.parsedType}),c.INVALID}return{status:\"valid\",value:e.data}}}t.ZodNaN=ep,ep.create=e=>new ep({typeName:r.ZodNaN,...p(e)}),t.BRAND=Symbol(\"zod_brand\");class eh extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}t.ZodBranded=eh;class em extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),(0,c.DIRTY)(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),{status:\"dirty\",value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(e,t){return new em({in:e,out:t,typeName:r.ZodPipeline})}}t.ZodPipeline=em;class eg extends h{_parse(e){let t=this._def.innerType._parse(e),n=e=>((0,c.isValid)(e)&&(e.value=Object.freeze(e.value)),e);return(0,c.isAsync)(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}}function ey(e,t){let n=\"function\"==typeof e?e(t):\"string\"==typeof e?{message:e}:e;return\"string\"==typeof n?{message:n}:n}function ev(e,t={},n){return e?U.create().superRefine((r,o)=>{let a=e(r);if(a instanceof Promise)return a.then(e=>{if(!e){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}});if(!a){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}}):U.create()}t.ZodReadonly=eg,eg.create=(e,t)=>new eg({innerType:e,typeName:r.ZodReadonly,...p(t)}),t.late={object:$.lazycreate},(o=r||(t.ZodFirstPartyTypeKind=r={})).ZodString=\"ZodString\",o.ZodNumber=\"ZodNumber\",o.ZodNaN=\"ZodNaN\",o.ZodBigInt=\"ZodBigInt\",o.ZodBoolean=\"ZodBoolean\",o.ZodDate=\"ZodDate\",o.ZodSymbol=\"ZodSymbol\",o.ZodUndefined=\"ZodUndefined\",o.ZodNull=\"ZodNull\",o.ZodAny=\"ZodAny\",o.ZodUnknown=\"ZodUnknown\",o.ZodNever=\"ZodNever\",o.ZodVoid=\"ZodVoid\",o.ZodArray=\"ZodArray\",o.ZodObject=\"ZodObject\",o.ZodUnion=\"ZodUnion\",o.ZodDiscriminatedUnion=\"ZodDiscriminatedUnion\",o.ZodIntersection=\"ZodIntersection\",o.ZodTuple=\"ZodTuple\",o.ZodRecord=\"ZodRecord\",o.ZodMap=\"ZodMap\",o.ZodSet=\"ZodSet\",o.ZodFunction=\"ZodFunction\",o.ZodLazy=\"ZodLazy\",o.ZodLiteral=\"ZodLiteral\",o.ZodEnum=\"ZodEnum\",o.ZodEffects=\"ZodEffects\",o.ZodNativeEnum=\"ZodNativeEnum\",o.ZodOptional=\"ZodOptional\",o.ZodNullable=\"ZodNullable\",o.ZodDefault=\"ZodDefault\",o.ZodCatch=\"ZodCatch\",o.ZodPromise=\"ZodPromise\",o.ZodBranded=\"ZodBranded\",o.ZodPipeline=\"ZodPipeline\",o.ZodReadonly=\"ZodReadonly\",t.instanceof=(e,t={message:`Input not instance of ${e.name}`})=>ev(t=>t instanceof e,t);let eb=z.create;t.string=eb;let eA=T.create;t.number=eA,t.nan=ep.create,t.bigint=D.create;let ex=L.create;t.boolean=ex,t.date=N.create,t.symbol=R.create,t.undefined=M.create,t.null=Z.create,t.any=U.create,t.unknown=F.create,t.never=q.create,t.void=H.create,t.array=V.create,t.object=$.create,t.strictObject=$.strictCreate,t.union=W.create,t.discriminatedUnion=K.create,t.intersection=X.create,t.tuple=G.create,t.record=Q.create,t.map=J.create,t.set=ee.create,t.function=et.create,t.lazy=en.create,t.literal=er.create,t.enum=ea.create,t.nativeEnum=ei.create,t.promise=el.create;let ew=es.create;t.effect=ew,t.transformer=ew,t.optional=ec.create,t.nullable=eu.create,t.preprocess=es.createWithPreprocess,t.pipeline=em.create,t.ostring=()=>eb().optional(),t.onumber=()=>eA().optional(),t.oboolean=()=>ex().optional(),t.coerce={string:e=>z.create({...e,coerce:!0}),number:e=>T.create({...e,coerce:!0}),boolean:e=>L.create({...e,coerce:!0}),bigint:e=>D.create({...e,coerce:!0}),date:e=>N.create({...e,coerce:!0})},t.NEVER=c.INVALID}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(629)})()}},__webpack_module_cache__={};function __nested_webpack_require_378213__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](n,n.exports,__nested_webpack_require_378213__),n.exports}__nested_webpack_require_378213__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __nested_webpack_require_378213__.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;__nested_webpack_require_378213__.t=function(n,r){if(1&r&&(n=this(n)),8&r||\"object\"==typeof n&&n&&(4&r&&n.__esModule||16&r&&\"function\"==typeof n.then))return n;var o=Object.create(null);__nested_webpack_require_378213__.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;\"object\"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>{a[e]=()=>n[e]});return a.default=()=>n,__nested_webpack_require_378213__.d(o,a),o}})(),__nested_webpack_require_378213__.d=(e,t)=>{for(var n in t)__nested_webpack_require_378213__.o(t,n)&&!__nested_webpack_require_378213__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__nested_webpack_require_378213__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_378213__.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},__nested_webpack_require_378213__.nc=void 0;var __nested_webpack_exports__={};for(var __webpack_i__ in(()=>{\"use strict\";__nested_webpack_require_378213__.r(__nested_webpack_exports__),__nested_webpack_require_378213__.d(__nested_webpack_exports__,{dispatcher:()=>dt,renderAppDevOverlay:()=>dc,DevOverlayContext:()=>dr,renderPagesDevOverlay:()=>du,useDevOverlayContext:()=>da});var e,t,n,r=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\"),o=__nested_webpack_require_378213__.n(r),a=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleDomAPI.js\"),i=__nested_webpack_require_378213__.n(a),l=__nested_webpack_require_378213__(\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\"),s=__nested_webpack_require_378213__.n(l),c=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\"),u=__nested_webpack_require_378213__.n(c),d=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/insertStyleElement.js\"),f=__nested_webpack_require_378213__.n(d),p=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\"),h=__nested_webpack_require_378213__.n(p),m=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\"),g={};g.styleTagTransform=h(),g.setAttributes=u(),g.insert=s(),g.domAPI=i(),g.insertStyleElement=f(),o()(m.Z,g),m.Z&&m.Z.locals&&m.Z.locals;var y=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\"),v={};v.styleTagTransform=h(),v.setAttributes=u(),v.insert=s(),v.domAPI=i(),v.insertStyleElement=f(),o()(y.Z,v),y.Z&&y.Z.locals&&y.Z.locals;var b=__nested_webpack_require_378213__(\"./dist/compiled/react/jsx-runtime.js\"),A=__nested_webpack_require_378213__(\"./dist/compiled/react/compiler-runtime.js\"),x=__nested_webpack_require_378213__(\"./dist/compiled/react/index.js\"),w=__nested_webpack_require_378213__.t(x,2),C=__nested_webpack_require_378213__(\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\"),_=/\\/_next(\\/static\\/.+)/,k=Symbol.for(\"next.console.error.digest\");function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;t1?t-1:0),r=1;r0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]\"!==e.file&&(null!=e.column1?n+=\" (\".concat(e.line1,\":\").concat(e.column1,\")\"):n+=\" (\".concat(e.line1,\")\")),n}function eS(e){var t,n,r=(0,A.c)(6);r[0]!==e?(t=void 0===e?{}:e,r[0]=e,r[1]=t):t=r[1];var o=t.file,a=t.line1,i=t.column1;return r[2]!==i||r[3]!==o||r[4]!==a?(n=function(){if(null!=o&&null!=a&&null!=i){var e=new URLSearchParams;e.append(\"file\",o),e.append(\"line1\",String(a)),e.append(\"column1\",String(i)),self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString())).then(eO,function(e){console.error('Failed to open file \"'.concat(o,\" (\").concat(a,\":\").concat(i,')\" in your editor. Cause:'),e)})}},r[2]=i,r[3]=o,r[4]=a,r[5]=n):n=r[5],n}function eO(){}function eB(e){for(var t=1;t? +\\d+ +\\| [ ]+/.exec(eq()(e))?null:/^>? +\\d+ +\\| ( *)/.exec(eq()(e))}).filter(Boolean).map(function(e){return e.pop()}).reduce(function(e,t){return isNaN(e)?t.length:Math.min(e,t.length)},NaN);return n>1?t.map(function(e,t){return~(t=e.indexOf(\"|\"))?e.substring(0,t)+e.substring(t).replace(\"^\\\\ {\".concat(n,\"}\"),\"\"):e}).join(\"\\n\"):t.join(\"\\n\")}function eV(e){for(var t=1;t0&&n.push(r),n})(eH(a)).map(function(e){var t,n,r,a,i,l,s,c,u;return{line:e,parsedLine:(t=e,n=o,((null==(r=t[0])?void 0:r.content)===\">\"||(null==(a=t[0])?void 0:a.content)===\" \")&&(s=null==(l=t[1])||null==(u=l.content)||null==(c=u.replace(\"|\",\"\"))?void 0:c.trim()),{lineNumber:s,isErroredLine:s===(null==(i=n.line1)?void 0:i.toString())})}})},[a,o]),l=eS({file:o.file,line1:null!=(n=o.line1)?n:1,column1:null!=(r=o.column1)?r:1}),s=null==o||null==(t=o.file)?void 0:t.split(\".\").pop();return(0,b.jsxs)(\"div\",{\"data-nextjs-codeframe\":!0,children:[(0,b.jsx)(\"div\",{className:\"code-frame-header\",children:(0,b.jsxs)(\"p\",{className:\"code-frame-link\",children:[(0,b.jsx)(\"span\",{className:\"code-frame-icon\",children:(0,b.jsx)(eT,{lang:s})}),(0,b.jsxs)(\"span\",{\"data-text\":!0,children:[ej(o),\" @\",\" \",(0,b.jsx)(ev,{text:o.methodName})]}),(0,b.jsx)(\"button\",{\"aria-label\":\"Open in editor\",\"data-with-open-in-editor-link-source-file\":!0,onClick:l,children:(0,b.jsx)(\"span\",{className:\"code-frame-icon\",\"data-icon\":\"right\",children:(0,b.jsx)(eI,{width:16,height:16})})})]})}),(0,b.jsx)(\"pre\",{className:\"code-frame-pre\",children:(0,b.jsx)(\"div\",{className:\"code-frame-lines\",children:i.map(function(e,t){var n,r,o=e.line,a=e.parsedLine,i=a.lineNumber,l=a.isErroredLine,s={};return i&&(s[\"data-nextjs-codeframe-line\"]=i),l&&(s[\"data-nextjs-codeframe-line--errored\"]=!0),(0,b.jsx)(\"div\",(n=eV({},s),r=r={children:o.map(function(e,t){return(0,b.jsx)(\"span\",{style:eV({color:e.fg?\"var(--color-\".concat(e.fg,\")\"):void 0},\"bold\"===e.decoration?{fontWeight:500}:\"italic\"===e.decoration?{fontStyle:\"italic\"}:void 0),children:e.content},\"frame-\".concat(t))})},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n),\"line-\".concat(t))})})})]})}var eW=function(e){var t,n,r,o,a,i,l=(0,A.c)(8);return(l[0]!==e?(a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: 8px;\\n }\\n\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\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-root] {\\n --next-dialog-max-width: 540px;\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 960px;\\n }\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return eK=function(){return n},n}var eX=es(eK());function eG(){for(var e=arguments.length,t=Array(e),n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"content\",\"getContent\",\"actionLabel\",\"successLabel\",\"icon\",\"disabled\"]),n=e.content,o=e.getContent,t=e.actionLabel,l=e.successLabel,a=e.icon,r=e.disabled,v[0]=e,v[1]=t,v[2]=n,v[3]=r,v[4]=o,v[5]=a,v[6]=i,v[7]=l):(t=v[1],n=v[2],r=v[3],o=v[4],a=v[5],i=v[6],l=v[7]),v[8]!==n||v[9]!==o?(s=function(){return n||(o?o():\"\")},v[8]=n,v[9]=o,v[10]=s):s=v[10];var w=s;v[11]!==w?(c=w(),v[11]=w,v[12]=c):c=v[12];var C=e1(e3(c),4),_=C[0],k=C[1],E=C[2],j=C[3],S=\"error\"===_.state?_.error:null;v[13]!==S?(u=function(){null!==S&&console.warn(S)},d=[S],v[13]=S,v[14]=u,v[15]=d):(u=v[14],d=v[15]),x.useEffect(u,d),v[16]!==_.state||v[17]!==E?(f=function(){if(\"success\"===_.state){var e=setTimeout(function(){E()},2e3);return function(){clearTimeout(e)}}},v[16]=_.state,v[17]=E,v[18]=f):f=v[18],v[19]!==_.state||v[20]!==j||v[21]!==E?(p=[j,_.state,E],v[19]=_.state,v[20]=j,v[21]=E,v[22]=p):p=v[22],x.useEffect(f,p);var O=!navigator.clipboard||j||r||!!S,B=\"success\"===_.state?l:t;v[23]!==_.state||v[24]!==a?(h=\"success\"===_.state?(0,b.jsx)(e8,{}):a||(0,b.jsx)(e9,{width:14,height:14,className:\"error-overlay-toolbar-button-icon\"}),v[23]=_.state,v[24]=a,v[25]=h):h=v[25];var P=h,I=\"nextjs-data-copy-button--\".concat(_.state);v[26]!==e.className||v[27]!==I?(m=eG(e.className,\"nextjs-data-copy-button\",I),v[26]=e.className,v[27]=I,v[28]=m):m=v[28],v[29]!==k||v[30]!==O?(g=function(){O||k()},v[29]=k,v[30]=O,v[31]=g):g=v[31];var z=\"error\"===_.state?\" \".concat(_.error):null;return v[32]!==O||v[33]!==B||v[34]!==P||v[35]!==i||v[36]!==z||v[37]!==m||v[38]!==g?(y=(0,b.jsxs)(\"button\",e0(eJ({},i),{type:\"button\",title:B,\"aria-label\":B,\"aria-disabled\":O,disabled:O,\"data-nextjs-copy-button\":!0,className:m,onClick:g,children:[P,z]})),v[32]=O,v[33]=B,v[34]=P,v[35]=i,v[36]=z,v[37]=m,v[38]=g,v[39]=y):y=v[39],y}function e9(e){var t,n,r=(0,A.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M2.406.438c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531H3.937V8.75H2.406a.219.219 0 0 1-.219-.219V1.97c0-.121.098-.219.22-.219h4.812c.12 0 .218.098.218.219v.656H8.75v-.656c0-.846-.686-1.532-1.531-1.532H2.406zm4.375 3.5c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531h4.813c.845 0 1.531-.685 1.531-1.53V5.468c0-.846-.686-1.532-1.531-1.532H6.78zm-.218 1.53c0-.12.097-.218.218-.218h4.813c.12 0 .219.098.219.219v6.562c0 .121-.098.219-.22.219H6.782a.219.219 0 0 1-.218-.219V5.47z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,b.jsx)(\"svg\",e0(eJ({width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function e8(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{height:\"16\",xlinkTitle:\"copied\",viewBox:\"0 0 16 16\",width:\"16\",stroke:\"currentColor\",fill:\"currentColor\",children:(0,b.jsx)(\"path\",{d:\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"})}),t[0]=e):e=t[0],e}function e7(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n\\.(.*)\\nThis will cause a hydration error\\.(.*)/,/^In HTML, (.+?) cannot be a descendant of <(.+?)>\\.\\nThis will cause a hydration error\\.(.*)/,/^In HTML, text nodes cannot be a child of <(.+?)>\\.\\nThis will cause a hydration error\\./,/^In HTML, whitespace text nodes cannot be a child of <(.+?)>\\. Make sure you don't have any extra whitespace between tags on each line of your source code\\.\\nThis will cause a hydration error\\./];function tg(e){return tm.some(function(t){return t.test(e)})}var ty=[\"https://nextjs.org\",\"https://react.dev\"];function tv(e){return ty.some(function(t){return e.startsWith(t)})}function tb(e){var t,n,r,o,a=(0,A.c)(6),i=e.errorMessage;a[0]!==i?(t=function(e){var t,n,r,o=(t=e,n=tv,r=Array.from(t.matchAll(/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/gi),function(e){return e[0]}),n?r.filter(function(e){return n(e)}):r);if(0===o.length)return null;var a=o[0];return a===tp?th:a}(i),a[0]=i,a[1]=t):t=a[1];var l=t;return l?(a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(tA,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14}),a[3]=r):r=a[3],a[4]!==l?(o=(0,b.jsx)(\"a\",{title:\"Go to related documentation\",\"aria-label\":\"Go to related documentation\",className:\"docs-link-button\",href:l,target:\"_blank\",rel:\"noopener noreferrer\",children:r}),a[4]=l,a[5]=o):o=a[5],o):(a[2]===Symbol.for(\"react.memo_cache_sentinel\")?(n=(0,b.jsx)(\"button\",{title:\"No related documentation found\",\"aria-label\":\"No related documentation found\",className:\"docs-link-button\",disabled:!0,children:(0,b.jsx)(tA,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14})}),a[2]=n):n=a[2],n)}function tA(e){var t,n,r,o,a=(0,A.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M0 .875h4.375C5.448.875 6.401 1.39 7 2.187A3.276 3.276 0 0 1 9.625.875H14v11.156H9.4c-.522 0-1.023.208-1.392.577l-.544.543h-.928l-.544-.543c-.369-.37-.87-.577-1.392-.577H0V.875zm6.344 3.281a1.969 1.969 0 0 0-1.969-1.968H1.312v8.53H4.6c.622 0 1.225.177 1.744.502V4.156zm1.312 7.064V4.156c0-1.087.882-1.968 1.969-1.968h3.063v8.53H9.4c-.622 0-1.225.177-1.744.502z\",fill:\"currentColor\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,b.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]e.length)&&(t=e.length);for(var n=0,r=Array(t);n200)},i[0]=t):t=i[0],i[1]!==l?(n=[l],i[1]=l,i[2]=n):n=i[2],(0,x.useLayoutEffect)(t,n);var m=\"nextjs__container_errors_desc \".concat(f&&!c?\"truncated\":\"\");return i[3]!==l||i[4]!==m?(r=(0,b.jsx)(\"p\",{ref:h,id:\"nextjs__container_errors_desc\",className:m,children:l}),i[3]=l,i[4]=m,i[5]=r):r=i[5],i[6]!==c||i[7]!==f?(o=f&&!c&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(\"div\",{className:\"nextjs__container_errors_gradient_overlay\"}),(0,b.jsx)(\"button\",{onClick:function(){return u(!0)},className:\"nextjs__container_errors_expand_button\",\"aria-expanded\":c,\"aria-controls\":\"nextjs__container_errors_desc\",children:\"Show More\"})]}),i[6]=c,i[7]=f,i[8]=o):o=i[8],i[9]!==r||i[10]!==o?(a=(0,b.jsxs)(\"div\",{className:\"nextjs__container_errors_wrapper\",children:[r,o]}),i[9]=r,i[10]=o,i[11]=a):a=i[11],a}function tz(e){var t,n=(0,A.c)(2),r=e.errorType;return n[0]!==r?(t=(0,b.jsx)(\"span\",{id:\"nextjs__container_errors_label\",className:\"nextjs__container_errors_label\",children:r}),n[0]=r,n[1]=t):t=n[1],t}function tT(e){var t,n,r=(0,A.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M9.24996 12.0608L8.71963 11.5304L5.89641 8.70722C5.50588 8.3167 5.50588 7.68353 5.89641 7.29301L8.71963 4.46978L9.24996 3.93945L10.3106 5.00011L9.78029 5.53044L7.31062 8.00011L9.78029 10.4698L10.3106 11.0001L9.24996 12.0608Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-label\":o,className:a,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tD(e){var t,n,r=(0,A.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M6.75011 3.93945L7.28044 4.46978L10.1037 7.29301C10.4942 7.68353 10.4942 8.3167 10.1037 8.70722L7.28044 11.5304L6.75011 12.0608L5.68945 11.0001L6.21978 10.4698L8.68945 8.00011L6.21978 5.53044L5.68945 5.00011L6.75011 3.93945Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",className:a,\"aria-label\":o,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tL(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&_(Math.max(0,C-1))})},v[0]=C,v[1]=_,v[2]=r):r=v[2];var k=r;v[3]!==C||v[4]!==_||v[5]!==w.length?(o=function(){return(0,x.startTransition)(function(){C=w.length-1,R=C>=w.length-1;return v[31]===Symbol.for(\"react.memo_cache_sentinel\")?(m=(0,b.jsx)(tD,{title:\"next\",className:\"error-overlay-pagination-button-icon\"}),v[31]=m):m=v[31],v[32]!==E||v[33]!==N||v[34]!==R?(g=(0,b.jsx)(\"button\",{ref:S,type:\"button\",disabled:N,\"aria-disabled\":R,onClick:E,\"data-nextjs-dialog-error-next\":!0,className:\"error-overlay-pagination-button\",children:m}),v[32]=E,v[33]=N,v[34]=R,v[35]=g):g=v[35],v[36]!==d||v[37]!==h||v[38]!==g?(y=(0,b.jsxs)(\"nav\",{className:\"error-overlay-pagination dialog-exclude-closing-from-outside-click\",ref:I,children:[d,h,g]}),v[36]=d,v[37]=h,v[38]=g,v[39]=y):y=v[39],y}function tR(e){var t,n,r,o,a=(0,A.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"circle\",{cx:\"7\",cy:\"7\",r:\"5.5\",strokeWidth:\"3\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,b.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\",\"onClose\",\"aria-labelledby\",\"aria-describedby\"]),y=x.useRef(null),v=(t=x.useState(\"undefined\"!=typeof document&&document.hasFocus()?\"dialog\":void 0),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||function(e,t){if(e){if(\"string\"==typeof e)return tH(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return tH(e,t)}}(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),w=v[0],C=v[1];return r=y.current,o=tV,a=function(e){return e.preventDefault(),null==p?void 0:p()},(s=(0,A.c)(5))[0]!==o||s[1]!==r||s[2]!==a?(i=function(){if(null!=r&&null!=a){var e=function(e){!(!r||r.contains(e.target))&&(o.some(function(t){return e.target.closest(t)})||a(e))},t=r.getRootNode();return t.addEventListener(\"mouseup\",e),t.addEventListener(\"touchend\",e,{passive:!1}),function(){t.removeEventListener(\"mouseup\",e),t.removeEventListener(\"touchend\",e)}}},l=[a,r,o],s[0]=o,s[1]=r,s[2]=a,s[3]=i,s[4]=l):(i=s[3],l=s[4]),x.useEffect(i,l),x.useEffect(function(){var e=function(){C(document.hasFocus()?\"dialog\":void 0)};if(null!=y.current)return window.addEventListener(\"focus\",e),window.addEventListener(\"blur\",e),function(){window.removeEventListener(\"focus\",e),window.removeEventListener(\"blur\",e)}},[]),x.useEffect(function(){var e,t,n=y.current,r=null==n?void 0:n.getRootNode(),o=(e=r,null!=(t=ShadowRoot)&&\"undefined\"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t)?null==r?void 0:r.activeElement:null;return null==n||n.focus(),function(){null==n||n.blur(),null==o||o.focus()}},[]),(0,b.jsx)(\"div\",(c=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"onClose\",\"footer\"]),r=e.children,a=e.onClose,o=e.footer,c[0]=e,c[1]=r,c[2]=o,c[3]=a,c[4]=i):(r=c[1],o=c[2],a=c[3],i=c[4]),c[5]!==r||c[6]!==a||c[7]!==i)?(l=(0,b.jsx)(t$,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"className\",\"children\"]),o=e.className,r=e.children,s[0]=e,s[1]=r,s[2]=o,s[3]=a):(r=s[1],o=s[2],a=s[3]),s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(i=[],s[4]=i):i=s[4],x.useEffect(t0,i),s[5]!==r||s[6]!==o||s[7]!==a)?(l=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t0)){var e=window.innerWidth-document.documentElement.clientWidth;e>0&&(t=document.body.style.paddingRight,document.body.style.paddingRight=\"\".concat(e,\"px\")),n=document.body.style.overflow,document.body.style.overflow=\"hidden\"}}),tJ}function t1(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n padding: initial;\\n top: 10vh;\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return t1=function(){return n},n}function t2(e){var t,n,r,o,a,i=(0,A.c)(6);return(i[0]!==e?(o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\"]),r=e.children,i[0]=e,i[1]=r,i[2]=o):(r=i[1],o=i[2]),i[3]!==r||i[4]!==o)?(a=(0,b.jsx)(tQ,(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.current.getBoundingClientRect().left-10&&n.clientX<=e.current.getBoundingClientRect().right+10&&n.clientY>=e.current.getBoundingClientRect().top-10&&n.clientY<=e.current.getBoundingClientRect().bottom+10||null!=(a=t.current)&&a.getBoundingClientRect()&&n.clientX>=t.current.getBoundingClientRect().left-10&&n.clientX<=t.current.getBoundingClientRect().right+10&&n.clientY>=t.current.getBoundingClientRect().top-10&&n.clientY<=t.current.getBoundingClientRect().bottom+10||r(\"outside\"))},s=function(e){\"Escape\"===e.key&&r(\"escape\")};return null==i||i.addEventListener(\"mousedown\",l),null==i||i.addEventListener(\"keydown\",s),function(){null==i||i.removeEventListener(\"mousedown\",l),null==i||i.removeEventListener(\"keydown\",s)}}},i=[n,r,o,e,t],l[0]=n,l[1]=r,l[2]=o,l[3]=e,l[4]=t,l[5]=a,l[6]=i):(a=l[5],i=l[6]),(0,x.useEffect)(a,i)}var t7=\"cubic-bezier(0.175, 0.885, 0.32, 1.1)\",ne=(0,x.forwardRef)(function(e,t){var n,r,o=(0,A.c)(9),a=e.stop,i=e.blur,l=e.side,s=e.style,c=e.height,u=\"\".concat(c,\"px\");o[0]!==i||o[1]!==a||o[2]!==s||o[3]!==u?(n=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"measure\"]),g=e.children,y=e.measure,k[0]=e,k[1]=g,k[2]=y,k[3]=v):(g=k[1],y=k[2],v=k[3]);var E=nn((0,x.useState)(null),2),j=E[0],S=E[1],O=nn((n=j,r=y,l=(0,A.c)(7),c=(s=nn((0,x.useState)(0),2))[0],u=s[1],f=(d=nn((0,x.useState)(!0),2))[0],p=d[1],l[0]!==n||l[1]!==r?(o=function(){if(r&&n){var e,t=new ResizeObserver(function(t){var n=nn(t,1)[0].contentRect;clearTimeout(e),e=window.setTimeout(function(){p(!1)},100),u(n.height)});return t.observe(n),function(){return t.disconnect()}}},a=[r,n],l[0]=n,l[1]=r,l[2]=o,l[3]=a):(o=l[2],a=l[3]),(0,x.useEffect)(o,a),l[4]!==c||l[5]!==f?(i=[c,f],l[4]=c,l[5]=f,l[6]=i):i=l[6],i),2),B=O[0],P=O[1]?\"auto\":B;return(k[4]!==P?(w={height:P,transition:\"height 250ms var(--timing-swift)\"},k[4]=P,k[5]=w):w=k[5],k[6]!==g?(C=(0,b.jsx)(\"div\",{ref:S,children:g}),k[6]=g,k[7]=C):C=k[7],k[8]!==v||k[9]!==t||k[10]!==w||k[11]!==C)?(_=(0,b.jsx)(\"div\",(h=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"fixed\"]),t=e.fixed,o[0]=e,o[1]=t,o[2]=n):(t=o[1],n=o[2]);var a=!!t||void 0;return o[3]!==n||o[4]!==a?(r=(0,b.jsx)(\"div\",function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n h1 {\\n font-size: var(--size-20);\\n line-height: var(--size-24);\\n font-weight: bold;\\n margin: calc(16px * 1.5) 0;\\n color: var(--color-title-h1);\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-14);\\n color: var(--color-accents-1);\\n margin-left: 16px;\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: 4px;\\n }\\n .nextjs-container-errors-header > p > a {\\n color: inherit;\\n font-weight: bold;\\n }\\n .nextjs-container-errors-header\\n > .nextjs-container-build-error-version-status {\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n }\\n\",\"\\n \").concat(\"\",\"\\n\\n \").concat(\"\\n [data-nextjs-error-overlay-nav] {\\n --stroke-color: var(--color-gray-400);\\n --background-color: var(--color-background-100);\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\\n width: 100%;\\n\\n position: relative;\\n z-index: 2;\\n outline: none;\\n translate: var(--next-dialog-border-width) var(--next-dialog-border-width);\\n max-width: var(--next-dialog-max-width);\\n\\n .error-overlay-notch {\\n translate: calc(var(--next-dialog-border-width) * -1);\\n width: auto;\\n height: var(--next-dialog-notch-height);\\n padding: 12px;\\n background: var(--background-color);\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n position: relative;\\n\\n &[data-side='left'] {\\n padding-right: 0;\\n border-radius: var(--next-dialog-radius) 0 0 0;\\n\\n .error-overlay-notch-tail {\\n right: -54px;\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-right: -10px;\\n }\\n }\\n\\n &[data-side='right'] {\\n padding-left: 0;\\n border-radius: 0 var(--next-dialog-radius) 0 0;\\n\\n .error-overlay-notch-tail {\\n left: -54px;\\n transform: rotateY(180deg);\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-left: -12px;\\n }\\n }\\n\\n .error-overlay-notch-tail {\\n position: absolute;\\n top: calc(var(--next-dialog-border-width) * -1);\\n pointer-events: none;\\n z-index: -1;\\n height: calc(100% + var(--next-dialog-border-width));\\n }\\n }\\n }\\n\\n @media (max-width: 600px) {\\n [data-nextjs-error-overlay-nav] {\\n background: var(--background-color);\\n border-radius: var(--next-dialog-radius) var(--next-dialog-radius) 0 0;\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n overflow: hidden;\\n translate: 0 var(--next-dialog-border-width);\\n \\n .error-overlay-notch {\\n border-radius: 0;\\n border: 0;\\n\\n &[data-side=\\\"left\\\"], &[data-side=\\\"right\\\"] {\\n border-radius: 0;\\n }\\n\\n .error-overlay-notch-tail {\\n display: none;\\n }\\n }\\n }\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_label {\\n padding: 2px 6px;\\n margin: 0;\\n border-radius: var(--rounded-md-2);\\n background: var(--color-red-100);\\n font-weight: 600;\\n font-size: var(--size-12);\\n color: var(--color-red-900);\\n font-family: var(--font-stack-monospace);\\n line-height: var(--size-20);\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_wrapper {\\n position: relative;\\n }\\n\\n .nextjs__container_errors_desc {\\n margin: 0;\\n margin-left: 4px;\\n color: var(--color-red-900);\\n font-weight: 500;\\n font-size: var(--size-16);\\n letter-spacing: -0.32px;\\n line-height: var(--size-24);\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n }\\n\\n .nextjs__container_errors_desc.truncated {\\n max-height: 200px;\\n overflow: hidden;\\n }\\n\\n .nextjs__container_errors_gradient_overlay {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 85px;\\n background: linear-gradient(\\n 180deg,\\n rgba(250, 250, 250, 0) 0%,\\n var(--color-background-100) 100%\\n );\\n }\\n\\n .nextjs__container_errors_expand_button {\\n position: absolute;\\n bottom: 10px;\\n left: 50%;\\n transform: translateX(-50%);\\n display: flex;\\n align-items: center;\\n padding: 6px 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: 999px;\\n box-shadow:\\n 0px 2px 2px var(--color-gray-alpha-100),\\n 0px 8px 8px -8px var(--color-gray-alpha-100);\\n font-size: var(--size-13);\\n cursor: pointer;\\n color: var(--color-gray-900);\\n font-weight: 500;\\n transition: background-color 0.2s ease;\\n }\\n\\n .nextjs__container_errors_expand_button:hover {\\n background: var(--color-gray-100);\\n }\\n\",\"\\n \").concat(\"\\n .error-overlay-toolbar {\\n display: flex;\\n gap: 6px;\\n }\\n\\n .nodejs-inspector-button,\\n .copy-error-button,\\n .docs-link-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n width: var(--size-28);\\n height: var(--size-28);\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n svg {\\n width: var(--size-14);\\n height: var(--size-14);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n\\n &:not(:disabled):hover {\\n background: var(--color-gray-alpha-100);\\n }\\n\\n &:not(:disabled):active {\\n background: var(--color-gray-alpha-200);\\n }\\n\\n &:disabled {\\n background-color: var(--color-gray-100);\\n cursor: not-allowed;\\n }\\n }\\n\\n .error-overlay-toolbar-button-icon {\\n color: var(--color-gray-900);\\n }\\n\",\"\\n\\n [data-nextjs-error-label-group] {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n }\\n\");function nd(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n /* secondary z-index, -1 than toast z-index */\\n z-index: 2147483646;\\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 backdrop-filter: blur(10px);\\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||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return nd=function(){return n},n}var nf=es(nd());function np(e){var t,n,r,o,a,i=(0,A.c)(9),l=e.file,s=e.location,c=null!=(t=null==s?void 0:s.line)?t:1,u=null!=(n=null==s?void 0:s.column)?n:1;i[0]!==l||i[1]!==c||i[2]!==u?(r={file:l,line1:c,column1:u},i[0]=l,i[1]=c,i[2]=u,i[3]=r):r=i[3];var d=eS(r),f=s?\":\".concat(s.line,\":\").concat(s.column):null;return i[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,b.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[(0,b.jsx)(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),(0,b.jsx)(\"polyline\",{points:\"15 3 21 3 21 9\"}),(0,b.jsx)(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})]}),i[4]=o):o=i[4],i[5]!==l||i[6]!==d||i[7]!==f?(a=(0,b.jsxs)(\"div\",{\"data-with-open-in-editor-link\":!0,\"data-with-open-in-editor-link-import-trace\":!0,role:\"link\",onClick:d,title:\"Click to open in your editor\",children:[l,f,o]}),i[5]=l,i[6]=d,i[7]=f,i[8]=a):a=i[8],a}function nh(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"message\"]),r=e.message,d[0]=e,d[1]=r,d[2]=o):(r=d[1],o=d[2]),d[3]!==r?(a=Error(r),d[3]=r,d[4]=a):a=d[4];var f=a;d[5]!==r?(l=ng(r)||\"Failed to compile\",d[5]=r,d[6]=l):l=d[6],i=l,d[7]!==i||d[8]!==r||d[9]!==o.versionInfo.installed?(s=function(){var e=[];if(e.push(\"## Error Type\\nBuild Error\"),i&&e.push(\"## Error Message\\n\".concat(i)),r){var t=eq()(r);e.push(\"## Build Output\\n\".concat(t))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(o.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},d[7]=i,d[8]=r,d[9]=o.versionInfo.installed,d[10]=s):s=d[10];var p=s;return(d[11]!==r?(c=(0,b.jsx)(nm,{content:r}),d[11]=r,d[12]=c):c=d[12],d[13]!==f||d[14]!==i||d[15]!==p||d[16]!==o||d[17]!==c)?(u=(0,b.jsx)(nc,(t=function(e){for(var t=1;t0&&(0,b.jsxs)(\"button\",{\"data-nextjs-call-stack-ignored-list-toggle-button\":c,onClick:d,children:[\"\".concat(c?\"Hide\":\"Show\",\" \").concat(u,\" ignore-listed frame(s)\"),(0,b.jsx)(nA,{})]}),l[2]=u,l[3]=c,l[4]=d,l[5]=n):n=l[5],l[6]!==t||l[7]!==n?(r=(0,b.jsxs)(\"div\",{\"data-nextjs-call-stack-header\":!0,children:[t,n]}),l[6]=t,l[7]=n,l[8]=r):r=l[8],l[9]!==s||l[10]!==c?(l[12]!==c?(a=function(e,t){return!e.ignored||c?(0,b.jsx)(nb,{frame:e},t):null},l[12]=c,l[13]=a):a=l[13],o=s.map(a),l[9]=s,l[10]=c,l[11]=o):o=l[11],l[14]!==r||l[15]!==o?(i=(0,b.jsxs)(\"div\",{\"data-nextjs-call-stack-container\":!0,children:[r,o]}),l[14]=r,l[15]=o,l[16]=i):i=l[16],i}var nC=es(nx());function n_(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n\"===e[0],l=a||i,s=l?e[0]:\"\",c=l?e.indexOf(s):-1,u=nS(l?[e.slice(0,c),e.slice(c+1)]:[e,\"\"],2),d=u[0],f=u[1];a?n.push((0,b.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line\":!0,\"data-nextjs-container-errors-pseudo-html--diff\":\"+\"===s?\"add\":\"remove\",children:(0,b.jsxs)(\"span\",{children:[d,(0,b.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line-sign\":!0,children:s}),f,\"\\n\"]})},\"comp-diff\"+t)):n.push((0,b.jsxs)(\"span\",(r=function(e){for(var t=1;t0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]0&&(0,b.jsx)(nk,{dialogResizerRef:s,frames:c}),i[2]=s,i[3]=c,i[4]=o):o=i[4],i[5]!==r||i[6]!==o?(a=(0,b.jsxs)(b.Fragment,{children:[r,o]}),i[5]=r,i[6]=o,i[7]=a):a=i[7],a}function nM(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame}var nZ=\"\\n \".concat(\"\\n [data-nextjs-container-errors-pseudo-html] {\\n padding: 8px 0;\\n margin: 8px 0;\\n border: 1px solid var(--color-gray-400);\\n background: var(--color-background-200);\\n color: var(--color-syntax-constant);\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n line-height: 1.33em; /* 16px in 12px font size */\\n border-radius: var(--rounded-md-2);\\n }\\n [data-nextjs-container-errors-pseudo-html-line] {\\n display: inline-block;\\n width: 100%;\\n padding-left: 40px;\\n line-height: calc(5 / 3);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error'] {\\n background: var(--color-amber-100);\\n box-shadow: 2px 0 0 0 var(--color-amber-900) inset;\\n font-weight: bold;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse-button] {\\n all: unset;\\n margin-left: 12px;\\n &:focus {\\n outline: none;\\n }\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add'] {\\n background: var(--color-green-300);\\n }\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-green-900);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove'] {\\n background: var(--color-red-300);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-red-900);\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-amber-900);\\n }\\n \\n [data-nextjs-container-errors-pseudo-html--hint] {\\n display: inline-block;\\n font-size: 0;\\n height: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html--tag-adjacent='false'] {\\n color: var(--color-accents-1);\\n }\\n .nextjs__container_errors__component-stack {\\n margin: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse='true']\\n .nextjs__container_errors__component-stack\\n code {\\n max-height: 120px;\\n mask-image: linear-gradient(to bottom,rgba(0,0,0,0) 0%,black 10%);\\n padding-bottom: 40px;\\n }\\n .nextjs__container_errors__component-stack code {\\n display: block;\\n width: 100%;\\n white-space: pre-wrap;\\n scroll-snap-type: y mandatory;\\n overflow-y: hidden;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff] {\\n scroll-snap-align: center;\\n }\\n .error-overlay-hydration-error-diff-plus-icon {\\n color: var(--color-green-900);\\n }\\n .error-overlay-hydration-error-diff-minus-icon {\\n color: var(--color-red-900);\\n }\\n\",\"\\n\");function nU(e){return e&&\"undefined\"!=typeof Symbol&&e.constructor===Symbol?\"symbol\":typeof e}function nF(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"getSquashedHydrationErrorDetails\",\"runtimeErrors\",\"debugInfo\",\"onClose\"]),s=(0,x.useRef)(null),c=function(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m=(0,A.c)(17),g=e.runtimeErrors,y=e.getSquashedHydrationErrorDetails,v=(a=(0,x.useState)(0),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(a,2)||function(e,t){if(e){if(\"string\"==typeof e)return nF(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return nF(e,t)}}(a,i)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),b=v[0],w=v[1];s=0===g.length;var C=(t=null==(c=null!=(u=g[b])?u:null)?void 0:c.error,n=y,(0,x.useMemo)(function(){if(void 0===t)return n$;var e,r,o,a=n(t);if(null!==a)return{hydrationWarning:null!=(r=a.warning)?r:null,notes:null,reactOutputComponentDiff:null!=(o=a.reactOutputComponentDiff)?o:null};if(!(tg((e=t).message)||/Hydration failed because the server rendered (text|HTML) didn't match the client\\./.test(e.message)||/A tree hydrated but some attributes of the server rendered HTML didn't match the client properties./.test(e.message)))return n$;var i=function(e){var t=e.message;if(tg(t)){var n=tu(t.split(\"\\n\\n\"),2),r=n[0],o=n[1],a=(void 0===o?\"\":o).trim();return{message:\"\"===a?t.trim():r.trim(),diff:a,notes:null}}var i=tu(t.split(\"\".concat(tp)),2),l=i[0],s=i[1],c=l.trim();if(void 0!==s&&s.length>1){var u=[];s.split(\"\\n\").forEach(function(e){\"\"!==e.trim()&&(e.trim().startsWith(\"at \")||u.push(e))});var d=td(c.split(\"\\n\\n\")),f=d[0],p=d.slice(1);return{message:f,diff:u.join(\"\\n\"),notes:p.join(\"\\n\\n\")||null}}var h=td(c.split(\"\\n\\n\"));return{message:h[0],diff:null,notes:h.slice(1).join(\"\\n\\n\")}}(t),l=i.message,s=i.notes,c=i.diff;return null===l?n$:{hydrationWarning:l,notes:s,reactOutputComponentDiff:c}},[t,n]));if(s||!c)return m[0]!==b||m[1]!==s?(d={isLoading:s,activeIdx:b,setActiveIndex:w,activeError:null,errorDetails:null,errorCode:null,errorType:null,notes:null,hydrationWarning:null},m[0]=b,m[1]=s,m[2]=d):d=m[2],d;var _=c.error;m[3]!==_?(f=(void 0===(l=_)?\"undefined\":nU(l))===\"object\"&&null!==l&&\"__NEXT_ERROR_CODE\"in l&&\"string\"==typeof l.__NEXT_ERROR_CODE?l.__NEXT_ERROR_CODE:(void 0===l?\"undefined\":nU(l))===\"object\"&&null!==l&&\"digest\"in l&&\"string\"==typeof l.digest?l.digest.split(\"@\").find(function(e){return e.startsWith(\"E\")}):void 0,m[3]=_,m[4]=f):f=m[4];var k=f;m[5]!==c.type||m[6]!==_?(r=_,p=\"recoverable\"===(o=c.type)?\"Recoverable \".concat(r.name):\"console\"===o?\"Console \".concat(r.name):\"Runtime \".concat(r.name),m[5]=c.type,m[6]=_,m[7]=p):p=m[7];var E=p,j=C.notes,S=C.hydrationWarning;return m[8]!==c||m[9]!==b||m[10]!==k||m[11]!==C||m[12]!==E||m[13]!==S||m[14]!==s||m[15]!==j?(h={isLoading:s,activeIdx:b,setActiveIndex:w,activeError:c,errorDetails:C,errorCode:k,errorType:E,notes:j,hydrationWarning:S},m[8]=c,m[9]=b,m[10]=k,m[11]=C,m[12]=E,m[13]=S,m[14]=s,m[15]=j,m[16]=h):h=m[16],h}({runtimeErrors:o,getSquashedHydrationErrorDetails:r}),u=c.isLoading,d=c.errorCode,f=c.errorType,p=c.notes,h=c.hydrationWarning,m=c.activeIdx,g=c.errorDetails,y=c.activeError,v=c.setActiveIndex,w=nN(y),C=(0,x.useMemo)(function(){var e,t=w.findIndex(function(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame});return null!=(e=w[t])?e:null},[w]),_=(0,x.useCallback)(function(){if(!y)return\"\";var e=[];f&&e.push(\"## Error Type\\n\".concat(f));var t=y.error,n=t.message;if(\"environmentName\"in t&&t.environmentName){var r=\"[ \".concat(t.environmentName,\" ] \");n.startsWith(r)&&(n=n.slice(r.length))}if(n&&e.push(\"## Error Message\\n\".concat(n)),w.length>0){var o=w.filter(function(e){return!e.ignored});if(o.length>0){var a=o.map(function(e){if(e.originalStackFrame){var t=e.originalStackFrame,n=t.methodName,r=t.file,o=t.line1,a=t.column1;return\" at \".concat(n,\" (\").concat(r,\":\").concat(o,\":\").concat(a,\")\")}if(e.sourceStackFrame){var i=e.sourceStackFrame,l=i.methodName,s=i.file,c=i.line1,u=i.column1;return\" at \".concat(l,\" (\").concat(s,\":\").concat(c,\":\").concat(u,\")\")}return\"\"}).filter(Boolean);a.length>0&&e.push(\"\\n\".concat(a.join(\"\\n\")))}}if(null==C?void 0:C.originalCodeFrame){var i=eq()(eH(C.originalCodeFrame));e.push(\"## Code Frame\\n\".concat(i))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(l.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},[y,f,C,w,l.versionInfo]);if(u)return(0,b.jsx)(tQ,{children:(0,b.jsx)(no,{})});if(!y)return null;var k=y.error,E=[\"server\",\"edge-server\"].includes(nP(k)||\"\");return(0,b.jsxs)(nc,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function nQ(e){var t,n,r,o,a,i,l=(0,A.c)(10);l[0]!==e?(t=nG(e,[\"routerType\"]),n=e.routerType,l[0]=e,l[1]=t,l[2]=n):(t=l[1],n=l[2]),l[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),\" \",'is marked as \"static\" since it will be prerendered during the build time.']}),l[3]=r):r=l[3];var s=\"pages\"===n?\"https://nextjs.org/docs/pages/building-your-application/data-fetching/incremental-static-regeneration\":\"https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration\";return l[4]!==s?(o=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"With Static Rendering, routes are rendered at build time, or in the background after\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:s,target:\"_blank\",rel:\"noopener noreferrer\",children:\"data revalidation\"}),\".\"]}),l[4]=s,l[5]=o):o=l[5],l[6]===Symbol.for(\"react.memo_cache_sentinel\")?(a=(0,b.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Static rendering is useful when a route has data that is not personalized to the user and can be known at build time, such as a static blog post or a product page.\"}),l[6]=a):a=l[6],l[7]!==t||l[8]!==o?(i=(0,b.jsxs)(\"article\",nX(nK({className:\"dev-tools-info-article\"},t),{children:[r,o,a]})),l[7]=t,l[8]=o,l[9]=i):i=l[9],i}function nJ(e){var t,n,r,o,a,i,l,s=(0,A.c)(11);return s[0]!==e?(t=nG(e,[\"routerType\"]),n=e.routerType,s[0]=e,s[1]=t,s[2]=n):(t=s[1],n=s[2]),s[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),s[3]=r):r=s[3],s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",r,\" \",'is marked as \"dynamic\" since it will be rendered for each user at',\" \",(0,b.jsx)(\"strong\",{children:\"request time\"}),\".\"]}),a=(0,b.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Dynamic rendering is useful when a route has data that is personalized to the user or has information that can only be known at request time, such as cookies or the URL's search params.\"}),s[4]=o,s[5]=a):(o=s[4],a=s[5]),s[6]!==n?(i=\"pages\"===n?(0,b.jsxs)(\"p\",{className:\"dev-tools-info-pagraph\",children:[\"Exporting the\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"getServerSideProps\"}),\" \",\"function will opt the route into dynamic rendering. This function will be called by the server on every request.\"]}):(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"During rendering, if a\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-apis\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"Dynamic API\"}),\" \",\"or a\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/api-reference/functions/fetch\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"fetch\"}),\" \",\"option of\",\" \",(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:\"{ cache: 'no-store' }\"}),\" \",\"is discovered, Next.js will switch to dynamically rendering the whole route.\"]}),s[6]=n,s[7]=i):i=s[7],s[8]!==t||s[9]!==i?(l=(0,b.jsxs)(\"article\",nX(nK({className:\"dev-tools-info-article\"},t),{children:[o,a,i]})),s[8]=t,s[9]=i,s[10]=l):l=s[10],l}var n0={pages:{static:\"https://nextjs.org/docs/pages/building-your-application/rendering/static-site-generation\",dynamic:\"https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering\"},app:{static:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#static-rendering-default\",dynamic:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-rendering\"}};function n1(e){var t,n,r,o,a=(0,A.c)(8);return a[0]!==e?(n=nG(e,[\"routerType\",\"isStaticRoute\"]),r=e.routerType,t=e.isStaticRoute,a[0]=e,a[1]=t,a[2]=n,a[3]=r):(t=a[1],n=a[2],r=a[3]),a[4]!==t||a[5]!==n||a[6]!==r?(o=t?(0,b.jsx)(nQ,nK({routerType:r},n)):(0,b.jsx)(nJ,nK({routerType:r},n)),a[4]=t,a[5]=n,a[6]=r,a[7]=o):o=a[7],o}function n2(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m.191 2.063.56.498 13.5 12 .561.498.997-1.121-.56-.498-1.81-1.608 2.88-3.342v-.98l-3.204-3.72C10.645.923 6.365.686 3.594 3.08L1.748 1.44 1.188.94.19 2.063ZM14.761 8l-2.442 2.836-1.65-1.466a3.001 3.001 0 0 0-4.342-3.86l-1.6-1.422a5.253 5.253 0 0 1 7.251.682L14.76 8ZM7.526 6.576l1.942 1.727a1.499 1.499 0 0 0-1.942-1.727Zm-7.845.935 1.722-2 1.137.979L1.24 8l2.782 3.23A5.25 5.25 0 0 0 9.9 12.703l.54 1.4a6.751 6.751 0 0 1-7.555-1.892L-.318 8.49v-.98Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n4(){var e,t,n=(0,A.c)(2);return n[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"g\",{clipPath:\"url(#light_icon_clip_path)\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M8.75.75V0h-1.5v2h1.5V.75ZM3.26 4.32l-.53-.53-.354-.353-.53-.53 1.06-1.061.53.53.354.354.53.53-1.06 1.06Zm8.42-1.06.53-.53.353-.354.53-.53 1.061 1.06-.53.53-.354.354-.53.53-1.06-1.06ZM8 11.25a3.25 3.25 0 1 0 0-6.5 3.25 3.25 0 0 0 0 6.5Zm0 1.5a4.75 4.75 0 1 0 0-9.5 4.75 4.75 0 0 0 0 9.5Zm6-5.5h2v1.5h-2v-1.5Zm-13.25 0H0v1.5h2v-1.5H.75Zm1.62 5.32-.53.53 1.06 1.06.53-.53.354-.353.53-.53-1.06-1.061-.53.53-.354.354Zm10.2 1.06.53.53 1.06-1.06-.53-.53-.354-.354-.53-.53-1.06 1.06.53.53.353.354ZM8.75 14v2h-1.5v-2h1.5Z\",clipRule:\"evenodd\"})}),n[0]=e):e=n[0],n[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"20\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:[e,(0,b.jsx)(\"defs\",{children:(0,b.jsx)(\"clipPath\",{id:\"light_icon_clip_path\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",d:\"M0 0h16v16H0z\"})})})]}),n[1]=t):t=n[1],t}function n5(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{\"data-testid\":\"geist-icon\",height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M1.5 8.00005C1.5 5.53089 2.99198 3.40932 5.12349 2.48889C4.88136 3.19858 4.75 3.95936 4.75 4.7501C4.75 8.61609 7.88401 11.7501 11.75 11.7501C11.8995 11.7501 12.048 11.7454 12.1953 11.7361C11.0955 13.1164 9.40047 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00005ZM6.41706 0.577759C2.78784 1.1031 0 4.22536 0 8.00005C0 12.1422 3.35786 15.5001 7.5 15.5001C10.5798 15.5001 13.2244 13.6438 14.3792 10.9921L13.4588 9.9797C12.9218 10.155 12.3478 10.2501 11.75 10.2501C8.71243 10.2501 6.25 7.78767 6.25 4.7501C6.25 3.63431 6.58146 2.59823 7.15111 1.73217L6.41706 0.577759ZM13.25 1V1.75V2.75L14.25 2.75H15V4.25H14.25H13.25V5.25V6H11.75V5.25V4.25H10.75L10 4.25V2.75H10.75L11.75 2.75V1.75V1H13.25Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}function n3(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",strokeLinejoin:\"round\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8.5a1 1 0 0 1-1 1H8.75v3h1.75V16h-5v-1.5h1.75v-3H1a1 1 0 0 1-1-1V2Zm1.5.5V10h13V2.5h-13Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n6(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0;h[2]!==g||h[3]!==v||h[4]!==_?(n=function(e){if(e.target===z.current&&\"Tab\"!==e.key){I.current&&clearTimeout(I.current),_||k(!0),v&&(S([]),w(!1));var t=function(e){I.current=window.setTimeout(function(){P(!0),g(e.join(\"+\")),I.current=window.setTimeout(function(){k(!1)},1e3)},180)};e.preventDefault(),e.stopPropagation(),S(function(n){if(n.includes(e.code)||n.includes(e.key))return n;if(!rt.includes(e.key)){var r=n.findIndex(ra);if(-1!==r){var o=n8(n);return o[r]=e.code,t(o),o}var a=n8(n).concat([e.code]);return t(a),a}for(var i=n8(n),l=rt.indexOf(e.key),s=0,c=0;c1,a[0]=e):e=a[0];var c=e;return a[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){!0===c&&s(\"⌘\"),!1===c&&s(\"Ctrl\")},n=[c],a[1]=t,a[2]=n):(t=a[1],n=a[2]),(0,x.useEffect)(t,n),a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r={minWidth:\"1em\",display:\"inline-block\"},a[3]=r):r=a[3],a[4]!==l?(o=(0,b.jsx)(\"span\",{style:r,children:l}),a[4]=l,a[5]=o):o=a[5],o}function rc(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}var ru=es(re());function rd(e){return\"undefined\"!=typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}function rf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"prefix\"]),r=e.children,o=e.prefix,c[0]=e,c[1]=r,c[2]=o,c[3]=a):(r=c[1],o=c[2],a=c[3]),c[4]!==r||c[5]!==a)?(i=(0,b.jsx)(\"select\",(t=function(e){for(var t=1;t span { \\n position: relative;\\n z-index: 1;\\n }\\n\\n &::after {\\n content: \"\";\\n width: calc(100% + var(--code-frame-padding) * 2);\\n height: var(--code-frame-line-height);\\n left: calc(-1 * var(--code-frame-padding));\\n background: var(--color-red-200);\\n box-shadow: 2px 0 0 0 var(--color-red-900) inset;\\n position: absolute;\\n }\\n }\\n\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n }\\n\\n .code-frame-link {\\n display: flex;\\n margin: 0;\\n outline: 0;\\n }\\n .code-frame-link [data-icon=\\'right\\'] {\\n margin-left: auto;\\n }\\n\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\\n [data-nextjs-codeframe] svg {\\n color: var(--color-gray-900);\\n }\\n',\"\\n [data-nextjs-terminal]::selection,\\n [data-nextjs-terminal] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n\\n [data-nextjs-terminal] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-terminal] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-terminal] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-terminal] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\",\"\\n [data-with-open-in-editor-link] svg {\\n width: auto;\\n height: var(--size-14);\\n margin-left: 8px;\\n }\\n [data-with-open-in-editor-link] {\\n cursor: pointer;\\n }\\n [data-with-open-in-editor-link]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-with-open-in-editor-link-import-trace] {\\n margin-left: 16px;\\n }\\n\",\"\",\"\\n .nextjs-error-with-static {\\n bottom: calc(16px * 4.5);\\n }\\n p.nextjs__container_errors__link {\\n font-size: var(--size-14);\\n }\\n p.nextjs__container_errors__notes {\\n color: var(--color-stack-notes);\\n font-size: var(--size-14);\\n line-height: 1.5;\\n }\\n .nextjs-container-errors-body > h2:not(:first-child) {\\n margin-top: calc(16px + 8px);\\n }\\n .nextjs-container-errors-body > h2 {\\n color: var(--color-title-color);\\n margin-bottom: 8px;\\n font-size: var(--size-20);\\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: 8px;\\n }\\n .nextjs-toast-hide-button {\\n margin-left: 24px;\\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-hide-button:hover {\\n opacity: 1;\\n }\\n .nextjs__container_errors__error_title {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: 14px;\\n }\\n .error-overlay-notes-container {\\n margin: 8px 2px;\\n }\\n .error-overlay-notes-container p {\\n white-space: pre-wrap;\\n }\\n\",nZ,\"\\n .nextjs-container-build-error-version-status {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n gap: 4px;\\n\\n height: var(--size-26);\\n padding: 6px 8px 6px 6px;\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n color: var(--color-gray-900);\\n font-size: var(--size-12);\\n font-weight: 500;\\n line-height: var(--size-16);\\n }\\n\\n a.nextjs-container-build-error-version-status {\\n text-decoration: none;\\n color: var(--color-gray-900);\\n\\n &:hover {\\n background: var(--color-gray-100);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n }\\n\\n .version-staleness-indicator.fresh {\\n fill: var(--color-green-800);\\n stroke: var(--color-green-300);\\n }\\n .version-staleness-indicator.stale {\\n fill: var(--color-amber-800);\\n stroke: var(--color-amber-300);\\n }\\n .version-staleness-indicator.outdated {\\n fill: var(--color-red-800);\\n stroke: var(--color-red-300);\\n }\\n .version-staleness-indicator.unknown {\\n fill: var(--color-gray-800);\\n stroke: var(--color-gray-300);\\n }\\n\\n .nextjs-container-build-error-version-status > .turbopack-text {\\n background: linear-gradient(\\n to right,\\n var(--color-turbopack-text-red) 0%,\\n var(--color-turbopack-text-blue) 100%\\n );\\n background-clip: text;\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n }\\n\",\"\\n .dev-tools-info-code {\\n background: var(--color-gray-400);\\n color: var(--color-gray-1000);\\n font-family: var(--font-stack-monospace);\\n padding: 2px 4px;\\n margin: 0;\\n font-size: var(--size-13);\\n white-space: break-spaces;\\n border-radius: var(--rounded-md-2);\\n }\\n\\n .dev-tools-info-code-block-container {\\n padding: 6px;\\n }\\n\\n .dev-tools-info-code-block {\\n position: relative;\\n background: var(--color-background-200);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-md-2);\\n min-width: 326px;\\n }\\n\\n .dev-tools-info-code-block-pre {\\n margin: 0;\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n }\\n\\n .dev-tools-info-copy-button {\\n position: absolute;\\n\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n right: 8px;\\n top: 8px;\\n padding: 4px;\\n height: var(--size-24);\\n width: var(--size-24);\\n border-radius: var(--rounded-md-2);\\n border: 1px solid var(--color-gray-alpha-400);\\n background: var(--color-background-100);\\n }\\n\\n .dev-tools-info-code-block-line {\\n display: block;\\n line-height: 1.5;\\n padding: 0 16px;\\n }\\n\\n .dev-tools-info-code-block-line.dev-tools-info-highlight {\\n border-left: 2px solid var(--color-blue-900);\\n background: var(--color-blue-400);\\n }\\n\\n .dev-tools-info-code-block-json-key {\\n color: var(--color-syntax-keyword);\\n }\\n\\n .dev-tools-info-code-block-json-value {\\n color: var(--color-syntax-link);\\n }\\n\",\"\",rj,'\\n .nextjs-scroll-fader {\\n --blur: 1px;\\n --stop: 25%;\\n --height: 150px;\\n --color-bg: var(--color-background-100);\\n position: absolute;\\n pointer-events: none;\\n user-select: none;\\n width: 100%;\\n height: var(--height);\\n left: 0;\\n backdrop-filter: blur(var(--blur));\\n\\n &[data-side=\"top\"] {\\n top: 0;\\n background: linear-gradient(to top, transparent, var(--color-bg));\\n mask-image: linear-gradient(to bottom, var(--color-bg) var(--stop), transparent);\\n }\\n }\\n',rB,ru)})}function rz(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function r8(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return r5(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r5(e,t)}}(e,t)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function r7(){var e,t,n=(e=[\"\\n [data-next-badge-root] {\\n --timing: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --duration-long: 250ms;\\n --color-outer-border: #171717;\\n --color-inner-border: hsla(0, 0%, 100%, 0.14);\\n --color-hover-alpha-subtle: hsla(0, 0%, 100%, 0.13);\\n --color-hover-alpha-error: hsla(0, 0%, 100%, 0.2);\\n --color-hover-alpha-error-2: hsla(0, 0%, 100%, 0.25);\\n --mark-size: calc(var(--size) - var(--size-2) * 2);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n &:has([data-next-badge][data-error='true']) {\\n --focus-color: #fff;\\n }\\n }\\n\\n [data-disabled-icon] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding-right: 4px;\\n }\\n\\n [data-next-badge] {\\n width: var(--size);\\n height: var(--size);\\n display: flex;\\n align-items: center;\\n position: relative;\\n background: rgba(0, 0, 0, 0.8);\\n box-shadow:\\n 0 0 0 1px var(--color-outer-border),\\n inset 0 0 0 1px var(--color-inner-border),\\n 0px 16px 32px -8px rgba(0, 0, 0, 0.24);\\n backdrop-filter: blur(48px);\\n border-radius: var(--rounded-full);\\n user-select: none;\\n cursor: pointer;\\n scale: 1;\\n overflow: hidden;\\n will-change: scale, box-shadow, width, background;\\n transition:\\n scale var(--duration-short) var(--timing),\\n width var(--duration-long) var(--timing),\\n box-shadow var(--duration-long) var(--timing),\\n background var(--duration-short) ease;\\n\\n &:active[data-error='false'] {\\n scale: 0.95;\\n }\\n\\n &[data-animate='true']:not(:hover) {\\n scale: 1.02;\\n }\\n\\n &[data-error='false']:has([data-next-mark]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: 3px;\\n }\\n\\n &[data-error='true'] {\\n background: #ca2a30;\\n --color-inner-border: #e5484d;\\n\\n [data-next-mark] {\\n background: var(--color-hover-alpha-error);\\n outline-offset: 0px;\\n\\n &:focus-visible {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-error-2);\\n }\\n }\\n }\\n\\n &[data-error-expanded='false'][data-error='true'] ~ [data-dot] {\\n scale: 1;\\n }\\n\\n > div {\\n display: flex;\\n }\\n }\\n\\n [data-issues-collapse]:focus-visible {\\n outline: var(--focus-ring);\\n }\\n\\n [data-issues]:has([data-issues-open]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n [data-dot] {\\n content: '';\\n width: var(--size-8);\\n height: var(--size-8);\\n background: #fff;\\n box-shadow: 0 0 0 1px var(--color-outer-border);\\n border-radius: 50%;\\n position: absolute;\\n top: 2px;\\n right: 0px;\\n scale: 0;\\n pointer-events: none;\\n transition: scale 200ms var(--timing);\\n transition-delay: var(--duration-short);\\n }\\n\\n [data-issues] {\\n --padding-left: 8px;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n padding-left: 8px;\\n padding-right: 8px;\\n height: var(--size-32);\\n margin-right: 2px;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:has([data-issues-open]:hover) {\\n background: var(--color-hover-alpha-error);\\n }\\n\\n &:has([data-issues-collapse]) {\\n padding-right: calc(var(--padding-left) / 2);\\n }\\n\\n [data-cross] {\\n translate: 0px -1px;\\n }\\n }\\n\\n [data-issues-open] {\\n font-size: var(--size-13);\\n color: white;\\n width: fit-content;\\n height: 100%;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n margin: 0;\\n line-height: var(--size-36);\\n font-weight: 500;\\n z-index: 2;\\n white-space: nowrap;\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n }\\n\\n [data-issues-collapse] {\\n width: var(--size-24);\\n height: var(--size-24);\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:hover {\\n background: var(--color-hover-alpha-error);\\n }\\n }\\n\\n [data-cross] {\\n color: #fff;\\n width: var(--size-12);\\n height: var(--size-12);\\n }\\n\\n [data-next-mark] {\\n width: var(--mark-size);\\n height: var(--mark-size);\\n margin: 0 2px;\\n display: flex;\\n align-items: center;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-long) var(--timing);\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-subtle);\\n }\\n\\n svg {\\n flex-shrink: 0;\\n width: var(--size-40);\\n height: var(--size-40);\\n }\\n }\\n\\n [data-issues-count-animation] {\\n display: grid;\\n place-items: center center;\\n font-variant-numeric: tabular-nums;\\n\\n &[data-animate='false'] {\\n [data-issues-count-exit],\\n [data-issues-count-enter] {\\n animation-duration: 0ms;\\n }\\n }\\n\\n > * {\\n grid-area: 1 / 1;\\n }\\n\\n [data-issues-count-exit] {\\n animation: fadeOut 300ms var(--timing) forwards;\\n }\\n\\n [data-issues-count-enter] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n [data-issues-count-plural] {\\n display: inline-block;\\n &[data-animate='true'] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n .path0 {\\n animation: draw0 1.5s ease-in-out infinite;\\n }\\n\\n .path1 {\\n animation: draw1 1.5s ease-out infinite;\\n animation-delay: 0.3s;\\n }\\n\\n .paused {\\n stroke-dashoffset: 0;\\n }\\n\\n @keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n filter: blur(2px);\\n transform: translateY(8px);\\n }\\n 100% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n }\\n\\n @keyframes fadeOut {\\n 0% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n 100% {\\n opacity: 0;\\n transform: translateY(-12px);\\n filter: blur(2px);\\n }\\n }\\n\\n @keyframes draw0 {\\n 0%,\\n 25% {\\n stroke-dashoffset: -29.6;\\n }\\n 25%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 29.6;\\n }\\n }\\n\\n @keyframes draw1 {\\n 0%,\\n 20% {\\n stroke-dashoffset: -11.6;\\n }\\n 20%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 11.6;\\n }\\n }\\n\\n @media (prefers-reduced-motion) {\\n [data-issues-count-exit],\\n [data-issues-count-enter],\\n [data-issues-count-plural] {\\n animation-duration: 0ms !important;\\n }\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return r7=function(){return n},n}function oe(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,w,C,_,k,E,j,S,O,B,P,I,z,T,D,L,N,R,M,Z,q,H,V,$,W,Y=(0,A.c)(40);Y[0]!==e?(D=r9(e,[\"onTriggerClick\"]),L=e.onTriggerClick,Y[0]=e,Y[1]=D,Y[2]=L):(D=Y[1],L=Y[2]);var K=da(),X=K.state,G=K.dispatch,Q=u4().totalErrorCount,J=36/X.scale,ee=r2(),et=ee.panel,en=ee.triggerRef,er=ee.setPanel,eo=\"panel-selector\"===et,ea=Q>0,ei=r8((0,x.useState)(ea),2),el=ei[0],ec=ei[1],eu=r8((0,x.useState)(ea),2),ed=eu[0],ef=eu[1];ed!==ea&&(ef(ea),ec(ea));var ep=r8((0,x.useState)(!1),2),eh=ep[0],em=ep[1],eg=(t=Q,n=150,a=(0,A.c)(4),i=n,l=(0,x.useRef)(null),d=(s=(0,x.useState)(!1),c=2,u=function(e){if(Array.isArray(e))return e}(s)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(s,2)||function(e,t){if(e){if(\"string\"==typeof e)return rK(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rK(e,t)}}(s,c)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],f=u[1],a[0]!==i||a[1]!==t?(r=function(){if(t>0){var e=l.current?Date.now()-l.current:-1;if(l.current=Date.now(),!(e<=i)){f(!0);var n=window.setTimeout(function(){f(!1)},i);return function(){clearTimeout(n)}}}},o=[t,i],a[0]=i,a[1]=t,a[2]=r,a[3]=o):(r=a[2],o=a[3]),(0,x.useEffect)(r,o),d),ey=(0,x.useRef)(null),ev=(p=ey,g=(0,A.c)(4),v=(y=rG((0,x.useState)(0),2))[0],w=y[1],g[0]!==p.current?(h=function(){var e=p.current;if(e){var t=new ResizeObserver(function(e){w(rG(e,1)[0].contentRect.width)});return t.observe(e),function(){return t.disconnect()}}},g[0]=p.current,g[1]=h):h=g[1],g[2]!==p?(m=[p],g[2]=p,g[3]=m):m=g[3],(0,x.useEffect)(h,m),v),eb=(C=X.buildingIndicator||X.renderingIndicator,E=(0,A.c)(4),j=750,P=(S=(0,x.useState)(!1),O=2,B=function(e){if(Array.isArray(e))return e}(S)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(S,2)||function(e,t){if(e){if(\"string\"==typeof e)return rQ(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rQ(e,t)}}(S,O)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],I=B[1],z=(0,x.useRef)(null),T=(0,x.useRef)(null),E[0]!==j||E[1]!==C?(_=function(){if(T.current&&(clearTimeout(T.current),T.current=null),C)null===z.current&&(z.current=Date.now()),I(!0);else if(null===z.current)I(!1);else{var e=Date.now()-z.current,t=j*Math.ceil(e/j)-e;t>0?T.current=setTimeout(function(){I(!1),z.current=null},t):(I(!1),z.current=null)}return function(){T.current&&clearTimeout(T.current)}},k=[C,j],E[0]=j,E[1]=C,E[2]=_,E[3]=k):(_=E[2],k=E[3]),(0,x.useEffect)(_,k),P),eA=el||X.disableDevIndicator,ex=0===ev?\"auto\":ev,ew=\"\".concat(J,\"px\"),eC=X.disableDevIndicator&&(!ea||eh)?\"none\":\"block\";Y[3]!==ew||Y[4]!==eC?(N={\"--size\":ew,\"--duration-short\":\"\".concat(150,\"ms\"),display:eC},Y[3]=ew,Y[4]=eC,Y[5]=N):N=Y[5];var e_=N;return Y[6]===Symbol.for(\"react.memo_cache_sentinel\")?(R=(0,b.jsx)(\"style\",{children:es(r7())}),Y[6]=R):R=Y[6],Y[7]!==ex?(M={width:ex},Y[7]=ex,Y[8]=M):M=Y[8],Y[9]!==D||Y[10]!==eb||Y[11]!==eo||Y[12]!==L||Y[13]!==X.buildingIndicator||Y[14]!==X.disableDevIndicator||Y[15]!==en?(Z=!X.disableDevIndicator&&(0,b.jsx)(\"button\",r6(r3({id:\"next-logo\",ref:en,\"data-next-mark\":!0,\"data-next-mark-loading\":eb,onClick:L,disabled:X.disableDevIndicator,\"aria-haspopup\":\"menu\",\"aria-expanded\":eo,\"aria-controls\":\"nextjs-dev-tools-menu\",\"aria-label\":\"\".concat(eo?\"Close\":\"Open\",\" Next.js Dev Tools\"),\"data-nextjs-dev-tools-button\":!0},D),{children:(0,b.jsx)(on,{isLoading:eb,isDevBuilding:X.buildingIndicator})})),Y[9]=D,Y[10]=eb,Y[11]=eo,Y[12]=L,Y[13]=X.buildingIndicator,Y[14]=X.disableDevIndicator,Y[15]=en,Y[16]=Z):Z=Y[16],Y[17]!==G||Y[18]!==eA||Y[19]!==eg||Y[20]!==er||Y[21]!==X.buildError||Y[22]!==X.disableDevIndicator||Y[23]!==X.isErrorOverlayOpen||Y[24]!==Q||Y[25]!==en?(q=eA&&(0,b.jsxs)(\"div\",{\"data-issues\":!0,children:[(0,b.jsxs)(\"button\",{\"data-issues-open\":!0,\"aria-label\":\"Open issues overlay\",onClick:function(){if(X.isErrorOverlayOpen)return void G({type:F});G({type:U}),er(null)},children:[X.disableDevIndicator&&(0,b.jsx)(\"div\",{\"data-disabled-icon\":!0,children:(0,b.jsx)(r0,{})}),(0,b.jsx)(ot,{animate:eg,\"data-issues-count-animation\":!0,children:Q},Q),\" \",(0,b.jsxs)(\"div\",{children:[\"Issue\",Q>1&&(0,b.jsx)(\"span\",{\"aria-hidden\":!0,\"data-issues-count-plural\":!0,\"data-animate\":eg&&2===Q,children:\"s\"})]})]}),!X.buildError&&(0,b.jsx)(\"button\",{\"data-issues-collapse\":!0,\"aria-label\":\"Collapse issues badge\",onClick:function(){var e;X.disableDevIndicator?em(!0):ec(!1),null==(e=en.current)||e.focus()},children:(0,b.jsx)(rJ,{\"data-cross\":!0})})]}),Y[17]=G,Y[18]=eA,Y[19]=eg,Y[20]=er,Y[21]=X.buildError,Y[22]=X.disableDevIndicator,Y[23]=X.isErrorOverlayOpen,Y[24]=Q,Y[25]=en,Y[26]=q):q=Y[26],Y[27]!==Z||Y[28]!==q?(H=(0,b.jsxs)(\"div\",{ref:ey,children:[Z,q]}),Y[27]=Z,Y[28]=q,Y[29]=H):H=Y[29],Y[30]!==ea||Y[31]!==eA||Y[32]!==eg||Y[33]!==M||Y[34]!==H?(V=(0,b.jsx)(\"div\",{\"data-next-badge\":!0,\"data-error\":ea,\"data-error-expanded\":eA,\"data-animate\":eg,style:M,children:H}),Y[30]=ea,Y[31]=eA,Y[32]=eg,Y[33]=M,Y[34]=H,Y[35]=V):V=Y[35],Y[36]===Symbol.for(\"react.memo_cache_sentinel\")?($=(0,b.jsx)(\"div\",{\"aria-hidden\":!0,\"data-dot\":!0}),Y[36]=$):$=Y[36],Y[37]!==V||Y[38]!==e_?(W=(0,b.jsxs)(\"div\",{\"data-next-badge-root\":!0,style:e_,children:[R,V,$]}),Y[37]=V,Y[38]=e_,Y[39]=W):W=Y[39],W}function ot(e){var t,n,r,o,a,i,l=(0,A.c)(13);l[0]!==e?(n=r9(e,[\"children\",\"animate\"]),t=e.children,r=e.animate,l[0]=e,l[1]=t,l[2]=n,l[3]=r):(t=l[1],n=l[2],r=l[3]);var s=void 0===r||r,c=t-1;return l[4]!==c?(o=(0,b.jsx)(\"div\",{\"aria-hidden\":!0,\"data-issues-count-exit\":!0,children:c}),l[4]=c,l[5]=o):o=l[5],l[6]!==t?(a=(0,b.jsx)(\"div\",{\"data-issues-count\":!0,\"data-issues-count-enter\":!0,children:t}),l[6]=t,l[7]=a):a=l[7],l[8]!==s||l[9]!==n||l[10]!==o||l[11]!==a?(i=(0,b.jsxs)(\"div\",r6(r3({},n),{\"data-animate\":s,children:[o,a]})),l[8]=s,l[9]=n,l[10]=o,l[11]=a,l[12]=i):i=l[12],i}function on(e){var t,n,r,o,a,i,l,s,c=(0,A.c)(19),u=e.isLoading,d=e.isDevBuilding?\"rgba(255,255,255,0.7)\":\"white\",f=u?\"path0\":\"paused\";c[0]!==f?(t=(0,b.jsx)(\"path\",{className:f,d:\"M13.3 15.2 L2.34 1 V12.6\",fill:\"none\",stroke:\"url(#next_logo_paint0_linear_1357_10853)\",strokeWidth:\"1.86\",mask:\"url(#next_logo_mask0)\",strokeDasharray:\"29.6\",strokeDashoffset:\"29.6\"}),c[0]=f,c[1]=t):t=c[1];var p=u?\"path1\":\"paused\";return c[2]!==p?(n=(0,b.jsx)(\"path\",{className:p,d:\"M11.825 1.5 V13.1\",strokeWidth:\"1.86\",stroke:\"url(#next_logo_paint1_linear_1357_10853)\",strokeDasharray:\"11.6\",strokeDashoffset:\"11.6\"}),c[2]=p,c[3]=n):n=c[3],c[4]!==t||c[5]!==n?(r=(0,b.jsxs)(\"g\",{transform:\"translate(8.5, 13)\",children:[t,n]}),c[4]=t,c[5]=n,c[6]=r):r=c[6],c[7]!==d?(o=(0,b.jsxs)(\"linearGradient\",{id:\"next_logo_paint0_linear_1357_10853\",x1:\"9.95555\",y1:\"11.1226\",x2:\"15.4778\",y2:\"17.9671\",gradientUnits:\"userSpaceOnUse\",children:[(0,b.jsx)(\"stop\",{stopColor:d}),(0,b.jsx)(\"stop\",{offset:\"0.604072\",stopColor:d,stopOpacity:\"0\"}),(0,b.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[7]=d,c[8]=o):o=c[8],c[9]!==d?(a=(0,b.jsxs)(\"linearGradient\",{id:\"next_logo_paint1_linear_1357_10853\",x1:\"11.8222\",y1:\"1.40039\",x2:\"11.791\",y2:\"9.62542\",gradientUnits:\"userSpaceOnUse\",children:[(0,b.jsx)(\"stop\",{stopColor:d}),(0,b.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[9]=d,c[10]=a):a=c[10],c[11]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,b.jsxs)(\"mask\",{id:\"next_logo_mask0\",children:[(0,b.jsx)(\"rect\",{width:\"100%\",height:\"100%\",fill:\"white\"}),(0,b.jsx)(\"rect\",{width:\"5\",height:\"1.5\",fill:\"black\"})]}),c[11]=i):i=c[11],c[12]!==o||c[13]!==a?(l=(0,b.jsxs)(\"defs\",{children:[o,a,i]}),c[12]=o,c[13]=a,c[14]=l):l=c[14],c[15]!==u||c[16]!==r||c[17]!==l?(s=(0,b.jsxs)(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",fill:\"none\",\"data-next-mark-loading\":u,children:[r,l]}),c[15]=u,c[16]=r,c[17]=l,c[18]=s):s=c[18],s}var or=x.forwardRef(function(e,t){var n,r,o,a,i,l,s,c,u,d=(0,A.c)(15);return(d[0]!==e?(l=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"onClick\",\"children\",\"className\"]),i=e.onClick,o=e.children,a=e.className,d[0]=e,d[1]=o,d[2]=a,d[3]=i,d[4]=l):(o=d[1],a=d[2],i=d[3],l=d[4]),d[5]!==i?(s=function(e){return e.target.closest(\"a\")||e.preventDefault(),null==i?void 0:i()},d[5]=i,d[6]=s):s=d[6],d[7]!==a?(c=eG(\"nextjs-toast\",a),d[7]=a,d[8]=c):c=d[8],d[9]!==o||d[10]!==l||d[11]!==t||d[12]!==s||d[13]!==c)?(u=(0,b.jsx)(\"div\",(n=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"ref\"]),r=e.children,a=e.ref,f[0]=e,f[1]=r,f[2]=o,f[3]=a):(r=f[1],o=f[2],a=f[3]);var p=(0,x.useRef)(null),h=ol();f[4]!==a?(i=function(e){if(p.current=null!=e?e:null,\"function\"==typeof a)a(e);else{var t;a&&(void 0===a?\"undefined\":(t=a)&&\"undefined\"!=typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t)==\"object\"&&(a.current=e)}},f[4]=a,f[5]=i):i=f[5];var m=i;f[6]!==h?(l=function(){if(h&&p.current&&!h.disabled){var e=p.current;return h.register(e),function(){return h.unregister(e)}}},s=[h],f[6]=h,f[7]=l,f[8]=s):(l=f[7],s=f[8]),(0,x.useEffect)(l,s);var g=(null==h?void 0:h.disabled)?\"default\":\"grab\";return(f[9]!==o.style?(c=o.style||{},f[9]=o.style,f[10]=c):c=f[10],f[11]!==g||f[12]!==c?(u=oo({cursor:g},c),f[11]=g,f[12]=c,f[13]=u):u=f[13],f[14]!==r||f[15]!==o||f[16]!==m||f[17]!==u)?(d=(0,b.jsx)(\"div\",(t=oo({ref:m},o),n=n={style:u,children:r},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)),f[14]=r,f[15]=o,f[16]=m,f[17]=u,f[18]=d):d=f[18],d}function oc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function op(e){return function(e){if(Array.isArray(e))return oc(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||oh(e)||function(){throw TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function oh(e,t){if(e){if(\"string\"==typeof e)return oc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return oc(e,t)}}function om(e){var t,n,r,o,a,i,l,s,c,u,d,f,p=(0,A.c)(18);p[0]!==e?(s=of(e,[\"children\",\"padding\",\"position\",\"setPosition\",\"onDragStart\",\"dragHandleSelector\",\"disableDrag\",\"avoidZone\"]),r=e.children,l=e.padding,o=e.position,c=e.setPosition,i=e.onDragStart,a=e.dragHandleSelector,u=e.disableDrag,n=e.avoidZone,p[0]=e,p[1]=n,p[2]=r,p[3]=o,p[4]=a,p[5]=i,p[6]=l,p[7]=s,p[8]=c,p[9]=u):(n=p[1],r=p[2],o=p[3],a=p[4],i=p[5],l=p[6],s=p[7],c=p[8],u=p[9]);var h=function(e){var t=(0,x.useRef)(null),n=(0,x.useRef)({state:\"idle\"}),r=(0,x.useRef)(null),o=(0,x.useRef)({x:0,y:0}),a=(0,x.useRef)({x:0,y:0}),i=(0,x.useRef)(0),l=(0,x.useRef)([]),s=(0,x.useCallback)(function(){var e,o;\"drag\"===n.current.state&&(null==(o=t.current)||o.releasePointerCapture(n.current.pointerId)),n.current=\"drag\"===n.current.state?{state:\"drag-end\"}:{state:\"idle\"},null!==r.current&&(r.current(),r.current=null),l.current=[],null==(e=t.current)||e.classList.remove(\"dev-tools-grabbing\"),document.body.style.removeProperty(\"user-select\"),document.body.style.removeProperty(\"-webkit-user-select\")},[]);function c(e){t.current&&(a.current=e,t.current.style.translate=\"\".concat(e.x,\"px \").concat(e.y,\"px\"))}function u(n){var r=t.current;null!==r&&(r.style.transition=\"translate 491.22ms var(--timing-bounce)\",r.addEventListener(\"transitionend\",function t(o){if(\"translate\"===o.propertyName){var i;null==(i=e.onAnimationEnd)||i.call(e,n),a.current={x:0,y:0},r.style.transition=\"\",r.removeEventListener(\"transitionend\",t)}}),c(n.translation))}function d(e){if(\"drag-end\"===n.current.state){var r;e.preventDefault(),e.stopPropagation(),n.current={state:\"idle\"},null==(r=t.current)||r.removeEventListener(\"click\",d)}}function f(r){if(\"press\"===n.current.state){var s,u,d,f,p=r.clientX-o.current.x,h=r.clientY-o.current.y;Math.sqrt(p*p+h*h)>=e.threshold&&(n.current={state:\"drag\",pointerId:r.pointerId},null==(u=t.current)||u.setPointerCapture(r.pointerId),null==(d=t.current)||d.classList.add(\"dev-tools-grabbing\"),document.body.style.userSelect=\"none\",document.body.style.webkitUserSelect=\"none\",null==(f=e.onDragStart)||f.call(e))}if(\"drag\"===n.current.state){var m={x:r.clientX,y:r.clientY},g=m.x-o.current.x,y=m.y-o.current.y;o.current=m,c({x:a.current.x+g,y:a.current.y+y});var v=Date.now();v-i.current>=10&&(l.current=op(l.current.slice(-5)).concat([{position:m,timestamp:v}])),i.current=v,null==(s=e.onDrag)||s.call(e,a.current)}}function p(){var t,n=function(e){if(e.length<2)return{x:0,y:0};var t=e[0],n=e[e.length-1],r=n.timestamp-t.timestamp;return 0===r?{x:0,y:0}:{x:1e3*((n.position.x-t.position.x)/r),y:1e3*((n.position.y-t.position.y)/r)}}(l.current);s(),null==(t=e.onDragEnd)||t.call(e,a.current,n)}return(0,x.useLayoutEffect)(function(){e.disabled&&s()},[s,e.disabled]),e.disabled?{ref:t,animate:u}:{ref:t,onPointerDown:function(a){var i;0===a.button&&function(n){if(!n||!t.current)return!0;if(e.handles&&e.handles.size>0){for(var r=n;r&&r!==t.current;){if(e.handles.has(r))return!0;r=r.parentElement}return!1}return!e.dragHandleSelector||null!==n.closest(e.dragHandleSelector)}(a.target)&&(o.current={x:a.clientX,y:a.clientY},n.current={state:\"press\"},window.addEventListener(\"pointermove\",f),window.addEventListener(\"pointerup\",p),null!==r.current&&(r.current(),r.current=null),r.current=function(){window.removeEventListener(\"pointermove\",f),window.removeEventListener(\"pointerup\",p)},null==(i=t.current)||i.addEventListener(\"click\",d))},animate:u}}({disabled:void 0!==u&&u,handles:null==(t=ol())?void 0:t.handles,threshold:5,onDragStart:i,onDragEnd:function(e,t){var r,a,i,s,c,u,d,f,p,h,y,v,b,A,x,w,C,_;if(0===Math.sqrt(e.x*e.x+e.y*e.y)){null==(r=m.current)||r.style.removeProperty(\"translate\");return}g((b=(a={x:e.x+oy(t.x),y:e.y+oy(t.y)}).x,A=a.y,w=Object.entries(x=(c=2*l,u=(null==(i=m.current)?void 0:i.offsetWidth)||0,d=(null==(s=m.current)?void 0:s.offsetHeight)||0,f=window.innerWidth-document.documentElement.clientWidth,h=(p=function(e){var t=e.includes(\"right\"),r=e.includes(\"bottom\"),o=t?window.innerWidth-f-c-u:0,a=r?window.innerHeight-c-d:0;if(n&&n.corner===e){var i=n.square+n.padding;r?a-=i:a+=i}return{x:o,y:a}})(o),{\"top-left\":(y=function(e){return{x:e.x-h.x,y:e.y-h.y}})(p(\"top-left\")),\"top-right\":y(p(\"top-right\")),\"bottom-left\":y(p(\"bottom-left\")),\"bottom-right\":y(p(\"bottom-right\"))})).map(function(e){var t,n,r=(n=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||oh(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),o=r[0],a=r[1];return{key:o,distance:Math.sqrt(Math.pow(b-a.x,2)+Math.pow(A-a.y,2))}}),C=(v=Math).min.apply(v,op(w.map(og))),(_=w.find(function(e){return e.distance===C}))?{translation:x[_.key],corner:_.key}:{corner:o,translation:x[o]}))},onAnimationEnd:function(e){var t=e.corner;setTimeout(function(){var e;null==(e=m.current)||e.style.removeProperty(\"translate\"),c(t)})},dragHandleSelector:a}),m=h.ref,g=h.animate,y=of(h,[\"ref\",\"animate\"]);return p[10]!==s.style?(d=ou({touchAction:\"none\",userSelect:\"none\",WebkitUserSelect:\"none\"},s.style),p[10]=s.style,p[11]=d):d=p[11],p[12]!==r||p[13]!==y||p[14]!==s||p[15]!==m||p[16]!==d?(f=(0,b.jsx)(\"div\",od(ou(od(ou({},s),{ref:m}),y),{style:d,children:r})),p[12]=r,p[13]=y,p[14]=s,p[15]=m,p[16]=d,p[17]=f):f=p[17],f}function og(e){return e.distance}function oy(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.999;return e/1e3*t/(1-t)}function ov(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"index\",\"label\",\"value\",\"onClick\",\"href\"]),n=e.index,r=e.label,i=e.value,o=e.onClick,t=e.href,h[0]=e,h[1]=t,h[2]=n,h[3]=r,h[4]=o,h[5]=a,h[6]=i):(t=h[1],n=h[2],r=h[3],o=h[4],a=h[5],i=h[6]);var m=\"function\"==typeof o||\"string\"==typeof t,g=(0,x.useContext)(oO),y=g.closeMenu,v=g.selectedIndex,w=g.setSelectedIndex,C=v===n;h[7]!==y||h[8]!==t||h[9]!==m||h[10]!==o?(l=function(){m&&(null==o||o(),null==y||y(),t&&window.open(t,\"_blank\",\"noopener, noreferrer\"))},h[7]=y,h[8]=t,h[9]=m,h[10]=o,h[11]=l):l=h[11];var _=l;h[12]!==n||h[13]!==m||h[14]!==v||h[15]!==w?(s=function(){m&&void 0!==n&&v!==n&&w(n)},h[12]=n,h[13]=m,h[14]=v,h[15]=w,h[16]=s):s=h[16],h[17]!==w?(c=function(){return w(-1)},h[17]=w,h[18]=c):c=h[18],h[19]!==_?(u=function(e){(\"Enter\"===e.key||\" \"===e.key)&&_()},h[19]=_,h[20]=u):u=h[20];var k=m?\"menuitem\":void 0,E=C?0:-1;return h[21]!==r?(d=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-label\",children:r}),h[21]=r,h[22]=d):d=h[22],h[23]!==i?(f=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-value\",children:i}),h[23]=i,h[24]=f):f=h[24],h[25]!==_||h[26]!==n||h[27]!==a||h[28]!==C||h[29]!==s||h[30]!==c||h[31]!==u||h[32]!==k||h[33]!==E||h[34]!==d||h[35]!==f?(p=(0,b.jsxs)(\"div\",oj(oE({className:\"dev-tools-indicator-item\",\"data-index\":n,\"data-selected\":C,onClick:_,onMouseMove:s,onMouseLeave:c,onKeyDown:u,role:k,tabIndex:E},a),{children:[d,f]})),h[25]=_,h[26]=n,h[27]=a,h[28]=C,h[29]=s,h[30]=c,h[31]=u,h[32]=k,h[33]=E,h[34]=d,h[35]=f,h[36]=p):p=h[36],p}var oP=function(e){var t,n=e.closeOnClickOutside,r=void 0===n||n,o=e.items,a=da().state,i=r2(),l=i.setPanel,s=i.triggerRef,c=i.setSelectedIndex,u=i.selectedIndex,d=uX().mounted,f=oS(a.devToolsPosition.split(\"-\",2),2),p=f[0],h=f[1],m=(0,x.useRef)(null);t8(m,s,r&&d,function(e){switch(e){case\"escape\":l(null),c(-1);return;case\"outside\":if(!r)return;l(null),c(-1);return;default:return null}}),(0,x.useLayoutEffect)(function(){var e;null==(e=m.current)||e.focus(),oD({index:-1===u?\"first\":u,menuRef:m,setSelectedIndex:c})},[]);var g=r4(a),y=oS(a.devToolsPosition.split(\"-\",2),2),v=y[0],A=y[1],w=p===v&&h===A?g:oA,C=(ok(t={},p,\"\".concat(w,\"px\")),ok(t,h,\"\".concat(oA,\"px\")),ok(t,\"top\"===p?\"bottom\":\"top\",\"auto\"),ok(t,\"left\"===h?\"right\":\"left\",\"auto\"),t),_=o.filter(function(e){return!!e}),k=_.filter(function(e){return!e.footer}),E=_.filter(function(e){return e.footer});return(0,b.jsx)(\"div\",{ref:m,onKeyDown:function(e){e.preventDefault();var t=_.filter(function(e){return e.onClick}).length;switch(e.key){case\"ArrowDown\":oD({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"ArrowUp\":oD({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c});break;case\"Home\":oD({index:\"first\",menuRef:m,setSelectedIndex:c});break;case\"End\":oD({index:\"last\",menuRef:m,setSelectedIndex:c});break;case\"n\":e.ctrlKey&&oD({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"p\":e.ctrlKey&&oD({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c})}},id:\"nextjs-dev-tools-menu\",role:\"menu\",dir:\"ltr\",\"aria-orientation\":\"vertical\",\"aria-label\":\"Next.js Dev Tools Items\",tabIndex:-1,style:oE({outline:0,WebkitFontSmoothing:\"antialiased\",display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",background:\"var(--color-background-100)\",backgroundClip:\"padding-box\",boxShadow:\"var(--shadow-menu)\",borderRadius:\"var(--rounded-xl)\",position:\"fixed\",fontFamily:\"var(--font-stack-sans)\",zIndex:\"var(--top-z-index)\",overflow:\"hidden\",opacity:1,minWidth:\"248px\",transition:\"opacity var(--animate-out-duration-ms) var(--animate-out-timing-function)\",border:\"1px solid var(--color-gray-alpha-400)\"},C),children:(0,b.jsxs)(oO,{value:{selectedIndex:u,setSelectedIndex:c},children:[(0,b.jsx)(\"div\",{style:{padding:\"6px\",width:\"100%\"},children:k.map(function(e,t){return(0,b.jsx)(oB,oE({title:e.title,label:e.label,value:e.value,onClick:e.onClick,index:e.onClick?oI(k,t):void 0},e.attributes),e.label)})}),(0,b.jsx)(\"div\",{className:\"dev-tools-indicator-footer\",children:E.map(function(e,t){var n;return(0,b.jsx)(oB,oj(oE({title:e.title,label:e.label,value:e.value,onClick:e.onClick},e.attributes),{index:e.onClick?oI(E,t)+(n=k).filter(function(e){return e.onClick}).length:void 0}),e.label)})})]})})};function oI(e,t){for(var n=0,r=0;r<=t&&r0;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-issue-count-indicator\"}),r[0]=t):t=r[0],r[1]!==o||r[2]!==a?(n=(0,b.jsxs)(\"span\",{className:\"dev-tools-indicator-issue-count\",\"data-has-issues\":a,children:[t,o]}),r[1]=o,r[2]=a,r[3]=n):n=r[3],n}function oT(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"#666\",fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M5.50011 1.93945L6.03044 2.46978L10.8537 7.293C11.2442 7.68353 11.2442 8.31669 10.8537 8.70722L6.03044 13.5304L5.50011 14.0608L4.43945 13.0001L4.96978 12.4698L9.43945 8.00011L4.96978 3.53044L4.43945 3.00011L5.50011 1.93945Z\"})}),t[0]=e):e=t[0],e}function oD(e){var t,n=e.index,r=e.menuRef,o=e.setSelectedIndex;if(\"first\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oD({index:Number(t[0].getAttribute(\"data-index\")),menuRef:r,setSelectedIndex:o})});if(\"last\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oD({index:t.length-1,menuRef:r,setSelectedIndex:o})});var a=null==(t=r.current)?void 0:t.querySelector('[data-index=\"'.concat(n,'\"]'));a&&(o(n),null==a||a.focus())}function oL(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:\"width\";if(\"number\"==typeof e)return e;var n=document.createElement(\"div\");n.style.position=\"absolute\",n.style.visibility=\"hidden\",\"width\"===t?n.style.width=e:n.style.height=e,document.body.appendChild(n);var r=\"width\"===t?n.offsetWidth:n.offsetHeight;return document.body.removeChild(n),r}function o0(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g=e.header,y=e.children,v=e.draggable,w=void 0!==v&&v,C=e.sizeConfig,_=void 0===C?{kind:\"resizable\",minWidth:400,minHeight:350,maxWidth:1e3,maxHeight:1e3,initialSize:{height:400,width:500}}:C,k=e.closeOnClickOutside,E=void 0!==k&&k,j=e.sharePanelSizeGlobally,S=e.sharePanelPositionGlobally,O=e.containerProps,B=r2().setPanel,P=uX(),I=P.name,z=P.mounted,T=void 0===j||j?ee:\"\".concat(J,\"_\").concat(I),D=void 0===S||S?et:\"\".concat(Q,\"_\").concat(I),L=da(),N=L.dispatch,R=L.state,M=null!=(h=R.devToolsPanelPosition[D])?h:R.devToolsPosition,Z=oQ(M.split(\"-\",2),2),U=Z[0],F=Z[1],q=(0,x.useRef)(null);t8(q,r2().triggerRef,z,function(e){switch(e){case\"escape\":return void B(\"panel-selector\");case\"outside\":E&&B(\"panel-selector\");return;default:return null}});var H=r4(R),V=oQ(R.devToolsPosition.split(\"-\",2),2),$=V[0],W=V[1],Y=U===$&&F===W?H:oA,X=(oX(m={},U,\"\".concat(Y,\"px\")),oX(m,F,\"\".concat(oA,\"px\")),oX(m,\"top\"===U?\"bottom\":\"top\",\"auto\"),oX(m,\"left\"===F?\"right\":\"left\",\"auto\"),m),G=\"resizable\"===_.kind,en=(t=G?_.minWidth:void 0,n=G?_.minHeight:void 0,r=G?_.maxWidth:void 0,o=G?_.maxHeight:void 0,(s=(0,A.c)(11))[0]!==o||s[1]!==r||s[2]!==n||s[3]!==t?(a=function(){return{minWidth:t?oJ(t,\"width\"):void 0,minHeight:n?oJ(n,\"height\"):void 0,maxWidth:r?oJ(r,\"width\"):void 0,maxHeight:o?oJ(o,\"height\"):void 0}},s[0]=o,s[1]=r,s[2]=n,s[3]=t,s[4]=a):a=s[4],u=(c=oQ((0,x.useState)(a),2))[0],d=c[1],s[5]!==o||s[6]!==r||s[7]!==n||s[8]!==t?(i=function(){var e=function(){d({minWidth:t?oJ(t,\"width\"):void 0,minHeight:n?oJ(n,\"height\"):void 0,maxWidth:r?oJ(r,\"width\"):void 0,maxHeight:o?oJ(o,\"height\"):void 0})};return window.addEventListener(\"resize\",e),function(){return window.removeEventListener(\"resize\",e)}},l=[t,n,r,o],s[5]=o,s[6]=r,s[7]=n,s[8]=t,s[9]=i,s[10]=l):(i=s[9],l=s[10]),(0,x.useEffect)(i,l),u),er=en.minWidth,eo=en.minHeight,ea=en.maxWidth,ei=en.maxHeight,el=I?\"\".concat(J,\"_\").concat(I):ee,es=R.devToolsPanelSize[el];return(0,b.jsx)(oM,{value:{resizeRef:q,initialSize:\"resizable\"===_.kind?_.initialSize:_,minWidth:er,minHeight:eo,maxWidth:ea,maxHeight:ei,devToolsPosition:R.devToolsPosition,devToolsPanelSize:R.devToolsPanelSize,storageKey:T},children:(0,b.jsx)(\"div\",{tabIndex:-1,ref:q,className:\"dynamic-panel-container\",style:oG({\"--panel-top\":X.top,\"--panel-bottom\":X.bottom,\"--panel-left\":X.left,\"--panel-right\":X.right},G?{\"--panel-min-width\":er?\"\".concat(er,\"px\"):void 0,\"--panel-min-height\":eo?\"\".concat(eo,\"px\"):void 0,\"--panel-max-width\":ea?\"\".concat(ea,\"px\"):void 0,\"--panel-max-height\":ei?\"\".concat(ei,\"px\"):void 0}:{\"--panel-height\":\"\".concat(es?es.height:_.height,\"px\"),\"--panel-width\":\"\".concat(es?es.width:_.width,\"px\")}),children:(0,b.jsx)(oi,{disabled:!w,children:(0,b.jsx)(om,{dragHandleSelector:\".resize-container\",avoidZone:{corner:R.devToolsPosition,square:25/R.scale,padding:oA},padding:oA,position:M,setPosition:function(e){N({type:K,devToolsPanelPosition:e,key:D}),\"resizable\"===_.kind&&rA({devToolsPanelPosition:oX({},D,e)})},style:{overflow:\"auto\",width:\"100%\",height:\"100%\"},disableDrag:!w,children:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(\"div\",(f=oG({},O),p=p={className:\"panel-content-container \".concat((null==O?void 0:O.className)||\"\"),style:oG({},null==O?void 0:O.style),children:[(0,b.jsx)(os,{children:g}),(0,b.jsx)(\"div\",{\"data-nextjs-scrollable-content\":!0,className:\"draggable-content\",children:y})]},Object.getOwnPropertyDescriptors?Object.defineProperties(f,Object.getOwnPropertyDescriptors(p)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(p)).forEach(function(e){Object.defineProperty(f,e,Object.getOwnPropertyDescriptor(p,e))}),f)),G&&(0,b.jsxs)(b.Fragment,{children:[(!_.sides||_.sides.includes(\"vertical\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"top\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom\"})]}),(!_.sides||_.sides.includes(\"horizontal\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"right\"}),(0,b.jsx)(oH,{position:M,direction:\"left\"})]}),(!_.sides||_.sides.includes(\"diagonal\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"top-left\"}),(0,b.jsx)(oH,{position:M,direction:\"top-right\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom-left\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom-right\"})]})]})]})})})})})}oY.styleTagTransform=h(),oY.setAttributes=u(),oY.insert=s(),oY.domAPI=i(),oY.insertStyleElement=f(),o()(oW.Z,oY),oW.Z&&oW.Z.locals&&oW.Z.locals;var o1=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"),o2={};function o4(e){for(var t=1;t=0;m--){var g=l[m],y=r[m];0===Object.keys(g.children[y].children).length&&delete g.children[y]}a=o4({},a),i()}},getRoot:function(){return a}}}({compare:function(e,t){return!!e&&!!t&&e.pagePath===t.pagePath&&e.type===t.type&&e.boundaryType===t.boundaryType},getCharacters:function(e){return e.pagePath.split(\"/\")}}),ae=o7.insert,at=o7.remove,an=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"),ar={};ar.styleTagTransform=h(),ar.setAttributes=u(),ar.insert=s(),ar.domAPI=i(),ar.insertStyleElement=f(),o()(an.Z,ar),an.Z&&an.Z.locals&&an.Z.locals;let ao={};function aa(e,t){let n=x.useRef(ao);return n.current===ao&&(n.current=e(t)),n}let ai=[];function al(e){x.useEffect(e,ai)}class as{static create(){return new as}currentId=0;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=0,t()},e)}isStarted(){return 0!==this.currentId}clear=()=>{0!==this.currentId&&(clearTimeout(this.currentId),this.currentId=0)};disposeEffect=()=>this.clear}function ac(){let e=aa(as.create).current;return al(e.disposeEffect),e}let au=w[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],ad=au&&au!==x.useLayoutEffect?au:e=>e();function af(e){let t=aa(ap).current;return t.next=e,ad(t.effect),t.trampoline}function ap(){let e={next:void 0,callback:ah,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ah(){}function am({controlled:e,default:t,name:n,state:r=\"value\"}){let{current:o}=x.useRef(void 0!==e),[a,i]=x.useState(t),l=x.useCallback(e=>{o||i(e)},[]);return[o?e:a,l]}let ag={...w},ay=0,av=ag.useId;function ab(e,t){if(void 0!==av){let n=av();return e??(t?`${t}-${n}`:n)}return function(e,t=\"mui\"){let[n,r]=x.useState(e),o=e||n;return x.useEffect(()=>{null==n&&(ay+=1,r(`${t}-${ay}`))},[n,t]),o}(e,t)}function aA(){let e=new Map;return{emit(t,n){e.get(t)?.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}let ax=\"undefined\"!=typeof document?x.useLayoutEffect:()=>{},aw=x.createContext(null),aC=x.createContext(null),a_=()=>x.useContext(aw)?.id||null,ak=()=>x.useContext(aC);function aE(e){let{children:t,id:n}=e,r=a_();return(0,b.jsx)(aw.Provider,{value:x.useMemo(()=>({id:n,parentId:r}),[n,r]),children:t})}function aj(e){let{children:t}=e,n=x.useRef([]),r=x.useCallback(e=>{n.current=[...n.current,e]},[]),o=x.useCallback(e=>{n.current=n.current.filter(t=>t!==e)},[]),[a]=x.useState(()=>aA());return(0,b.jsx)(aC.Provider,{value:x.useMemo(()=>({nodesRef:n,addNode:r,removeNode:o,events:a}),[r,o,a]),children:t})}function aS(e){let{open:t=!1,onOpenChange:n,elements:r}=e,o=ab(),a=x.useRef({}),[i]=x.useState(()=>aA()),l=null!=a_(),[s,c]=x.useState(r.reference),u=af((e,t,r)=>{a.current.openEvent=e?t:void 0,i.emit(\"openchange\",{open:e,event:t,reason:r,nested:l}),n?.(e,t,r)}),d=x.useMemo(()=>({setPositionReference:c}),[]),f=x.useMemo(()=>({reference:s||r.reference||null,floating:r.floating||null,domReference:r.reference}),[s,r.reference,r.floating]);return x.useMemo(()=>({dataRef:a,open:t,onOpenChange:u,elements:f,events:i,floatingId:o,refs:d}),[t,u,f,i,o,d])}function aO(){return\"undefined\"!=typeof window}function aB(e){return az(e)?(e.nodeName||\"\").toLowerCase():\"#document\"}function aP(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function aI(e){var t;return null==(t=(az(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function az(e){return!!aO()&&(e instanceof Node||e instanceof aP(e).Node)}function aT(e){return!!aO()&&(e instanceof Element||e instanceof aP(e).Element)}function aD(e){return!!aO()&&(e instanceof HTMLElement||e instanceof aP(e).HTMLElement)}function aL(e){return!!aO()&&\"undefined\"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof aP(e).ShadowRoot)}let aN=new Set([\"inline\",\"contents\"]);function aR(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=aK(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!aN.has(o)}let aM=new Set([\"table\",\"td\",\"th\"]),aZ=[\":popover-open\",\":modal\"];function aU(e){return aZ.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let aF=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\"],aq=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\",\"filter\"],aH=[\"paint\",\"layout\",\"strict\",\"content\"];function aV(e){let t=a$(),n=aT(e)?aK(e):e;return aF.some(e=>!!n[e]&&\"none\"!==n[e])||!!n.containerType&&\"normal\"!==n.containerType||!t&&!!n.backdropFilter&&\"none\"!==n.backdropFilter||!t&&!!n.filter&&\"none\"!==n.filter||aq.some(e=>(n.willChange||\"\").includes(e))||aH.some(e=>(n.contain||\"\").includes(e))}function a$(){return\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter\",\"none\")}let aW=new Set([\"html\",\"body\",\"#document\"]);function aY(e){return aW.has(aB(e))}function aK(e){return aP(e).getComputedStyle(e)}function aX(e){return aT(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function aG(e){if(\"html\"===aB(e))return e;let t=e.assignedSlot||e.parentNode||aL(e)&&e.host||aI(e);return aL(t)?t.host:t}function aQ(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=aG(t);return aY(n)?t.ownerDocument?t.ownerDocument.body:t.body:aD(n)&&aR(n)?n:e(n)}(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),i=aP(o);if(a){let e=aJ(i);return t.concat(i,i.visualViewport||[],aR(o)?o:[],e&&n?aQ(e):[])}return t.concat(o,aQ(o,[],n))}function aJ(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function a0(e){let t=aa(a1,e).current;return t.next=e,ax(t.effect),t}function a1(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}let a2=\"undefined\"!=typeof navigator,a4=function(){if(!a2)return{platform:\"\",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??\"\",maxTouchPoints:navigator.maxTouchPoints??-1}}(),a5=function(){if(!a2)return\"\";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??\"\"}(),a3=function(){if(!a2)return\"\";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:e,version:t})=>`${e}/${t}`).join(\" \"):navigator.userAgent}(),a6=\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter:none\"),a9=\"MacIntel\"===a4.platform&&a4.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(a4.platform);a2&&/firefox/i.test(a3);let a8=a2&&/apple/i.test(navigator.vendor),a7=a2&&/android/i.test(a5)||/android/i.test(a3),ie=a2&&a5.toLowerCase().startsWith(\"mac\")&&!navigator.maxTouchPoints,it=a3.includes(\"jsdom/\");function ir(e){e.preventDefault(),e.stopPropagation()}function io(e){return 0===e.mozInputSource&&!!e.isTrusted||(a7&&e.pointerType?\"click\"===e.type&&1===e.buttons:0===e.detail&&!e.pointerType)}function ia(e){return!it&&(!a7&&0===e.width&&0===e.height||a7&&1===e.width&&1===e.height&&0===e.pressure&&0===e.detail&&\"mouse\"===e.pointerType||e.width<1&&e.height<1&&0===e.pressure&&0===e.detail&&\"touch\"===e.pointerType)}function ii(e,t){let n=[\"mouse\",\"pen\"];return t||n.push(\"\",void 0),n.includes(e)}let il=\"data-base-ui-focusable\",is=\"active\",ic=\"selected\",iu=\"ArrowLeft\",id=\"ArrowRight\",ip=\"ArrowUp\",ih=\"ArrowDown\";function im(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ig(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&aL(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function iy(e){return\"composedPath\"in e?e.composedPath()[0]:e.target}function iv(e,t){return null!=t&&(\"composedPath\"in e?e.composedPath().includes(t):null!=e.target&&t.contains(e.target))}function ib(e){return e?.ownerDocument||document}function iA(e){return aD(e)&&e.matches(\"input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\")}function ix(e){return!!e&&\"combobox\"===e.getAttribute(\"role\")&&iA(e)}function iw(e){return e?e.hasAttribute(il)?e:e.querySelector(`[${il}]`)||e:null}function iC(e){return`data-base-ui-${e}`}let i_=iC(\"safe-polygon\");function ik(e,t,n){if(n&&!ii(n))return 0;if(\"number\"==typeof e)return e;if(\"function\"==typeof e){let n=e();return\"number\"==typeof n?n:n?.[t]}return e?.[t]}function iE(e){return\"function\"==typeof e?e():e}function ij(e,t={}){let{open:n,onOpenChange:r,dataRef:o,events:a,elements:i}=e,{enabled:l=!0,delay:s=0,handleClose:c=null,mouseOnly:u=!1,restMs:d=0,move:f=!0}=t,p=ak(),h=a_(),m=a0(c),g=a0(s),y=a0(n),v=a0(d),b=x.useRef(void 0),A=ac(),w=x.useRef(void 0),C=ac(),_=x.useRef(!0),k=x.useRef(!1),E=x.useRef(()=>{}),j=x.useRef(!1),S=af(()=>{let e=o.current.openEvent?.type;return e?.includes(\"mouse\")&&\"mousedown\"!==e});x.useEffect(()=>{if(l)return a.on(\"openchange\",e),()=>{a.off(\"openchange\",e)};function e({open:e}){e||(A.clear(),C.clear(),_.current=!0,j.current=!1)}},[l,a,A,C]),x.useEffect(()=>{if(!l||!m.current||!n)return;function e(e){S()&&r(!1,e,\"hover\")}let t=ib(i.floating).documentElement;return t.addEventListener(\"mouseleave\",e),()=>{t.removeEventListener(\"mouseleave\",e)}},[i.floating,n,r,l,m,S]);let O=x.useCallback((e,t=!0,n=\"hover\")=>{let o=ik(g.current,\"close\",b.current);o&&!w.current?A.start(o,()=>r(!1,e,n)):t&&(A.clear(),r(!1,e,n))},[g,r,A]),B=af(()=>{E.current(),w.current=void 0}),P=af(()=>{if(k.current){let e=ib(i.floating).body;e.style.pointerEvents=\"\",e.removeAttribute(i_),k.current=!1}}),I=af(()=>!!o.current.openEvent&&[\"click\",\"mousedown\"].includes(o.current.openEvent.type));x.useEffect(()=>{if(l&&aT(i.domReference)){let r=i.domReference,o=i.floating;return n&&r.addEventListener(\"mouseleave\",a),f&&r.addEventListener(\"mousemove\",e,{once:!0}),r.addEventListener(\"mouseenter\",e),r.addEventListener(\"mouseleave\",t),o&&(o.addEventListener(\"mouseleave\",a),o.addEventListener(\"mouseenter\",s),o.addEventListener(\"mouseleave\",c)),()=>{n&&r.removeEventListener(\"mouseleave\",a),f&&r.removeEventListener(\"mousemove\",e),r.removeEventListener(\"mouseenter\",e),r.removeEventListener(\"mouseleave\",t),o&&(o.removeEventListener(\"mouseleave\",a),o.removeEventListener(\"mouseenter\",s),o.removeEventListener(\"mouseleave\",c))}}function e(e){if(A.clear(),_.current=!1,u&&!ii(b.current)||iE(v.current)>0&&!ik(g.current,\"open\"))return;let t=ik(g.current,\"open\",b.current);t?A.start(t,()=>{y.current||r(!0,e,\"hover\")}):n||r(!0,e,\"hover\")}function t(e){if(I())return void P();E.current();let t=ib(i.floating);if(C.clear(),j.current=!1,m.current&&o.current.floatingContext){n||A.clear(),w.current=m.current({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e,!0,\"safe-polygon\")}});let r=w.current;t.addEventListener(\"mousemove\",r),E.current=()=>{t.removeEventListener(\"mousemove\",r)};return}\"touch\"===b.current&&ig(i.floating,e.relatedTarget)||O(e)}function a(e){!I()&&o.current.floatingContext&&m.current?.({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e)}})(e)}function s(){A.clear()}function c(e){I()||O(e,!1)}},[i,l,e,u,f,O,B,P,r,n,y,p,g,m,o,I,v,A,C]),ax(()=>{if(l&&n&&m.current?.__options?.blockPointerEvents&&S()){k.current=!0;let e=i.floating;if(aT(i.domReference)&&e){let t=ib(i.floating).body;t.setAttribute(i_,\"\");let n=i.domReference,r=p?.nodesRef.current.find(e=>e.id===h)?.context?.elements.floating;return r&&(r.style.pointerEvents=\"\"),t.style.pointerEvents=\"none\",n.style.pointerEvents=\"auto\",e.style.pointerEvents=\"auto\",()=>{t.style.pointerEvents=\"\",n.style.pointerEvents=\"\",e.style.pointerEvents=\"\"}}}},[l,n,h,i,p,m,S]),ax(()=>{n||(b.current=void 0,j.current=!1,B(),P())},[n,B,P]),x.useEffect(()=>()=>{B(),A.clear(),C.clear(),P()},[l,i.domReference,B,P,A,C]);let z=x.useMemo(()=>{function e(e){b.current=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e;function o(){_.current||y.current||r(!0,t,\"hover\")}(!u||ii(b.current))&&!n&&0!==iE(v.current)&&(j.current&&e.movementX**2+e.movementY**2<2||(C.clear(),\"touch\"===b.current?o():(j.current=!0,C.start(iE(v.current),o))))}}},[u,r,n,y,v,C]);return x.useMemo(()=>l?{reference:z}:{},[l,z])}function iS(e,t,n=!0){return e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...iS(e,t.id,n)])}function iO(e,t){let n=[],r=e.find(e=>e.id===t)?.parentId;for(;r;){let t=e.find(e=>e.id===r);r=t?.parentId,t&&(n=n.concat(t))}return n}function iB(e,t){let[n,r]=e,o=!1,a=t.length;for(let e=0,i=a-1;e=r!=c>=r&&n<=(s-a)*(r-l)/(c-l)+a&&(o=!o)}return o}function iP(e={}){let{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e,o=new as,a=!1,i=null,l=null,s=\"undefined\"!=typeof performance?performance.now():0,c=({x:e,y:n,placement:c,elements:u,onClose:d,nodeId:f,tree:p})=>function(h){var m,g;function y(){o.clear(),d()}if(o.clear(),!u.domReference||!u.floating||null==c||null==e||null==n)return;let{clientX:v,clientY:b}=h,A=[v,b],x=iy(h),w=\"mouseleave\"===h.type,C=ig(u.floating,x),_=ig(u.domReference,x),k=u.domReference.getBoundingClientRect(),E=u.floating.getBoundingClientRect(),j=c.split(\"-\")[0],S=e>E.right-E.width/2,O=n>E.bottom-E.height/2,B=(m=A,g=k,m[0]>=g.x&&m[0]<=g.x+g.width&&m[1]>=g.y&&m[1]<=g.y+g.height),P=E.width>k.width,I=E.height>k.height,z=(P?k:E).left,T=(P?k:E).right,D=(I?k:E).top,L=(I?k:E).bottom;if(C&&(a=!0,!w))return;if(_&&(a=!1),_&&!w){a=!0;return}if(w&&aT(h.relatedTarget)&&ig(u.floating,h.relatedTarget)||p&&iS(p.nodesRef.current,f).some(({context:e})=>e?.open))return;if(\"top\"===j&&n>=k.bottom-1||\"bottom\"===j&&n<=k.top+1||\"left\"===j&&e>=k.right-1||\"right\"===j&&e<=k.left+1)return y();let N=[];switch(j){case\"top\":N=[[z,k.top+1],[z,E.bottom-1],[T,E.bottom-1],[T,k.top+1]];break;case\"bottom\":N=[[z,E.top+1],[z,k.bottom-1],[T,k.bottom-1],[T,E.top+1]];break;case\"left\":N=[[E.right-1,L],[E.right-1,D],[k.left+1,D],[k.left+1,L]];break;case\"right\":N=[[k.right-1,L],[k.right-1,D],[E.left+1,D],[E.left+1,L]]}if(!iB([v,b],N)){if(a&&!B)return y();if(!w&&r){let e=function(e,t){let n=performance.now(),r=n-s;if(null===i||null===l||0===r)return i=e,l=t,s=n,null;let o=e-i,a=t-l,c=Math.sqrt(o*o+a*a);return i=e,l=t,s=n,c/r}(h.clientX,h.clientY);if(null!==e&&e<.1)return y()}iB([v,b],function([e,n]){switch(j){case\"top\":{let r=[[E.left,S||P?E.bottom-t:E.top],[E.right,S?P?E.bottom-t:E.top:E.bottom-t]];return[[P?e+t/2:S?e+4*t:e-4*t,n+t+1],[P?e-t/2:S?e+4*t:e-4*t,n+t+1],...r]}case\"bottom\":{let r=[[E.left,S||P?E.top+t:E.bottom],[E.right,S?P?E.top+t:E.bottom:E.top+t]];return[[P?e+t/2:S?e+4*t:e-4*t,n-t],[P?e-t/2:S?e+4*t:e-4*t,n-t],...r]}case\"left\":return[[O||I?E.right-t:E.left,E.top],[O?I?E.right-t:E.left:E.right-t,E.bottom],[e+t+1,I?n+t/2:O?n+4*t:n-4*t],[e+t+1,I?n-t/2:O?n+4*t:n-4*t]];case\"right\":{let r=[[O||I?E.left+t:E.right,E.top],[O?I?E.left+t:E.right:E.left+t,E.bottom]];return[[e-t,I?n+t/2:O?n+4*t:n-4*t],[e-t,I?n-t/2:O?n+4*t:n-4*t],...r]}default:return[]}}([e,n]))?!a&&r&&o.start(40,y):y()}};return c.__options={blockPointerEvents:n},c}let iI=ie&&a8;function iz(e,t={}){let{open:n,onOpenChange:r,events:o,dataRef:a,elements:i}=e,{enabled:l=!0,visibleOnly:s=!0}=t,c=x.useRef(!1),u=ac(),d=x.useRef(!0);x.useEffect(()=>{if(!l)return;let e=aP(i.domReference);function t(){!n&&aD(i.domReference)&&i.domReference===im(ib(i.domReference))&&(c.current=!0)}function r(){d.current=!0}function o(){d.current=!1}return e.addEventListener(\"blur\",t),iI&&(e.addEventListener(\"keydown\",r,!0),e.addEventListener(\"pointerdown\",o,!0)),()=>{e.removeEventListener(\"blur\",t),iI&&(e.removeEventListener(\"keydown\",r,!0),e.removeEventListener(\"pointerdown\",o,!0))}},[i.domReference,n,l]),x.useEffect(()=>{if(l)return o.on(\"openchange\",e),()=>{o.off(\"openchange\",e)};function e({reason:e}){(\"reference-press\"===e||\"escape-key\"===e)&&(c.current=!0)}},[o,l]);let f=x.useMemo(()=>({onMouseLeave(){c.current=!1},onFocus(e){if(c.current)return;let t=iy(e.nativeEvent);if(s&&aT(t)){if(iI&&!e.relatedTarget){if(!d.current&&!iA(t))return}else if(!function(e){if(!e||it)return!0;try{return e.matches(\":focus-visible\")}catch(e){return!0}}(t))return}r(!0,e.nativeEvent,\"focus\")},onBlur(e){c.current=!1;let t=e.relatedTarget,n=e.nativeEvent,o=aT(t)&&t.hasAttribute(iC(\"focus-guard\"))&&\"outside\"===t.getAttribute(\"data-type\");u.start(0,()=>{let e=im(i.domReference?i.domReference.ownerDocument:document);(t||e!==i.domReference)&&(ig(a.current.floatingContext?.refs.floating.current,e)||ig(i.domReference,e)||o||r(!1,n,\"focus\"))})}}),[a,i.domReference,r,s,u]);return x.useMemo(()=>l?{reference:f}:{},[l,f])}globalThis.requestAnimationFrame;let iT=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n=this.callbacks.length||(this.callbacks[t]=null,this.callbacksCount-=1)}};class iD{static create(){return new iD}static request(e){return iT.request(e)}static cancel(e){return iT.cancel(e)}currentId=null;request(e){this.cancel(),this.currentId=iT.request(()=>{this.currentId=null,e()})}cancel=()=>{null!==this.currentId&&(iT.cancel(this.currentId),this.currentId=null)};disposeEffect=()=>this.cancel}function iL(){let e=aa(iD.create).current;return al(e.disposeEffect),e}let iN={style:{transition:\"none\"}},iR={},iM=[],iZ={fallbackAxisSide:\"none\"},iU={fallbackAxisSide:\"end\"},iF={intentional:\"onClick\",sloppy:\"onPointerDown\"};function iq(e){return{escapeKey:\"boolean\"==typeof e?e:e?.escapeKey??!1,outsidePress:\"boolean\"==typeof e?e:e?.outsidePress??!0}}function iH(e,t={}){let{open:n,onOpenChange:r,elements:o,dataRef:a}=e,{enabled:i=!0,escapeKey:l=!0,outsidePress:s=!0,outsidePressEvent:c=\"sloppy\",referencePress:u=!1,referencePressEvent:d=\"sloppy\",ancestorScroll:f=!1,bubbles:p,capture:h}=t,m=ak(),g=af(\"function\"==typeof s?s:()=>!1),y=\"function\"==typeof s?g:s,v=x.useRef(!1),{escapeKey:b,outsidePress:A}=iq(p),{escapeKey:w,outsidePress:C}=iq(h),_=x.useRef(null),k=ac(),E=ac(),j=x.useRef(!1),S=x.useRef(\"\"),O=af(e=>{S.current=e.pointerType}),B=af(()=>{let e=S.current;return\"string\"==typeof c?c:c[\"pen\"!==e&&e?e:\"mouse\"]}),P=af(e=>{if(!n||!i||!l||\"Escape\"!==e.key||j.current)return;let t=a.current.floatingContext?.nodeId,o=m?iS(m.nodesRef.current,t):[];if(!b&&(e.stopPropagation(),o.length>0)){let e=!0;if(o.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__escapeKeyBubbles&&(e=!1)}),!e)return}r(!1,\"nativeEvent\"in e?e.nativeEvent:e,\"escape-key\")}),I=af(e=>{let t=B();return\"intentional\"===t&&\"click\"!==e.type||\"sloppy\"===t&&\"click\"===e.type}),z=af(e=>{let t=()=>{P(e),iy(e)?.removeEventListener(\"keydown\",t)};iy(e)?.addEventListener(\"keydown\",t)}),T=af(e=>{if(I(e))return;let t=a.current.insideReactTree;a.current.insideReactTree=!1;let n=v.current;if(v.current=!1,\"intentional\"===B()&&n||t||\"function\"==typeof y&&!y(e))return;let i=iy(e),l=`[${iC(\"inert\")}]`,s=ib(o.floating).querySelectorAll(l),c=aT(i)?i:null;for(;c&&!aY(c);){let e=aG(c);if(aY(e)||!aT(e))break;c=e}if(s.length&&aT(i)&&!i.matches(\"html,body\")&&!ig(i,o.floating)&&Array.from(s).every(e=>!ig(c,e)))return;if(aD(i)){let t=aY(i),n=aK(i),r=/auto|scroll/,o=t||r.test(n.overflowX),a=t||r.test(n.overflowY),l=o&&i.clientWidth>0&&i.scrollWidth>i.clientWidth,s=a&&i.clientHeight>0&&i.scrollHeight>i.clientHeight,c=\"rtl\"===n.direction,u=s&&(c?e.offsetX<=i.offsetWidth-i.clientWidth:e.offsetX>i.clientWidth),d=l&&e.offsetY>i.clientHeight;if(u||d)return}let u=a.current.floatingContext?.nodeId,d=m&&iS(m.nodesRef.current,u).some(t=>iv(e,t.context?.elements.floating));if(iv(e,o.floating)||iv(e,o.domReference)||d)return;let f=m?iS(m.nodesRef.current,u):[];if(f.length>0){let e=!0;if(f.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__outsidePressBubbles&&(e=!1)}),!e)return}r(!1,e,\"outside-press\")}),D=af(e=>{if(!(\"sloppy\"!==B()||!n||!i||iv(e,o.floating)||iv(e,o.domReference))){if(\"touch\"===e.pointerType){_.current={startTime:Date.now(),startX:e.clientX,startY:e.clientY,dismissOnPointerUp:!1,dismissOnMouseDown:!0},k.start(1e3,()=>{_.current&&(_.current.dismissOnPointerUp=!1,_.current.dismissOnMouseDown=!1)});return}T(e)}}),L=af(e=>{if(I(e)||(k.clear(),\"mousedown\"===e.type&&_.current&&!_.current.dismissOnMouseDown))return;let t=()=>{\"pointerdown\"===e.type?D(e):T(e),iy(e)?.removeEventListener(e.type,t)};iy(e)?.addEventListener(e.type,t)}),N=af(e=>{if(\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iv(e,o.floating)||iv(e,o.domReference))return;let t=Math.abs(e.clientX-_.current.startX),n=Math.abs(e.clientY-_.current.startY),r=Math.sqrt(t*t+n*n);r>5&&(_.current.dismissOnPointerUp=!0),r>10&&(T(e),k.clear(),_.current=null)}),R=af(e=>{\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iv(e,o.floating)||iv(e,o.domReference)||(_.current.dismissOnPointerUp&&T(e),k.clear(),_.current=null)});x.useEffect(()=>{if(!n||!i)return;a.current.__escapeKeyBubbles=b,a.current.__outsidePressBubbles=A;let e=new as;function t(e){r(!1,e,\"ancestor-scroll\")}function s(){e.clear(),j.current=!0}function c(){e.start(5*!!a$(),()=>{j.current=!1})}let u=ib(o.floating);u.addEventListener(\"pointerdown\",O,!0),l&&(u.addEventListener(\"keydown\",w?z:P,w),u.addEventListener(\"compositionstart\",s),u.addEventListener(\"compositionend\",c)),y&&(u.addEventListener(\"click\",C?L:T,C),u.addEventListener(\"pointerdown\",C?L:T,C),u.addEventListener(\"pointermove\",N,C),u.addEventListener(\"pointerup\",R,C),u.addEventListener(\"mousedown\",L,C));let d=[];return f&&(aT(o.domReference)&&(d=aQ(o.domReference)),aT(o.floating)&&(d=d.concat(aQ(o.floating))),!aT(o.reference)&&o.reference&&o.reference.contextElement&&(d=d.concat(aQ(o.reference.contextElement)))),(d=d.filter(e=>e!==u.defaultView?.visualViewport)).forEach(e=>{e.addEventListener(\"scroll\",t,{passive:!0})}),()=>{u.removeEventListener(\"pointerdown\",O,!0),l&&(u.removeEventListener(\"keydown\",w?z:P,w),u.removeEventListener(\"compositionstart\",s),u.removeEventListener(\"compositionend\",c)),y&&(u.removeEventListener(\"click\",C?L:T,C),u.removeEventListener(\"pointerdown\",C?L:T,C),u.removeEventListener(\"pointermove\",N,C),u.removeEventListener(\"pointerup\",R,C),u.removeEventListener(\"mousedown\",L,C)),d.forEach(e=>{e.removeEventListener(\"scroll\",t)}),e.clear()}},[a,o,l,y,c,n,r,f,i,b,A,P,w,z,T,C,L,D,N,R,O]),x.useEffect(()=>{a.current.insideReactTree=!1},[a,y]);let M=x.useMemo(()=>({onKeyDown:P,...u&&{[iF[d]]:e=>{r(!1,e.nativeEvent,\"reference-press\")},...\"intentional\"!==d&&{onClick(e){r(!1,e.nativeEvent,\"reference-press\")}}}}),[P,r,u,d]),Z=af(e=>{let t=iy(e.nativeEvent);ig(o.floating,t)&&(v.current=!0)}),U=af(()=>{a.current.insideReactTree=!0,E.start(0,()=>{a.current.insideReactTree=!1})}),F=x.useMemo(()=>({onKeyDown:P,onMouseDown:Z,onMouseUp:Z,onPointerDownCapture:U,onMouseDownCapture:U,onClickCapture:U}),[P,Z,U]);return x.useMemo(()=>i?{reference:M,floating:F}:{},[i,M,F])}let iV=new Map([[\"select\",\"listbox\"],[\"combobox\",\"listbox\"],[\"label\",!1]]),i$=[\"top\",\"right\",\"bottom\",\"left\"],iW=Math.min,iY=Math.max,iK=Math.round,iX=Math.floor,iG=e=>({x:e,y:e}),iQ={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},iJ={start:\"end\",end:\"start\"};function i0(e,t){return\"function\"==typeof e?e(t):e}function i1(e){return e.split(\"-\")[0]}function i2(e){return e.split(\"-\")[1]}function i4(e){return\"x\"===e?\"y\":\"x\"}function i5(e){return\"y\"===e?\"height\":\"width\"}let i3=new Set([\"top\",\"bottom\"]);function i6(e){return i3.has(i1(e))?\"y\":\"x\"}function i9(e){return e.replace(/start|end/g,e=>iJ[e])}let i8=[\"left\",\"right\"],i7=[\"right\",\"left\"],le=[\"top\",\"bottom\"],lt=[\"bottom\",\"top\"];function ln(e){return e.replace(/left|right|bottom|top/g,e=>iQ[e])}function lr(e){return\"number\"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function lo(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function la(e,t,n){return Math.floor(e/t)!==n}function li(e,t){return t<0||t>=e.current.length}function ll(e,t){return lc(e,{disabledIndices:t})}function ls(e,t){return lc(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function lc(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:r,amount:o=1}={}){let a=t;do a+=n?-o:o;while(a>=0&&a<=e.current.length-1&&lu(e,a,r));return a}function lu(e,t,n){if(\"function\"==typeof n)return n(t);if(n)return n.includes(t);let r=e.current[t];return null==r||r.hasAttribute(\"disabled\")||\"true\"===r.getAttribute(\"aria-disabled\")}let ld=0;function lf(e,t={}){let{preventScroll:n=!1,cancelPrevious:r=!0,sync:o=!1}=t;r&&cancelAnimationFrame(ld);let a=()=>e?.focus({preventScroll:n});o?a():ld=requestAnimationFrame(a)}function lp(e,t,n){switch(e){case\"vertical\":return t;case\"horizontal\":return n;default:return t||n}}function lh(e,t){return lp(t,e===ip||e===ih,e===iu||e===id)}function lm(e,t,n){return lp(t,e===ih,n?e===iu:e===id)||\"Enter\"===e||\" \"===e||\"\"===e}function lg(e=[]){let t=e.map(e=>e?.reference),n=e.map(e=>e?.floating),r=e.map(e=>e?.item),o=x.useCallback(t=>ly(t,e,\"reference\"),t),a=x.useCallback(t=>ly(t,e,\"floating\"),n),i=x.useCallback(t=>ly(t,e,\"item\"),r);return x.useMemo(()=>({getReferenceProps:o,getFloatingProps:a,getItemProps:i}),[o,a,i])}function ly(e,t,n){let r=new Map,o=\"item\"===n,a={};for(let t in\"floating\"===n&&(a.tabIndex=-1,a[il]=\"\"),e)o&&e&&(t===is||t===ic)||(a[t]=e[t]);for(let i=0;ir.get(o)?.map(t=>t(...e)).find(e=>void 0!==e))):e[o]=a)}}let lb=x.createContext(void 0);function lA(e){let t=x.useContext(lb);if(void 0===t&&!e)throw Error(\"Base UI: MenuRootContext is missing. Menu parts must be placed within .\");return t}let lx=x.createContext(null);function lw(e,t=!1,n=!1){let[r,o]=x.useState(e&&t?\"idle\":void 0),[a,i]=x.useState(e);return e&&!a&&(i(!0),o(\"starting\")),e||!a||\"ending\"===r||n||o(\"ending\"),e||a||\"ending\"!==r||o(void 0),ax(()=>{if(!e&&a&&\"ending\"!==r&&n){let e=iD.request(()=>{o(\"ending\")});return()=>{iD.cancel(e)}}},[e,a,r,n]),ax(()=>{if(!e||t)return;let n=iD.request(()=>{ef.flushSync(()=>{o(void 0)})});return()=>{iD.cancel(n)}},[t,e]),ax(()=>{if(!e||!t)return;e&&a&&\"idle\"!==r&&o(\"starting\");let n=iD.request(()=>{o(\"idle\")});return()=>{iD.cancel(n)}},[t,e,a,o,r]),x.useMemo(()=>({mounted:a,setMounted:i,transitionStatus:r}),[a,r])}function lC(e){let{enabled:t=!0,open:n,ref:r,onComplete:o}=e,a=a0(n),i=af(o),l=function(e,t=!1){let n=iL();return af((r,o=null)=>{let a;if(n.cancel(),null!=e){if(\"current\"in e){if(null==e.current)return;a=e.current}else a=e;\"function\"!=typeof a.getAnimations||globalThis.BASE_UI_ANIMATIONS_DISABLED?r():n.request(()=>{function e(){a&&Promise.allSettled(a.getAnimations().map(e=>e.finished)).then(()=>{null!=o&&o.aborted||ef.flushSync(r)})}t?n.request(e):e()})}})}(r,n);x.useEffect(()=>{t&&l(()=>{n===a.current&&i()})},[t,n,i,l,a])}let l_=x.createContext(void 0);function lk(e=!0){let t=x.useContext(l_);if(void 0===t&&!e)throw Error(\"Base UI: DirectionContext is missing.\");return t?.direction??\"ltr\"}function lE(e){return e?.ownerDocument||document}let lj=()=>{},lS={},lO={},lB=\"\";class lP{lockCount=0;restore=null;timeoutLock=as.create();timeoutUnlock=as.create();acquire(e){return this.lockCount+=1,1===this.lockCount&&null===this.restore&&this.timeoutLock.start(0,()=>this.lock(e)),this.release}release=()=>{this.lockCount-=1,0===this.lockCount&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{0===this.lockCount&&this.restore&&(this.restore?.(),this.restore=null)};lock(e){if(0===this.lockCount||null!==this.restore)return;let t=lE(e).documentElement,n=aP(t).getComputedStyle(t).overflowY;if(\"hidden\"===n||\"clip\"===n){this.restore=lj;return}let r=a9||!function(e){if(\"undefined\"==typeof document)return!1;let t=lE(e);return aP(t).innerWidth-t.documentElement.clientWidth>0}(e);this.restore=r?function(e){let t=lE(e).documentElement,n=t.style.overflow;return t.style.overflow=\"hidden\",()=>{t.style.overflow=n}}(e):function(e){let t=lE(e),n=t.documentElement,r=t.body,o=aP(n),a=0,i=0,l=iD.create();if(a6&&(o.visualViewport?.scale??1)!==1)return()=>{};function s(){let e=o.getComputedStyle(n),t=o.getComputedStyle(r);a=n.scrollTop,i=n.scrollLeft,lS={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},lB=n.style.scrollBehavior,lO={position:r.style.position,height:r.style.height,width:r.style.width,boxSizing:r.style.boxSizing,overflowY:r.style.overflowY,overflowX:r.style.overflowX,scrollBehavior:r.style.scrollBehavior};let l=\"undefined\"!=typeof CSS&&CSS.supports?.(\"scrollbar-gutter\",\"stable\"),s=n.scrollHeight>n.clientHeight,c=n.scrollWidth>n.clientWidth,u=\"scroll\"===e.overflowY||\"scroll\"===t.overflowY,d=\"scroll\"===e.overflowX||\"scroll\"===t.overflowX,f=Math.max(0,o.innerWidth-n.clientWidth),p=Math.max(0,o.innerHeight-n.clientHeight),h=parseFloat(t.marginTop)+parseFloat(t.marginBottom),m=parseFloat(t.marginLeft)+parseFloat(t.marginRight);Object.assign(n.style,{scrollbarGutter:\"stable\",overflowY:!l&&(s||u)?\"scroll\":\"hidden\",overflowX:!l&&(c||d)?\"scroll\":\"hidden\"}),Object.assign(r.style,{position:\"relative\",height:h||p?`calc(100dvh - ${h+p}px)`:\"100dvh\",width:m||f?`calc(100vw - ${m+f}px)`:\"100vw\",boxSizing:\"border-box\",overflow:\"hidden\",scrollBehavior:\"unset\"}),r.scrollTop=a,r.scrollLeft=i,n.setAttribute(\"data-base-ui-scroll-locked\",\"\"),n.style.scrollBehavior=\"unset\"}function c(){Object.assign(n.style,lS),Object.assign(r.style,lO),n.scrollTop=a,n.scrollLeft=i,n.removeAttribute(\"data-base-ui-scroll-locked\"),n.style.scrollBehavior=lB}function u(){c(),l.request(s)}return s(),o.addEventListener(\"resize\",u),()=>{l.cancel(),c(),o.removeEventListener(\"resize\",u)}}(e)}}let lI=new lP;function lz(e){if(e)return({\"focus-out\":\"focus-out\",\"escape-key\":\"escape-key\",\"outside-press\":\"outside-press\",\"list-navigation\":\"list-navigation\",click:\"trigger-press\",hover:\"trigger-hover\",focus:\"trigger-focus\",\"reference-press\":\"trigger-press\",\"safe-polygon\":\"trigger-hover\",\"ancestor-scroll\":void 0})[e]}let lT=x.createContext(void 0);function lD(e=!0){let t=x.useContext(lT);if(void 0===t&&!e)throw Error(\"Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within .\");return t}let lL=x.createContext(!1);function lN(e,t){return e&&!t?e:!e&&t?t:e||t?{...e,...t}:void 0}let lR={};function lM(e,t,n,r,o){let a={...lF(e,lR)};return t&&(a=lZ(a,t)),n&&(a=lZ(a,n)),r&&(a=lZ(a,r)),o&&(a=lZ(a,o)),a}function lZ(e,t){return lU(t)?t(e):function(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case\"style\":e[n]=lN(e.style,r);break;case\"className\":e[n]=lH(e.className,r);break;default:!function(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return 111===n&&110===r&&o>=65&&o<=90&&(\"function\"==typeof t||void 0===t)}(n,r)?e[n]=r:e[n]=function(e,t){return t?e?n=>{var r;if(null!=(r=n)&&\"object\"==typeof r&&\"nativeEvent\"in r){lq(n);let r=t(n);return n.baseUIHandlerPrevented||e?.(n),r}let o=t(n);return e?.(n),o}:t:e}(e[n],r)}}return e}(e,t)}function lU(e){return\"function\"==typeof e}function lF(e,t){return lU(e)?e(t):e??lR}function lq(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function lH(e,t){return t?e?t+\" \"+e:t:e}let lV=[],l$={current:!1},lW=function(e){let t,n,{children:r,open:o,onOpenChange:a,onOpenChangeComplete:i,defaultOpen:l=!1,disabled:s=!1,modal:c,loop:u=!0,orientation:d=\"vertical\",actionsRef:f,openOnHover:p,delay:h=100,closeDelay:m=0,closeParentOnEsc:g=!0}=e,[y,v]=x.useState(null),[A,w]=x.useState(null),[C,_]=x.useState(),[k,E]=x.useState(!0),[j,S]=x.useState(null),[O,B]=x.useState(null),[P,I]=x.useState(!0),[z,T]=x.useState(!1),D=x.useRef(null),L=x.useRef(null),N=x.useRef(null),R=x.useRef([]),M=x.useRef([]),Z=ac(),U=lD(!0),F=x.useContext(lL);{let e=lA(!0),n=function(e){let t=x.useContext(lx);if(null===t&&!e)throw Error(\"Base UI: MenubarContext is missing. Menubar parts must be placed within .\");return t}(!0);t=F&&e?{type:\"menu\",context:e}:n?{type:\"menubar\",context:n}:U?{type:\"context-menu\",context:U}:{type:void 0}}let q=ab();void 0!==t.type&&(q=t.context.rootId);let H=(void 0===t.type||\"context-menu\"===t.type)&&(c??!0),V=\"menu\"===t.type?t.context.allowMouseEnter:z,$=\"menu\"===t.type?t.context.setAllowMouseEnter:T,W=p??(\"menu\"===t.type||\"menubar\"===t.type&&t.context.hasSubmenuOpen),[Y,K]=am({controlled:o,default:l,name:\"MenuRoot\",state:\"open\"}),X=x.useRef(\"context-menu\"!==t.type),G=ac();x.useEffect(()=>{if(Y||(D.current=null),\"context-menu\"===t.type){if(!Y){G.clear(),X.current=!1;return}G.start(500,()=>{X.current=!0})}},[G,Y,t.type]);let Q=x.useCallback(e=>{N.current=e,w(e)},[]),{mounted:J,setMounted:ee,transitionStatus:et}=lw(Y),{openMethod:en,triggerProps:er,reset:eo}=function(e){let[t,n]=x.useState(null),r=af((t,r)=>{e||n(r)}),o=af(()=>{n(null)}),{onClick:a,onPointerDown:i}=function(e){let t=x.useRef(\"\"),n=x.useCallback(n=>{n.defaultPrevented||(t.current=n.pointerType,e(n,n.pointerType))},[e]);return{onClick:x.useCallback(n=>{if(0===n.detail)return void e(n,\"keyboard\");\"pointerType\"in n&&e(n,n.pointerType),e(n,t.current),t.current=\"\"},[e]),onPointerDown:n}}(r);return x.useMemo(()=>({openMethod:t,reset:o,triggerProps:{onClick:a,onPointerDown:i}}),[t,o,a,i])}(Y);var ea={enabled:Y&&H&&\"trigger-hover\"!==O&&\"touch\"!==en,mounted:J,open:Y,referenceElement:A};let{enabled:ei=!0,mounted:el,open:es,referenceElement:ec=null}=ea;ax(()=>{if(ei&&a6&&el&&!es){let e=lE(ec),t=e.body.style.userSelect,n=e.body.style.webkitUserSelect;return e.body.style.userSelect=\"none\",e.body.style.webkitUserSelect=\"none\",()=>{e.body.style.userSelect=t,e.body.style.webkitUserSelect=n}}},[ei,el,es,ec]),ax(()=>{if(ei)return lI.acquire(ec)},[ei,ec]),Y||k||E(!0);let eu=af(()=>{ee(!1),I(!0),$(!1),i?.(!1),eo()});lC({enabled:!f,open:Y,ref:L,onComplete(){Y||eu()}});let ed=x.useRef(!0),ep=ac(),eh=af((e,n,r)=>{if(Y===e||!1===e&&n?.type===\"click\"&&\"touch\"===n.pointerType&&!ed.current)return;if(!e&&null!==j){let e=R.current[j];queueMicrotask(()=>{e?.setAttribute(\"tabindex\",\"-1\")})}e&&\"trigger-focus\"===r?(ed.current=!1,ep.start(300,()=>{ed.current=!0})):(ed.current=!0,ep.clear());let o=(\"trigger-press\"===r||\"item-press\"===r)&&0===n.detail&&n?.isTrusted,i=!e&&(\"escape-key\"===r||null==r);function l(){a?.(e,n,r),K(e),B(r??null),D.current=n??null}\"trigger-hover\"===r?(I(!0),Z.start(500,()=>{I(!1)}),ef.flushSync(l)):l(),\"menubar\"===t.type&&(\"trigger-focus\"===r||\"focus-out\"===r||\"trigger-hover\"===r||\"list-navigation\"===r||\"sibling-open\"===r)?_(\"group\"):o||i?_(o?\"click\":\"dismiss\"):_(void 0)});x.useImperativeHandle(f,()=>({unmount:eu}),[eu]),\"context-menu\"===t.type&&(n=t.context),x.useImperativeHandle(n?.positionerRef,()=>A,[A]),x.useImperativeHandle(n?.actionsRef,()=>({setOpen:eh}),[eh]),x.useEffect(()=>{Y||Z.clear()},[Z,Y]);let em=aS({elements:{reference:y,floating:A},open:Y,onOpenChange(e,t,n){eh(e,t,lz(n))}}),eg=ij(em,{enabled:k&&W&&!s&&\"context-menu\"!==t.type&&(\"menubar\"!==t.type||t.context.hasSubmenuOpen&&!Y),handleClose:iP({blockPointerEvents:!0}),mouseOnly:!0,move:\"menu\"===t.type,restMs:void 0===t.type||\"menu\"===t.type&&V?h:void 0,delay:\"menu\"===t.type?{open:V?h:1e10,close:m}:{close:m}}),ey=iz(em,{enabled:!s&&!Y&&\"menubar\"===t.type&&t.context.hasSubmenuOpen&&!U}),ev=function(e,t={}){let{open:n,onOpenChange:r,dataRef:o}=e,{enabled:a=!0,event:i=\"click\",toggle:l=!0,ignoreMouse:s=!1,stickIfOpen:c=!0}=t,u=x.useRef(void 0),d=iL(),f=x.useMemo(()=>({onPointerDown(e){u.current=e.pointerType},onMouseDown(e){let t=u.current,a=e.nativeEvent;if(0!==e.button||\"click\"===i||ii(t,!0)&&s)return;let f=o.current.openEvent,p=f?.type,h=!(n&&l&&(!f||!c||\"click\"===p||\"mousedown\"===p));d.request(()=>{r(h,a,\"click\")})},onClick(e){let t=u.current;if(\"mousedown\"===i&&t){u.current=void 0;return}if(ii(t,!0)&&s)return;let a=o.current.openEvent,d=a?.type;r(!(n&&l&&(!a||!c||\"click\"===d||\"mousedown\"===d||\"keydown\"===d||\"keyup\"===d)),e.nativeEvent,\"click\")},onKeyDown(){u.current=void 0}}),[o,i,s,r,n,c,l,d]);return x.useMemo(()=>a?{reference:f}:iR,[a,f])}(em,{enabled:!s&&\"context-menu\"!==t.type,event:Y&&\"menubar\"===t.type?\"click\":\"mousedown\",toggle:!W||\"menu\"!==t.type,ignoreMouse:W&&\"menu\"===t.type,stickIfOpen:void 0===t.type&&P}),eb=iH(em,{enabled:!s,bubbles:g&&\"menu\"===t.type,outsidePress:()=>\"context-menu\"!==t.type||D.current?.type===\"contextmenu\"||X.current}),eA=function(e,t={}){let{open:n,elements:r,floatingId:o}=e,{enabled:a=!0,role:i=\"dialog\"}=t,l=ab(),s=r.domReference?.id||l,c=x.useMemo(()=>iw(r.floating)?.id||o,[r.floating,o]),u=iV.get(i)??i,d=null!=a_(),f=x.useMemo(()=>\"tooltip\"===u||\"label\"===i?{[`aria-${\"label\"===i?\"labelledby\":\"describedby\"}`]:n?c:void 0}:{\"aria-expanded\":n?\"true\":\"false\",\"aria-haspopup\":\"alertdialog\"===u?\"dialog\":u,\"aria-controls\":n?c:void 0,...\"listbox\"===u&&{role:\"combobox\"},...\"menu\"===u&&{id:s},...\"menu\"===u&&d&&{role:\"menuitem\"},...\"select\"===i&&{\"aria-autocomplete\":\"none\"},...\"combobox\"===i&&{\"aria-autocomplete\":\"list\"}},[u,c,d,n,s,i]),p=x.useMemo(()=>{let e={id:c,...u&&{role:u}};return\"tooltip\"===u||\"label\"===i?e:{...e,...\"menu\"===u&&{\"aria-labelledby\":s}}},[u,c,s,i]),h=x.useCallback(({active:e,selected:t})=>{let n={role:\"option\",...e&&{id:`${c}-fui-option`}};switch(i){case\"select\":case\"combobox\":return{...n,\"aria-selected\":t}}return{}},[c,i]);return x.useMemo(()=>a?{reference:f,floating:p,item:h}:{},[a,f,p,h])}(em,{role:\"menu\"}),ex=lk(),ew=function(e,t){let{open:n,onOpenChange:r,elements:o,floatingId:a}=e,{listRef:i,activeIndex:l,onNavigate:s=()=>{},enabled:c=!0,selectedIndex:u=null,allowEscape:d=!1,loop:f=!1,nested:p=!1,rtl:h=!1,virtual:m=!1,focusItemOnOpen:g=\"auto\",focusItemOnHover:y=!0,openOnArrowKeyDown:v=!0,disabledIndices:b,orientation:A=\"vertical\",parentOrientation:w,cols:C=1,scrollItemIntoView:_=!0,virtualItemRef:k,itemSizes:E,dense:j=!1}=t,S=a0(iw(o.floating)),O=a_(),B=ak();ax(()=>{e.dataRef.current.orientation=A},[e,A]);let P=ix(o.domReference),I=x.useRef(g),z=x.useRef(u??-1),T=x.useRef(null),D=x.useRef(!0),L=af(()=>{s(-1===z.current?null:z.current)}),N=x.useRef(L),R=x.useRef(!!o.floating),M=x.useRef(n),Z=x.useRef(!1),U=x.useRef(!1),F=a0(b),q=a0(n),H=a0(_),V=a0(u),[$,W]=x.useState(),Y=af(()=>{function e(e){m?(e.id?.endsWith(\"-fui-option\")&&(e.id=`${a}-${Math.random().toString(16).slice(2,10)}`),W(e.id),B?.events.emit(\"virtualfocus\",e),k&&(k.current=e)):lf(e,{sync:Z.current,preventScroll:!0})}let t=i.current[z.current],n=U.current;t&&e(t),(Z.current?e=>e():requestAnimationFrame)(()=>{let r=i.current[z.current]||t;if(!r)return;t||e(r);let o=H.current;o&&X&&(n||!D.current)&&r.scrollIntoView?.(\"boolean\"==typeof o?{block:\"nearest\",inline:\"nearest\"}:o)})});ax(()=>{c&&(n&&o.floating?I.current&&null!=u&&(U.current=!0,z.current=u,L()):R.current&&(z.current=-1,N.current()))},[c,n,o.floating,u,L]),ax(()=>{if(c&&n&&o.floating)if(null==l){if(Z.current=!1,null!=V.current)return;if(R.current&&(z.current=-1,Y()),(!M.current||!R.current)&&I.current&&(null!=T.current||!0===I.current&&null==T.current)){let e=0,t=()=>{null==i.current[0]?(e<2&&(e?requestAnimationFrame:queueMicrotask)(t),e+=1):(z.current=null==T.current||lm(T.current,A,h)||p?ll(i,F.current):ls(i,F.current),T.current=null,L())};t()}}else li(i,l)||(z.current=l,Y(),U.current=!1)},[c,n,o.floating,l,V,p,i,A,h,L,Y,F]),ax(()=>{if(!c||o.floating||!B||m||!R.current)return;let e=B.nodesRef.current,t=e.find(e=>e.id===O)?.context?.elements.floating,n=im(ib(o.floating)),r=e.some(e=>e.context&&ig(e.context.elements.floating,n));t&&!r&&D.current&&t.focus({preventScroll:!0})},[c,o.floating,B,O,m]),ax(()=>{N.current=L,M.current=n,R.current=!!o.floating}),ax(()=>{n||(T.current=null,I.current=g)},[n,g]);let K=null!=l,X=x.useMemo(()=>{function e(e){if(!q.current)return;let t=i.current.indexOf(e);-1!==t&&z.current!==t&&(z.current=t,L())}return{onFocus({currentTarget:t}){Z.current=!0,e(t)},onClick:({currentTarget:e})=>e.focus({preventScroll:!0}),onMouseMove({currentTarget:t}){Z.current=!0,U.current=!1,y&&e(t)},onPointerLeave({pointerType:e}){D.current&&\"touch\"!==e&&(Z.current=!0,y&&(z.current=-1,L(),m||S.current?.focus({preventScroll:!0})))}}},[q,S,y,i,L,m]),G=x.useCallback(()=>w??B?.nodesRef.current.find(e=>e.id===O)?.context?.dataRef?.current.orientation,[O,B,w]),Q=af(e=>{var t,a,l,s,c;if(D.current=!1,Z.current=!0,229===e.which||!q.current&&e.currentTarget===S.current)return;if(p&&(t=e.key,a=A,l=h,s=C,\"both\"===a||\"horizontal\"===a&&s&&s>1?\"Escape\"===t:lp(a,l?t===id:t===iu,t===ip))){lh(e.key,G())||ir(e),r(!1,e.nativeEvent,\"list-navigation\"),aD(o.domReference)&&(m?B?.events.emit(\"virtualfocus\",o.domReference):o.domReference.focus());return}let u=z.current,g=ll(i,b),y=ls(i,b);if(P||(\"Home\"===e.key&&(ir(e),z.current=g,L()),\"End\"===e.key&&(ir(e),z.current=y,L())),C>1){let t=E||Array.from({length:i.current.length},()=>({width:1,height:1})),n=function(e,t,n){let r=[],o=0;return e.forEach(({width:e,height:a},i)=>{let l=!1;for(n&&(o=0);!l;){let n=[];for(let r=0;rnull==r[e])?(n.forEach(e=>{r[e]=i}),l=!0):o+=1}}),[...r]}(t,C,j),r=n.findIndex(e=>null!=e&&!lu(i,e,b)),o=n.reduce((e,t,n)=>null==t||lu(i,t,b)?e:n,-1),a=n[function(e,{event:t,orientation:n,loop:r,rtl:o,cols:a,disabledIndices:i,minIndex:l,maxIndex:s,prevIndex:c,stopEvent:u=!1}){let d=c;if(t.key===ip){if(u&&ir(t),-1===c)d=s;else if(d=lc(e,{startingIndex:d,amount:a,decrement:!0,disabledIndices:i}),r&&(c-ae?n:n-a}li(e,d)&&(d=c)}if(t.key===ih&&(u&&ir(t),-1===c?d=l:(d=lc(e,{startingIndex:c,amount:a,disabledIndices:i}),r&&c+a>s&&(d=lc(e,{startingIndex:c%a-a,amount:a,disabledIndices:i}))),li(e,d)&&(d=c)),\"both\"===n){let n=iX(c/a);t.key===(o?iu:id)&&(u&&ir(t),c%a!=a-1?(d=lc(e,{startingIndex:c,disabledIndices:i}),r&&la(d,a,n)&&(d=lc(e,{startingIndex:c-c%a-1,disabledIndices:i}))):r&&(d=lc(e,{startingIndex:c-c%a-1,disabledIndices:i})),la(d,a,n)&&(d=c)),t.key===(o?id:iu)&&(u&&ir(t),c%a!=0?(d=lc(e,{startingIndex:c,decrement:!0,disabledIndices:i}),r&&la(d,a,n)&&(d=lc(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i}))):r&&(d=lc(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i})),la(d,a,n)&&(d=c));let l=iX(s/a)===n;li(e,d)&&(d=r&&l?t.key===(o?id:iu)?s:lc(e,{startingIndex:c-c%a-1,disabledIndices:i}):c)}return d}({current:n.map(e=>null!=e?i.current[e]:null)},{event:e,orientation:A,loop:f,rtl:h,cols:C,disabledIndices:(c=[...(\"function\"!=typeof b?b:null)||i.current.map((e,t)=>lu(i,t,b)?t:void 0),void 0],n.flatMap((e,t)=>c.includes(e)?[t]:[])),minIndex:r,maxIndex:o,prevIndex:function(e,t,n,r,o){if(-1===e)return -1;let a=n.indexOf(e),i=t[e];switch(o){case\"tl\":return a;case\"tr\":if(!i)return a;return a+i.width-1;case\"bl\":if(!i)return a;return a+(i.height-1)*r;case\"br\":return n.lastIndexOf(e);default:return -1}}(z.current>y?g:z.current,t,n,C,e.key===ih?\"bl\":e.key===(h?iu:id)?\"tr\":\"tl\"),stopEvent:!0})];if(null!=a&&(z.current=a,L()),\"both\"===A)return}if(lh(e.key,A)){if(ir(e),n&&!m&&im(e.currentTarget.ownerDocument)===e.currentTarget){z.current=lm(e.key,A,h)?g:y,L();return}lm(e.key,A,h)?f?z.current=u>=y?d&&u!==i.current.length?-1:g:lc(i,{startingIndex:u,disabledIndices:b}):z.current=Math.min(y,lc(i,{startingIndex:u,disabledIndices:b})):f?z.current=u<=g?d&&-1!==u?i.current.length:y:lc(i,{startingIndex:u,decrement:!0,disabledIndices:b}):z.current=Math.max(g,lc(i,{startingIndex:u,decrement:!0,disabledIndices:b})),li(i,z.current)&&(z.current=-1),L()}}),J=x.useMemo(()=>m&&n&&K&&{\"aria-activedescendant\":$},[m,n,K,$]),ee=x.useMemo(()=>({\"aria-orientation\":\"both\"===A?void 0:A,...!P?J:{},onKeyDown(e){if(\"Tab\"===e.key&&e.shiftKey&&n&&!m){ir(e),r(!1,e.nativeEvent,\"list-navigation\"),aD(o.domReference)&&o.domReference.focus();return}Q(e)},onPointerMove(){D.current=!0}}),[J,Q,A,P,r,n,m,o.domReference]),et=x.useMemo(()=>{function e(e){\"auto\"===g&&io(e.nativeEvent)&&(I.current=!0)}function t(e){I.current=g,\"auto\"===g&&ia(e.nativeEvent)&&(I.current=!0)}return{...J,onKeyDown(e){var t,o;D.current=!1;let a=e.key.startsWith(\"Arrow\"),l=(t=e.key,o=G(),lp(o,h?t===iu:t===id,t===ih)),s=lh(e.key,A),c=(p?l:s)||\"Enter\"===e.key||\"\"===e.key.trim();if(m&&n)return Q(e);if(n||v||!a){if(c){let t=lh(e.key,G());T.current=p&&t?null:e.key}if(p){l&&(ir(e),n?(z.current=ll(i,F.current),L()):r(!0,e.nativeEvent,\"list-navigation\"));return}s&&(null!=u&&(z.current=u),ir(e),!n&&v?r(!0,e.nativeEvent,\"list-navigation\"):Q(e),n&&L())}},onFocus(){n&&!m&&(z.current=-1,L())},onPointerDown:t,onPointerEnter:t,onMouseDown:e,onClick:e}},[J,Q,F,g,i,p,L,r,n,v,A,G,h,u,m]);return x.useMemo(()=>c?{reference:et,floating:ee,item:X}:{},[c,et,ee,X])}(em,{enabled:!s,listRef:R,activeIndex:j,nested:void 0!==t.type,loop:u,orientation:d,parentOrientation:\"menubar\"===t.type?t.context.orientation:void 0,rtl:\"rtl\"===ex,disabledIndices:lV,onNavigate:S,openOnArrowKeyDown:\"context-menu\"!==t.type}),eC=x.useRef(!1),e_=function(e,t){let{open:n,dataRef:r}=e,{listRef:o,activeIndex:a,onMatch:i,onTypingChange:l,enabled:s=!0,findMatch:c=null,resetMs:u=750,ignoreKeys:d=[],selectedIndex:f=null}=t,p=ac(),h=x.useRef(\"\"),m=x.useRef(f??a??-1),g=x.useRef(null),y=af(i),v=af(l),b=a0(c),A=a0(d);ax(()=>{n&&(p.clear(),g.current=null,h.current=\"\")},[n,p]),ax(()=>{n&&\"\"===h.current&&(m.current=f??a??-1)},[n,f,a]);let w=af(e=>{e?r.current.typing||(r.current.typing=e,v(e)):r.current.typing&&(r.current.typing=e,v(e))}),C=af(e=>{function t(e,t,n){let r=b.current?b.current(t,n):t.find(e=>e?.toLocaleLowerCase().indexOf(n.toLocaleLowerCase())===0);return r?e.indexOf(r):-1}let r=o.current;if(h.current.length>0&&\" \"!==h.current[0]&&(-1===t(r,r,h.current)?w(!1):\" \"===e.key&&ir(e)),null==r||A.current.includes(e.key)||1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey)return;n&&\" \"!==e.key&&(ir(e),w(!0)),r.every(e=>!e||e[0]?.toLocaleLowerCase()!==e[1]?.toLocaleLowerCase())&&h.current===e.key&&(h.current=\"\",m.current=g.current),h.current+=e.key,p.start(u,()=>{h.current=\"\",m.current=g.current,w(!1)});let a=m.current,i=t(r,[...r.slice((a||0)+1),...r.slice(0,(a||0)+1)],h.current);-1!==i?(y(i),g.current=i):\" \"!==e.key&&(h.current=\"\",w(!1))}),_=x.useMemo(()=>({onKeyDown:C}),[C]),k=x.useMemo(()=>({onKeyDown:C,onKeyUp(e){\" \"===e.key&&w(!1)}}),[C,w]);return x.useMemo(()=>s?{reference:_,floating:k}:{},[s,_,k])}(em,{listRef:M,activeIndex:j,resetMs:500,onMatch:e=>{Y&&e!==j&&S(e)},onTypingChange:x.useCallback(e=>{eC.current=e},[])}),{getReferenceProps:ek,getFloatingProps:eE,getItemProps:ej}=lg([eg,ev,eb,ey,eA,ew,e_]),eS=function(e){let{enabled:t=!0,mouseDownAction:n,open:r}=e,o=x.useRef(!1);return x.useMemo(()=>t?{onMouseDown:e=>{(\"open\"===n&&!r||\"close\"===n&&r)&&(o.current=!0,lE(e.currentTarget).addEventListener(\"click\",()=>{o.current=!1},{once:!0}))},onClick:e=>{o.current&&(o.current=!1,e.preventBaseUIHandler())}}:iR,[t,n,r])}({open:Y,enabled:\"menubar\"===t.type,mouseDownAction:\"open\"}),eO=x.useMemo(()=>{let e=lM(ek(),{onMouseEnter(){E(!0)},onMouseMove(){$(!0)}},er,eS);return delete e.role,e},[ek,eS,$,er]),eB=x.useMemo(()=>eE({onMouseEnter(){W&&\"menu\"!==t.type||E(!1)},onMouseMove(){$(!0)},onClick(){W&&E(!1)}}),[eE,W,t.type,$]),eP=x.useMemo(()=>ej(),[ej]),eI=x.useMemo(()=>({activeIndex:j,setActiveIndex:S,allowMouseUpTriggerRef:t.type?t.context.allowMouseUpTriggerRef:l$,floatingRootContext:em,itemProps:eP,popupProps:eB,triggerProps:eO,itemDomElements:R,itemLabels:M,mounted:J,open:Y,popupRef:L,positionerRef:N,setOpen:eh,setPositionerElement:Q,triggerElement:y,setTriggerElement:v,transitionStatus:et,lastOpenChangeReason:O,instantType:C,onOpenChangeComplete:i,setHoverEnabled:E,typingRef:eC,modal:H,disabled:s,parent:t,rootId:q,allowMouseEnter:V,setAllowMouseEnter:$}),[j,em,eP,eB,eO,R,M,J,Y,N,eh,et,y,Q,O,C,i,H,s,t,q,V,$]),ez=(0,b.jsx)(lb.Provider,{value:eI,children:r});return void 0===t.type||\"context-menu\"===t.type?(0,b.jsx)(aj,{children:ez}):ez};function lY(e,t,n,r){var o,a,i,l,s;let c=aa(lK).current;return o=c,a=e,i=t,l=n,s=r,(o.refs[0]!==a||o.refs[1]!==i||o.refs[2]!==l||o.refs[3]!==s)&&lX(c,[e,t,n,r]),c.callback}function lK(){return{callback:null,cleanup:null,refs:[]}}function lX(e,t){if(e.refs=t,t.every(e=>null==e)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){let r=Array(t.length).fill(null);for(let e=0;e{for(let e=0;e\"starting\"===e?lQ:\"ending\"===e?lJ:null},l1=function(e){return e.open=\"data-open\",e.closed=\"data-closed\",e[e.startingStyle=lG.startingStyle]=\"startingStyle\",e[e.endingStyle=lG.endingStyle]=\"endingStyle\",e.anchorHidden=\"data-anchor-hidden\",e}({}),l2=function(e){return e.popupOpen=\"data-popup-open\",e.pressed=\"data-pressed\",e}({}),l4={[l2.popupOpen]:\"\"},l5={[l2.popupOpen]:\"\",[l2.pressed]:\"\"},l3={[l1.open]:\"\"},l6={[l1.closed]:\"\"},l9={[l1.anchorHidden]:\"\"},l8={open:e=>e?l4:null},l7={open:e=>e?l5:null},se={open:e=>e?l3:l6,anchorHidden:e=>e?l9:null},st=parseInt(x.version,10);function sn(e,t,n={}){let r=t.render,o=function(e,t={}){var n,r;let o,{className:a,render:i}=e,{state:l=iR,ref:s,props:c,disableStyleHooks:u,customStyleHookMapping:d,enabled:f=!0}=t,p=f?(n=a,r=l,\"function\"==typeof n?n(r):n):void 0;!0!==u&&(o=x.useMemo(()=>f?function(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let e=t[r](o);null!=e&&Object.assign(n,e);continue}!0===o?n[`data-${r.toLowerCase()}`]=\"\":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}(l,d):iR,[l,d,f]));let h=f?lN(o,Array.isArray(c)?function(e){if(0===e.length)return lR;if(1===e.length)return lF(e[0],lR);let t={...lF(e[0],lR)};for(let n=1;ne!==n[t]))&&lX(r,e),r.callback}([h.ref,sr(i),...s]):h.ref=lY(h.ref,sr(i),s):lY(null,null)),f)?(void 0!==p&&(h.className=lH(h.className,p)),h):iR}(t,n);return!1===n.enabled?null:function(e,t,n,r){if(t){if(\"function\"==typeof t)return t(n,r);let e=lM(n,t.props);return e.ref=n.ref,x.cloneElement(t,e)}if(e&&\"string\"==typeof e){var o,a;return o=e,a=n,\"button\"===o?(0,b.jsx)(\"button\",{type:\"button\",...a}):\"img\"===o?(0,b.jsx)(\"img\",{alt:\"\",...a}):x.createElement(o,a)}throw Error(\"Base UI: Render element or function are not defined.\")}(e,r,o,n.state??iR)}function sr(e){return e&&\"function\"!=typeof e?st>=19?e.props.ref:e.ref:null}let so=x.createContext(void 0);function sa(e=!1){let t=x.useContext(so);if(void 0===t&&!e)throw Error(\"Base UI: CompositeRootContext is missing. Composite parts must be placed within .\");return t}function si(e={}){let{disabled:t=!1,focusableWhenDisabled:n,tabIndex:r=0,native:o=!0}=e,a=x.useRef(null),i=void 0!==sa(!0),l=af(()=>{let e=a.current;return!!(e?.tagName===\"A\"&&e?.href)}),{props:s}=function(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:o=0,isNativeButton:a}=e,i=r&&!1!==t,l=r&&!1===t;return{props:x.useMemo(()=>{let e={onKeyDown(e){n&&t&&\"Tab\"!==e.key&&e.preventDefault()}};return r||(e.tabIndex=o,!a&&n&&(e.tabIndex=t?o:-1)),(a&&(t||i)||!a&&n)&&(e[\"aria-disabled\"]=n),a&&(!t||l)&&(e.disabled=n),e},[r,n,t,i,l,a,o])}}({focusableWhenDisabled:n,disabled:t,composite:i,tabIndex:r,isNativeButton:o});return ax(()=>{let e=a.current;e instanceof HTMLButtonElement&&i&&t&&void 0===s.disabled&&e.disabled&&(e.disabled=!1)},[t,s.disabled,i]),{getButtonProps:x.useCallback((e={})=>{let{onClick:n,onMouseDown:r,onKeyUp:a,onKeyDown:i,onPointerDown:c,...u}=e;return lM({type:o?\"button\":void 0,onClick(e){if(t)return void e.preventDefault();n?.(e)},onMouseDown(e){t||r?.(e)},onKeyDown(e){if(t||(lq(e),i?.(e)),e.baseUIHandlerPrevented)return;let r=e.target===e.currentTarget&&!o&&!l()&&!t,a=\"Enter\"===e.key,s=\" \"===e.key;r&&((s||a)&&e.preventDefault(),a&&n?.(e))},onKeyUp(e){t||(lq(e),a?.(e)),!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||o||t||\" \"!==e.key||n?.(e))},onPointerDown(e){if(t)return void e.preventDefault();c?.(e)}},o?void 0:{role:\"button\"},s,u)},[t,s,o,l]),buttonRef:a}}let sl=x.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}}),ss=function(e){return e[e.None=0]=\"None\",e[e.GuessFromOrder=1]=\"GuessFromOrder\",e}({});function sc(e={}){let{label:t,metadata:n,textRef:r,indexGuessBehavior:o}=e,{register:a,unregister:i,subscribeMapChange:l,elementsRef:s,labelsRef:c,nextIndexRef:u}=x.useContext(sl),d=x.useRef(-1),[f,p]=x.useState(o===ss.GuessFromOrder?()=>{if(-1===d.current){let e=u.current;u.current+=1,d.current=e}return d.current}:-1),h=x.useRef(null),m=x.useCallback(e=>{if(h.current=e,-1!==f&&null!==e&&(s.current[f]=e,c)){let n=void 0!==t;c.current[f]=n?t:r?.current?.textContent??e.textContent}},[f,s,c,t,r]);return ax(()=>{let e=h.current;if(e)return a(e,n),()=>{i(e)}},[a,i,n]),ax(()=>l(e=>{let t=h.current?e.get(h.current)?.index:null;null!=t&&p(t)}),[l,p]),x.useMemo(()=>({ref:m,index:f}),[f,m])}function su(e){let{render:t,className:n,state:r=iR,props:o=iM,refs:a=iM,metadata:i,customStyleHookMapping:l,tag:s=\"div\",...c}=e,{compositeProps:u,compositeRef:d}=function(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=sa(),{ref:o,index:a}=sc(e),i=n===a,l=x.useRef(null),s=lY(o,l);return{compositeProps:x.useMemo(()=>({tabIndex:i?0:-1,onFocus(){r(a)},onMouseMove(){let e=l.current;if(!t||!e)return;let n=e.hasAttribute(\"disabled\")||\"true\"===e.ariaDisabled;i||n||e.focus()}}),[i,r,a,t]),compositeRef:s,index:a}}({metadata:i});return sn(s,e,{state:r,ref:[...a,d],props:[u,...o,c],customStyleHookMapping:l})}let sd=x.forwardRef(function(e,t){let{render:n,className:r,disabled:o=!1,nativeButton:a=!0,...i}=e,{triggerProps:l,disabled:s,setTriggerElement:c,open:u,allowMouseUpTriggerRef:d,positionerRef:f,parent:p,lastOpenChangeReason:h,rootId:m}=lA(),g=o||s,y=x.useRef(null),v=ac(),{getButtonProps:A,buttonRef:w}=si({disabled:g,native:a}),C=lY(w,c),{events:_}=ak();x.useEffect(()=>{u||void 0!==p.type||(d.current=!1)},[d,u,p.type]);let k=af(e=>{if(!y.current)return;v.clear(),d.current=!1;let t=e.target;if(ig(y.current,t)||ig(f.current,t)||t===y.current||null!=t&&function e(t){return aD(t)&&t.hasAttribute(\"data-rootownerid\")?t.getAttribute(\"data-rootownerid\")??void 0:aY(t)?void 0:e(aG(t))}(t)===m)return;let n=function(e){let t=e.getBoundingClientRect(),n=window.getComputedStyle(e,\"::before\"),r=window.getComputedStyle(e,\"::after\");if(\"none\"===n.content&&\"none\"===r.content)return t;let o=parseFloat(n.width)||0,a=parseFloat(n.height)||0,i=parseFloat(r.width)||0,l=parseFloat(r.height)||0,s=Math.max(t.width,o,i),c=Math.max(t.height,a,l),u=s-t.width,d=c-t.height;return{left:t.left-u/2,right:t.right+u/2,top:t.top-d/2,bottom:t.bottom+d/2}}(y.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||_.emit(\"close\",{domEvent:e,reason:\"cancel-open\"})});x.useEffect(()=>{u&&\"trigger-hover\"===h&&lE(y.current).addEventListener(\"mouseup\",k,{once:!0})},[u,k,h]);let E=\"menubar\"===p.type,j=x.useCallback(e=>lM(E?{role:\"menuitem\"}:{},{\"aria-haspopup\":\"menu\",ref:C,onMouseDown:e=>{u||(v.start(200,()=>{d.current=!0}),lE(e.currentTarget).addEventListener(\"mouseup\",k,{once:!0}))}},e,A),[A,C,u,d,v,k,E]),S=x.useMemo(()=>({disabled:g,open:u}),[g,u]),O=[y,t,w],B=[l,i,j],P=sn(\"button\",e,{enabled:!E,customStyleHookMapping:l7,state:S,ref:O,props:B});return E?(0,b.jsx)(su,{tag:\"button\",render:n,className:r,state:S,refs:O,props:B,customStyleHookMapping:l7}):P}),sf={clip:\"rect(0 0 0 0)\",overflow:\"hidden\",whiteSpace:\"nowrap\",position:\"fixed\",top:0,left:0,border:0,padding:0,width:1,height:1,margin:-1},sp=x.forwardRef(function(e,t){let[n,r]=x.useState();return ax(()=>{a8&&r(\"button\")},[]),(0,b.jsx)(\"span\",{...e,ref:t,tabIndex:0,role:n,\"aria-hidden\":!n||void 0,style:sf,\"data-base-ui-focus-guard\":\"\"})});var sh='input:not([inert]),select:not([inert]),textarea:not([inert]),a[href]:not([inert]),button:not([inert]),[tabindex]:not(slot):not([inert]),audio[controls]:not([inert]),video[controls]:not([inert]),[contenteditable]:not([contenteditable=\"false\"]):not([inert]),details>summary:first-of-type:not([inert]),details:not([inert])',sm=\"undefined\"==typeof Element,sg=sm?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,sy=!sm&&Element.prototype.getRootNode?function(e){var t;return null==e||null==(t=e.getRootNode)?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},sv=function e(t,n){void 0===n&&(n=!0);var r,o=null==t||null==(r=t.getAttribute)?void 0:r.call(t,\"inert\");return\"\"===o||\"true\"===o||n&&t&&e(t.parentNode)},sb=function(e){var t,n=null==e||null==(t=e.getAttribute)?void 0:t.call(e,\"contenteditable\");return\"\"===n||\"true\"===n},sA=function(e,t,n){if(sv(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(sh));return t&&sg.call(e,sh)&&r.unshift(e),r=r.filter(n)},sx=function e(t,n,r){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!sv(i,!1))if(\"SLOT\"===i.tagName){var l=i.assignedElements(),s=e(l.length?l:i.children,!0,r);r.flatten?o.push.apply(o,s):o.push({scopeParent:i,candidates:s})}else{sg.call(i,sh)&&r.filter(i)&&(n||!t.includes(i))&&o.push(i);var c=i.shadowRoot||\"function\"==typeof r.getShadowRoot&&r.getShadowRoot(i),u=!sv(c,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(c&&u){var d=e(!0===c?i.children:c.children,!0,r);r.flatten?o.push.apply(o,d):o.push({scopeParent:i,candidates:d})}else a.unshift.apply(a,i.children)}}return o},sw=function(e){return!isNaN(parseInt(e.getAttribute(\"tabindex\"),10))},sC=function(e){if(!e)throw Error(\"No node provided\");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||sb(e))&&!sw(e)?0:e.tabIndex},s_=function(e,t){var n=sC(e);return n<0&&t&&!sw(e)?0:n},sk=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},sE=function(e){return\"INPUT\"===e.tagName},sj=function(e,t){for(var n=0;nsummary:first-of-type\")?e.parentElement:e;if(sg.call(o,\"details:not([open]) *\"))return!0;if(n&&\"full\"!==n&&\"legacy-full\"!==n){if(\"non-zero-area\"===n)return sP(e)}else{if(\"function\"==typeof r){for(var a=e;e;){var i=e.parentElement,l=sy(e);if(i&&!i.shadowRoot&&!0===r(i))return sP(e);e=e.assignedSlot?e.assignedSlot:i||l===e.ownerDocument?i:l.host}e=a}if(sB(e))return!e.getClientRects().length;if(\"legacy-full\"!==n)return!0}return!1},sz=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(\"FIELDSET\"===t.tagName&&t.disabled){for(var n=0;nsC(t))&&!!sT(e,t)},sL=function(e){var t=parseInt(e.getAttribute(\"tabindex\"),10);return!!isNaN(t)||!!(t>=0)},sN=function e(t){var n=[],r=[];return t.forEach(function(t,o){var a=!!t.scopeParent,i=a?t.scopeParent:t,l=s_(i,a),s=a?e(t.candidates):i;0===l?a?n.push.apply(n,s):n.push(i):r.push({documentOrder:o,tabIndex:l,item:t,isScope:a,content:s})}),r.sort(sk).reduce(function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e},[]).concat(n)},sR=function(e,t){return sN((t=t||{}).getShadowRoot?sx([e],t.includeContainer,{filter:sD.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:sL}):sA(e,t.includeContainer,sD.bind(null,t)))},sM=function(e,t){return(t=t||{}).getShadowRoot?sx([e],t.includeContainer,{filter:sT.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):sA(e,t.includeContainer,sT.bind(null,t))},sZ=function(e,t){if(t=t||{},!e)throw Error(\"No node provided\");return!1!==sg.call(e,sh)&&sD(t,e)};let sU=()=>({getShadowRoot:!0,displayCheck:\"function\"==typeof ResizeObserver&&ResizeObserver.toString().includes(\"[native code]\")?\"full\":\"none\"});function sF(e,t){let n=sR(e,sU()),r=n.length;if(0===r)return;let o=im(ib(e)),a=n.indexOf(o);return n[-1===a?1===t?0:r-1:a+t]}function sq(e){return sF(ib(e).body,1)||e}function sH(e){return sF(ib(e).body,-1)||e}function sV(e,t){let n=t||e.currentTarget,r=e.relatedTarget;return!r||!ig(n,r)}function s$(e){sR(e,sU()).forEach(e=>{e.dataset.tabindex=e.getAttribute(\"tabindex\")||\"\",e.setAttribute(\"tabindex\",\"-1\")})}function sW(e){e.querySelectorAll(\"[data-tabindex]\").forEach(e=>{let t=e.dataset.tabindex;delete e.dataset.tabindex,t?e.setAttribute(\"tabindex\",t):e.removeAttribute(\"tabindex\")})}let sY=x.createContext(null),sK=()=>x.useContext(sY),sX=iC(\"portal\");function sG(e={}){let{id:t,root:n}=e,r=ab(),o=sK(),[a,i]=x.useState(null),l=x.useRef(null);return ax(()=>()=>{a?.remove(),queueMicrotask(()=>{l.current=null})},[a]),ax(()=>{if(!r||l.current)return;let e=t?document.getElementById(t):null;if(!e)return;let n=document.createElement(\"div\");n.id=r,n.setAttribute(sX,\"\"),e.appendChild(n),l.current=n,i(n)},[t,r]),ax(()=>{if(null===n||!r||l.current)return;let e=n||o?.portalNode;e&&!az(e)&&(e=e.current),e=e||document.body;let a=null;t&&((a=document.createElement(\"div\")).id=t,e.appendChild(a));let s=document.createElement(\"div\");s.id=r,s.setAttribute(sX,\"\"),(e=a||e).appendChild(s),l.current=s,i(s)},[t,n,r,o]),a}function sQ(e){let{children:t,id:n,root:r,preserveTabOrder:o=!0}=e,a=sG({id:n,root:r}),[i,l]=x.useState(null),s=x.useRef(null),c=x.useRef(null),u=x.useRef(null),d=x.useRef(null),f=i?.modal,p=i?.open,h=!!i&&!i.modal&&i.open&&o&&!!(r||a);return x.useEffect(()=>{if(a&&o&&!f)return a.addEventListener(\"focusin\",e,!0),a.addEventListener(\"focusout\",e,!0),()=>{a.removeEventListener(\"focusin\",e,!0),a.removeEventListener(\"focusout\",e,!0)};function e(e){if(a&&sV(e)){let t=\"focusin\"===e.type;(t?sW:s$)(a)}}},[a,o,f]),x.useEffect(()=>{a&&(p||sW(a))},[p,a]),(0,b.jsxs)(sY.Provider,{value:x.useMemo(()=>({preserveTabOrder:o,beforeOutsideRef:s,afterOutsideRef:c,beforeInsideRef:u,afterInsideRef:d,portalNode:a,setFocusManagerState:l}),[o,a]),children:[h&&a&&(0,b.jsx)(sp,{\"data-type\":\"outside\",ref:s,onFocus:e=>{if(sV(e,a))u.current?.focus();else{let e=sH(i?i.domReference:null);e?.focus()}}}),h&&a&&(0,b.jsx)(\"span\",{\"aria-owns\":a.id,style:sf}),a&&ef.createPortal(t,a),h&&a&&(0,b.jsx)(sp,{\"data-type\":\"outside\",ref:c,onFocus:e=>{if(sV(e,a))d.current?.focus();else{let t=sq(i?i.domReference:null);t?.focus(),i?.closeOnFocusOut&&i?.onOpenChange(!1,e.nativeEvent,\"focus-out\")}}})]})}let sJ=x.createContext(void 0);function s0(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=lA();return o||n?(0,b.jsx)(sJ.Provider,{value:n,children:(0,b.jsx)(sQ,{root:r,children:t})}):null}let s1=x.createContext(void 0);function s2(e,t,n){let r,{reference:o,floating:a}=e,i=i6(t),l=i4(i6(t)),s=i5(l),c=i1(t),u=\"y\"===i,d=o.x+o.width/2-a.width/2,f=o.y+o.height/2-a.height/2,p=o[s]/2-a[s]/2;switch(c){case\"top\":r={x:d,y:o.y-a.height};break;case\"bottom\":r={x:d,y:o.y+o.height};break;case\"right\":r={x:o.x+o.width,y:f};break;case\"left\":r={x:o.x-a.width,y:f};break;default:r={x:o.x,y:o.y}}switch(i2(t)){case\"start\":r[l]-=p*(n&&u?-1:1);break;case\"end\":r[l]+=p*(n&&u?-1:1)}return r}let s4=async(e,t,n)=>{let{placement:r=\"bottom\",strategy:o=\"absolute\",middleware:a=[],platform:i}=n,l=a.filter(Boolean),s=await (null==i.isRTL?void 0:i.isRTL(t)),c=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=s2(c,r,s),f=r,p={},h=0;for(let n=0;ne[t]>=0)}let s9=new Set([\"left\",\"top\"]);async function s8(e,t){let{placement:n,platform:r,elements:o}=e,a=await (null==r.isRTL?void 0:r.isRTL(o.floating)),i=i1(n),l=i2(n),s=\"y\"===i6(n),c=s9.has(i)?-1:1,u=a&&s?-1:1,d=i0(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:h}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return l&&\"number\"==typeof h&&(p=\"end\"===l?-1*h:h),s?{x:p*u,y:f*c}:{x:f*c,y:p*u}}function s7(e){let t=aK(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=aD(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=iK(n)!==a||iK(r)!==i;return l&&(n=a,r=i),{width:n,height:r,$:l}}function ce(e){return aT(e)?e:e.contextElement}function ct(e){let t=ce(e);if(!aD(t))return iG(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:a}=s7(t),i=(a?iK(n.width):n.width)/r,l=(a?iK(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}let cn=iG(0);function cr(e){let t=aP(e);return a$()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:cn}function co(e,t,n,r){var o,a,i;void 0===t&&(t=!1),void 0===n&&(n=!1);let l=e.getBoundingClientRect(),s=ce(e),c=iG(1);t&&(r?aT(r)&&(c=ct(r)):c=ct(e));let u=(o=s,void 0===(a=n)&&(a=!1),(i=r)&&(!a||i===aP(o))&&a)?cr(s):iG(0),d=(l.left+u.x)/c.x,f=(l.top+u.y)/c.y,p=l.width/c.x,h=l.height/c.y;if(s){let e=aP(s),t=r&&aT(r)?aP(r):r,n=e,o=aJ(n);for(;o&&r&&t!==n;){let e=ct(o),t=o.getBoundingClientRect(),r=aK(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,i=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;d*=e.x,f*=e.y,p*=e.x,h*=e.y,d+=a,f+=i,o=aJ(n=aP(o))}}return lo({width:p,height:h,x:d,y:f})}function ca(e,t){let n=aX(e).scrollLeft;return t?t.left+n:co(aI(e)).left+n}function ci(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:ca(e,r));return{x:o,y:r.top+t.scrollTop}}let cl=new Set([\"absolute\",\"fixed\"]);function cs(e,t,n){let r;if(\"viewport\"===t)r=function(e,t){let n=aP(e),r=aI(e),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,l=0,s=0;if(o){a=o.width,i=o.height;let e=a$();(!e||e&&\"fixed\"===t)&&(l=o.offsetLeft,s=o.offsetTop)}return{width:a,height:i,x:l,y:s}}(e,n);else if(\"document\"===t)r=function(e){let t=aI(e),n=aX(e),r=e.ownerDocument.body,o=iY(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=iY(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),i=-n.scrollLeft+ca(e),l=-n.scrollTop;return\"rtl\"===aK(r).direction&&(i+=iY(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(aI(e));else if(aT(t))r=function(e,t){let n=co(e,!0,\"fixed\"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=aD(e)?ct(e):iG(1),i=e.clientWidth*a.x,l=e.clientHeight*a.y,s=o*a.x;return{width:i,height:l,x:s,y:r*a.y}}(t,n);else{let n=cr(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return lo(r)}function cc(e){return\"static\"===aK(e).position}function cu(e,t){if(!aD(e)||\"fixed\"===aK(e).position)return null;if(t)return t(e);let n=e.offsetParent;return aI(e)===n&&(n=n.ownerDocument.body),n}function cd(e,t){var n;let r=aP(e);if(aU(e))return r;if(!aD(e)){let t=aG(e);for(;t&&!aY(t);){if(aT(t)&&!cc(t))return t;t=aG(t)}return r}let o=cu(e,t);for(;o&&(n=o,aM.has(aB(n)))&&cc(o);)o=cu(o,t);return o&&aY(o)&&cc(o)&&!aV(o)?r:o||function(e){let t=aG(e);for(;aD(t)&&!aY(t);){if(aV(t))return t;if(aU(t))break;t=aG(t)}return null}(e)||r}let cf=async function(e){let t=this.getOffsetParent||cd,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=aD(t),o=aI(t),a=\"fixed\"===n,i=co(e,!0,a,t),l={scrollLeft:0,scrollTop:0},s=iG(0);if(r||!r&&!a)if((\"body\"!==aB(t)||aR(o))&&(l=aX(t)),r){let e=co(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=ca(o));a&&!r&&o&&(s.x=ca(o));let c=!o||r||a?iG(0):ci(o,l),u=i.left+l.scrollLeft-s.x-c.x;return{x:u,y:i.top+l.scrollTop-s.y-c.y,width:i.width,height:i.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},cp={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,a=\"fixed\"===o,i=aI(r),l=!!t&&aU(t.floating);if(r===i||l&&a)return n;let s={scrollLeft:0,scrollTop:0},c=iG(1),u=iG(0),d=aD(r);if((d||!d&&!a)&&((\"body\"!==aB(r)||aR(i))&&(s=aX(r)),aD(r))){let e=co(r);c=ct(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=!i||d||a?iG(0):ci(i,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+f.x,y:n.y*c.y-s.scrollTop*c.y+u.y+f.y}},getDocumentElement:aI,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,a=[...\"clippingAncestors\"===n?aU(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=aQ(e,[],!1).filter(e=>aT(e)&&\"body\"!==aB(e)),o=null,a=\"fixed\"===aK(e).position,i=a?aG(e):e;for(;aT(i)&&!aY(i);){let t=aK(i),n=aV(i);n||\"fixed\"!==t.position||(o=null),(a?!n&&!o:!n&&\"static\"===t.position&&!!o&&cl.has(o.position)||aR(i)&&!n&&function e(t,n){let r=aG(t);return!(r===n||!aT(r)||aY(r))&&(\"fixed\"===aK(r).position||e(r,n))}(e,i))?r=r.filter(e=>e!==i):o=t,i=aG(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce((e,n)=>{let r=cs(t,n,o);return e.top=iY(r.top,e.top),e.right=iW(r.right,e.right),e.bottom=iW(r.bottom,e.bottom),e.left=iY(r.left,e.left),e},cs(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:cd,getElementRects:cf,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=s7(e);return{width:t,height:n}},getScale:ct,isElement:aT,isRTL:function(e){return\"rtl\"===aK(e).direction}};function ch(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cm(e,t,n,r){let o;void 0===r&&(r={});let{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:l=\"function\"==typeof ResizeObserver,layoutShift:s=\"function\"==typeof IntersectionObserver,animationFrame:c=!1}=r,u=ce(e),d=a||i?[...u?aQ(u):[],...aQ(t)]:[];d.forEach(e=>{a&&e.addEventListener(\"scroll\",n,{passive:!0}),i&&e.addEventListener(\"resize\",n)});let f=u&&s?function(e,t){let n,r=null,o=aI(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function i(l,s){void 0===l&&(l=!1),void 0===s&&(s=1),a();let c=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=c;if(l||t(),!f||!p)return;let h=iX(d),m=iX(o.clientWidth-(u+f)),g=iX(o.clientHeight-(d+p)),y={rootMargin:-h+\"px \"+-m+\"px \"+-g+\"px \"+-iX(u)+\"px\",threshold:iY(0,iW(1,s))||1},v=!0;function b(t){let r=t[0].intersectionRatio;if(r!==s){if(!v)return i();r?i(!1,r):n=setTimeout(()=>{i(!1,1e-7)},1e3)}1!==r||ch(c,e.getBoundingClientRect())||i(),v=!1}try{r=new IntersectionObserver(b,{...y,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(b,y)}r.observe(e)}(!0),a}(u,n):null,p=-1,h=null;l&&(h=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),n()}),u&&!c&&h.observe(u),h.observe(t));let m=c?co(e):null;return c&&function t(){let r=co(e);m&&!ch(m,r)&&n(),m=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener(\"scroll\",n),i&&e.removeEventListener(\"resize\",n)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,c&&cancelAnimationFrame(o)}}var cg=\"undefined\"!=typeof document,cy=cg?x.useLayoutEffect:function(){};function cv(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if(\"function\"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&\"object\"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!cv(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if((\"_owner\"!==n||!e.$$typeof)&&!cv(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function cb(e){return\"undefined\"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function cA(e,t){let n=cb(e);return Math.round(t*n)/n}function cx(e){let t=x.useRef(e);return cy(()=>{t.current=e}),t}function cw(e,t,n){let r=\"inline-start\"===e||\"inline-end\"===e;return({top:\"top\",right:r?n?\"inline-start\":\"inline-end\":\"right\",bottom:\"bottom\",left:r?n?\"inline-end\":\"inline-start\":\"left\"})[t]}function cC(e,t,n){let{rects:r,placement:o}=e;return{side:cw(t,i1(o),n),align:i2(o)||\"center\",anchor:{width:r.reference.width,height:r.reference.height},positioner:{width:r.floating.width,height:r.floating.height}}}function c_(e){var t,n,r,o,a;let i,l,s,c,u,d,f,p,h,m,g,y,v,{anchor:b,positionMethod:A=\"absolute\",side:w=\"bottom\",sideOffset:C=0,align:_=\"center\",alignOffset:k=0,collisionBoundary:E,collisionPadding:j=5,sticky:S=!1,arrowPadding:O=5,trackAnchor:B=!0,keepMounted:P=!1,floatingRootContext:I,mounted:z,collisionAvoidance:T,shiftCrossAxis:D=!1,nodeId:L,adaptiveOrigin:N}=e,R=T.side||\"flip\",M=T.align||\"flip\",Z=T.fallbackAxisSide||\"end\",U=\"function\"==typeof b?b:void 0,F=af(U),q=U?F:b,H=a0(b),V=\"rtl\"===lk(),$={top:\"top\",right:\"right\",bottom:\"bottom\",left:\"left\",\"inline-end\":V?\"left\":\"right\",\"inline-start\":V?\"right\":\"left\"}[w],W=\"center\"===_?$:`${$}-${_}`,Y={boundary:\"clipping-ancestors\"===E?\"clippingAncestors\":E,padding:j},K=x.useRef(null),X=a0(C),G=a0(k),Q=\"function\"!=typeof C?C:0,J=[(i=e=>{let t=cC(e,w,V),n=\"function\"==typeof X.current?X.current(t):X.current,r=\"function\"==typeof G.current?G.current(t):G.current;return{mainAxis:n,crossAxis:r,alignmentAxis:r}},l=[Q,\"function\"!=typeof k?k:0,V,w],{...(void 0===(t=i)&&(t=0),{name:\"offset\",options:t,async fn(e){var n,r;let{x:o,y:a,placement:i,middlewareData:l}=e,s=await s8(e,t);return i===(null==(n=l.offset)?void 0:n.placement)&&null!=(r=l.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:i}}}}),options:[i,l]})],ee=\"none\"===M&&\"shift\"!==R,et=!ee&&(S||D||\"shift\"===R),en=\"none\"===R?null:{...{name:\"flip\",options:n=s={...Y,mainAxis:!D&&\"flip\"===R,crossAxis:\"flip\"===M&&\"alignment\",fallbackAxisSideDirection:Z},async fn(e){var t,r,o,a,i;let{placement:l,middlewareData:s,rects:c,initialPlacement:u,platform:d,elements:f}=e,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:g=\"bestFit\",fallbackAxisSideDirection:y=\"none\",flipAlignment:v=!0,...b}=i0(n,e);if(null!=(t=s.arrow)&&t.alignmentOffset)return{};let A=i1(l),x=i6(u),w=i1(u)===u,C=await (null==d.isRTL?void 0:d.isRTL(f.floating)),_=m||(w||!v?[ln(u)]:function(e){let t=ln(e);return[i9(e),t,i9(t)]}(u)),k=\"none\"!==y;!m&&k&&_.push(...function(e,t,n,r){let o=i2(e),a=function(e,t,n){switch(e){case\"top\":case\"bottom\":if(n)return t?i7:i8;return t?i8:i7;case\"left\":case\"right\":return t?le:lt;default:return[]}}(i1(e),\"start\"===n,r);return o&&(a=a.map(e=>e+\"-\"+o),t&&(a=a.concat(a.map(i9)))),a}(u,v,y,C));let E=[u,..._],j=await s5(e,b),S=[],O=(null==(r=s.flip)?void 0:r.overflows)||[];if(p&&S.push(j[A]),h){let e=function(e,t,n){void 0===n&&(n=!1);let r=i2(e),o=i4(i6(e)),a=i5(o),i=\"x\"===o?r===(n?\"end\":\"start\")?\"right\":\"left\":\"start\"===r?\"bottom\":\"top\";return t.reference[a]>t.floating[a]&&(i=ln(i)),[i,ln(i)]}(l,c,C);S.push(j[e[0]],j[e[1]])}if(O=[...O,{placement:l,overflows:S}],!S.every(e=>e<=0)){let e=((null==(o=s.flip)?void 0:o.index)||0)+1,t=E[e];if(t&&(\"alignment\"!==h||x===i6(t)||O.every(e=>i6(e.placement)!==x||e.overflows[0]>0)))return{data:{index:e,overflows:O},reset:{placement:t}};let n=null==(a=O.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:a.placement;if(!n)switch(g){case\"bestFit\":{let e=null==(i=O.filter(e=>{if(k){let t=i6(e.placement);return t===x||\"y\"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:i[0];e&&(n=e);break}case\"initialPlacement\":n=u}if(l!==n)return{reset:{placement:n}}}return{}}},options:[s,c]},er=ee?null:(u=e=>{var t;let n,r,o=lE(e.elements.floating).documentElement;return{...Y,rootBoundary:D?{x:0,y:0,width:o.clientWidth,height:o.clientHeight}:void 0,mainAxis:\"none\"!==M,crossAxis:et,limiter:S||D?void 0:{...(void 0===(t=n=()=>{if(!K.current)return{};let{height:e}=K.current.getBoundingClientRect();return{offset:e/2+(\"number\"==typeof j?j:0)}})&&(t={}),{options:t,fn(e){let{x:n,y:r,placement:o,rects:a,middlewareData:i}=e,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=i0(t,e),u={x:n,y:r},d=i6(o),f=i4(d),p=u[f],h=u[d],m=i0(l,e),g=\"number\"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){let e=\"y\"===f?\"height\":\"width\",t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(c){var y,v;let e=\"y\"===f?\"width\":\"height\",t=s9.has(i1(o)),n=a.reference[d]-a.floating[e]+(t&&(null==(y=i.offset)?void 0:y[d])||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:(null==(v=i.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[f]:p,[d]:h}}}),options:[n,r]}}},d=[Y,S,D,j,M],{...(void 0===(r=u)&&(r={}),{name:\"shift\",options:r,async fn(e){let{x:t,y:n,placement:o}=e,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=i0(r,e),c={x:t,y:n},u=await s5(e,s),d=i6(i1(o)),f=i4(d),p=c[f],h=c[d];if(a){let e=\"y\"===f?\"top\":\"left\",t=\"y\"===f?\"bottom\":\"right\",n=p+u[e],r=p-u[t];p=iY(n,iW(p,r))}if(i){let e=\"y\"===d?\"top\":\"left\",t=\"y\"===d?\"bottom\":\"right\",n=h+u[e],r=h-u[t];h=iY(n,iW(h,r))}let m=l.fn({...e,[f]:p,[d]:h});return{...m,data:{x:m.x-t,y:m.y-n,enabled:{[f]:a,[d]:i}}}}}),options:[u,d]});\"shift\"===R||\"shift\"===M||\"center\"===_?J.push(er,en):J.push(en,er),J.push({...{name:\"size\",options:o=f={...Y,apply({elements:{floating:e},rects:{reference:t},availableWidth:n,availableHeight:r}){Object.entries({\"--available-width\":`${n}px`,\"--available-height\":`${r}px`,\"--anchor-width\":`${t.width}px`,\"--anchor-height\":`${t.height}px`}).forEach(([t,n])=>{e.style.setProperty(t,n)})}},async fn(e){var t,n;let r,a,{placement:i,rects:l,platform:s,elements:c}=e,{apply:u=()=>{},...d}=i0(o,e),f=await s5(e,d),p=i1(i),h=i2(i),m=\"y\"===i6(i),{width:g,height:y}=l.floating;\"top\"===p||\"bottom\"===p?(r=p,a=h===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?\"start\":\"end\")?\"left\":\"right\"):(a=p,r=\"end\"===h?\"top\":\"bottom\");let v=y-f.top-f.bottom,b=g-f.left-f.right,A=iW(y-f[r],v),x=iW(g-f[a],b),w=!e.middlewareData.shift,C=A,_=x;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(_=b),null!=(n=e.middlewareData.shift)&&n.enabled.y&&(C=v),w&&!h){let e=iY(f.left,0),t=iY(f.right,0),n=iY(f.top,0),r=iY(f.bottom,0);m?_=g-2*(0!==e||0!==t?e+t:iY(f.left,f.right)):C=y-2*(0!==n||0!==r?n+r:iY(f.top,f.bottom))}await u({...e,availableWidth:_,availableHeight:C});let k=await s.getDimensions(c.floating);return g!==k.width||y!==k.height?{reset:{rects:!0}}:{}}},options:[f,p]},(h=()=>({element:K.current||document.createElement(\"div\"),padding:O,offsetParent:\"floating\"}),m=[O],{...{name:\"arrow\",options:g=h,async fn(e){let{x:t,y:n,placement:r,rects:o,platform:a,elements:i,middlewareData:l}=e,{element:s,padding:c=0,offsetParent:u=\"real\"}=i0(g,e)||{};if(null==s)return{};let d=lr(c),f={x:t,y:n},p=i4(i6(r)),h=i5(p),m=await a.getDimensions(s),y=\"y\"===p,v=y?\"clientHeight\":\"clientWidth\",b=o.reference[h]+o.reference[p]-f[p]-o.floating[h],A=f[p]-o.reference[p],x=\"real\"===u?await a.getOffsetParent?.(s):i.floating,w=i.floating[v]||o.floating[h];w&&await a.isElement?.(x)||(w=i.floating[v]||o.floating[h]);let C=w/2-m[h]/2-1,_=Math.min(d[y?\"top\":\"left\"],C),k=Math.min(d[y?\"bottom\":\"right\"],C),E=w-m[h]-k,j=w/2-m[h]/2+(b/2-A/2),S=iY(_,iW(j,E)),O=!l.arrow&&null!=i2(r)&&j!==S&&o.reference[h]/2-(j<_?_:k)-m[h]/2<0,B=O?j<_?j-_:j-E:0;return{[p]:f[p]+B,data:{[p]:S,centerOffset:j-S-B,...O&&{alignmentOffset:B}},reset:O}}},options:[h,m]}),{...(void 0===(a=y)&&(a={}),{name:\"hide\",options:a,async fn(e){let{rects:t}=e,{strategy:n=\"referenceHidden\",...r}=i0(a,e);switch(n){case\"referenceHidden\":{let n=s3(await s5(e,{...r,elementContext:\"reference\"}),t.reference);return{data:{referenceHiddenOffsets:n,referenceHidden:s6(n)}}}case\"escaped\":{let n=s3(await s5(e,{...r,altBoundary:!0}),t.floating);return{data:{escapedOffsets:n,escaped:s6(n)}}}default:return{}}}}),options:[y,v]},{name:\"transformOrigin\",fn(e){let{elements:t,middlewareData:n,placement:r,rects:o,y:a}=e,i=i1(r),l=i6(i),s=K.current,c=n.arrow?.x||0,u=n.arrow?.y||0,d=s?.clientWidth||0,f=s?.clientHeight||0,p=c+d/2,h=u+f/2,m=Math.abs(n.shift?.y||0),g=o.reference.height/2,y=m>(\"function\"==typeof C?C(cC(e,w,V)):C),v={top:`${p}px calc(100% + ${C}px)`,bottom:`${p}px ${-C}px`,left:`calc(100% + ${C}px) ${h}px`,right:`${-C}px ${h}px`}[i],b=`${p}px ${o.reference.y+g-a}px`;return t.floating.style.setProperty(\"--transform-origin\",et&&\"y\"===l&&y?b:v),{}}},N);let eo=I;!z&&I&&(eo={...I,elements:{reference:null,floating:null,domReference:null}});let ea=x.useMemo(()=>({elementResize:B&&\"undefined\"!=typeof ResizeObserver,layoutShift:B&&\"undefined\"!=typeof IntersectionObserver}),[B]),{refs:ei,elements:el,x:es,y:ec,middlewareData:eu,update:ed,placement:ep,context:eh,isPositioned:em,floatingStyles:eg}=function(e={}){let{nodeId:t}=e,n=aS({...e,elements:{reference:null,floating:null,...e.elements}}),r=e.rootContext||n,o=r.elements,[a,i]=x.useState(null),[l,s]=x.useState(null),c=o?.domReference||a,u=x.useRef(null),d=ak();ax(()=>{c&&(u.current=c)},[c]);let f=function(e){void 0===e&&(e={});let{placement:t=\"bottom\",strategy:n=\"absolute\",middleware:r=[],platform:o,elements:{reference:a,floating:i}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[u,d]=x.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=x.useState(r);cv(f,r)||p(r);let[h,m]=x.useState(null),[g,y]=x.useState(null),v=x.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),b=x.useCallback(e=>{e!==_.current&&(_.current=e,y(e))},[]),A=a||h,w=i||g,C=x.useRef(null),_=x.useRef(null),k=x.useRef(u),E=null!=s,j=cx(s),S=cx(o),O=cx(c),B=x.useCallback(()=>{if(!C.current||!_.current)return;let e={placement:t,strategy:n,middleware:f};S.current&&(e.platform=S.current),((e,t,n)=>{let r=new Map,o={platform:cp,...n},a={...o.platform,_c:r};return s4(e,t,{...o,platform:a})})(C.current,_.current,e).then(e=>{let t={...e,isPositioned:!1!==O.current};P.current&&!cv(k.current,t)&&(k.current=t,ef.flushSync(()=>{d(t)}))})},[f,t,n,S,O]);cy(()=>{!1===c&&k.current.isPositioned&&(k.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let P=x.useRef(!1);cy(()=>(P.current=!0,()=>{P.current=!1}),[]),cy(()=>{if(A&&(C.current=A),w&&(_.current=w),A&&w){if(j.current)return j.current(A,w,B);B()}},[A,w,B,j,E]);let I=x.useMemo(()=>({reference:C,floating:_,setReference:v,setFloating:b}),[v,b]),z=x.useMemo(()=>({reference:A,floating:w}),[A,w]),T=x.useMemo(()=>{let e={position:n,left:0,top:0};if(!z.floating)return e;let t=cA(z.floating,u.x),r=cA(z.floating,u.y);return l?{...e,transform:\"translate(\"+t+\"px, \"+r+\"px)\",...cb(z.floating)>=1.5&&{willChange:\"transform\"}}:{position:n,left:t,top:r}},[n,l,z.floating,u.x,u.y]);return x.useMemo(()=>({...u,update:B,refs:I,elements:z,floatingStyles:T}),[u,B,I,z,T])}({...e,elements:{...o,...l&&{reference:l}}}),p=x.useCallback(e=>{let t=aT(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),getClientRects:()=>e.getClientRects(),contextElement:e}:e;s(t),f.refs.setReference(t)},[f.refs]),h=x.useCallback(e=>{(aT(e)||null===e)&&(u.current=e,i(e)),(aT(f.refs.reference.current)||null===f.refs.reference.current||null!==e&&!aT(e))&&f.refs.setReference(e)},[f.refs]),m=x.useMemo(()=>({...f.refs,setReference:h,setPositionReference:p,domReference:u}),[f.refs,h,p]),g=x.useMemo(()=>({...f.elements,domReference:c}),[f.elements,c]),y=x.useMemo(()=>({...f,...r,refs:m,elements:g,nodeId:t}),[f,m,g,t,r]);return ax(()=>{r.dataRef.current.floatingContext=y;let e=d?.nodesRef.current.find(e=>e.id===t);e&&(e.context=y)}),x.useMemo(()=>({...f,context:y,refs:m,elements:g}),[f,m,g,y])}({rootContext:eo,placement:W,middleware:J,strategy:A,whileElementsMounted:P?void 0:(...e)=>cm(...e,ea),nodeId:L}),{sideX:ey,sideY:ev}=eu.adaptiveOrigin||{},eb=x.useMemo(()=>N?{position:A,[ey]:`${es}px`,[ev]:`${ec}px`}:eg,[N,ey,ev,A,es,ec,eg]),eA=x.useRef(null);ax(()=>{if(!z)return;let e=H.current,t=\"function\"==typeof e?e():e,n=(ck(t)?t.current:t)||null;n!==eA.current&&(ei.setPositionReference(n),eA.current=n)},[z,ei,q,H]),x.useEffect(()=>{if(!z)return;let e=H.current;\"function\"!=typeof e&&ck(e)&&e.current!==eA.current&&(ei.setPositionReference(e.current),eA.current=e.current)},[z,ei,q,H]),x.useEffect(()=>{if(P&&z&&el.domReference&&el.floating)return cm(el.domReference,el.floating,ed,ea)},[P,z,el,ed,ea]);let ex=cw(w,i1(ep),V),ew=i2(ep)||\"center\",eC=!!eu.hide?.referenceHidden,e_=x.useMemo(()=>({position:\"absolute\",top:eu.arrow?.y,left:eu.arrow?.x}),[eu.arrow]),ek=eu.arrow?.centerOffset!==0;return x.useMemo(()=>({positionerStyles:eb,arrowStyles:e_,arrowRef:K,arrowUncentered:ek,side:ex,align:ew,anchorHidden:eC,refs:ei,context:eh,isPositioned:em,update:ed}),[eb,e_,K,ek,ex,ew,eC,ei,eh,em,ed])}function ck(e){return null!=e&&\"current\"in e}function cE(e){let{children:t,elementsRef:n,labelsRef:r,onMapChange:o}=e,a=x.useRef(0),i=aa(cS).current,l=aa(cj).current,[s,c]=x.useState(0),u=x.useRef(s),d=af((e,t)=>{l.set(e,t??null),u.current+=1,c(u.current)}),f=af(e=>{l.delete(e),u.current+=1,c(u.current)}),p=x.useMemo(()=>{let e=new Map;return Array.from(l.keys()).sort(cO).forEach((t,n)=>{let r=l.get(t)??{};e.set(t,{...r,index:n})}),e},[l,s]);ax(()=>{u.current===s&&(n.current.length!==p.size&&(n.current.length=p.size),r&&r.current.length!==p.size&&(r.current.length=p.size)),o?.(p)},[o,p,n,r,s,u]);let h=af(e=>(i.add(e),()=>{i.delete(e)}));ax(()=>{i.forEach(e=>e(p))},[i,p]);let m=x.useMemo(()=>({register:d,unregister:f,subscribeMapChange:h,elementsRef:n,labelsRef:r,nextIndexRef:a}),[d,f,h,n,r,a]);return(0,b.jsx)(sl.Provider,{value:m,children:t})}function cj(){return new Map}function cS(){return new Set}function cO(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}let cB=x.forwardRef(function(e,t){let n,{cutout:r,...o}=e;if(r){let e=r?.getBoundingClientRect();n=`polygon(\n 0% 0%,\n 100% 0%,\n 100% 100%,\n 0% 100%,\n 0% 0%,\n ${e.left}px ${e.top}px,\n ${e.left}px ${e.bottom}px,\n ${e.right}px ${e.bottom}px,\n ${e.right}px ${e.top}px,\n ${e.left}px ${e.top}px\n )`}return(0,b.jsx)(\"div\",{ref:t,role:\"presentation\",\"data-base-ui-inert\":\"\",...o,style:{position:\"fixed\",inset:0,userSelect:\"none\",WebkitUserSelect:\"none\",clipPath:n}})}),cP=x.forwardRef(function(e,t){var n;let{anchor:r,positionMethod:o=\"absolute\",className:a,render:i,side:l,align:s,sideOffset:c=0,alignOffset:u=0,collisionBoundary:d=\"clipping-ancestors\",collisionPadding:f=5,arrowPadding:p=5,sticky:h=!1,trackAnchor:m=!0,collisionAvoidance:g=iZ,...y}=e,{open:v,setOpen:A,floatingRootContext:w,setPositionerElement:C,itemDomElements:_,itemLabels:k,mounted:E,modal:j,lastOpenChangeReason:S,parent:O,setHoverEnabled:B,triggerElement:P}=lA(),I=function(){let e=x.useContext(sJ);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),z=function(e){let t=ab(),n=ak(),r=a_(),o=r;return ax(()=>{if(!t)return;let e={id:t,parentId:o};return n?.addNode(e),()=>{n?.removeNode(e)}},[n,t,o]),t}(),T=a_(),D=lD(!0),L=r,N=c,R=u,M=s;\"context-menu\"===O.type&&(L=O.context?.anchor??r,M=e.align??\"start\",R=e.alignOffset??2,N=e.sideOffset??-5);let Z=l,U=M;\"menu\"===O.type?(Z=Z??\"inline-end\",U=U??\"start\"):\"menubar\"===O.type&&(Z=Z??\"bottom\",U=U??\"start\");let F=\"context-menu\"===O.type,q=c_({anchor:L,floatingRootContext:w,positionMethod:D?\"fixed\":o,mounted:E,side:Z,sideOffset:N,align:U,alignOffset:R,arrowPadding:F?0:p,collisionBoundary:d,collisionPadding:f,sticky:h,nodeId:z,keepMounted:I,trackAnchor:m,collisionAvoidance:g,shiftCrossAxis:F}),{events:H}=ak(),V=x.useMemo(()=>{let e={};return v||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!E,style:{...q.positionerStyles,...e}}},[v,E,q.positionerStyles]);x.useEffect(()=>{function e(e){e.open?(e.parentNodeId===z&&B(!1),e.nodeId!==z&&e.parentNodeId===T&&A(!1,void 0,\"sibling-open\")):e.parentNodeId===z&&B(!0)}return H.on(\"openchange\",e),()=>{H.off(\"openchange\",e)}},[H,z,T,A,B]),x.useEffect(()=>{H.emit(\"openchange\",{open:v,nodeId:z,parentNodeId:T})},[H,v,z,T]);let $=x.useMemo(()=>({open:v,side:q.side,align:q.align,anchorHidden:q.anchorHidden,nested:\"menu\"===O.type}),[v,q.side,q.align,q.anchorHidden,O.type]),W=x.useMemo(()=>({side:q.side,align:q.align,arrowRef:q.arrowRef,arrowUncentered:q.arrowUncentered,arrowStyles:q.arrowStyles,floatingContext:q.context}),[q.side,q.align,q.arrowRef,q.arrowUncentered,q.arrowStyles,q.context]),Y=sn(\"div\",e,{state:$,customStyleHookMapping:se,ref:[t,C],props:{...V,...y}}),K=E&&\"menu\"!==O.type&&(\"menubar\"!==O.type&&j&&\"trigger-hover\"!==S||\"menubar\"===O.type&&O.context.modal),X=null;return\"menubar\"===O.type?X=O.context.contentElement:void 0===O.type&&(X=P),(0,b.jsxs)(s1.Provider,{value:W,children:[K&&(0,b.jsx)(cB,{ref:\"context-menu\"===O.type||\"nested-context-menu\"===O.type?O.context.internalBackdropRef:null,inert:(n=!v,st>=19?n:n?\"true\":void 0),cutout:X}),(0,b.jsx)(aE,{id:z,children:(0,b.jsx)(cE,{elementsRef:_,labelsRef:k,children:Y})})]})}),cI={inert:new WeakMap,\"aria-hidden\":new WeakMap,none:new WeakMap};function cz(e){return\"inert\"===e?cI.inert:\"aria-hidden\"===e?cI[\"aria-hidden\"]:cI.none}let cT=new WeakSet,cD={},cL=0,cN=e=>e&&(e.host||cN(e.parentNode)),cR=[];function cM(){cR=cR.filter(e=>e.isConnected)}function cZ(){return cM(),cR[cR.length-1]}function cU(e,t){if(!t.current.includes(\"floating\")&&!e.getAttribute(\"role\")?.includes(\"dialog\"))return;let n=sU(),r=sM(e,n).filter(e=>{let t=e.getAttribute(\"data-tabindex\")||\"\";return sZ(e,n)||e.hasAttribute(\"data-tabindex\")&&!t.startsWith(\"-\")}),o=e.getAttribute(\"tabindex\");t.current.includes(\"floating\")||0===r.length?\"0\"!==o&&e.setAttribute(\"tabindex\",\"0\"):(\"-1\"!==o||e.hasAttribute(\"data-tabindex\")&&\"-1\"!==e.getAttribute(\"data-tabindex\"))&&(e.setAttribute(\"tabindex\",\"-1\"),e.setAttribute(\"data-tabindex\",\"-1\"))}function cF(e){let{context:t,children:n,disabled:r=!1,order:o=[\"content\"],initialFocus:a=0,returnFocus:i=!0,restoreFocus:l=!1,modal:s=!0,closeOnFocusOut:c=!0,getInsideElements:u=()=>[]}=e,{open:d,onOpenChange:f,events:p,dataRef:h,elements:{domReference:m,floating:g}}=t,y=af(()=>h.current.floatingContext?.nodeId),v=af(u),A=\"number\"==typeof a&&a<0,w=ix(m)&&A,C=a0(o),_=a0(a),k=a0(i),E=ak(),j=sK(),S=x.useRef(null),O=x.useRef(null),B=x.useRef(!1),P=x.useRef(!1),I=x.useRef(-1),z=ac(),T=null!=j,D=iw(g),L=af((e=D)=>e?sR(e,sU()):[]),N=af(e=>{let t=L(e);return C.current.map(()=>t).filter(Boolean).flat()});x.useEffect(()=>{if(r||!s)return;function e(e){\"Tab\"===e.key&&ig(D,im(ib(D)))&&0===L().length&&!w&&ir(e)}let t=ib(D);return t.addEventListener(\"keydown\",e),()=>{t.removeEventListener(\"keydown\",e)}},[r,m,D,s,C,w,L,N]),x.useEffect(()=>{if(!r&&g)return g.addEventListener(\"focusin\",e),()=>{g.removeEventListener(\"focusin\",e)};function e(e){let t=iy(e),n=L().indexOf(t);-1!==n&&(I.current=n)}},[r,g,L]),x.useEffect(()=>{if(r||!c)return;function e(){P.current=!0}function t(e){let t=e.relatedTarget,n=e.currentTarget,r=iy(e);queueMicrotask(()=>{let o=y(),a=!(ig(m,t)||ig(g,t)||ig(t,g)||ig(j?.portalNode,t)||t?.hasAttribute(iC(\"focus-guard\"))||E&&(iS(E.nodesRef.current,o).find(e=>ig(e.context?.elements.floating,t)||ig(e.context?.elements.domReference,t))||iO(E.nodesRef.current,o).find(e=>[e.context?.elements.floating,iw(e.context?.elements.floating)].includes(t)||e.context?.elements.domReference===t)));if(n===m&&D&&cU(D,C),l&&n!==m&&!r?.isConnected&&im(ib(D))===ib(D).body){aD(D)&&D.focus();let e=I.current,t=L(),n=t[e]||t[t.length-1]||D;aD(n)&&n.focus()}if(h.current.insideReactTree){h.current.insideReactTree=!1;return}if(P.current){P.current=!1;return}(w||!s)&&t&&a&&t!==cZ()&&(B.current=!0,f(!1,e,\"focus-out\"))})}let n=!!(!E&&j);function o(){h.current.insideReactTree=!0,z.start(0,()=>{h.current.insideReactTree=!1})}if(g&&aD(m))return m.addEventListener(\"focusout\",t),m.addEventListener(\"pointerdown\",e),g.addEventListener(\"focusout\",t),n&&g.addEventListener(\"focusout\",o,!0),()=>{m.removeEventListener(\"focusout\",t),m.removeEventListener(\"pointerdown\",e),g.removeEventListener(\"focusout\",t),n&&g.removeEventListener(\"focusout\",o,!0)}},[r,m,g,D,s,E,j,f,c,l,L,w,y,C,h,z]);let R=x.useRef(null),M=x.useRef(null),Z=lY(R,j?.beforeInsideRef),U=lY(M,j?.afterInsideRef);x.useEffect(()=>{if(r||!g)return;let e=Array.from(j?.portalNode?.querySelectorAll(`[${iC(\"portal\")}]`)||[]),t=E?iO(E.nodesRef.current,y()):[],n=function(e,t=!1,n=!1){let r=ib(e[0]).body;return function(e,t,n,r){let o,a=\"data-base-ui-inert\",i=r?\"inert\":n?\"aria-hidden\":null,l=(o=t,e.map(e=>{if(o.contains(e))return e;let t=cN(e);return o.contains(t)?t:null}).filter(e=>null!=e)),s=new Set,c=new Set(l),u=[];cD[a]||(cD[a]=new WeakMap);let d=cD[a];return l.forEach(function e(t){!(!t||s.has(t))&&(s.add(t),t.parentNode&&e(t.parentNode))}),function e(t){!t||c.has(t)||[].forEach.call(t.children,t=>{if(\"script\"!==aB(t))if(s.has(t))e(t);else{let e=i?t.getAttribute(i):null,n=null!==e&&\"false\"!==e,r=cz(i),o=(r.get(t)||0)+1,l=(d.get(t)||0)+1;r.set(t,o),d.set(t,l),u.push(t),1===o&&n&&cT.add(t),1===l&&t.setAttribute(a,\"\"),!n&&i&&t.setAttribute(i,\"inert\"===i?\"\":\"true\")}})}(t),s.clear(),cL+=1,()=>{u.forEach(e=>{let t=cz(i),n=(t.get(e)||0)-1,r=(d.get(e)||0)-1;t.set(e,n),d.set(e,r),n||(!cT.has(e)&&i&&e.removeAttribute(i),cT.delete(e)),r||e.removeAttribute(a)}),(cL-=1)||(cI.inert=new WeakMap,cI[\"aria-hidden\"]=new WeakMap,cI.none=new WeakMap,cT=new WeakSet,cD={})}}(e.concat(Array.from(r.querySelectorAll(\"[aria-live]\"))),r,t,n)}([g,t.find(e=>ix(e.context?.elements.domReference||null))?.context?.elements.domReference,...e,...v(),S.current,O.current,R.current,M.current,j?.beforeOutsideRef.current,j?.afterOutsideRef.current,w?m:null].filter(e=>null!=e),s||w);return()=>{n()}},[r,m,g,s,C,j,w,E,y,v]),ax(()=>{if(r||!aD(D))return;let e=im(ib(D));queueMicrotask(()=>{let t=N(D),n=_.current,r=(\"number\"==typeof n?t[n]:n.current)||D,o=ig(D,e);A||o||!d||lf(r,{preventScroll:r===D})})},[r,d,D,A,N,_]),ax(()=>{var e;if(r||!D)return;let t=ib(D);function n({reason:e,event:t,nested:n}){if([\"hover\",\"safe-polygon\"].includes(e)&&\"mouseleave\"===t.type&&(B.current=!0),\"outside-press\"===e)if(n)B.current=!1;else if(io(t)||ia(t))B.current=!1;else{let e=!1;document.createElement(\"div\").focus({get preventScroll(){return e=!0,!1}}),e?B.current=!1:B.current=!0}}e=im(t),cM(),e&&\"body\"!==aB(e)&&(cR.push(e),cR.length>20&&(cR=cR.slice(-20))),p.on(\"openchange\",n);let o=t.createElement(\"span\");return o.setAttribute(\"tabindex\",\"-1\"),o.setAttribute(\"aria-hidden\",\"true\"),Object.assign(o.style,sf),T&&m&&m.insertAdjacentElement(\"afterend\",o),()=>{p.off(\"openchange\",n);let e=im(t),r=ig(g,e)||E&&iS(E.nodesRef.current,y(),!1).some(t=>ig(t.context?.elements.floating,e)),a=function(){if(\"boolean\"==typeof k.current){let e=m||cZ();return e&&e.isConnected?e:o}return k.current.current||o}();queueMicrotask(()=>{let n=function(e){let t=sU();return sZ(e,t)?e:sR(e,t)[0]||e}(a);k.current&&!B.current&&aD(n)&&(n===e||e===t.body||r)&&n.focus({preventScroll:!0}),o.remove()})}},[r,g,D,k,h,p,E,T,m,y]),x.useEffect(()=>{queueMicrotask(()=>{B.current=!1})},[r]),x.useEffect(()=>{if(r||!d)return;function e(e){let t=iy(e);t?.closest(\"[data-base-ui-click-trigger]\")&&(P.current=!0)}let t=ib(D);return t.addEventListener(\"pointerdown\",e,!0),()=>{t.removeEventListener(\"pointerdown\",e,!0)}},[r,d,D]),ax(()=>{if(!r&&j)return j.setFocusManagerState({modal:s,closeOnFocusOut:c,open:d,onOpenChange:f,domReference:m}),()=>{j.setFocusManagerState(null)}},[r,j,s,d,f,c,m]),ax(()=>{if(!r&&D)return cU(D,C),()=>{queueMicrotask(cM)}},[r,D,C]);let F=!r&&(!s||!w)&&(T||s);return(0,b.jsxs)(x.Fragment,{children:[F&&(0,b.jsx)(sp,{\"data-type\":\"inside\",ref:Z,onFocus:e=>{if(s){let e=N();lf(e[e.length-1])}else if(j?.preserveTabOrder&&j.portalNode)if(B.current=!1,sV(e,j.portalNode)){let e=sq(m);e?.focus()}else j.beforeOutsideRef.current?.focus()}}),n,F&&(0,b.jsx)(sp,{\"data-type\":\"inside\",ref:U,onFocus:e=>{if(s)lf(N()[0]);else if(j?.preserveTabOrder&&j.portalNode)if(c&&(B.current=!0),sV(e,j.portalNode)){let e=sH(m);e?.focus()}else j.afterOutsideRef.current?.focus()}})]})}let cq={...se,...l0},cH=x.forwardRef(function(e,t){let{render:n,className:r,finalFocus:o,...a}=e,{open:i,setOpen:l,popupRef:s,transitionStatus:c,popupProps:u,mounted:d,instantType:f,onOpenChangeComplete:p,parent:h,lastOpenChangeReason:m,rootId:g}=lA(),{side:y,align:v,floatingContext:A}=function(){let e=x.useContext(s1);if(void 0===e)throw Error(\"Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within .\");return e}();lC({open:i,ref:s,onComplete(){i&&p?.(!0)}});let{events:w}=ak();x.useEffect(()=>{function e(e){l(!1,e.domEvent,e.reason)}return w.on(\"close\",e),()=>{w.off(\"close\",e)}},[w,l]);let C=sn(\"div\",e,{state:x.useMemo(()=>({transitionStatus:c,side:y,align:v,open:i,nested:\"menu\"===h.type,instant:f}),[c,y,v,i,h.type,f]),ref:[t,s],customStyleHookMapping:cq,props:[u,\"starting\"===c?iN:iR,a,{\"data-rootownerid\":g}]}),_=void 0===h.type||\"context-menu\"===h.type;return\"menubar\"===h.type&&\"outside-press\"!==m&&(_=!0),(0,b.jsx)(cF,{context:A,modal:!1,disabled:!d,returnFocus:o||_,initialFocus:\"menu\"===h.type?-1:0,restoreFocus:!0,children:C})}),cV=x.createContext(void 0),c$=x.forwardRef(function(e,t){let{render:n,className:r,...o}=e,[a,i]=x.useState(void 0),l=x.useMemo(()=>({setLabelId:i}),[i]),s=sn(\"div\",e,{ref:t,props:{role:\"group\",\"aria-labelledby\":a,...o}});return(0,b.jsx)(cV.Provider,{value:l,children:s})});function cW(e){return ab(e,\"base-ui\")}let cY=x.forwardRef(function(e,t){let{className:n,render:r,id:o,...a}=e,i=cW(o),{setLabelId:l}=function(){let e=x.useContext(cV);if(void 0===e)throw Error(\"Base UI: MenuGroupRootContext is missing. Menu group parts must be used within .\");return e}();return ax(()=>(l(i),()=>{l(void 0)}),[l,i]),sn(\"div\",e,{ref:t,props:{id:i,role:\"presentation\",...a}})}),cK={type:\"regular-item\"},cX=x.memo(x.forwardRef(function(e,t){let{className:n,closeOnClick:r=!0,disabled:o=!1,highlighted:a,id:i,menuEvents:l,itemProps:s,render:c,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,...p}=e,{getItemProps:h,itemRef:m}=function(e){let{closeOnClick:t,disabled:n=!1,highlighted:r,id:o,menuEvents:a,allowMouseUpTriggerRef:i,typingRef:l,nativeButton:s,itemMetadata:c}=e,u=x.useRef(null),{getButtonProps:d,buttonRef:f}=si({disabled:n,focusableWhenDisabled:!0,native:s}),p=x.useCallback(e=>lM({id:o,role:\"menuitem\",tabIndex:r?0:-1,onMouseEnter(){\"submenu-trigger\"===c.type&&c.setActive()},onKeyUp:e=>{\" \"===e.key&&l.current&&e.preventBaseUIHandler()},onClick:e=>{t&&a.emit(\"close\",{domEvent:e,reason:\"item-press\"})},onMouseUp:()=>{u.current&&i.current&&\"regular-item\"===c.type&&u.current.click()}},e,d),[o,r,d,l,t,a,i,c]),h=lY(u,f);return x.useMemo(()=>({getItemProps:p,itemRef:h}),[p,h])}({closeOnClick:r,disabled:o,highlighted:a,id:i,menuEvents:l,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,itemMetadata:cK});return sn(\"div\",e,{state:x.useMemo(()=>({disabled:o,highlighted:a}),[o,a]),ref:[m,t],props:[s,p,h]})})),cG=x.forwardRef(function(e,t){let{id:n,label:r,nativeButton:o=!1,...a}=e,i=x.useRef(null),l=sc({label:r}),s=lY(t,l.ref,i),{itemProps:c,activeIndex:u,allowMouseUpTriggerRef:d,typingRef:f}=lA(),p=cW(n),h=l.index===u,{events:m}=ak();return(0,b.jsx)(cX,{...a,id:p,ref:s,highlighted:h,menuEvents:m,itemProps:c,allowMouseUpTriggerRef:d,typingRef:f,nativeButton:o})});var cQ=\"__next_builtin__\";function cJ(e){return e.replace(new RegExp(\"^\".concat(cQ)),\"\").replace(new RegExp(\"\".concat(\"@boundary\",\"$\")),\"\")}var c0=\"boundary:\";function c1(e){return e.startsWith(c0)}function c2(e){return e.replace(c0,\"\")}function c4(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n.\");return e}let ul=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,setTriggerElement:i,triggerProps:l}=ui();return sn(\"button\",e,{state:x.useMemo(()=>({open:a}),[a]),ref:[t,i],props:[l,o],customStyleHookMapping:l8})}),us=x.createContext(void 0);function uc(){let e=x.useContext(us);if(void 0===e)throw Error(\"Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within .\");return e}let uu=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,arrowRef:i,side:l,align:s,arrowUncentered:c,arrowStyles:u}=uc();return sn(\"div\",e,{state:x.useMemo(()=>({open:a,side:l,align:s,uncentered:c}),[a,l,s,c]),ref:[t,i],props:[{style:u,\"aria-hidden\":!0},o],customStyleHookMapping:se})}),ud={...se,...l0},uf=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,instantType:i,transitionStatus:l,popupProps:s,popupRef:c,onOpenChangeComplete:u}=ui(),{side:d,align:f}=uc();return lC({open:a,ref:c,onComplete(){a&&u?.(!0)}}),sn(\"div\",e,{state:x.useMemo(()=>({open:a,side:d,align:f,instant:i,transitionStatus:l}),[a,d,f,i,l]),ref:[t,c],props:[s,\"starting\"===l?iN:iR,o],customStyleHookMapping:ud})}),up=x.createContext(void 0),uh=x.forwardRef(function(e,t){let{render:n,className:r,anchor:o,positionMethod:a=\"absolute\",side:i=\"top\",align:l=\"center\",sideOffset:s=0,alignOffset:c=0,collisionBoundary:u=\"clipping-ancestors\",collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,trackAnchor:h=!0,collisionAvoidance:m=iU,...g}=e,{open:y,setPositionerElement:v,mounted:A,floatingRootContext:w,trackCursorAxis:C,hoverable:_}=ui(),k=c_({anchor:o,positionMethod:a,floatingRootContext:w,mounted:A,side:i,sideOffset:s,align:l,alignOffset:c,collisionBoundary:u,collisionPadding:d,sticky:p,arrowPadding:f,trackAnchor:h,keepMounted:function(){let e=x.useContext(up);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),collisionAvoidance:m}),E=x.useMemo(()=>{let e={};return y&&\"both\"!==C&&_||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!A,style:{...k.positionerStyles,...e}}},[y,C,_,A,k.positionerStyles]),j=x.useMemo(()=>({props:E,...k}),[E,k]),S=x.useMemo(()=>({open:y,side:j.side,align:j.align,anchorHidden:j.anchorHidden}),[y,j.side,j.align,j.anchorHidden]),O=x.useMemo(()=>({...S,arrowRef:j.arrowRef,arrowStyles:j.arrowStyles,arrowUncentered:j.arrowUncentered}),[S,j.arrowRef,j.arrowStyles,j.arrowUncentered]),B=sn(\"div\",e,{state:S,props:[j.props,g],ref:[t,v],customStyleHookMapping:se});return(0,b.jsx)(us.Provider,{value:O,children:B})});function um(e){let t=sG({root:e.root});return t&&ef.createPortal(e.children,t)}function ug(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=ui();return o||n?(0,b.jsx)(up.Provider,{value:n,children:(0,b.jsx)(um,{root:r,children:t})}):null}let uy=x.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new as,currentIdRef:{current:null},currentContextRef:{current:null}});function uv(e){let{children:t,delay:n,timeoutMs:r=0}=e,o=x.useRef(n),a=x.useRef(n),i=x.useRef(null),l=x.useRef(null),s=ac();return(0,b.jsx)(uy.Provider,{value:x.useMemo(()=>({hasProvider:!0,delayRef:o,initialDelayRef:a,currentIdRef:i,timeoutMs:r,currentContextRef:l,timeout:s}),[r,s]),children:t})}let ub=x.createContext(void 0),uA=function(e){let{delay:t,closeDelay:n,timeout:r=400}=e,o=x.useMemo(()=>({delay:t,closeDelay:n}),[t,n]),a=x.useMemo(()=>({open:t,close:n}),[t,n]);return(0,b.jsx)(ub.Provider,{value:o,children:(0,b.jsx)(uv,{delay:a,timeoutMs:r,children:e.children})})};function ux(e){return null!=e&&null!=e.clientX}function uw(e){let{disabled:t=!1,defaultOpen:n=!1,onOpenChange:r,open:o,delay:a,closeDelay:i,hoverable:l=!0,trackCursorAxis:s=\"none\",actionsRef:c,onOpenChangeComplete:u}=e,d=a??600,f=i??0,[p,h]=x.useState(null),[m,g]=x.useState(null),[y,v]=x.useState(),A=x.useRef(null),[w,C]=am({controlled:o,default:n,name:\"Tooltip\",state:\"open\"}),_=!t&&w;function k(e,t,n){let o=\"trigger-hover\"===n,a=e&&\"trigger-focus\"===n,i=!e&&(\"trigger-press\"===n||\"escape-key\"===n);function l(){r?.(e,t,n),C(e)}o?ef.flushSync(l):l(),a||i?v(a?\"focus\":\"dismiss\"):\"trigger-hover\"===n&&v(void 0)}let E=af(k);w&&t&&k(!1,void 0,\"disabled\");let{mounted:j,setMounted:S,transitionStatus:O}=lw(_),B=af(()=>{S(!1),u?.(!1)});lC({enabled:!c,open:_,ref:A,onComplete(){_||B()}}),x.useImperativeHandle(c,()=>({unmount:B}),[B]);let P=aS({elements:{reference:p,floating:m},open:_,onOpenChange(e,t,n){E(e,t,lz(n))}}),I=x.useContext(ub),{delayRef:z,isInstantPhase:T,hasProvider:D}=function(e,t={}){let{open:n,onOpenChange:r,floatingId:o}=e,{enabled:a=!0}=t,{currentIdRef:i,delayRef:l,timeoutMs:s,initialDelayRef:c,currentContextRef:u,hasProvider:d,timeout:f}=x.useContext(uy),[p,h]=x.useState(!1);return ax(()=>{function e(){h(!1),u.current?.setIsInstantPhase(!1),i.current=null,u.current=null,l.current=c.current}if(a&&i.current&&!n&&i.current===o){if(h(!1),s)return f.start(s,e),()=>{f.clear()};e()}},[a,n,o,i,l,s,c,u,f]),ax(()=>{if(!a||!n)return;let e=u.current,t=i.current;u.current={onOpenChange:r,setIsInstantPhase:h},i.current=o,l.current={open:0,close:ik(c.current,\"close\")},null!==t&&t!==o?(f.clear(),h(!0),e?.setIsInstantPhase(!0),e?.onOpenChange(!1)):(h(!1),e?.setIsInstantPhase(!1))},[a,n,o,r,i,l,s,c,u,f]),ax(()=>()=>{u.current=null},[u]),x.useMemo(()=>({hasProvider:d,delayRef:l,isInstantPhase:p}),[d,l,p])}(P),L=T?\"delay\":y,N=ij(P,{enabled:!t,mouseOnly:!0,move:!1,handleClose:l&&\"both\"!==s?iP():null,restMs(){let e=I?.delay,t=\"object\"==typeof z.current?z.current.open:void 0,n=d;return D&&(n=0!==t?a??e??d:0),n},delay(){let e=\"object\"==typeof z.current?z.current.close:void 0,t=f;return null==i&&D&&(t=e),{close:t}}}),R=iz(P,{enabled:!t}),M=iH(P,{enabled:!t,referencePress:!0}),{getReferenceProps:Z,getFloatingProps:U}=lg([N,R,M,function(e,t={}){let{open:n,dataRef:r,elements:{floating:o,domReference:a},refs:i}=e,{enabled:l=!0,axis:s=\"both\",x:c=null,y:u=null}=t,d=x.useRef(!1),f=x.useRef(null),[p,h]=x.useState(),[m,g]=x.useState([]),y=af((e,t)=>{if(!d.current&&(!r.current.openEvent||ux(r.current.openEvent))){var n,o;let l,c,u;i.setPositionReference((n=a,o={x:e,y:t,axis:s,dataRef:r,pointerType:p},l=null,c=null,u=!1,{contextElement:n||void 0,getBoundingClientRect(){let e=n?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},t=\"x\"===o.axis||\"both\"===o.axis,r=\"y\"===o.axis||\"both\"===o.axis,a=[\"mouseenter\",\"mousemove\"].includes(o.dataRef.current.openEvent?.type||\"\")&&\"touch\"!==o.pointerType,i=e.width,s=e.height,d=e.x,f=e.y;return null==l&&o.x&&t&&(l=e.x-o.x),null==c&&o.y&&r&&(c=e.y-o.y),d-=l||0,f-=c||0,i=0,s=0,!u||a?(i=\"y\"===o.axis?e.width:0,s=\"x\"===o.axis?e.height:0,d=t&&null!=o.x?o.x:d,f=r&&null!=o.y?o.y:f):u&&!a&&(s=\"x\"===o.axis?e.height:s,i=\"y\"===o.axis?e.width:i),u=!0,{width:i,height:s,x:d,y:f,top:f,right:d+i,bottom:f+s,left:d}}}))}}),v=af(e=>{null==c&&null==u&&(n?f.current||g([]):y(e.clientX,e.clientY))}),b=ii(p)?o:n,A=x.useCallback(()=>{if(!b||!l||null!=c||null!=u)return;let e=aP(o);function t(n){ig(o,iy(n))?(e.removeEventListener(\"mousemove\",t),f.current=null):y(n.clientX,n.clientY)}if(!r.current.openEvent||ux(r.current.openEvent)){e.addEventListener(\"mousemove\",t);let n=()=>{e.removeEventListener(\"mousemove\",t),f.current=null};return f.current=n,n}i.setPositionReference(a)},[b,l,c,u,o,r,i,a,y]);x.useEffect(()=>A(),[A,m]),x.useEffect(()=>{l&&!o&&(d.current=!1)},[l,o]),x.useEffect(()=>{!l&&n&&(d.current=!0)},[l,n]),ax(()=>{l&&(null!=c||null!=u)&&(d.current=!1,y(c,u))},[l,c,u,y]);let w=x.useMemo(()=>{function e(e){h(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:v,onMouseEnter:v}},[v]);return x.useMemo(()=>l?{reference:w}:{},[l,w])}(P,{enabled:!t&&\"none\"!==s,axis:\"none\"===s?void 0:s})]),F=x.useMemo(()=>({open:_,setOpen:E,mounted:j,setMounted:S,setTriggerElement:h,positionerElement:m,setPositionerElement:g,popupRef:A,triggerProps:Z(),popupProps:U(),floatingRootContext:P,instantType:L,transitionStatus:O,onOpenChangeComplete:u}),[_,E,j,S,h,m,g,A,Z,U,P,L,O,u]),q=x.useMemo(()=>({...F,delay:d,closeDelay:f,trackCursorAxis:s,hoverable:l}),[F,d,f,s,l]);return(0,b.jsx)(ua.Provider,{value:q,children:e.children})}var uC=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"),u_={};u_.styleTagTransform=h(),u_.setAttributes=u(),u_.insert=s(),u_.domAPI=i(),u_.insertStyleElement=f(),o()(uC.Z,u_),uC.Z&&uC.Z.locals&&uC.Z.locals;var uk=(0,x.forwardRef)(function(e,t){var n,r,o,a,i,l,s,c,u,d,f,p,h=(0,A.c)(35),m=e.className,g=e.children,y=e.title,v=e.direction,x=e.arrowSize,w=e.offset,C=void 0===v?\"top\":v,_=void 0===x?6:x,k=da().shadowRoot;if(!y)return g;h[0]!==g?(n=function(e){var t,n;return(0,b.jsx)(\"span\",(t=function(e){for(var t=1;t0,s=\"segment-explorer-footer-button \".concat(l?\"\":\"segment-explorer-footer-button--disabled\"),c=l?i:void 0,u=!l;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"span\",{className:\"segment-explorer-footer-text\",children:\"Clear Segment Overrides\"}),o[0]=t):t=o[0],o[1]!==a||o[2]!==l?(n=l&&(0,b.jsx)(\"span\",{className:\"segment-explorer-footer-badge\",children:a}),o[1]=a,o[2]=l,o[3]=n):n=o[3],o[4]!==s||o[5]!==c||o[6]!==u||o[7]!==n?(r=(0,b.jsx)(\"div\",{className:\"segment-explorer-footer\",children:(0,b.jsxs)(\"button\",{className:s,onClick:c,disabled:u,type:\"button\",children:[t,n]})}),o[4]=s,o[5]=c,o[6]=u,o[7]=n,o[8]=r):r=o[8],r}function uI(e){var t,n,r,o,a,i=(0,A.c)(15),l=e.type,s=e.isBuiltin,c=e.isOverridden,u=e.filePath,d=e.fileName,f=\"segment-explorer-file-label--\".concat(l),p=s&&\"segment-explorer-file-label--builtin\",h=c&&\"segment-explorer-file-label--overridden\";return i[0]!==f||i[1]!==p||i[2]!==h?(t=eG(\"segment-explorer-file-label\",f,p,h),i[0]=f,i[1]=p,i[2]=h,i[3]=t):t=i[3],i[4]!==u?(n=function(){var e;e=new URLSearchParams({file:{filePath:u}.filePath,isAppRelativePath:\"1\"}),fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString()))},i[4]=u,i[5]=n):n=i[5],i[6]!==d?(r=(0,b.jsx)(\"span\",{className:\"segment-explorer-file-label-text\",children:d}),i[6]=d,i[7]=r):r=i[7],i[8]!==s?(o=s?(0,b.jsx)(uL,{}):(0,b.jsx)(uR,{className:\"code-icon\"}),i[8]=s,i[9]=o):o=i[9],i[10]!==t||i[11]!==n||i[12]!==r||i[13]!==o?(a=(0,b.jsxs)(\"span\",{className:t,onClick:n,children:[r,o]}),i[10]=t,i[11]=n,i[12]=r,i[13]=o,i[14]=a):a=i[14],a}function uz(e){var t,n,r,o,a,i,l,s,c,u=(0,A.c)(17),d=e.page,f=(0,x.useSyncExternalStore)(o6,o9,o8);u[0]!==f?(n=function e(t){var n,r=0;return(null==(n=t.value)?void 0:n.setBoundaryType)&&null!==t.value.boundaryType&&!c1(t.value.type)&&r++,Object.values(t.children).forEach(function(t){t&&(r+=e(t))}),r}(f),u[0]=f,u[1]=n):n=u[1],t=n,u[2]!==f?(r=function(){!function e(t){var n;(null==(n=t.value)?void 0:n.setBoundaryType)&&t.value.setBoundaryType(null),Object.values(t.children).forEach(function(t){t&&e(t)})}(f)},u[2]=f,u[3]=r):r=u[3];var p=r;return u[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o={display:\"flex\",flexDirection:\"column\",height:\"100%\"},u[4]=o):o=u[4],u[5]!==d?(a=(0,b.jsx)(uB,{page:d}),u[5]=d,u[6]=a):a=u[6],u[7]===Symbol.for(\"react.memo_cache_sentinel\")?(i={flex:\"1 1 auto\",overflow:\"auto\"},u[7]=i):i=u[7],u[8]!==f?(l=(0,b.jsx)(\"div\",{className:\"segment-explorer-content\",\"data-nextjs-devtool-segment-explorer\":!0,style:i,children:(0,b.jsx)(uD,{node:f,level:0,segment:\"\"})}),u[8]=f,u[9]=l):l=u[9],u[10]!==t||u[11]!==p?(s=(0,b.jsx)(uP,{activeBoundariesCount:t,onGlobalReset:p}),u[10]=t,u[11]=p,u[12]=s):s=u[12],u[13]!==a||u[14]!==l||u[15]!==s?(c=(0,b.jsxs)(\"div\",{\"data-nextjs-devtools-panel-segments-explorer\":!0,style:o,children:[a,l,s]}),u[13]=a,u[14]=l,u[15]=s,u[16]=c):c=u[16],c}var uT=\"global-error\";function uD(e){var t=e.segment,n=e.node,r=e.level,o=(0,x.useMemo)(function(){return Object.keys(n.children)},[n.children]),a=(0,x.useMemo)(function(){var e=[];return o.forEach(function(t){var r=n.children[t];if(r&&r.value){var o=c2(r.value.type),a=o===uT;(a&&!r.value.pagePath.startsWith(cQ)||!a&&c1(r.value.type))&&e.push(o)}}),0===r&&!e.includes(uT)},[n.children,o,r]),i=o.sort(function(e,t){var r=e.includes(\".\"),o=t.includes(\".\");if(r&&!o)return -1;if(!r&&o)return 1;if(r&&o){var a,i,l,s,c,u,d,f,p=null==(i=n.children[e])||null==(a=i.value)?void 0:a.type,h=null==(s=n.children[t])||null==(l=s.value)?void 0:l.type,m=function(e){return e?\"layout\"===e?1:\"template\"===e?2:\"page\"===e?3:c1(e)?4:5:5},g=m(p),y=m(h);if(g!==y)return g-y;var v=(null==(u=n.children[e])||null==(c=u.value)?void 0:c.pagePath)||\"\",b=(null==(f=n.children[t])||null==(d=f.value)?void 0:d.pagePath)||\"\";return v.localeCompare(b)}return e.localeCompare(t)}),l=0!==r||t?t:\"app\",s=[],c=[],u=!0,d=!1,f=void 0;try{for(var p,h=i[Symbol.iterator]();!(u=(p=h.next()).done);u=!0){var m=p.value,g=n.children[m];if(g){if(uO(g)){c.push(m);continue}s.push(m)}}}catch(e){d=!0,f=e}finally{try{u||null==h.return||h.return()}finally{if(d)throw f}}for(var y=cJ(c[0]||\"\").split(\".\").pop()||\"js\",v=null,A=i.length-1;A>=0;A--){var w=n.children[i[A]];if(w&&w.value){var C=c1(w.value.type);if(!v&&!C){v=w;break}}}var _=null,k=!0,E=!1,j=void 0;try{for(var S,O=i[Symbol.iterator]();!(k=(S=O.next()).done);k=!0){var B=S.value,P=n.children[B];if(P&&P.value&&c1(P.value.type)){_=P;break}}}catch(e){E=!0,j=e}finally{try{k||null==O.return||O.return()}finally{if(E)throw j}}v=v||_;var I=c.length>0,z={\"not-found\":null,loading:null,error:null,\"global-error\":null};return c.forEach(function(e){var t=n.children[e];if(t&&t.value&&c1(t.value.type)){var r=c2(t.value.type);r in z&&(z[r]=t.value.pagePath||null)}}),(0,b.jsxs)(b.Fragment,{children:[I&&(0,b.jsx)(\"div\",{className:\"segment-explorer-item\",\"data-nextjs-devtool-segment-explorer-segment\":t+\"-\"+r,children:(0,b.jsx)(\"div\",{className:\"segment-explorer-item-row\",style:uj({},{paddingLeft:\"\".concat((r+1)*8,\"px\")}),children:(0,b.jsx)(\"div\",{className:\"segment-explorer-item-row-main\",children:(0,b.jsxs)(\"div\",{className:\"segment-explorer-filename\",children:[l&&(0,b.jsxs)(\"span\",{className:\"segment-explorer-filename--path\",children:[l,(0,b.jsx)(\"small\",{children:\"/\"})]}),a&&(0,b.jsx)(uE,{possibleExtension:y,missingGlobalError:a}),c.length>0&&(0,b.jsx)(\"span\",{className:\"segment-explorer-files\",children:c.map(function(e){var t=n.children[e];if(!t||!t.value||c1(t.value.type))return null;var r=t.value.pagePath,o=r.split(\"/\").pop()||\"\",a=r.startsWith(cQ),i=cJ(o),l=a?\"The default Next.js \".concat(t.value.type,\" is being shown. You can customize this page by adding your own \").concat(i,\" file to the app/ directory.\"):null,s=null!==t.value.boundaryType;return(0,b.jsx)(uk,{className:\"segment-explorer-file-label-tooltip--\"+(a?\"lg\":\"sm\"),direction:a?\"right\":\"top\",title:l,offset:12,children:(0,b.jsx)(uI,{type:t.value.type,isBuiltin:a,isOverridden:s,filePath:r,fileName:i})},e)})}),v&&v.value&&(0,b.jsx)(c8,{nodeState:v.value,boundaries:z})]})})})}),s.map(function(e){var o=n.children[e];if(!o)return null;var a=I?e:t+\" / \"+e;return(0,b.jsx)(uD,{segment:a,node:o,level:I?r+1:r},e)})]})}function uL(e){var t,n,r,o=(0,A.c)(4);return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{d:\"M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z\",fill:\"var(--color-gray-400)\"}),n=(0,b.jsx)(\"path\",{d:\"M7.75 7C8.30228 7.00001 8.75 7.44772 8.75 8V11.25H7.25V8.5H6.25V7H7.75ZM8 4C8.55228 4 9 4.44772 9 5C9 5.55228 8.55228 6 8 6C7.44772 6 7 5.55228 7 5C7 4.44772 7.44772 4 8 4Z\",fill:\"var(--color-gray-900)\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==e?(r=(0,b.jsxs)(\"svg\",uS(uj({width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:[t,n]})),o[2]=e,o[3]=r):r=o[3],r}function uN(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 20 20\",fill:\"var(--color-gray-600)\",xmlns:\"http://www.w3.org/2000/svg\",children:(0,b.jsx)(\"path\",{d:\"M4.5 11.25C4.5 11.3881 4.61193 11.5 4.75 11.5H14.4395L11.9395 9L13 7.93945L16.7803 11.7197L16.832 11.7764C17.0723 12.0709 17.0549 12.5057 16.7803 12.7803L13 16.5605L11.9395 15.5L14.4395 13H4.75C3.7835 13 3 12.2165 3 11.25V4.25H4.5V11.25Z\"})}),t[0]=e):e=t[0],e}function uR(e){var t,n,r=(0,A.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M7.22763 14.1819L10.2276 2.18193L10.4095 1.45432L8.95432 1.09052L8.77242 1.81812L5.77242 13.8181L5.59051 14.5457L7.04573 14.9095L7.22763 14.1819ZM3.75002 12.0607L3.21969 11.5304L0.39647 8.70713C0.00594559 8.31661 0.00594559 7.68344 0.39647 7.29292L3.21969 4.46969L3.75002 3.93936L4.81068 5.00002L4.28035 5.53035L1.81068 8.00003L4.28035 10.4697L4.81068 11L3.75002 12.0607ZM12.25 12.0607L12.7804 11.5304L15.6036 8.70713C15.9941 8.31661 15.9941 7.68344 15.6036 7.29292L12.7804 4.46969L12.25 3.93936L11.1894 5.00002L11.7197 5.53035L14.1894 8.00003L11.7197 10.4697L11.1894 11L12.25 12.0607Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,b.jsx)(\"svg\",uS(uj({width:\"12\",height:\"12\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",fill:\"currentColor\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function uM(){var e,t,n=(e=[\"\\n .dev-tools-info-close-button:focus-visible {\\n outline: var(--focus-ring);\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return uM=function(){return n},n}function uZ(e){var t,n,r,o,a,i,l,s,c,u,d,f=(0,A.c)(18),p=e.title,h=e.children,m=e.ref,g=r2().setPanel,y=(0,x.useRef)(null);return f[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){var e;null==(e=y.current)||e.focus()},n=[],f[0]=t,f[1]=n):(t=f[0],n=f[1]),(0,x.useLayoutEffect)(t,n),f[2]===Symbol.for(\"react.memo_cache_sentinel\")?(r={width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",padding:\"8px 20px\",userSelect:\"none\",WebkitUserSelect:\"none\",borderBottom:\"1px solid var(--color-gray-alpha-400)\"},f[2]=r):r=f[2],f[3]===Symbol.for(\"react.memo_cache_sentinel\")?(o={margin:0,fontSize:\"14px\",color:\"var(--color-text-primary)\",fontWeight:\"normal\"},f[3]=o):o=f[3],f[4]!==p?(a=(0,b.jsx)(\"h3\",{style:o,children:p}),f[4]=p,f[5]=a):a=f[5],f[6]!==g?(i=function(){g(\"panel-selector\")},f[6]=g,f[7]=i):i=f[7],f[8]===Symbol.for(\"react.memo_cache_sentinel\")?(l={background:\"none\",border:\"none\",cursor:\"pointer\",padding:\"4px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"4px\",color:\"var(--color-gray-900)\"},s=(0,b.jsx)(uU,{}),f[8]=l,f[9]=s):(l=f[8],s=f[9]),f[10]!==i?(c=(0,b.jsx)(\"button\",{ref:y,id:\"_next-devtools-panel-close\",className:\"dev-tools-info-close-button\",onClick:i,\"aria-label\":\"Close devtools panel\",style:l,children:s}),f[10]=i,f[11]=c):c=f[11],f[12]===Symbol.for(\"react.memo_cache_sentinel\")?(u=(0,b.jsx)(\"style\",{children:es(uM())}),f[12]=u):u=f[12],f[13]!==h||f[14]!==m||f[15]!==a||f[16]!==c?(d=(0,b.jsxs)(\"div\",{style:r,ref:m,children:[a,h,c,u]}),f[13]=h,f[14]=m,f[15]=a,f[16]=c,f[17]=d):d=f[17],d}function uU(e){var t,n,r,o=(0,A.c)(4),a=e.size,i=void 0===a?22:a;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{d:\"M18 6 6 18\"}),n=(0,b.jsx)(\"path\",{d:\"m6 6 12 12\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==i?(r=(0,b.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:i,height:i,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[t,n]}),o[2]=i,o[3]=r):r=o[3],r}function uF(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 20 20\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m9.7 3.736.045-.236h.51l.044.236a2.024 2.024 0 0 0 1.334 1.536c.19.066.375.143.554.23.618.301 1.398.29 2.03-.143l.199-.136.36.361-.135.199a2.024 2.024 0 0 0-.143 2.03c.087.179.164.364.23.554.224.65.783 1.192 1.536 1.334l.236.044v.51l-.236.044a2.024 2.024 0 0 0-1.536 1.334 4.95 4.95 0 0 1-.23.554 2.024 2.024 0 0 0 .143 2.03l.136.199-.361.36-.199-.135a2.024 2.024 0 0 0-2.03-.143c-.179.087-.364.164-.554.23a2.024 2.024 0 0 0-1.334 1.536l-.044.236h-.51l-.044-.236a2.024 2.024 0 0 0-1.334-1.536 4.952 4.952 0 0 1-.554-.23 2.024 2.024 0 0 0-2.03.143l-.199.136-.36-.361.135-.199a2.024 2.024 0 0 0 .143-2.03 4.958 4.958 0 0 1-.23-.554 2.024 2.024 0 0 0-1.536-1.334l-.236-.044v-.51l.236-.044a2.024 2.024 0 0 0 1.536-1.334 4.96 4.96 0 0 1 .23-.554 2.024 2.024 0 0 0-.143-2.03l-.136-.199.361-.36.199.135a2.024 2.024 0 0 0 2.03.143c.179-.087.364-.164.554-.23a2.024 2.024 0 0 0 1.334-1.536ZM8.5 2h3l.274 1.46c.034.185.17.333.348.394.248.086.49.186.722.3.17.082.37.074.526-.033l1.226-.839 2.122 2.122-.84 1.226a.524.524 0 0 0-.032.526c.114.233.214.474.3.722.061.177.21.314.394.348L18 8.5v3l-1.46.274a.524.524 0 0 0-.394.348 6.47 6.47 0 0 1-.3.722.524.524 0 0 0 .033.526l.839 1.226-2.122 2.122-1.226-.84a.524.524 0 0 0-.526-.032 6.477 6.477 0 0 1-.722.3.524.524 0 0 0-.348.394L11.5 18h-3l-.274-1.46a.524.524 0 0 0-.348-.394 6.477 6.477 0 0 1-.722-.3.524.524 0 0 0-.526.033l-1.226.839-2.122-2.122.84-1.226a.524.524 0 0 0 .032-.526 6.453 6.453 0 0 1-.3-.722.524.524 0 0 0-.394-.348L2 11.5v-3l1.46-.274a.524.524 0 0 0 .394-.348c.086-.248.186-.49.3-.722a.524.524 0 0 0-.033-.526l-.839-1.226 2.122-2.122 1.226.84a.524.524 0 0 0 .526.032 6.46 6.46 0 0 1 .722-.3.524.524 0 0 0 .348-.394L8.5 2Zm3 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm1.5 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}var uq=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\"),uH={};uH.styleTagTransform=h(),uH.setAttributes=u(),uH.insert=s(),uH.domAPI=i(),uH.insertStyleElement=f(),o()(uq.Z,uH),uq.Z&&uq.Z.locals&&uq.Z.locals;var uV=function(){var e,t,n,r,o,a,i,l,s,c,u,d=(0,A.c)(32),f=r2(),p=f.setPanel,h=f.setSelectedIndex,m=da(),g=m.state,y=m.dispatch,v=u4().totalErrorCount,x=\"app\"===g.routerType;d[0]!==y||d[1]!==p||d[2]!==h||d[3]!==g.isErrorOverlayOpen||d[4]!==v?(e=v>0&&{title:\"\".concat(v,\" \").concat(1===v?\"issue\":\"issues\",\" found. Click to view details in the dev overlay.\"),label:\"Issues\",value:(0,b.jsx)(oz,{children:v}),onClick:function(){if(g.isErrorOverlayOpen){y({type:F}),p(null);return}p(null),h(-1),v>0&&y({type:U})}},d[0]=y,d[1]=p,d[2]=h,d[3]=g.isErrorOverlayOpen,d[4]=v,d[5]=e):e=d[5];var w=\"Current route is \".concat(g.staticIndicator?\"static\":\"dynamic\",\".\"),C=g.staticIndicator?\"Static\":\"Dynamic\";d[6]!==p?(t=function(){return p(\"route-type\")},d[6]=p,d[7]=t):t=d[7];var _=g.staticIndicator?\"static\":\"dynamic\";return d[8]!==_?(n={\"data-nextjs-route-type\":_},d[8]=_,d[9]=n):n=d[9],d[10]!==w||d[11]!==C||d[12]!==t||d[13]!==n?(r={title:w,label:\"Route\",value:C,onClick:t,attributes:n},d[10]=w,d[11]=C,d[12]=t,d[13]=n,d[14]=r):r=d[14],d[15]!==p?(o= false?0:{title:\"Learn about Turbopack and how to enable it in your application.\",label:\"Try Turbopack\",value:(0,b.jsx)(oT,{}),onClick:function(){return p(\"turbo-info\")}},d[15]=p,d[16]=o):o=d[16],d[17]!==x||d[18]!==p?(a= true&&x&&{label:\"Route Info\",value:(0,b.jsx)(oT,{}),onClick:function(){return p(\"segment-explorer\")},attributes:{\"data-segment-explorer\":!0}},d[17]=x,d[18]=p,d[19]=a):a=d[19],d[20]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,b.jsx)(uF,{}),d[20]=i):i=d[20],d[21]!==p?(l=function(){return p(\"preferences\")},d[21]=p,d[22]=l):l=d[22],d[23]===Symbol.for(\"react.memo_cache_sentinel\")?(s={\"data-preferences\":!0},d[23]=s):s=d[23],d[24]!==l?(c={label:\"Preferences\",value:i,onClick:l,footer:!0,attributes:s},d[24]=l,d[25]=c):c=d[25],d[26]!==e||d[27]!==c||d[28]!==r||d[29]!==o||d[30]!==a?(u=(0,b.jsx)(oP,{items:[e,r,o,a,c]}),d[26]=e,d[27]=c,d[28]=r,d[29]=o,d[30]=a,d[31]=u):u=d[31],u},u$=function(){var e,t=(0,A.c)(4),n=da(),r=n.state,o=n.dispatch,a=n.shadowRoot;return t[0]!==o||t[1]!==a||t[2]!==r.disableDevIndicator?(e=function(){o({type:Z,disabled:!r.disableDevIndicator});var e=a.getElementById(\"panel-route\"),t=a.getElementById(\"data-devtools-indicator\");if(e&&e.firstElementChild){var n=e.firstElementChild,i=\"none\"===n.style.display;n.style.display=i?\"\":\"none\"}if(t){var l=\"none\"===t.style.display;t.style.display=l?\"\":\"none\"}},t[0]=o,t[1]=a,t[2]=r.disableDevIndicator,t[3]=e):e=t[3],e},uW=function(){var e,t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,w,C,_,k,E,j,S,O=(0,A.c)(44),B=da().state,P=r2().triggerRef,I=u$(),z=\"app\"===B.routerType;O[0]!==B.hideShortcut||O[1]!==I?(s=B.hideShortcut?(e={},t=B.hideShortcut,n=I,t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e):{},O[0]=B.hideShortcut,O[1]=I,O[2]=s):s=O[2],r=s,o=P,(l=(0,A.c)(4))[0]!==o||l[1]!==r?(a=function(){var e=function(e){if(!((n=t9((t=o).current))&&(\"true\"===n.contentEditable||\"INPUT\"===n.tagName||\"TEXTAREA\"===n.tagName||\"SELECT\"===n.tagName||\"true\"===n.dataset[\"shortcut-recorder\"])&&!n.hasAttribute(\"readonly\"))){var t,n,a=[];e.metaKey&&a.push(\"Meta\"),e.ctrlKey&&a.push(\"Control\"),e.altKey&&a.push(\"Alt\"),e.shiftKey&&a.push(\"Shift\"),\"Meta\"!==e.key&&\"Control\"!==e.key&&\"Alt\"!==e.key&&\"Shift\"!==e.key&&a.push(e.code);var i=a.join(\"+\");r[i]&&(e.preventDefault(),r[i]())}};return window.addEventListener(\"keydown\",e),function(){return window.removeEventListener(\"keydown\",e)}},i=[o,r],l[0]=o,l[1]=r,l[2]=a,l[3]=i):(a=l[2],i=l[3]),(0,x.useEffect)(a,i),O[3]===Symbol.for(\"react.memo_cache_sentinel\")?(c=(0,b.jsx)(uQ,{name:\"panel-selector\",children:(0,b.jsx)(uV,{})}),O[3]=c):c=O[3];var T=500/B.scale;O[4]!==T?(u={kind:\"fixed\",height:T,width:512},O[4]=T,O[5]=u):u=O[5],O[6]===Symbol.for(\"react.memo_cache_sentinel\")?(d=(0,b.jsx)(uZ,{title:\"Preferences\"}),f=(0,b.jsx)(uK,{}),O[6]=d,O[7]=f):(d=O[6],f=O[7]),O[8]!==u?(p=(0,b.jsx)(uQ,{name:\"preferences\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:u,closeOnClickOutside:!0,header:d,children:f})}),O[8]=u,O[9]=p):p=O[9];var D=B.staticIndicator?\"static\":\"dynamic\",L=B.staticIndicator?300/B.scale:325/B.scale,N=400/B.scale;O[10]!==L||O[11]!==N?(h={kind:\"fixed\",height:L,width:N},O[10]=L,O[11]=N,O[12]=h):h=O[12];var R=\"\".concat(B.staticIndicator?\"Static\":\"Dynamic\",\" Route\");O[13]!==R?(m=(0,b.jsx)(uZ,{title:R}),O[13]=R,O[14]=m):m=O[14],O[15]!==B.routerType||O[16]!==B.staticIndicator?(g=(0,b.jsx)(n1,{routerType:B.routerType,isStaticRoute:B.staticIndicator}),O[15]=B.routerType,O[16]=B.staticIndicator,O[17]=g):g=O[17];var M=n0[B.routerType][B.staticIndicator?\"static\":\"dynamic\"];O[18]!==M?(y=(0,b.jsx)(uY,{href:M}),O[18]=M,O[19]=y):y=O[19],O[20]!==g||O[21]!==y?(v=(0,b.jsxs)(\"div\",{className:\"panel-content\",children:[g,y]}),O[20]=g,O[21]=y,O[22]=v):v=O[22],O[23]!==h||O[24]!==m||O[25]!==v||O[26]!==D?(w=(0,b.jsx)(uQ,{name:\"route-type\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:h,closeOnClickOutside:!0,header:m,children:v},D)}),O[23]=h,O[24]=m,O[25]=v,O[26]=D,O[27]=w):w=O[27],O[28]!==z||O[29]!==B.page||O[30]!==B.scale?(C= true&&z&&(0,b.jsx)(uQ,{name:\"segment-explorer\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sharePanelPositionGlobally:!1,draggable:!0,sizeConfig:{kind:\"resizable\",maxHeight:\"90vh\",maxWidth:\"90vw\",minHeight:200/B.scale,minWidth:250/B.scale,initialSize:{height:375/B.scale,width:400/B.scale}},header:(0,b.jsx)(uZ,{title:\"Route Info\"}),children:(0,b.jsx)(uz,{page:B.page})})}),O[28]=z,O[29]=B.page,O[30]=B.scale,O[31]=C):C=O[31];var Z=470/B.scale,U=400/B.scale;return O[32]!==Z||O[33]!==U?(_={kind:\"fixed\",height:Z,width:U},O[32]=Z,O[33]=U,O[34]=_):_=O[34],O[35]===Symbol.for(\"react.memo_cache_sentinel\")?(k=(0,b.jsx)(uZ,{title:\"Try Turbopack\"}),O[35]=k):k=O[35],O[36]===Symbol.for(\"react.memo_cache_sentinel\")?(E=(0,b.jsxs)(\"div\",{className:\"panel-content\",children:[(0,b.jsx)(nY,{}),(0,b.jsx)(uY,{href:\"https://nextjs.org/docs/app/api-reference/turbopack\"})]}),O[36]=E):E=O[36],O[37]!==_?(j=(0,b.jsx)(uQ,{name:\"turbo-info\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:_,closeOnClickOutside:!0,header:k,children:E})}),O[37]=_,O[38]=j):j=O[38],O[39]!==w||O[40]!==C||O[41]!==j||O[42]!==p?(S=(0,b.jsxs)(b.Fragment,{children:[c,p,w,C,j]}),O[39]=w,O[40]=C,O[41]=j,O[42]=p,O[43]=S):S=O[43],S},uY=function(e){var t,n=(0,A.c)(2),r=e.href;return n[0]!==r?(t=(0,b.jsx)(\"div\",{className:\"dev-tools-info-button-container\",children:(0,b.jsx)(\"a\",{className:\"dev-tools-info-learn-more-button\",href:r,target:\"_blank\",rel:\"noreferrer noopener\",children:\"Learn More\"})}),n[0]=r,n[1]=t):t=n[1],t},uK=function(){var e,t,n,r,o=(0,A.c)(17),a=da(),i=a.dispatch,l=a.state,s=r2(),c=s.setPanel,u=s.setSelectedIndex,d=ow();return o[0]!==i?(e=function(e){i({type:X,scale:e})},o[0]=i,o[1]=e):e=o[1],o[2]!==i||o[3]!==d?(t=function(e){i({type:Y,devToolsPosition:e}),d(e)},o[2]=i,o[3]=d,o[4]=t):t=o[4],o[5]!==i||o[6]!==c||o[7]!==u?(n=function(){i({type:Z,disabled:!0}),u(-1),c(null),fetch(\"/__nextjs_disable_dev_indicator\",{method:\"POST\"})},o[5]=i,o[6]=c,o[7]=u,o[8]=n):n=o[8],o[9]!==l.devToolsPosition||o[10]!==l.hideShortcut||o[11]!==l.scale||o[12]!==l.theme||o[13]!==e||o[14]!==t||o[15]!==n?(r=(0,b.jsx)(\"div\",{className:\"user-preferences-wrapper\",children:(0,b.jsx)(rC,{theme:l.theme,position:l.devToolsPosition,scale:l.scale,setScale:e,setPosition:t,hideShortcut:l.hideShortcut,setHideShortcut:uJ,hide:n})}),o[9]=l.devToolsPosition,o[10]=l.hideShortcut,o[11]=l.scale,o[12]=l.theme,o[13]=e,o[14]=t,o[15]=n,o[16]=r):r=o[16],r},uX=function(){return(0,x.useContext)(uG)},uG=(0,x.createContext)(null);function uQ(e){var t,n,r,o,a,i=(0,A.c)(12),l=e.children,s=e.name,c=r2().panel;i[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t={enterDelay:0,exitDelay:200},i[0]=t):t=i[0];var u=rD(s===c,t),d=u.mounted,f=u.rendered;if(!d)return null;i[1]!==d||i[2]!==s?(n={name:s,mounted:d},i[1]=d,i[2]=s,i[3]=n):n=i[3];var p=+!!f;i[4]!==p?(r={\"--panel-opacity\":p,\"--panel-transition\":\"opacity \".concat(200,\"ms \").concat(t7)},i[4]=p,i[5]=r):r=i[5];var h=r;return i[6]!==l||i[7]!==h?(o=(0,b.jsx)(\"div\",{id:\"panel-route\",className:\"panel-route\",style:h,children:l}),i[6]=l,i[7]=h,i[8]=o):o=i[8],i[9]!==n||i[10]!==o?(a=(0,b.jsx)(uG,{value:n,children:o}),i[9]=n,i[10]=o,i[11]=a):a=i[11],a}function uJ(e){rA({hideShortcut:e})}function u0(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:\"/Users/jettcheng1018/code/dramaling-vocab-learning/frontend/.next\";return e?(e=e.split(\"\\n\").map(function(e){return e.includes(\"(eval \")&&(e=e.replace(/eval code/g,\"eval\").replace(/\\(eval at [^()]* \\(/,\"(file://\").replace(/\\),.*$/g,\")\")),e}).join(\"\\n\"),(0,C.parse)(e).map(function(e){try{var n=new URL(e.file),r=_.exec(n.pathname);if(r){var o,a=null==t||null==(o=t.replace(/\\\\/g,\"/\"))?void 0:o.replace(/\\/$/,\"\");a&&(e.file=\"file://\"+a.concat(r.pop())+n.search)}}catch(e){}return{file:e.file,line1:e.lineNumber,column1:e.column,methodName:e.methodName,arguments:e.arguments}})):[]}((o.stack||\"\")+(i||\"\")),s={id:t,error:o,frames:l,type:r(o)?\"recoverable\":(a=o)&&\"NEXT_CONSOLE_ERROR\"===a[k]?\"console\":\"runtime\"},c=e.filter(function(e){return e.error.stack!==s.error.stack&&eo(e.error.stack)!==eo(s.error.stack)||n(e.error)!==n(s.error)});return c.length===e.length?(c.push(s),c):e},s[0]=n,s[1]=r,s[2]=a):a=s[2],c=a,(s[3]!==c?(i=function(e,t){switch(t.type){case R:return S(j({},e),{debugInfo:t.debugInfo});case B:return S(j({},e),{staticIndicator:t.staticIndicator});case P:return S(j({},e),{buildError:null});case I:return S(j({},e),{buildError:t.message});case z:return S(j({},e),{refreshState:{type:\"pending\",errors:[]}});case T:return S(j({},e),{buildError:null,errors:\"pending\"===e.refreshState.type?e.refreshState.errors:[],refreshState:{type:\"idle\"}});case L:case N:switch(e.refreshState.type){case\"idle\":return S(j({},e),{nextId:e.nextId+1,errors:c(e.errors,e.nextId,t.reason)});case\"pending\":return S(j({},e),{nextId:e.nextId+1,refreshState:S(j({},e.refreshState),{errors:c(e.errors,e.nextId,t.reason)})});default:return e}case D:return S(j({},e),{versionInfo:t.versionInfo});case Z:return S(j({},e),{disableDevIndicator:t.disabled});case M:return S(j({},e),{showIndicator:!0,disableDevIndicator:ea||!!t.devIndicator.disabledUntil});case U:return S(j({},e),{isErrorOverlayOpen:!0});case F:return S(j({},e),{isErrorOverlayOpen:!1});case q:return S(j({},e),{isErrorOverlayOpen:!e.isErrorOverlayOpen});case H:return S(j({},e),{buildingIndicator:!0});case V:return S(j({},e),{buildingIndicator:!1});case $:return S(j({},e),{renderingIndicator:!0});case W:return S(j({},e),{renderingIndicator:!1});case Y:return S(j({},e),{devToolsPosition:t.devToolsPosition});case K:return S(j({},e),{devToolsPanelPosition:S(j({},e.devToolsPanelPosition),E({},t.key,t.devToolsPanelPosition))});case X:return S(j({},e),{scale:t.scale});case en:return S(j({},e),{page:t.page});case G:var n=t.devToolsConfig,r=n.theme,o=n.disableDevIndicator,a=n.devToolsPosition,i=n.devToolsPanelPosition,l=n.devToolsPanelSize,s=n.scale,u=n.hideShortcut;return S(j({},e),{theme:null!=r?r:e.theme,disableDevIndicator:null!=o?o:e.disableDevIndicator,devToolsPosition:null!=a?a:e.devToolsPosition,devToolsPanelPosition:null!=i?i:e.devToolsPanelPosition,scale:null!=s?s:e.scale,devToolsPanelSize:null!=l?l:e.devToolsPanelSize,hideShortcut:void 0!==u?u:e.hideShortcut});default:return e}},s[3]=c,s[4]=i):i=s[4],s[5]!==t)?(o=t,l=S(j({},ei),{isErrorOverlayOpen:\"pages\"===o,routerType:o}),s[5]=t,s[6]=l):l=s[6],u=(0,x.useReducer)(i,l),d=2,function(e){if(Array.isArray(e))return e}(u)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(u,2)||u9(u,d)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),es=el[0],ec=el[1];return O[0]!==er.host||O[1]!==es.theme?(f=function(){var e=er.host;\"dark\"===es.theme?(e.classList.add(\"dark\"),e.classList.remove(\"light\")):\"light\"===es.theme?(e.classList.add(\"light\"),e.classList.remove(\"dark\")):(e.classList.remove(\"dark\"),e.classList.remove(\"light\"))},O[0]=er.host,O[1]=es.theme,O[2]=f):f=O[2],O[3]!==er||O[4]!==es.theme?(p=[er,es.theme],O[3]=er,O[4]=es.theme,O[5]=p):p=O[5],(0,x.useLayoutEffect)(f,p),O[6]!==ec?(h=function(){u8=ec;var e=setTimeout(function(){!function(e){try{var t=!0,n=!1,r=void 0;try{for(var o,a=u7[Symbol.iterator]();!(t=(o=a.next()).done);t=!0)(0,o.value)(e)}catch(e){n=!0,r=e}finally{try{t||null==a.return||a.return()}finally{if(n)throw r}}}finally{u7.length=0}}(ec)});return function(){u8=null,clearTimeout(e)}},O[6]=ec,O[7]=h):h=O[7],O[8]===Symbol.for(\"react.memo_cache_sentinel\")?(m=[],O[8]=m):m=O[8],(0,x.useInsertionEffect)(h,m),O[9]===Symbol.for(\"react.memo_cache_sentinel\")?(g=(0,b.jsx)(eu,{}),O[9]=g):g=O[9],O[10]!==ec||O[11]!==J||O[12]!==er||O[13]!==es?(y={dispatch:ec,getSquashedHydrationErrorDetails:J,shadowRoot:er,state:es},O[10]=ec,O[11]=J,O[12]=er,O[13]=es,O[14]=y):y=O[14],O[15]===Symbol.for(\"react.memo_cache_sentinel\")?(v=(0,b.jsx)(u5,{}),O[15]=v):v=O[15],O[16]!==y?(w=(0,b.jsxs)(b.Fragment,{children:[g,(0,b.jsx)(dr,{value:y,children:v})]}),O[16]=y,O[17]=w):w=O[17],w}var dr=(0,x.createContext)(null),da=function(){return(0,x.useContext)(dr)},di=!1,dl=!1;function ds(){return null}function dc(e,t){if(di)throw Error(\"Next DevTools: Pages Dev Overlay is already mounted. This is a bug in Next.js\");if(!dl){var n=document.createElement(\"script\");n.style.display=\"block\",n.style.position=\"absolute\",n.setAttribute(\"data-nextjs-dev-overlay\",\"true\");var r=document.createElement(\"nextjs-portal\");n.appendChild(r),document.body.appendChild(n);var o=(0,el.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,x.startTransition)(function(){o.render((0,b.jsx)(dn,{getOwnerStack:e,getSquashedHydrationErrorDetails:ds,isRecoverableError:t,routerType:\"app\",shadowRoot:a}))}),dl=!0}}function du(e,t,n){if(dl)throw Error(\"Next DevTools: App Dev Overlay is already mounted. This is a bug in Next.js\");if(!di){var r=document.createElement(\"nextjs-portal\");r.style.position=\"absolute\",new MutationObserver(function(e){var t=!0,n=!1,o=void 0;try{for(var a,i=e[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var l=a.value;if(\"childList\"===l.type){var s=!0,c=!1,u=void 0;try{for(var d,f=l.removedNodes[Symbol.iterator]();!(s=(d=f.next()).done);s=!0)d.value===r&&document.body.appendChild(r)}catch(e){c=!0,u=e}finally{try{s||null==f.return||f.return()}finally{if(c)throw u}}}}}catch(e){n=!0,o=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw o}}}).observe(document.body,{childList:!0}),document.body.appendChild(r);var o=(0,el.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,x.startTransition)(function(){o.render((0,b.jsx)(dn,{getOwnerStack:e,getSquashedHydrationErrorDetails:t,isRecoverableError:n,routerType:\"pages\",shadowRoot:a}))}),di=!0}}})(),exports.DevOverlayContext=__nested_webpack_exports__.DevOverlayContext,exports.dispatcher=__nested_webpack_exports__.dispatcher,exports.renderAppDevOverlay=__nested_webpack_exports__.renderAppDevOverlay,exports.renderPagesDevOverlay=__nested_webpack_exports__.renderPagesDevOverlay,exports.useDevOverlayContext=__nested_webpack_exports__.useDevOverlayContext,__nested_webpack_exports__)-1===[\"DevOverlayContext\",\"dispatcher\",\"renderAppDevOverlay\",\"renderPagesDevOverlay\",\"useDevOverlayContext\"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__nested_webpack_exports__[__webpack_i__]);Object.defineProperty(exports, \"__esModule\", ({value:!0}));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEseUJBQXlCLDZSQUE2UixhQUFhLE9BQU8sUUFBUSxFQUFFLDhhQUE4YTtBQUNsd0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDZJQUE2SSxLQUFLLFVBQVUsS0FBSyxNQUFNLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxX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O0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sMklBQTJJLFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLFdBQVcsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxZQUFZLE1BQU0sWUFBWSxPQUFPLE1BQU0sVUFBVSxVQUFVLFVBQVUsWUFBWSxPQUFPLGFBQWEsT0FBTyxVQUFVLFVBQVUsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLE1BQU0sUUFBUSxVQUFVLFVBQVUsVUFBVSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLE1BQU0sS0FBSyxVQUFVLFVBQVUsWUFBWSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksT0FBTyxNQUFNLFVBQVUsVUFBVSxZQUFZLE9BQU8sTUFBTSxVQUFVLFVBQVUsWUFBWSxPQUFPLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUlBQWlJLFlBQVksV0FBVyxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsWUFBWSxhQUFhLGFBQWEsV0FBVyxNQUFNLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzR0FBc0csV0FBVyxZQUFZLFdBQVcsT0FBTyxVQUFVLEtBQUssT0FBTyxZQUFZLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sY0FBYyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sT0FBTyxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLE9BQU8sVUFBVSxVQUFVLFlBQVksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLE1BQU0sWUFBWSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsT0FBTyxPQUFPLFVBQVUsWUFBWSxPQUFPLFFBQVEsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxXQUFXLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sTUFBTSxZQUFZLFdBQVcsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxPQUFPLEtBQUssVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLFlBQVksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLFFBQVEsS0FBSyxP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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4R0FBOEcsWUFBWSxhQUFhLGNBQWMsYUFBYSxjQUFjLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxPQUFPLEtBQUssS0FBSyxZQUFZLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFB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Q0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlIQUFpSCxVQUFVLEtBQUssYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsTUFBTSxPQUFPLE1BQU0sTUFBTSxZQUFZLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLE9BQU8sTUFBTSxPQUFPLGFBQWEsYUFBYSxjQUFjLGFBQWEsTUFBTSxRQUFRLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxnQkFBZ0IsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxnQkFBZ0IsS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLE1BQU0sVUFBVSxLQUFLLE1BQU0sVUFBVSxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxNQUFNLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSw4QkFBOEIsbVlBQW1ZLDRCQUE0QiwrQ0FBK0MsZ0RBQWdELG1DQUFtQyw4QkFBOEIsaUNBQWlDLCtCQUErQiwrQkFBK0IsaUpBQWlKLG9HQUFvRywwQ0FBMEMsaUNBQWlDLHNGQUFzRiw0RUFBNEUsa0ZBQWtGLHlGQUF5RiwwRkFBMEYsc0RBQXNELHdEQUF3RCw2QkFBNkIsc0RBQXNELHNJQUFzSSwyQ0FBMkMsK0NBQStDLDJEQUEyRCw0REFBNEQsKzRDQUErNEMsMEJBQTBCLHNCQUFzQixzQkFBc0Isd0JBQXdCLHNCQUFzQix1QkFBdUIsd0JBQXdCLHdCQUF3Qix3QkFBd0IsMkJBQTJCLDBjQUEwYyx3REFBd0Qsd0RBQXdELHdEQUF3RCx3REFBd0Qsd0RBQXdELHdEQUF3RCx3REFBd0Qsd0RBQXdELHdEQUF3RCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCwwREFBMEQsMERBQTBELDBEQUEwRCxvQkFBb0Isb0JBQW9CLEtBQUssR0FBRyxpQ0FBaUMsdUJBQXVCLHFCQUFxQixxQkFBcUIsR0FBRyxPQUFPLGlDQUFpQyxhQUFhLG1DQUFtQyxLQUFLLHFCQUFxQixpQ0FBaUMsS0FBSyxHQUFHLG1CQUFtQixHQUFHLFFBQVEsNk1BQTZNLGFBQWEsc0JBQXNCLFNBQVMsNkJBQTZCLDRCQUE0Qix5QkFBeUIsK0NBQStDLHVDQUF1QyxnRUFBZ0UscUJBQXFCLGVBQWUsZUFBZSxLQUFLLFdBQVcseUJBQXlCLDBDQUEwQyxTQUFTLGlCQUFpQixjQUFjLEtBQUssaUJBQWlCLG1CQUFtQixZQUFZLFdBQVcsS0FBSyxzQkFBc0Isb0dBQW9HLGlCQUFpQixxREFBcUQsaUJBQWlCLHlEQUF5RCxpQkFBaUIsMENBQTBDLElBQUksb05BQW9OLGFBQWEsc0JBQXNCLGtCQUFrQixlQUFlLDRCQUE0Qiw0REFBNEQsd0VBQXdFLGNBQWMsdUNBQXVDLHNCQUFzQixvTUFBb00sYUFBYSxTQUFTLGNBQWMsaUJBQWlCLFdBQVcsNEJBQTRCLElBQUksTUFBTSxTQUFTLGdCQUFnQixZQUFZLFVBQVUsV0FBVyxLQUFLLDRFQUE0RSxTQUFTLGNBQWMsNkRBQTZELDRDQUE0QyxLQUFLLG9CQUFvQixrQkFBa0IsK0JBQStCLHVJQUF1SSxNQUFNLDBCQUEwQixvQ0FBb0MsRUFBRSxVQUFVLFNBQVMsd0JBQXdCLHVCQUF1QixFQUFFLG1CQUFtQixRQUFRLFlBQVksV0FBVyxLQUFLLGNBQWMsa0JBQWtCLHFCQUFxQixXQUFXLEtBQUssY0FBYyxvREFBb0QsTUFBTSw4TEFBOEwsYUFBYSxzQkFBc0Isc0NBQXNDLGdFQUFnRSw4TUFBOE0sYUFBYSxzQkFBc0IsV0FBVyw4QkFBOEIsdUxBQXVMLGFBQWEsc0JBQXNCLHVDQUF1QyxtQkFBbUIsc0JBQXNCLDhCQUE4QixPQUFPLG1CQUFtQixVQUFVLHlEQUF5RCw2Q0FBNkMseUZBQXlGLHNCQUFzQixrQkFBa0IscUJBQXFCLGdHQUFnRyxpSEFBaUgsbUJBQW1CLGFBQWEsbURBQW1ELE9BQU8sNkxBQTZMLGFBQWEsd0JBQXdCLHVDQUF1QyxLQUFLLEtBQUssYUFBYSw2QkFBNkIsNENBQTRDLDhDQUE4QyxNQUFNLGFBQWEsT0FBTyxRQUFRLGlCQUFpQixnQkFBZ0IsWUFBWSxXQUFXLEtBQUssV0FBVywrR0FBK0csdUJBQXVCLHdDQUF3QyxRQUFRLG1DQUFtQyxFQUFFLG1DQUFtQyxFQUFFLHFDQUFxQyxFQUFFLHdDQUF3QyxFQUFFLG9DQUFvQyxFQUFFLHlDQUF5QyxFQUFFLHNDQUFzQyxFQUFFLHVDQUF1QyxJQUFJLDZDQUE2QyxFQUFFLDRDQUE0QyxFQUFFLDRDQUE0QyxFQUFFLGdEQUFnRCxFQUFFLDZDQUE2QyxFQUFFLGlEQUFpRCxFQUFFLDhDQUE4QyxFQUFFLGdEQUFnRCxHQUFHLHFCQUFxQixhQUFhLDZFQUE2RSx1RUFBdUUsa0JBQWtCLHNDQUFzQyxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsMEJBQTBCLEVBQUUscUNBQXFDLCtCQUErQixFQUFFLHFDQUFxQywrQkFBK0IsRUFBRSxtQ0FBbUMsNkJBQTZCLFNBQVMsb0NBQW9DLHVCQUF1QixZQUFZLElBQUksZ0JBQWdCLElBQUksNENBQTRDLG1EQUFtRCxnQ0FBZ0MsS0FBSyxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixJQUFJLHVDQUF1QyxnQkFBZ0IsS0FBSyw4Q0FBOEMsRUFBRSxzQ0FBc0MsdUNBQXVDLG1CQUFtQixjQUFjLGNBQWMsS0FBSyxHQUFHLEVBQUUsZ0NBQWdDLHFEQUFxRCxrQ0FBa0MsR0FBRyxFQUFFLHFDQUFxQyw2QkFBNkIsRUFBRSxxQ0FBcUMsY0FBYywrQ0FBK0MsRUFBRSxtQ0FBbUMsd0JBQXdCLE1BQU0sRUFBRSxvQ0FBb0MsMkNBQTJDLGNBQWMsMkJBQTJCLHdCQUF3Qiw2QkFBNkIsRUFBRSxjQUFjLGdDQUFnQyxnR0FBZ0csbUJBQW1CLEtBQUssZ0NBQWdDLEVBQUUsNkNBQTZDLHNCQUFzQixtRkFBbUYsd0lBQXdJLGtCQUFrQixpQ0FBaUMseUNBQXlDLGVBQWUsZUFBZSxtQkFBbUIsR0FBRyxzQ0FBc0MseUJBQXlCLFdBQVcsRUFBRSwwQkFBMEIsd0RBQXdELHFDQUFxQyxvQ0FBb0Msc0NBQXNDLHlDQUF5QyxxQ0FBcUMsd0NBQXdDLHVDQUF1Qyw4Q0FBOEMsMkJBQTJCLDJCQUEyQiwwQ0FBMEMsMENBQTBDLDBDQUEwQyw0Q0FBNEMsd0JBQXdCLGFBQWEsZ0JBQWdCLGdCQUFnQix5QkFBeUIsMEJBQTBCLHNCQUFzQixtREFBbUQsc0JBQXNCLDhHQUE4Ryw4QkFBOEIsc0VBQXNFLDZDQUE2QyxzQkFBc0IsNEhBQTRILGdOQUFnTixFQUFFLHlDQUF5QyxXQUFXLFFBQVEsbUNBQW1DLG1CQUFtQix3QkFBd0IscUNBQXFDLGtDQUFrQyxlQUFlLGtCQUFrQixpRkFBaUYsc0NBQXNDLG15QkFBbXlCLHFDQUFxQyxLQUFLLElBQUksTUFBTSxjQUFjLFdBQVcsK0JBQStCLFlBQVksV0FBVyxNQUFNLElBQUkseUJBQXlCLFFBQVEsZUFBZSxpQkFBaUIsMkJBQTJCLElBQUksZ0ZBQWdGLGFBQWEsZ0lBQWdJLGNBQWMsb0NBQW9DLHVCQUF1QiwrQ0FBK0MsWUFBWSxtQkFBbUIsbURBQW1ELG9DQUFvQywySEFBMkgsY0FBYyxZQUFZLG9CQUFvQixTQUFTLFlBQVksS0FBSyxJQUFJLGtEQUFrRCxTQUFTLHdCQUF3QixjQUFjLGVBQWUsc0JBQXNCLHNGQUFzRixZQUFZLGNBQWMsZUFBZSxzQkFBc0Isc0ZBQXNGLFlBQVksY0FBYyxnQ0FBZ0Msa2JBQWtiLDBCQUEwQixtQ0FBbUMscUVBQXFFLDhDQUE4QyxvQ0FBb0Msc0JBQXNCLGNBQWMsK0ZBQStGLG1NQUFtTSw2Q0FBNkMsV0FBVyxjQUFjLE9BQU8sV0FBVyxjQUFjLG9DQUFvQyxnQkFBZ0IsNkJBQTZCLDRDQUE0QyxnQkFBZ0IsMkNBQTJDLG1FQUFtRSxNQUFNLHdEQUF3RCxlQUFlLGNBQWMsTUFBTSxlQUFlLE1BQU0sYUFBYSxZQUFZLGFBQWEsZUFBZSxjQUFjLCtCQUErQiwrQkFBK0IsdUJBQXVCLGNBQWMsb0VBQW9FLGNBQWMsbUJBQW1CLGNBQWMsU0FBUywyQ0FBMkMsNEdBQTRHLG1CQUFtQixTQUFTLGdCQUFnQixrQkFBa0IsS0FBSyw4QkFBOEIsK0JBQStCLElBQUksT0FBTyx1Q0FBdUMsSUFBSSxNQUFNLGlCQUFpQixlQUFlLDhDQUE4QyxlQUFlLGVBQWUsK0NBQStDLElBQUksd0JBQXdCLFNBQVMsUUFBUSwwQkFBMEIsS0FBSyxJQUFJLFNBQVMsU0FBUyxJQUFJLHFCQUFxQixLQUFLLElBQUksY0FBYyxTQUFTLElBQUkseURBQXlELEdBQUcsU0FBUywwREFBMEQsb0JBQW9CLHdFQUF3RSw0RUFBNEUsK0VBQStFLG9DQUFvQyxFQUFFLG9EQUFvRCxTQUFTLG9DQUFvQyxVQUFVLDBEQUEwRCxLQUFLLEtBQUssMERBQTBELEtBQUssNERBQTRELHdCQUF3QixLQUFLLEtBQUssV0FBVyx3QkFBd0IsZ0RBQWdELDJDQUEyQyw4RkFBOEYsa0JBQWtCLFFBQVEsUUFBUSwrQkFBK0IsNkNBQTZDLGNBQWMsSUFBSSxnQkFBZ0Isb0JBQW9CLGNBQWMsd0NBQXdDLHlCQUF5QiwwRUFBMEUsaUNBQWlDLG1DQUFtQyxtQ0FBbUMsMkJBQTJCLDZCQUE2QixrQkFBa0IscUJBQXFCLFNBQVMsU0FBUyxTQUFTLDJEQUEyRCwrWkFBK1osZUFBZSw0RUFBNEUsdUJBQXVCLFdBQVcseUNBQXlDLHdDQUF3QywyQ0FBMkMsZUFBZSxXQUFXLGtCQUFrQixhQUFhLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGdCQUFnQixrQkFBa0Isa0JBQWtCLGtCQUFrQixvQkFBb0IsMEtBQTBLLDJFQUEyRSxnQ0FBZ0MsZ0NBQWdDLGtDQUFrQyxrQ0FBa0MseUJBQXlCLGtCQUFrQixtQkFBbUIscUJBQXFCLGtCQUFrQiwyQ0FBMkMsY0FBYyxrQkFBa0IsME5BQTBOLGlCQUFpQixnRUFBZ0UsY0FBYyxTQUFTLHlDQUF5QyxjQUFjLFNBQVMsK0NBQStDLGVBQWUsaUJBQWlCLEtBQUssY0FBYyxTQUFTLGlCQUFpQixxRkFBcUYsbUJBQW1CLHVDQUF1QyxlQUFlLCtFQUErRSxpQkFBaUIsMEJBQTBCLHNCQUFzQixFQUFFLEVBQUUsc0JBQXNCLDZCQUE2QixpQkFBaUIsV0FBVywyREFBMkQsZUFBZSxVQUFVLFdBQVcsTUFBTSxXQUFXLE1BQU0sYUFBYSxNQUFNLHVOQUF1TixNQUFNLDRCQUE0QixNQUFNLFlBQVksU0FBUyxlQUFlLHdEQUF3RCxjQUFjLFVBQVUsdURBQXVELGlCQUFpQixVQUFVLElBQUksaUJBQWlCLFFBQVEsT0FBTywyT0FBMk8sZUFBZSxpRUFBaUUsZUFBZSxZQUFZLGNBQWMsdUJBQXVCLEVBQUUsRUFBRSxtQkFBbUIsc0VBQXNFLFNBQVMsRUFBRSxvQkFBb0IsUUFBUSxTQUFTLG1CQUFtQixZQUFZLGVBQWUsbUJBQW1CLFlBQVksZ0VBQWdFLFlBQVksZUFBZSxZQUFZLG1EQUFtRCxtQkFBbUIsZUFBZSxZQUFZLG9CQUFvQixpREFBaUQsSUFBSSxlQUFlLFNBQVMscUJBQXFCLGlCQUFpQiwwQkFBMEIsaUJBQWlCLGdCQUFnQixXQUFXLGlCQUFpQixvYUFBb2EsT0FBTyxtQkFBbUIscUdBQXFHLEtBQUssaUJBQWlCLGlFQUFpRSxPQUFPLCtDQUErQyw2REFBNkQsd0JBQXdCLG1CQUFtQixpQ0FBaUMsS0FBSyxpQkFBaUIsK0VBQStFLE9BQU8sd0JBQXdCLHFCQUFxQixpQ0FBaUMsS0FBSyxpQkFBaUIsK0VBQStFLE9BQU8sNEJBQTRCLGVBQWUsaUJBQWlCLDJGQUEyRixrQkFBa0IsZUFBZSxhQUFhLCtFQUErRSxlQUFlLHFCQUFxQiw4QkFBOEIsZ0NBQWdDLGlFQUFpRSx5RkFBeUYsb0JBQW9CLGtDQUFrQywrQkFBK0Isb0JBQW9CLGlCQUFpQix1QkFBdUIsNkJBQTZCLHdCQUF3QixHQUFHLG9CQUFvQixTQUFTLHNCQUFzQixPQUFPLHlCQUF5QixvQ0FBb0MsZUFBZSxlQUFlLGVBQWUsc0JBQXNCLGVBQWUsd0JBQXdCLG1GQUFtRixlQUFlLDhFQUE4RSxJQUFJLCtCQUErQixTQUFTLGVBQWUsa0JBQWtCLGVBQWUsZ0NBQWdDLDRDQUE0QyxFQUFFLDZCQUE2Qix1a0JBQXVrQiw2QkFBNkIsd0dBQXdHLDBEQUEwRCx3RkFBd0YscU1BQXFNLG1CQUFtQixvRkFBb0YscUJBQXFCLGtCQUFrQixLQUFLLFlBQVksV0FBVyxtQkFBbUIsUUFBUSxXQUFXLDRHQUE0RyxLQUFLLDBCQUEwQixXQUFXLEtBQUssbUJBQW1CLDhDQUE4QyxPQUFPLGtDQUFrQywyQkFBMkIsbUJBQW1CLDJEQUEyRCx1Q0FBdUMsT0FBTyxtQ0FBbUMscUJBQXFCLFlBQVksWUFBWSw4QkFBOEIsU0FBUyxpQ0FBaUMsT0FBTyxJQUFJLG9CQUFvQixrRkFBa0YsaUJBQWlCLE1BQU0sbUJBQW1CLHVDQUF1QyxjQUFjLFFBQVEsZ0JBQWdCLHM4QkFBczhCLG1CQUFtQiwwQkFBMEIsK01BQStNLG1CQUFtQixrREFBa0Qsc0JBQXNCLCtJQUErSSwrREFBK0Qsc0RBQXNELGVBQWUsZ0NBQWdDLFVBQVUsMEtBQTBLLGtCQUFrQix5dkZBQXl2RixlQUFlLHFIQUFxSCxlQUFlLFlBQVksZUFBZSw4SEFBOEgsb0JBQW9CLGVBQWUsWUFBWSx1QkFBdUIsa0JBQWtCLDZCQUE2Qix3SUFBd0ksUUFBUSxhQUFhLGdCQUFnQix5RUFBeUUsV0FBVyxLQUFLLFdBQVcsMkJBQTJCLGtCQUFrQix5QkFBeUIsc0ZBQXNGLFFBQVEsV0FBVyxrQ0FBa0MsTUFBTSw0Q0FBNEMsTUFBTSwwREFBMEQsVUFBVSxtQkFBbUIsb0JBQW9CLE1BQU0sSUFBSSxZQUFZLFFBQVEsbUZBQW1GLFdBQVcsY0FBYyxpQkFBaUIsa0JBQWtCLHdCQUF3QixrQkFBa0Isd0JBQXdCLGlCQUFpQiw2VEFBNlQsTUFBTSxhQUFhLGlCQUFpQiwwREFBMEQsU0FBUywwR0FBMEcsVUFBVSxVQUFVLG9DQUFvQyxlQUFlLE9BQU8saUZBQWlGLFNBQVMsTUFBTSw0QkFBNEIsY0FBYyxnQkFBZ0IsMEVBQTBFLFFBQVEsaUJBQWlCLEtBQUssVUFBVSxRQUFRLHNCQUFzQixLQUFLLG9DQUFvQyxlQUFlLGdCQUFnQiw2RkFBNkYsY0FBYyxTQUFTLGNBQWMsU0FBUyxlQUFlLHNCQUFzQiwyS0FBMkssd0lBQXdJLHNCQUFzQiwwQkFBMEIseUJBQXlCLHVCQUF1Qix3SEFBd0gsNEJBQTRCLHVCQUF1Qiw4SEFBOEgscUJBQXFCLGlCQUFpQixJQUFJLHVCQUF1QiwwREFBMEQsK0JBQStCLGdDQUFnQyxrQkFBa0IsS0FBSyxnQkFBZ0IsbUJBQW1CLEtBQUssaUtBQWlLLHVHQUF1Ryx1QkFBdUIseUlBQXlJLHVCQUF1QixzQ0FBc0Msc0JBQXNCLEtBQUssZUFBZSxhQUFhLEtBQUssZ0JBQWdCLGFBQWEsS0FBSyw4Q0FBOEMsYUFBYSxLQUFLLDBCQUEwQixnRUFBZ0UsYUFBYSxLQUFLLE9BQU8sT0FBTywyTUFBMk0sS0FBSyxrWkFBa1osS0FBSyxnRUFBZ0UsZUFBZSx1QkFBdUIsb0VBQW9FLGNBQWMsVUFBVSxjQUFjLEtBQUssZ0JBQWdCLFVBQVUsdUJBQXVCLCtCQUErQiw4SUFBOEksc0hBQXNILGtDQUFrQyxxQkFBcUIsdURBQXVELG1CQUFtQixrRkFBa0YsYUFBYSxLQUFLLCtHQUErRyxhQUFhLEtBQUssdUdBQXVHLGFBQWEsS0FBSyw2Q0FBNkMsYUFBYSxLQUFLLG1CQUFtQiwrREFBK0Qsb0JBQW9CLDhGQUE4RixzQkFBc0IsYUFBYSxLQUFLLHNCQUFzQiw4REFBOEQsMERBQTBELDBFQUEwRSxpQkFBaUIsVUFBVSw4Q0FBOEMscUNBQXFDLHVEQUF1RCxrQkFBa0IsZUFBZSwyREFBMkQsY0FBYyxtSkFBbUosZUFBZSw4Q0FBOEMsOENBQThDLHFCQUFxQiw0R0FBNEcsb0JBQW9CLEdBQUcsb0JBQW9CLGVBQWUsUUFBUSxlQUFlLHNCQUFzQixpQkFBaUIseUJBQXlCLFVBQVUsT0FBTyxPQUFPLDRCQUE0QixRQUFRLHFDQUFxQyxrQ0FBa0Msb0NBQW9DLEtBQUssVUFBVSx3REFBd0QsY0FBYyx1REFBdUQsZUFBZSxxQ0FBcUMsU0FBUywyQkFBMkIsbUJBQW1CLDBGQUEwRixlQUFlLG1FQUFtRSxpQkFBaUIsNEJBQTRCLGlCQUFpQiwwQ0FBMEMsNERBQTRELDZDQUE2QyxpQkFBaUIsb0JBQW9CLHVFQUF1RSxzQ0FBc0MsZ0NBQWdDLFFBQVEsV0FBVyxLQUFLLFdBQVcseUNBQXlDLFNBQVMsZUFBZSxLQUFLLGdCQUFnQixnQkFBZ0IsU0FBUyxpQkFBaUIsY0FBYyxRQUFRLEVBQUUsRUFBRSxtQkFBbUIsOENBQThDLG1CQUFtQixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsa0JBQWtCLGdCQUFnQixRQUFRLGVBQWUsU0FBUyxTQUFTLGVBQWUsdUdBQXVHLHlCQUF5QixpQ0FBaUMsRUFBRSxJQUFJLHFEQUFxRCxTQUFTLEtBQUssdUJBQXVCLFdBQVcsaUJBQWlCLFNBQVMsZUFBZSw4Q0FBOEMsK0pBQStKLDhGQUE4RixtQkFBbUIsK0RBQStELDhEQUE4RCwwQ0FBMEMsRUFBRSw0S0FBNEsscUdBQXFHLG9CQUFvQixpQkFBaUIsaUJBQWlCLFNBQVMsd0ZBQXdGLFFBQVEsMFZBQTBWLE1BQU0sT0FBTyxlQUFlLHNCQUFzQixtQkFBbUIsY0FBYyw2REFBNkQsU0FBUyxvUEFBb1AsMnpCQUEyekIsaUJBQWlCLHNCQUFzQixxQkFBcUIsOERBQThELGtFQUFrRSxxQ0FBcUMsOEhBQThILEVBQUUsbUNBQW1DLHlCQUF5QixPQUFPLHFCQUFxQixPQUFPLGtCQUFrQixPQUFPLDZCQUE2QixpQkFBaUIsaUJBQWlCLGNBQWMsdUJBQXVCLElBQUksRUFBRSxZQUFZLGFBQWEsWUFBWSxhQUFhLFlBQVksYUFBYSxZQUFZLG9DQUFvQyxnQkFBZ0IsdURBQXVELGtCQUFrQixxQkFBcUIsa0dBQWtHLHFCQUFxQix5QkFBeUIsaUJBQWlCLCtCQUErQixtQkFBbUIsV0FBVyxrQkFBa0IsdUJBQXVCLHdCQUF3QixTQUFTLHdJQUF3SSwySUFBMkksZUFBZSwwQ0FBMEMsbUJBQW1CLFNBQVMsZ0JBQWdCLGtDQUFrQyxVQUFVLHFCQUFxQixzV0FBc1cscUJBQXFCLHVCQUF1QixlQUFlLCtDQUErQyxpQkFBaUIsa0JBQWtCLHViQUF1YiwwQ0FBMEMsNkVBQTZFLGlCQUFpQixtQkFBbUIsa0JBQWtCLGlhQUFpYSwwQ0FBMEMsSUFBSSx5QkFBeUIsUUFBUSx5Q0FBeUMsOENBQThDLG9DQUFvQyxVQUFVLGdDQUFnQyx5RkFBeUYsU0FBUyxzR0FBc0csbUZBQW1GLFNBQVMsNklBQTZJLFNBQVMsMkRBQTJELGlCQUFpQix3REFBd0QsbUNBQW1DLGlCQUFpQixNQUFNLDBEQUEwRCx3REFBd0Qsd0RBQXdELDJEQUEyRCxZQUFZLFFBQVEsV0FBVyxRQUFRLFlBQVksUUFBUSxZQUFZLFFBQVEsbUJBQW1CLFFBQVEsd0RBQXdELHlEQUF5RCxxQkFBcUIsZ0NBQWdDLG1CQUFtQixtQ0FBbUMsZUFBZSx5QkFBeUIsdUJBQXVCLG1CQUFtQiw2RUFBNkUsbUZBQW1GLEdBQUcsbUJBQW1CLGlCQUFpQixpQ0FBaUMsZ0JBQWdCLHdCQUF3Qiw0QkFBNEIsZ0JBQWdCLE9BQU8sNkJBQTZCLDBEQUEwRCxpQkFBaUIsa0NBQWtDLG1CQUFtQix5Q0FBeUMsU0FBUyxLQUFLLGlCQUFpQixnQkFBZ0IsaUJBQWlCLFNBQVMsWUFBWSxzRUFBc0UseUJBQXlCLGVBQWUscUNBQXFDLGVBQWUsS0FBSyxPQUFPLGlEQUFpRCxLQUFLLE9BQU8seUVBQXlFLGlCQUFpQiwrREFBK0QseURBQXlELGVBQWUsNkZBQTZGLHFCQUFxQixlQUFlLDZDQUE2QywwQkFBMEIsMENBQTBDLE1BQU0sbURBQW1ELE1BQU0sZ0NBQWdDLFlBQVksZ0JBQWdCLE1BQU0sMkJBQTJCLE1BQU0sNERBQTRELE1BQU0sNkJBQTZCLE1BQU0scUdBQXFHLE1BQU0sNkJBQTZCLE1BQU0sdUVBQXVFLDBVQUEwVSxlQUFlLGdCQUFnQixHQUFHLGdCQUFnQiw2QkFBNkIsT0FBTyxxQkFBcUIsT0FBTyxzQkFBc0IsZUFBZSxtQkFBbUIsNkJBQTZCLGNBQWMscUlBQXFJLHlFQUF5RSxTQUFTLGdCQUFnQix5RUFBeUUsU0FBUyw4RkFBOEYsU0FBUyxjQUFjLGlCQUFpQixjQUFjLFNBQVMsZ0VBQWdFLGVBQWUsNEJBQTRCLCtCQUErQixtQkFBbUIsd0NBQXdDLGVBQWUsaUNBQWlDLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxrQkFBa0Isb0lBQW9JLFlBQVkscUJBQXFCLGNBQWMsMkJBQTJCLFNBQVMsRUFBRSxxQkFBcUIsYUFBYSxjQUFjLGlCQUFpQixPQUFPLFNBQVMsRUFBRSxRQUFRLElBQUksWUFBWSxXQUFXLHlCQUF5Qiw2RUFBNkUsUUFBUSxVQUFVLG9CQUFvQiwyQ0FBMkMsaUVBQWlFLGVBQWUsdUJBQXVCLGFBQWEsU0FBUyxFQUFFLFVBQVUsT0FBTyxNQUFNLHlCQUF5QixzQkFBc0IsTUFBTSxXQUFXLEtBQUsscUJBQXFCLE9BQU8saUJBQWlCLFNBQVMsRUFBRSxPQUFPLDRCQUE0QixrQ0FBa0MsZUFBZSxrQkFBa0IsZ0NBQWdDLCtCQUErQixhQUFhLDhEQUE4RCx1QkFBdUIsOENBQThDLDRGQUE0RixXQUFXLHNDQUFzQyxlQUFlLHFCQUFxQixTQUFTLEVBQUUseURBQXlELFNBQVMsU0FBUyxlQUFlLDhEQUE4RCxlQUFlLGdCQUFnQixpQkFBaUIsZ0NBQWdDLGlCQUFpQixzQkFBc0IsTUFBTSxvQ0FBb0MsWUFBWSxnQ0FBZ0MscUJBQXFCLHVCQUF1QixpQkFBaUIsa0JBQWtCLFNBQVMsc0VBQXNFLHdCQUF3QiwwQ0FBMEMsWUFBWSxzQkFBc0IsbUNBQW1DLFdBQVcsR0FBRyxpRUFBaUUsOEZBQThGLGNBQWMsT0FBTywyQ0FBMkMsZUFBZSw4Q0FBOEMscUJBQXFCLEVBQUUsOEJBQThCLGNBQWMsdUJBQXVCLG1DQUFtQyxTQUFTLHFCQUFxQixZQUFZLFdBQVcsZ0JBQWdCLFdBQVcsa0JBQWtCLHVFQUF1RSxjQUFjLFlBQVksaUJBQWlCLCtDQUErQyxZQUFZLG1CQUFtQiwwQkFBMEIsZUFBZSxjQUFjLGlCQUFpQixpQ0FBaUMsaUJBQWlCLHVDQUF1QyxjQUFjLFdBQVcsc0JBQXNCLGdDQUFnQywyREFBMkQsbUJBQW1CLGVBQWUsaURBQWlELG1CQUFtQix3RUFBd0UsK0JBQStCLHNDQUFzQyxtREFBbUQsS0FBSyxnRUFBZ0UsMENBQTBDLHlCQUF5QixRQUFRLGdDQUFnQyxhQUFhLHlCQUF5QixRQUFRLGdDQUFnQyxFQUFFLGlCQUFpQiwrQkFBK0Isc0NBQXNDLGVBQWUsZUFBZSxJQUFJLDhCQUE4QixTQUFTLHlFQUF5RSxTQUFTLFlBQVksY0FBYyxpQ0FBaUMsU0FBUyxpQkFBaUIsZUFBZSxzQ0FBc0MsaUJBQWlCLGVBQWUsU0FBUywyQ0FBMkMsaUJBQWlCLHNDQUFzQyxpQkFBaUIsc0NBQXNDLDhGQUE4Riw4QkFBOEIsTUFBTSxlQUFlLGdCQUFnQixNQUFNLGtCQUFrQixrREFBa0QsZ0JBQWdCLGtCQUFrQixLQUFLLFNBQVMsb0JBQW9CLFlBQVksY0FBYyxrQkFBa0IsU0FBUywwREFBMEQsU0FBUyxnQkFBZ0IsMkNBQTJDLGtCQUFrQiw4SEFBOEgsY0FBYyxxREFBcUQsb0JBQW9CLDZFQUE2RSxvQkFBb0IsYUFBYSw0TkFBNE4sb0JBQW9CLHNMQUFzTCxzQkFBc0IsK0VBQStFLGtCQUFrQiw2R0FBNkcsaUNBQWlDLG1CQUFtQiwwRUFBMEUsMkNBQTJDLDZCQUE2Qix1REFBdUQsaURBQWlELHdDQUF3QyxRQUFRLFlBQVksb0JBQW9CLDBCQUEwQix5R0FBeUcsaUNBQWlDLG1CQUFtQix3Q0FBd0Msd0NBQXdDLCtCQUErQixtREFBbUQsbURBQW1ELDBDQUEwQyxRQUFRLFlBQVksc0JBQXNCLDBHQUEwRyxpQ0FBaUMsbUJBQW1CLDJEQUEyRCwyREFBMkQsaUNBQWlDLG9EQUFvRCxxREFBcUQsNENBQTRDLFFBQVEsWUFBWSx5QkFBeUIsSUFBSSxLQUFLLDBCQUEwQiw4R0FBOEcsbUJBQW1CLFVBQVUsZ0JBQWdCLFNBQVMsRUFBRSxjQUFjLG1CQUFtQixjQUFjLHNEQUFzRCxTQUFTLHlGQUF5RixtREFBbUQsUUFBUSxPQUFPLE1BQU0sbUJBQW1CLDRIQUE0SCxZQUFZLFVBQVUsWUFBWSxTQUFTLEVBQUUsdUhBQXVILG9EQUFvRCxRQUFRLEtBQUssT0FBTyxNQUFNLG1CQUFtQixnQ0FBZ0MsWUFBWSwrQkFBK0IsaUNBQWlDLHVDQUF1QyxxQkFBcUIsS0FBSyxtQ0FBbUMsb0JBQW9CLGFBQWEsZ0JBQWdCLE1BQU0sNkVBQTZFLDRDQUE0QyxhQUFhLEtBQUssV0FBVyxzRUFBc0UscUJBQXFCLFdBQVcsV0FBVyxnSUFBZ0ksZ0NBQWdDLGNBQWMsZ0JBQWdCLFVBQVUsU0FBUyxrREFBa0QseUJBQXlCLCtCQUErQixrREFBa0Qsa0JBQWtCLGdCQUFnQixtQ0FBbUMsdUJBQXVCLGFBQWEsZ0JBQWdCLE1BQU0sNkVBQTZFLHNDQUFzQyxhQUFhLEtBQUssUUFBUSxvRkFBb0YscUJBQXFCLFdBQVcsUUFBUSw4SUFBOEksZ0NBQWdDLGNBQWMsZ0JBQWdCLG9CQUFvQixtREFBbUQsMENBQTBDLFFBQVEsOExBQThMLFVBQVUsaUJBQWlCLFNBQVMsMEJBQTBCLDJCQUEyQiw4QkFBOEIsV0FBVyw4QkFBOEIsZUFBZSxlQUFlLDJFQUEyRSwwQ0FBMEMsaUJBQWlCLGlCQUFpQixtREFBbUQsdUhBQXVILEVBQUUsZUFBZSxPQUFPLG1EQUFtRCxtQkFBbUIsb0JBQW9CLHdCQUF3Qix5QkFBeUIsZ0JBQWdCLHFGQUFxRix5QkFBeUIsbUJBQW1CLDBEQUEwRCxjQUFjLDBDQUEwQyxpQkFBaUIsa0NBQWtDLG9DQUFvQyxrQkFBa0IsaUNBQWlDLEdBQUcsT0FBTyxpRUFBaUUsbUNBQW1DLGdCQUFnQiwwQkFBMEIsV0FBVyxHQUFHLCtGQUErRixpQkFBaUIsT0FBTyw0RUFBNEUsVUFBVSxjQUFjLE9BQU8sU0FBUyxxQkFBcUIscUJBQXFCLE1BQU0sb0JBQW9CLE1BQU0sOERBQThELGFBQWEsc0JBQXNCLGlCQUFpQixzQ0FBc0Msa0JBQWtCLCtHQUErRyxhQUFhLGtCQUFrQix3QkFBd0IsRUFBRSxzQ0FBc0MsMkJBQTJCLDRDQUE0QywyREFBMkQsRUFBRSxHQUFHLFlBQVksa0JBQWtCLDJDQUEyQyxnQkFBZ0IsUUFBUSxJQUFJLFFBQVEsa0NBQWtDLDRFQUE0RSxNQUFNLE1BQU0sUUFBUSxjQUFjLHlHQUF5RyxRQUFRLGlFQUFpRSxzQ0FBc0MsMERBQTBELHVFQUF1RSxxSUFBcUksaUJBQWlCLDhDQUE4QyxVQUFVLGlCQUFpQixrQkFBa0IscUNBQXFDLFdBQVcsZUFBZSx1QkFBdUIsaUJBQWlCLG9DQUFvQyxjQUFjLDBCQUEwQixjQUFjLDBCQUEwQix1QkFBdUIsZUFBZSxrQkFBa0Isd0dBQXdHLGVBQWUsMkNBQTJDLGVBQWUsOERBQThELGNBQWMsa0NBQWtDLGVBQWUsOEJBQThCLFlBQVksZUFBZSxZQUFZLFNBQVMsRUFBRSxlQUFlLHNCQUFzQiw4REFBOEQsZ05BQWdOLDZCQUE2Qix3QkFBd0IsMkJBQTJCLFNBQVMsZUFBZSxLQUFLLGlCQUFpQixFQUFFLDZDQUE2QyxXQUFXLHNDQUFzQyxZQUFZLDBFQUEwRSxjQUFjLG9CQUFvQixpQkFBaUIscUJBQXFCLFlBQVksdUJBQXVCLCtCQUErQixTQUFTLHlCQUF5QiwrSkFBK0osZUFBZSxPQUFPLGdDQUFnQywrREFBK0Qsd0RBQXdELHFCQUFxQixLQUFLLFFBQVEsR0FBRyxzREFBc0Qsd0NBQXdDLG9CQUFvQix1RkFBdUYsZ0JBQWdCLFVBQVUsU0FBUyxjQUFjLDRCQUE0Qix1SEFBdUgsY0FBYyxhQUFhLGNBQWMsbUJBQW1CLHVEQUF1RCxlQUFlLE9BQU8sc0JBQXNCLFNBQVMsRUFBRSxjQUFjLG9DQUFvQyxNQUFNLHlDQUF5QyxjQUFjLE9BQU8sdUVBQXVFLHVEQUF1RCxjQUFjLGNBQWMsbUJBQW1CLGdDQUFnQyxlQUFlLHlDQUF5QyxzQkFBc0IsS0FBSyxhQUFhLDJDQUEyQyxvQkFBb0IsR0FBRywwR0FBMEcsOENBQThDLFVBQVUsY0FBYyxPQUFPLHdEQUF3RCxlQUFlLFNBQVMsMkpBQTJKLGVBQWUsaUNBQWlDLDBDQUEwQywrQkFBK0IsOEJBQThCLGVBQWUsNEJBQTRCLHNDQUFzQyxtQkFBbUIsK0RBQStELDRCQUE0QixpQkFBaUIsVUFBVSxFQUFFLGdCQUFnQixnQkFBZ0Isb0hBQW9ILElBQUksV0FBVyxtQkFBbUIsaUJBQWlCLGtDQUFrQyxlQUFlLHFCQUFxQixtQkFBbUIsY0FBYyxnQ0FBZ0Msd0JBQXdCLDhCQUE4QixhQUFhLGFBQWEsYUFBYSx1QkFBdUIsK0JBQStCLDRDQUE0QyxLQUFLLFNBQVMsNkJBQTZCLEdBQUcseUJBQXlCLHFDQUFxQyxtQkFBbUIsOEJBQThCLGlIQUFpSCxpQkFBaUIsb0JBQW9CLHdCQUF3QixTQUFTLFFBQVEsNEhBQTRILG1EQUFtRCw0REFBNEQsUUFBUSxpSUFBaUksbURBQW1ELFNBQVMsdUJBQXVCLGtGQUFrRixvRUFBb0UsMERBQTBELGVBQWUscUJBQXFCLGdDQUFnQyx3QkFBd0IsK0NBQStDLGFBQWEsZUFBZSxlQUFlLDRCQUE0QixhQUFhLDJHQUEyRyxZQUFZLG1CQUFtQixxQkFBcUIsTUFBTSxrQ0FBa0MsTUFBTSxXQUFXLG1DQUFtQywrSEFBK0gsdUJBQXVCLGVBQWUsMkRBQTJELDBCQUEwQixTQUFTLG1CQUFtQixrQkFBa0Isc0JBQXNCLDZHQUE2RyxxQkFBcUIsdUNBQXVDLG1CQUFtQixvQkFBb0IsYUFBYSxFQUFFLGVBQWUsb0JBQW9CLFVBQVUsSUFBSSxVQUFVLGVBQWUsU0FBUyxVQUFVLGVBQWUsY0FBYyxvQkFBb0IsZUFBZSxXQUFXLHlCQUF5QixRQUFRLGFBQWEsT0FBTyxJQUFJLElBQUksUUFBUSxTQUFTLDhDQUE4Qyw4RUFBOEUsR0FBRyxxQkFBcUIsd0RBQXdELHVCQUF1Qiw2QkFBNkIsd0JBQXdCLE9BQU8sbUhBQW1ILHNCQUFzQiw4SEFBOEgsaUJBQWlCLHFDQUFxQyxtQkFBbUIsZUFBZSxNQUFNLElBQUksbUJBQW1CLDJCQUEyQixTQUFTLFVBQVUsUUFBUSxtREFBbUQsU0FBUyxtQkFBbUIsU0FBUyxXQUFXLG1CQUFtQiwyRUFBMkUsVUFBVSxhQUFhLGlCQUFpQixZQUFZLG1CQUFtQixpSUFBaUksbUJBQW1CLGdCQUFnQiw0QkFBNEIsU0FBUyxpREFBaUQsYUFBYSxjQUFjLGVBQWUsY0FBYyxZQUFZLFdBQVcsZUFBZSxpQkFBaUIsU0FBUyxpQkFBaUIsT0FBTyxtQkFBbUIsYUFBYSxHQUFHLFNBQVMsT0FBTyxPQUFPLEdBQUcsa0JBQWtCLGVBQWUsc0NBQXNDLE9BQU8sUUFBUSxvQ0FBb0MsTUFBTSxxQ0FBcUMsU0FBUyxNQUFNLEtBQUssYUFBYSw4Q0FBOEMsOEVBQThFLDhGQUE4Riw0Q0FBNEMsNEVBQTRFLGVBQWUscUJBQXFCLG1CQUFtQiwyRkFBMkYsWUFBWSxTQUFTLG1CQUFtQixRQUFRLFNBQVMsa0NBQWtDLGtEQUFrRCxlQUFlLGtDQUFrQyxpQkFBaUIsV0FBVyxlQUFlLGdCQUFnQiw2QkFBNkIsdUJBQXVCLDhCQUE4QixrQ0FBa0MscUJBQXFCLFVBQVUsdUNBQXVDLGtKQUFrSixjQUFjLDBCQUEwQixxQkFBcUIsV0FBVyxvQ0FBb0MsZUFBZSxzQkFBc0IscUJBQXFCLFdBQVcsb0JBQW9CLDJCQUEyQix5SEFBeUgsaUJBQWlCLGtCQUFrQixpQkFBaUIsZUFBZSxpQkFBaUIsbUJBQW1CLGlCQUFpQixtQkFBbUIsaUJBQWlCLHlCQUF5QixlQUFlLGtCQUFrQixrQ0FBa0MsNkNBQTZDLGdCQUFnQixtQkFBbUIseURBQXlELGVBQWUsaUJBQWlCLFdBQVcsb0JBQW9CLHNCQUFzQiwyREFBMkQsaUJBQWlCLFdBQVcsb0JBQW9CLHNCQUFzQixvQ0FBb0MsYUFBYSxPQUFPLElBQUksSUFBSSxRQUFRLFFBQVEsK0JBQStCLG1CQUFtQix1R0FBdUcscUJBQXFCLHdKQUF3Six1QkFBdUIsVUFBVSxtQkFBbUIsZUFBZSxtQkFBbUIsSUFBSSxnQkFBZ0IsNkVBQTZFLG1CQUFtQix5REFBeUQsV0FBVyxtQkFBbUIsK0JBQStCLFlBQVksV0FBVyxnQkFBZ0IsYUFBYSx1Q0FBdUMsV0FBVyxxQkFBcUIsS0FBSyxnQkFBZ0IscUJBQXFCLFNBQVMsUUFBUSxpQkFBaUIsNEJBQTRCLE9BQU8sUUFBUSx5REFBeUQsZUFBZSxxQkFBcUIsaUNBQWlDLGtCQUFrQixrQ0FBa0Msa0JBQWtCLEVBQUUsZUFBZSxzQkFBc0IscUJBQXFCLFNBQVMsVUFBVSxrREFBa0QsOEVBQThFLFdBQVcsUUFBUSxrREFBa0QsOEVBQThFLFdBQVcsaUVBQWlFLGVBQWUsWUFBWSxpRUFBaUUsT0FBTyxjQUFjLGNBQWMsY0FBYywwQkFBMEIsY0FBYywwQkFBMEIsZUFBZSxtQkFBbUIsU0FBUyxFQUFFLGNBQWMsNENBQTRDLG1DQUFtQyxXQUFXLGFBQWEsT0FBTyxZQUFZLG1CQUFtQixXQUFXLEdBQUcscUZBQXFGLDZEQUE2RCxtQkFBbUIsZUFBZSxxQkFBcUIsT0FBTyxzRkFBc0YsaUJBQWlCLEtBQUssa0JBQWtCLDhFQUE4RSxtQ0FBbUMsbUZBQW1GLFVBQVUsU0FBUyx3REFBd0QsU0FBUyxxQkFBcUIsTUFBTSx3RkFBd0YsUUFBUSx5QkFBeUIsdUNBQXVDLGVBQWUsa0JBQWtCLGdDQUFnQyxpQkFBaUIsU0FBUyxnQkFBZ0IsdURBQXVELG1CQUFtQixtQkFBbUIsY0FBYyx3Q0FBd0MsUUFBUSx1WEFBdVgsS0FBSyxnREFBZ0Qsa0RBQWtELGdFQUFnRSwrREFBK0QsK0JBQStCLHlCQUF5QixrQ0FBa0MsWUFBWSx1QkFBdUIsV0FBVyxvQkFBb0IsVUFBVSxPQUFPLE9BQU8sSUFBSSxJQUFJLFFBQVEsUUFBUSwrQkFBK0IsNEJBQTRCLFdBQVcsZUFBZSxXQUFXLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxTQUFTLFNBQVMsZ0RBQWdELDZFQUE2RSxxREFBcUQsb0JBQW9CLDZCQUE2QixXQUFXLHNCQUFzQiwyQ0FBMkMsd0NBQXdDLGlEQUFpRCxvQkFBb0IsMEJBQTBCLGFBQWEsb0VBQW9FLHNDQUFzQyxnQkFBZ0IsT0FBTyxrQ0FBa0MsTUFBTSxLQUFLLHVDQUF1Qyx1QkFBdUIsa0JBQWtCLE9BQU8sdUJBQXVCLGlFQUFpRSxlQUFlLCtCQUErQixrQkFBa0IsaUNBQWlDLE9BQU8sY0FBYyxnR0FBZ0csNENBQTRDLHlCQUF5Qix3RkFBd0YsV0FBVyw4QkFBOEIsT0FBTyxvRkFBb0YsNERBQTRELDRDQUE0Qyw0Q0FBNEMsS0FBSyx1TEFBdUwsY0FBYyxpREFBaUQscUNBQXFDLDBCQUEwQixxQ0FBcUMsc0NBQXNDLDJIQUEySCx1QkFBdUIsb0NBQW9DLEtBQUssdUxBQXVMLGNBQWMsaURBQWlELFdBQVcsc0RBQXNELDBCQUEwQixxQ0FBcUMsc0NBQXNDLDJIQUEySCxXQUFXLG1FQUFtRSxxQ0FBcUMscUJBQXFCLHlDQUF5QyxpRUFBaUUsUUFBUSxnQ0FBZ0Msb0JBQW9CLG1CQUFtQixnRkFBZ0YscUNBQXFDLG9CQUFvQixtQkFBbUIsd0ZBQXdGLGtDQUFrQyxvQkFBb0IsbUJBQW1CLDhFQUE4RSwyQkFBMkIsaUtBQWlLLHFCQUFxQiw4T0FBOE8saUJBQWlCLFFBQVEsOEJBQThCLDBCQUEwQiwrQ0FBK0Msa0NBQWtDLFNBQVMsZUFBZSxNQUFNLGVBQWUsaUJBQWlCLGVBQWUsTUFBTSxpQkFBaUIsSUFBSSwrQkFBK0IsdUJBQXVCLEVBQUUsU0FBUyxzQkFBc0IsUUFBUSxHQUFHLG1CQUFtQixJQUFJLDZCQUE2QixnRUFBZ0UsRUFBRSxTQUFTLHNCQUFzQixRQUFRLEdBQUcsbUJBQW1CLGlDQUFpQyxhQUFhLHVCQUF1QixRQUFRLEdBQUcsZUFBZSx3QkFBd0IscUJBQXFCLHNDQUFzQyx5QkFBeUIsY0FBYyxxQkFBcUIsWUFBWSx1QkFBdUIsV0FBVyxrQkFBa0IseUVBQXlFLDRFQUE0RSxjQUFjLGdDQUFnQyw2QkFBNkIsRUFBRSxFQUFFLDJCQUEyQixxQkFBcUIsa0RBQWtELHVCQUF1QixXQUFXLFlBQVksY0FBYyxTQUFTLHNDQUFzQyxTQUFTLHdIQUF3SCx1QkFBdUIsYUFBYSxhQUFhLGlMQUFpTCx1QkFBdUIsc0JBQXNCLHNFQUFzRSw2REFBNkQsdUJBQXVCLGFBQWEsc0JBQXNCLGdHQUFnRyxrQ0FBa0MscUJBQXFCLHFCQUFxQixpREFBaUQsK0NBQStDLHNFQUFzRSxxQkFBcUIscUJBQXFCLHdDQUF3QywwQkFBMEIsU0FBUyxzQ0FBc0Msa0JBQWtCLGlDQUFpQyxtQkFBbUIsK0ZBQStGLGlCQUFpQiwyQkFBMkIsdUVBQXVFLHVHQUF1RywyQkFBMkIsaUJBQWlCLCtEQUErRCxzRUFBc0UsWUFBWSxxQkFBcUIsV0FBVyx3QkFBd0IsdUNBQXVDLGdDQUFnQyw2REFBNkQsaUJBQWlCLGFBQWEsZ0NBQWdDLDJDQUEyQyxtQkFBbUIsMkZBQTJGLGlCQUFpQixZQUFZLHVEQUF1RCxLQUFLLGdFQUFnRSwyQ0FBMkMsdUJBQXVCLDZIQUE2SCx5QkFBeUIsNklBQTZJLHVCQUF1Qiw2QkFBNkIseUJBQXlCLDJOQUEyTixvcUJBQW9xQixrQkFBa0IsY0FBYyxnQ0FBZ0MsVUFBVSxnQ0FBZ0MsNkNBQTZDLGlDQUFpQyxrT0FBa08sc0JBQXNCLDRuQkFBNG5CLEtBQUssOGFBQThhLHNCQUFzQixnaUNBQWdpQyx1UUFBdVEscUJBQXFCLDZDQUE2QyxRQUFRLG1FQUFtRSxlQUFlLE9BQU8sNEJBQTRCLG1CQUFtQixpREFBaUQsbUJBQW1CLCtDQUErQyxxSUFBcUksT0FBTywrRkFBK0Ysb0NBQW9DLGtCQUFrQixnREFBZ0Qsd0VBQXdFLGdEQUFnRCxpQkFBaUIsb0NBQW9DLHlCQUF5Qiw4S0FBOEssc0JBQXNCLHNDQUFzQyx5SkFBeUosbUNBQW1DLHlMQUF5TCxxQkFBcUIsdURBQXVELDhDQUE4QywrQkFBK0IsY0FBYyxzREFBc0QsNEZBQTRGLHdCQUF3QixvS0FBb0ssU0FBUyxxRUFBcUUsa0NBQWtDLGdRQUFnUSxnQkFBZ0IsY0FBYyxvQ0FBb0MsbUhBQW1ILG1DQUFtQyx3SUFBd0ksaUJBQWlCLGFBQWEsMEJBQTBCLDZCQUE2QixpQkFBaUIsb0NBQW9DLG1CQUFtQiw4RkFBOEYsbUJBQW1CLFdBQVcsa0JBQWtCLHdDQUF3Qyx5QkFBeUIsc0JBQXNCLDBCQUEwQiwyRkFBMkYsNEdBQTRHLG1CQUFtQiw4Q0FBOEMsYUFBYSw0QkFBNEIsOEdBQThHLFNBQVMsRUFBRSxnREFBZ0QsNkJBQTZCLHdCQUF3QiwyQkFBMkIsU0FBUyxlQUFlLEtBQUssaUJBQWlCLEVBQUUseUNBQXlDLFdBQVcsc0NBQXNDLFVBQVUsb0NBQW9DLFNBQVMseURBQXlELG9GQUFvRixNQUFNLGtGQUFrRixTQUFTLEVBQUUseUNBQXlDLFVBQVUsTUFBTSxnQ0FBZ0Msb0JBQW9CLE1BQU0sMkNBQTJDLE1BQU0sNkJBQTZCLGVBQWUsbUJBQW1CLDhFQUE4RSx3QkFBd0IscURBQXFELG1EQUFtRCxtQkFBbUIsd0RBQXdELGlCQUFpQix5REFBeUQsZUFBZSxlQUFlLGlCQUFpQiw0REFBNEQsbUJBQW1CLHNEQUFzRCxLQUFLLDJEQUEyRCxjQUFjLDBFQUEwRSxNQUFNLG9CQUFvQixNQUFNLHNDQUFzQyxNQUFNLDJDQUEyQyxNQUFNLGlFQUFpRSxNQUFNLDhCQUE4QixhQUFhLHNEQUFzRCw4Q0FBOEMsaURBQWlELE1BQU0sTUFBTSwrQkFBK0Isb0VBQW9FLHNCQUFzQixhQUFhLGdIQUFnSCxNQUFNLGtEQUFrRCx1Q0FBdUMsaUJBQWlCLFFBQVEsdUJBQXVCLHNEQUFzRCx3QkFBd0IsV0FBVyxxQkFBcUIsK0hBQStILEtBQUssWUFBWSxpQkFBaUIsVUFBVSw0QkFBNEIsUUFBUSxVQUFVLDRCQUE0QixTQUFTLGtDQUFrQyx1QkFBdUIsK0VBQStFLCtCQUErQixVQUFVLHdCQUF3Qix3QkFBd0IsMEJBQTBCLHdCQUF3Qiw0QkFBNEIsd0JBQXdCLHlDQUF5QyxzQkFBc0IsdUNBQXVDLDZEQUE2RCxzQkFBc0IsbUdBQW1HLGlFQUFpRSw4QkFBOEIsSUFBSSxlQUFlLFdBQVcsWUFBWSxhQUFhLFNBQVMsOENBQThDLDBEQUEwRCxVQUFVLCtEQUErRCxpQkFBaUIsc0JBQXNCLG1DQUFtQyxzQkFBc0IseUZBQXlGLHdDQUF3QywwREFBMEQsY0FBYyxRQUFRLGVBQWUsd0NBQXdDLFFBQVEsZ0xBQWdMLEVBQUUscUNBQXFDLEtBQUssZUFBZSxZQUFZLFFBQVEsWUFBWSxVQUFVLFNBQVMsd1JBQXdSLGdPQUFnTyxvRUFBb0UsS0FBSyxlQUFlLEVBQUUsK0NBQStDLHVEQUF1RCxXQUFXLG9CQUFvQixnREFBZ0QsU0FBUywrU0FBK1MsU0FBUyx1REFBdUQsU0FBUyxxUUFBcVEsU0FBUyxrQkFBa0IsS0FBSywyQ0FBMkMsa0NBQWtDLDBEQUEwRCxzQ0FBc0MsWUFBWSw4VEFBOFQsa0VBQWtFLHNCQUFzQixLQUFLLGVBQWUsNEdBQTRHLFNBQVMsOEVBQThFLHlCQUF5QixrSEFBa0gsK0NBQStDLCtDQUErQyxnRUFBZ0Usa0ZBQWtGLDRHQUE0RywrQ0FBK0MsK0NBQStDLHlCQUF5Qiw0REFBNEQsMkJBQTJCLE9BQU8sb0VBQW9FLHVGQUF1RixvQ0FBb0Msa0JBQWtCLGdEQUFnRCx3RUFBd0UsK0JBQStCLGVBQWUsc0JBQXNCLGFBQWEsbUJBQW1CLG9EQUFvRCxtRUFBbUUseUJBQXlCLHNEQUFzRCw0RkFBNEYsaUJBQWlCLDZHQUE2RyxTQUFTLHFCQUFxQixnQ0FBZ0Msb0NBQW9DLHdDQUF3QywySkFBMkosaUJBQWlCLDBIQUEwSCxpQkFBaUIscUxBQXFMLDZCQUE2QiwwQkFBMEIsZUFBZSxXQUFXLHVCQUF1QixpQ0FBaUMsK0VBQStFLDJCQUEyQixvQkFBb0IseUJBQXlCLGlCQUFpQixxRUFBcUUsd0RBQXdELG9CQUFvQixpQkFBaUIsc0ZBQXNGLGlCQUFpQiwwQkFBMEIsc0JBQXNCLGVBQWUsU0FBUyx1Q0FBdUMsb0NBQW9DLE1BQU0seUJBQXlCLGVBQWUsU0FBUyx1Q0FBdUMsMEVBQTBFLGVBQWUsOERBQThELHVCQUF1QixTQUFTLGlHQUFpRyxtQkFBbUIsU0FBUyw2RUFBNkUsMENBQTBDLGlCQUFpQixvQkFBb0Isa0JBQWtCLE1BQU0sNEJBQTRCLE1BQU0sV0FBVyxNQUFNLHNDQUFzQyxNQUFNLGNBQWMsTUFBTSxjQUFjLE1BQU0sbUJBQW1CLE1BQU0sMkNBQTJDLE1BQU0sZ0JBQWdCLGlCQUFpQixJQUFJLGlEQUFpRCxhQUFhLGFBQWEsSUFBSSxHQUFHLGtCQUFrQixTQUFTLGVBQWUscUJBQXFCLFNBQVMsY0FBYyxTQUFTLGtCQUFrQixtQkFBbUIsSUFBSSxpREFBaUQsYUFBYSxhQUFhLElBQUksR0FBRyxrQkFBa0IseUJBQXlCLGVBQWUscUJBQXFCLElBQUksSUFBSSxTQUFTLFlBQVksU0FBUyxjQUFjLFNBQVMsa0JBQWtCLGVBQWUsb0JBQW9CLGFBQWEsa0JBQWtCLElBQUksUUFBUSxTQUFTLG1CQUFtQixtQkFBbUIsMkRBQTJELElBQUkseUJBQXlCLFNBQVMsV0FBVyxpQkFBaUIsSUFBSSxZQUFZLGFBQWEsY0FBYyx5Q0FBeUMsTUFBTSxzQkFBc0Isb0RBQW9ELFNBQVMsV0FBVyxpQkFBaUIsMkJBQTJCLHdDQUF3QyxJQUFJLFNBQVMsVUFBVSxRQUFRLDZEQUE2RCxpQ0FBaUMsUUFBUSxTQUFTLFVBQVUsb0JBQW9CLGVBQWUsNkNBQTZDLElBQUksVUFBVSw0RUFBNEUsTUFBTSwyREFBMkQsU0FBUyxrQkFBa0IsbUJBQW1CLElBQUksa0JBQWtCLG1CQUFtQixVQUFVLGlGQUFpRixpRUFBaUUsWUFBWSxXQUFXLDBDQUEwQyxnQ0FBZ0MsdUJBQXVCLGlEQUFpRCxnQkFBZ0IsV0FBVyw0REFBNEQsZUFBZSxNQUFNLGVBQWUsTUFBTSxrQkFBa0IsTUFBTSx5QkFBeUIsTUFBTSxnQkFBZ0IsTUFBTSx1QkFBdUIsTUFBTSw4RUFBOEUsTUFBTSxnQ0FBZ0Msb0JBQW9CLE9BQU8sc0ZBQXNGLGtCQUFrQixtQkFBbUIsZ0RBQWdELDhFQUE4RSxnQkFBZ0IsTUFBTSx1QkFBdUIsTUFBTSxtQkFBbUIsK0JBQStCLDJGQUEyRixPQUFPLDBHQUEwRyxpQ0FBaUMsMkJBQTJCLDhFQUE4RSxnQkFBZ0IsTUFBTSx1QkFBdUIsTUFBTSxxQkFBcUIsNERBQTRELE1BQU0sK0JBQStCLFVBQVUsT0FBTyx5SUFBeUksaUtBQWlLLE9BQU8sc1FBQXNRLHFGQUFxRiw4RUFBOEUsTUFBTSx3QkFBd0IsT0FBTyxrQkFBa0Isa0dBQWtHLCtGQUErRixRQUFRLDZGQUE2Rix5RkFBeUYsd0JBQXdCLFNBQVMsa0JBQWtCLGVBQWUsMkVBQTJFLGVBQWUsUUFBUSxFQUFFLEtBQUssaUJBQWlCLEVBQUUsNkNBQTZDLFdBQVcsMENBQTBDLGlDQUFpQyxFQUFFLDJFQUEyRSwyQkFBMkIsb0NBQW9DLG1CQUFtQixZQUFZLHFFQUFxRSxrR0FBa0csU0FBUyx1QkFBdUIsZUFBZSxvQ0FBb0MsSUFBSSxnQ0FBZ0MsU0FBUyw2QkFBNkIsMEJBQTBCLFNBQVMsa0JBQWtCLHdFQUF3RSxtQkFBbUIsY0FBYyxjQUFjLDRDQUE0QyxNQUFNLG9EQUFvRCxzQkFBc0IsU0FBUyxpQkFBaUIsS0FBSyxpQ0FBaUMsa0JBQWtCLElBQUksZ0VBQWdFLFNBQVMsa0JBQWtCLGtDQUFrQyxNQUFNLGtEQUFrRCw2Q0FBNkMsMENBQTBDLElBQUksUUFBUSxTQUFTLGtCQUFrQixNQUFNLDZCQUE2QixrRUFBa0UsTUFBTSx3QkFBd0IsTUFBTSw2QkFBNkIsTUFBTSxzR0FBc0csc0JBQXNCLGlDQUFpQyxvREFBb0QsS0FBSyxpQkFBaUIsaURBQWlELDBEQUEwRCxzQkFBc0IsTUFBTSw0Q0FBNEMsNENBQTRDLFNBQVMsa0NBQWtDLDRDQUE0QyxTQUFTLEVBQUUsb0NBQW9DLGNBQWMsd0NBQXdDLE1BQU0sK0VBQStFLHNCQUFzQixTQUFTLGlCQUFpQixpQ0FBaUMsa0JBQWtCLElBQUksK0JBQStCLGtEQUFrRCxXQUFXLGVBQWUsU0FBUyxrQkFBa0IsOEJBQThCLE1BQU0sY0FBYywrREFBK0QsTUFBTSx5QkFBeUIsTUFBTSxpQ0FBaUMsTUFBTSxpQ0FBaUMsTUFBTSx3REFBd0QsU0FBUyxhQUFhLGlEQUFpRCxVQUFVLGtCQUFrQixtQkFBbUIsY0FBYyxTQUFTLHVCQUF1QixtQkFBbUIsc0RBQXNELDhCQUE4QixVQUFVLGNBQWMsNkhBQTZILE1BQU0sb0JBQW9CLGNBQWMsdUVBQXVFLE1BQU0sbUJBQW1CLG9FQUFvRSxpR0FBaUcsU0FBUyxVQUFVLFNBQVMsNEJBQTRCLFNBQVMsVUFBVSxNQUFNLHlJQUF5SSxNQUFNLHdFQUF3RSxNQUFNLHFFQUFxRSxNQUFNLGlHQUFpRyxNQUFNLDBCQUEwQixNQUFNLDBEQUEwRCxpQkFBaUIsK0VBQStFLGVBQWUsSUFBSSxNQUFNLFNBQVMsbUJBQW1CLGlCQUFpQiwyR0FBMkcsTUFBTSxTQUFTLGtCQUFrQixpQkFBaUIsa0JBQWtCLGNBQWMsMENBQTBDLDBDQUEwQyxrRkFBa0YsbUNBQW1DLElBQUksc0JBQXNCLGNBQWMsU0FBUyx3QkFBd0IsYUFBYSxFQUFFLGlCQUFpQixrQkFBa0Isd0JBQXdCLFdBQVcsS0FBSyx1QkFBdUIsT0FBTyxTQUFTLEVBQUUsY0FBYyx1QkFBdUIscUJBQXFCLFFBQVEsTUFBTSw0QkFBNEIsUUFBUSxpREFBaUQsUUFBUSxXQUFXLGlDQUFpQyw4RUFBOEUsc0NBQXNDLFNBQVMscUJBQXFCLFlBQVksaUJBQWlCLDRCQUE0QixjQUFjLDhGQUE4RixNQUFNLG9NQUFvTSxNQUFNLGlCQUFpQiw0REFBNEQsb0NBQW9DLGlFQUFpRSxHQUFHLGdEQUFnRCxZQUFZLDBQQUEwUCxRQUFRLHlEQUF5RCxNQUFNLFlBQVksV0FBVyxvUUFBb1EsY0FBYyxTQUFTLG1EQUFtRCxNQUFNLCtEQUErRCxRQUFRLFdBQVcsd1VBQXdVLGNBQWMsU0FBUyxtREFBbUQsTUFBTSw4QkFBOEIsa0JBQWtCLGNBQWMsOEJBQThCLHlDQUF5Qyw0TkFBNE4sTUFBTSxpSEFBaUgsTUFBTSwwRUFBMEUsY0FBYyxJQUFJLFNBQVMsU0FBUyxrQkFBa0IsK0ZBQStGLE1BQU0sNkJBQTZCLDBDQUEwQyxnQ0FBZ0MsSUFBSSxjQUFjLFNBQVMsa0JBQWtCLE1BQU0saUhBQWlILG9CQUFvQixTQUFTLGlCQUFpQix5QkFBeUIscUNBQXFDLFNBQVMsRUFBRSxRQUFRLCtEQUErRCxLQUFLLE1BQU0sZ0VBQWdFLE1BQU0sOEJBQThCLE1BQU0sMEZBQTBGLE1BQU0sNEtBQTRLLE1BQU0saUNBQWlDLGlEQUFpRCw4SkFBOEosY0FBYyxTQUFTLEVBQUUsUUFBUSxjQUFjLHFEQUFxRCxNQUFNLHNCQUFzQixrQkFBa0IsaUVBQWlFLE1BQU0sd0JBQXdCLG1DQUFtQyxNQUFNLHFDQUFxQyxNQUFNLGFBQWEsYUFBYSxpQkFBaUIsRUFBRSwwQkFBMEIsYUFBYSxNQUFNLElBQUksMkhBQTJILEtBQUssY0FBYyxrRkFBa0YsK0RBQStELFNBQVMsbUJBQW1CLG1CQUFtQixhQUFhLElBQUksSUFBSSwyQ0FBMkMsU0FBUyxtQkFBbUIsb0JBQW9CLGFBQWEsSUFBSSxJQUFJLGtCQUFrQiw4QkFBOEIsU0FBUyxtQkFBbUIsaUZBQWlGLDJCQUEyQixTQUFTLGVBQWUsS0FBSyxpQkFBaUIsRUFBRSx5Q0FBeUMsMkJBQTJCLHNEQUFzRCxvRkFBb0Ysa0JBQWtCLGVBQWUsY0FBYyxRQUFRLElBQUkscUJBQXFCLFNBQVMsRUFBRSxVQUFVLElBQUksTUFBTSxXQUFXLCtCQUErQixjQUFjLGtDQUFrQyxVQUFVLE1BQU0seUJBQXlCLG9DQUFvQyxZQUFZLFVBQVUsTUFBTSxzREFBc0QsbUJBQW1CLFlBQVksNlFBQTZRLHdHQUF3RyxTQUFTLHNCQUFzQixRQUFRLE1BQU0sNkJBQTZCLFNBQVMsaUJBQWlCLFlBQVkseUJBQXlCLGlCQUFpQixxQ0FBcUMsU0FBUyxpQ0FBaUMsaUJBQWlCLFdBQVcseVBBQXlQLGlCQUFpQiw0SEFBNEgscUJBQXFCLHNDQUFzQyxTQUFTLHlCQUF5QixxQkFBcUIsY0FBYyxjQUFjLG1EQUFtRCxNQUFNLDJDQUEyQyxNQUFNLHlKQUF5SixNQUFNLG1CQUFtQiwwQkFBMEIsSUFBSSw4Q0FBOEMsMEZBQTBGLFNBQVMsa0JBQWtCLGlCQUFpQixNQUFNLGNBQWMsbUtBQW1LLDZDQUE2QyxTQUFTLEVBQUUsa0JBQWtCLGNBQWMsNENBQTRDLE1BQU0sY0FBYywwQkFBMEIseUhBQXlILE1BQU0sa0RBQWtELE1BQU0scUJBQXFCLGFBQWEscURBQXFELE1BQU0sK0NBQStDLGlCQUFpQixzQ0FBc0MsU0FBUyxFQUFFLGtCQUFrQixjQUFjLDBDQUEwQyxNQUFNLDBDQUEwQyxNQUFNLGdCQUFnQixhQUFhLFlBQVksZUFBZSxtQ0FBbUMsU0FBUyxtQkFBbUIsZUFBZSxjQUFjLGtFQUFrRSxpQ0FBaUMsU0FBUyxnSEFBZ0gsc0JBQXNCLDBDQUEwQyxNQUFNLDJJQUEySSxPQUFPLGtGQUFrRixRQUFRLCtCQUErQix1QkFBdUIsOEJBQThCLHVNQUF1TSxxQ0FBcUMsTUFBTSxxQkFBcUIsTUFBTSx1QkFBdUIsNENBQTRDLE1BQU0sdUhBQXVILGVBQWUsa0JBQWtCLGlDQUFpQyxhQUFhLGtDQUFrQyxpQkFBaUIsZUFBZSxrQkFBa0Isb0JBQW9CLHdCQUF3QixXQUFXLEtBQUssV0FBVyxhQUFhLE1BQU0sc0NBQXNDLFNBQVMsbUJBQW1CLGVBQWUsY0FBYyw0REFBNEQsTUFBTSw2QkFBNkIsTUFBTSwwQkFBMEIsK0dBQStHLGtCQUFrQixvQkFBb0Isd0JBQXdCLFdBQVcsS0FBSyxXQUFXLGFBQWEsTUFBTSxjQUFjLFNBQVMsRUFBRSxrQkFBa0IsNkNBQTZDLE1BQU0sZ0VBQWdFLE1BQU0sYUFBYSxhQUFhLFlBQVksaUJBQWlCLEtBQUssVUFBVSxFQUFFLFNBQVMsY0FBYyxpQ0FBaUMsTUFBTSw2RUFBNkUscUNBQXFDLHNCQUFzQixNQUFNLGtDQUFrQyxzQ0FBc0MsYUFBYSxVQUFVLEVBQUUsZ0NBQWdDLGtCQUFrQixrQkFBa0IsNlFBQTZRLFdBQVcsUUFBUSxNQUFNLGFBQWEsZ0JBQWdCLE1BQU0sT0FBTyxRQUFRLDRCQUE0Qiw2QkFBNkIsNkNBQTZDLHdCQUF3QixpQ0FBaUMscVBBQXFQLGNBQWMscURBQXFELGNBQWMsb0RBQW9ELGlCQUFpQixrQ0FBa0MsbUJBQW1CLDRLQUE0SyxtQkFBbUIsaUNBQWlDLDJFQUEyRSxTQUFTLE1BQU0sa0JBQWtCLHdEQUF3RCxRQUFRLEtBQUssc0JBQXNCLEtBQUssU0FBUyxhQUFhLGdDQUFnQyxNQUFNLHdCQUF3QixtQkFBbUIsTUFBTSxhQUFhLHFDQUFxQyxhQUFhLFFBQVEsWUFBWSxRQUFRLFlBQVksUUFBUSw2REFBNkQsTUFBTSxrQkFBa0IsZUFBZSwyQkFBMkIsd0JBQXdCLGlDQUFpQyxhQUFhLGdCQUFnQixpQkFBaUIsS0FBSyxlQUFlLDhCQUE4QixTQUFTLHlCQUF5QixNQUFNLGdDQUFnQyxNQUFNLGlCQUFpQixRQUFRLDZCQUE2QixLQUFLLGlCQUFpQixRQUFRLE1BQU0sU0FBUyxRQUFRLHVFQUF1RSxzQkFBc0IsRUFBRSw4QkFBOEIsS0FBSyx5Q0FBeUMsYUFBYSxFQUFFLFlBQVkscUdBQXFHLFdBQVcsS0FBSywyQkFBMkIsVUFBVSxJQUFJLHVCQUF1QixTQUFTLFVBQVUsMkRBQTJELEtBQUssZUFBZSxLQUFLLGlCQUFpQixFQUFFLDBDQUEwQyxXQUFXLHVDQUF1QyxTQUFTLEtBQUssa0JBQWtCLFNBQVMsVUFBVSw4Q0FBOEMscUVBQXFFLFVBQVUsSUFBSSxHQUFHLEtBQUssMkNBQTJDLCtDQUErQyxXQUFXLDBDQUEwQyxRQUFRLHlEQUF5RCxJQUFJLHdCQUF3QixVQUFVLHFCQUFxQixNQUFNLEdBQUcsZ0JBQWdCLGtDQUFrQyxnQ0FBZ0Msc0JBQXNCLFFBQVEsZUFBZSxNQUFNLG9CQUFvQiw0QkFBNEIsMENBQTBDLHlDQUF5Qyx3RUFBd0UsUUFBUSx5Q0FBeUMsTUFBTSxNQUFNLHlDQUF5QyxnRkFBZ0Ysc0NBQXNDLDRCQUE0QixpQ0FBaUMsU0FBUyw2RUFBNkUsNEJBQTRCLG1EQUFtRCxrQkFBa0Isc0JBQXNCLE1BQU0sZ0NBQWdDLGtDQUFrQyxNQUFNLE1BQU0sOEVBQThFLE9BQU8sc0JBQXNCLHFCQUFxQiw0RkFBNEYsWUFBWSxJQUFJLEVBQUUsc0JBQXNCLGNBQWMsaUJBQWlCLGNBQWMsZ0NBQWdDLGNBQWMsY0FBYywwQkFBMEIsNkNBQTZDLEtBQUssU0FBUyw4QkFBOEIsU0FBUyxpQkFBaUIsc0JBQXNCLDBPQUEwTyx1QkFBdUIsb0NBQW9DLElBQUksRUFBRSxzQkFBc0IsY0FBYyxtQkFBbUIsaUJBQWlCLHNMQUFzTCxjQUFjLGlCQUFpQixpR0FBaUcsY0FBYyxVQUFVLDRCQUE0QixjQUFjLFVBQVUsZ0JBQWdCLGNBQWMsd0hBQXdILG1CQUFtQixTQUFTLE1BQU0sa0JBQWtCLHlDQUF5QyxTQUFTLFFBQVEsS0FBSyxzQkFBc0IsY0FBYyxXQUFXLGdCQUFnQixRQUFRLHNEQUFzRCxTQUFTLG1DQUFtQyxJQUFJLFFBQVEsTUFBTSx1Q0FBdUMsWUFBWSxLQUFLLFVBQVUsUUFBUSxTQUFTLE1BQU0sU0FBUyxRQUFRLCtGQUErRixlQUFlLDJCQUEyQixtREFBbUQsZUFBZSxzQkFBc0IsY0FBYyx5REFBeUQsTUFBTSx3REFBd0QsTUFBTSxhQUFhLHlDQUF5QyxtREFBbUQscUJBQXFCLDhCQUE4QixlQUFlLElBQUksdUJBQXVCLDJFQUEyRSwrREFBK0QsY0FBYyxrTkFBa04sa0ZBQWtGLDhEQUE4RCwyRkFBMkYsMEJBQTBCLHlCQUF5Qiw4SEFBOEgsUUFBUSxzQ0FBc0MsUUFBUSx1SEFBdUgsb0JBQW9CLFFBQVEsRUFBRSwwRUFBMEUsY0FBYyxHQUFHLGNBQWMsZ0ZBQWdGLGtQQUFrUCxXQUFXLGdCQUFnQixTQUFTLGNBQWMsbUNBQW1DLFFBQVEsU0FBUyx5QkFBeUIsbUNBQW1DLE9BQU8scUtBQXFLLGVBQWUsUUFBUSxHQUFHLDJDQUEyQyxXQUFXLHNCQUFzQixxQkFBcUIsb0JBQW9CLDZGQUE2RixzVUFBc1UsdUNBQXVDLDRNQUE0TSw0RkFBNEYsS0FBSyxPQUFPLDBDQUEwQyxrQkFBa0IsMERBQTBELGtCQUFrQiwrRUFBK0UsS0FBSyxPQUFPLDBDQUEwQyxrQkFBa0IsNkJBQTZCLEtBQUssb0JBQW9CLFVBQVUsMkRBQTJELE1BQU0sbUVBQW1FLE1BQU0sa0JBQWtCLDhEQUE4RCxNQUFNLHVFQUF1RSxNQUFNLHFHQUFxRyxNQUFNLCtEQUErRCxRQUFRLDZFQUE2RSxNQUFNLG1EQUFtRCxRQUFRLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLFNBQVMsRUFBRSxtREFBbUQsK0NBQStDLDJCQUEyQixTQUFTLGVBQWUsS0FBSyxpQkFBaUIsRUFBRSx5Q0FBeUMsV0FBVyxzQ0FBc0Msa0NBQWtDLHFFQUFxRSxNQUFNLGVBQWUsTUFBTSxhQUFhLFVBQVUsOEVBQThFLDBEQUEwRCxLQUFLLDhEQUE4RCxzQkFBc0Isc0VBQXNFLGlDQUFpQyx3R0FBd0csb0RBQW9ELGtCQUFrQiwrREFBK0QscUJBQXFCLGFBQWEsMEJBQTBCLHlFQUF5RSxRQUFRLDhEQUE4RCxXQUFXLHVGQUF1RixPQUFPLDhCQUE4QixrQkFBa0Isd0NBQXdDLGtCQUFrQixrR0FBa0csMENBQTBDLGFBQWEsMEJBQTBCLHlFQUF5RSxRQUFRLDhEQUE4RCxXQUFXLHVGQUF1RixPQUFPLDhCQUE4QixtQkFBbUIsNkNBQTZDLG9aQUFvWixxRUFBcUUscUNBQXFDLDhEQUE4RCwyREFBMkQsS0FBSyxvREFBb0QsU0FBUyxFQUFFLHFCQUFxQiwrRkFBK0YsU0FBUyxxQkFBcUIsOERBQThELFlBQVkscUVBQXFFLEtBQUssMkJBQTJCLDhJQUE4SSxrR0FBa0csK0ZBQStGLG9LQUFvSyxrQkFBa0IscWdCQUFxZ0IsdUhBQXVILDRCQUE0QiwwQkFBMEIsbUJBQW1CLGFBQWEsS0FBSyxPQUFPLHlCQUF5QixLQUFLLE9BQU8sT0FBTyxnQkFBZ0IsZUFBZSxpQkFBaUIsR0FBRyxvQkFBb0Isb0JBQW9CLDhEQUE4RCwwRkFBMEYsd0NBQXdDLG1DQUFtQyxnREFBZ0QsS0FBSyx1REFBdUQsa0VBQWtFLDBDQUEwQyxLQUFLLHVEQUF1RCwwQkFBMEIsdUJBQXVCLCtCQUErQixrR0FBa0csMkJBQTJCLHFCQUFxQixnQkFBZ0IsYUFBYSxvQkFBb0IsT0FBTyxxR0FBcUcsS0FBSyxPQUFPLE9BQU8sZ0JBQWdCLGFBQWEsK0JBQStCLDJCQUEyQixRQUFRLGNBQWMsaUNBQWlDLGFBQWEscUNBQXFDLDBCQUEwQixxQkFBcUIsZ0tBQWdLLDREQUE0RCxXQUFXLElBQUksRUFBRSxzQkFBc0IsZUFBZSxXQUFXLDhCQUE4QixXQUFXLEtBQUssV0FBVyxnQ0FBZ0MsTUFBTSx3RUFBd0Usc01BQXNNLG1CQUFtQixpR0FBaUcsc0NBQXNDLElBQUksZUFBZSx3Q0FBd0MsK0JBQStCLDJDQUEyQyxRQUFRLG9GQUFvRix3QkFBd0IsZUFBZSxxQ0FBcUMsZ0JBQWdCLElBQUksc0JBQXNCLFNBQVMsT0FBTyxRQUFRLHFDQUFxQyxRQUFRLEVBQUUsS0FBSyw0SUFBNEksU0FBUyxNQUFNLEVBQUUsaUJBQWlCLDhFQUE4RSxtQkFBbUIsSUFBSSx1QkFBdUIsZUFBZSxZQUFZLE1BQU0sZUFBZSxZQUFZLFFBQVEsK0JBQStCLFlBQVksVUFBVSxzRUFBc0UsVUFBVSxVQUFVLEVBQUUsMkNBQTJDLDBFQUEwRSxpQ0FBaUMsK0RBQStELElBQUksbUJBQW1CLHlFQUF5RSxTQUFTLGtCQUFrQixNQUFNLHVCQUF1Qix3REFBd0QsaUNBQWlDLHVDQUF1QyxNQUFNLDBCQUEwQixNQUFNLDJDQUEyQyx5QkFBeUIsdUJBQXVCLE1BQU0sYUFBYSxRQUFRLFFBQVEsa0JBQWtCLHFCQUFxQixjQUFjLFdBQVcsS0FBSyxtQ0FBbUMsaUNBQWlDLGVBQWUsVUFBVSxNQUFNLFNBQVMsTUFBTSxJQUFJLFFBQVEsa0VBQWtFLDhDQUE4QyxtTEFBbUwscUNBQXFDLG9CQUFvQixzQkFBc0IsdUdBQXVHLEtBQUssMkRBQTJELG1CQUFtQix5R0FBeUcsOEJBQThCLHdCQUF3QiwrSEFBK0gsc0JBQXNCLDJJQUEySSxhQUFhLGVBQWUseUJBQXlCLDRDQUE0QyxFQUFFLDhDQUE4QyxXQUFXLEtBQUssV0FBVyx1REFBdUQsbUJBQW1CLFFBQVEsa0JBQWtCLGtCQUFrQixjQUFjLFdBQVcsS0FBSyxrQ0FBa0MsZ0NBQWdDLGVBQWUsVUFBVSxNQUFNLFNBQVMsTUFBTSxJQUFJLG9CQUFvQixRQUFRLGtCQUFrQixNQUFNLGNBQWMsbUJBQW1CLFVBQVUsd0JBQXdCLDBGQUEwRixxQkFBcUIsd0ZBQXdGLDZEQUE2RCxVQUFVLGFBQWEsMkJBQTJCLElBQUksbUNBQW1DLFdBQVcsS0FBSyxXQUFXLFdBQVcsdUJBQXVCLEdBQUcsUUFBUSxhQUFhLHdHQUF3RyxpQkFBaUIsZ0ZBQWdGLGVBQWUsNEJBQTRCLGNBQWMsbUJBQW1CLGNBQWMsS0FBSyx5QkFBeUIsSUFBSSxvQ0FBb0MsY0FBYyxzREFBc0QsU0FBUyw2R0FBNkcsK0JBQStCLFVBQVUsU0FBUyxRQUFRLHFCQUFxQixtQkFBbUIsc0VBQXNFLG1CQUFtQix1QkFBdUIsVUFBVSxTQUFTLEVBQUUsY0FBYyxVQUFVLE1BQU0sY0FBYyxrQkFBa0Isd0hBQXdILGtFQUFrRSxPQUFPLFlBQVksbUJBQW1CLGtCQUFrQixhQUFhLHFCQUFxQixjQUFjLFdBQVcsbURBQW1ELDZEQUE2RCxtQkFBbUIsa0JBQWtCLDhMQUE4TCxpQkFBaUIsb0RBQW9ELGVBQWUsMEJBQTBCLGtDQUFrQyxpQkFBaUIsUUFBUSxjQUFjLG9EQUFvRCwwQkFBMEIsTUFBTSxzQkFBc0IsTUFBTSxrQ0FBa0MsTUFBTSw0QkFBNEIsOEJBQThCLDJDQUEyQyxlQUFlLHVGQUF1Rix3QkFBd0IsR0FBRyxpQkFBaUIsWUFBWSxNQUFNLHFCQUFxQixTQUFTLEVBQUUsZ0JBQWdCLHFCQUFxQixpQkFBaUIsS0FBSyx1Q0FBdUMsdUVBQXVFLHNCQUFzQixrSEFBa0gsU0FBUyxTQUFTLE9BQU8sY0FBYyxLQUFLLGNBQWMsU0FBUyxVQUFVLHFGQUFxRiwyQkFBMkIsU0FBUyxFQUFFLHVCQUF1QixpR0FBaUcsd0NBQXdDLGlCQUFpQiwyRkFBMkYsSUFBSSxFQUFFLDZCQUE2QixpREFBaUQsVUFBVSxpREFBaUQsK0xBQStMLG1CQUFtQix1Q0FBdUMsME9BQTBPLHNCQUFzQiwwQ0FBMEMsOEJBQThCLG1CQUFtQixNQUFNLHFCQUFxQixNQUFNLHFCQUFxQix3RUFBd0UsNEVBQTRFLGlCQUFpQix1RUFBdUUscUJBQXFCLDBDQUEwQyxTQUFTLDZLQUE2SyxpQkFBaUIsb0JBQW9CLFdBQVcsY0FBYyxXQUFXLFNBQVMsZ0JBQWdCLFVBQVUsZUFBZSw2RkFBNkYsaUJBQWlCLDZDQUE2QyxzSkFBc0osYUFBYSxhQUFhLE1BQU0sY0FBYyw0REFBNEQsMC9CQUEwL0Isa1ZBQWtWLGlCQUFpQixXQUFXLFlBQVksV0FBVyxLQUFLLHFCQUFxQixjQUFjLEdBQUcsYUFBYSwwQkFBMEIsS0FBSyxLQUFLLDBDQUEwQyx3REFBd0Qsc0JBQXNCLElBQUksS0FBSyxTQUFTLE1BQU0seUJBQXlCLGFBQWEsV0FBVyxLQUFLLDhGQUE4RixzQkFBc0IsSUFBSSxLQUFLLFNBQVMsTUFBTSw0QkFBNEIsaUJBQWlCLFlBQVksOEJBQThCLG1CQUFtQixrQ0FBa0MsbUJBQW1CLFFBQVEsc0JBQXNCLDZEQUE2RCxlQUFlLFdBQVcsZ0NBQWdDLDBEQUEwRCxFQUFFLHVDQUF1Qyx3REFBd0QscUJBQXFCLGNBQWMsZ0JBQWdCLE1BQU0sWUFBWSxNQUFNLGFBQWEsZ0lBQWdJLHFCQUFxQixnRUFBZ0UsVUFBVSw2QkFBNkIsdUJBQXVCLFFBQVEsd0NBQXdDLEVBQUUsbUJBQW1CLFlBQVksaUJBQWlCLGdDQUFnQyxlQUFlLHdCQUF3QixTQUFTLEVBQUUsWUFBWSx3REFBd0QsV0FBVyxLQUFLLFNBQVMsRUFBRSwyQkFBMkIseUNBQXlDLE1BQU0sV0FBVyxnQkFBZ0IsV0FBVyxjQUFjLHFCQUFxQixHQUFHLGdCQUFnQixlQUFlLGFBQWEsVUFBVSxvQ0FBb0MsK0JBQStCLE1BQU0sNkJBQTZCLE1BQU0sNkJBQTZCLE1BQU0sc0NBQXNDLE1BQU0sb0NBQW9DLGtJQUFrSSxNQUFNLHVIQUF1SCxNQUFNLHVFQUF1RSxNQUFNLDZCQUE2QixNQUFNLGFBQWEsTUFBTSxrQ0FBa0MsTUFBTSxpQkFBaUIsTUFBTSxzQ0FBc0MsTUFBTSxpS0FBaUssTUFBTSxxQ0FBcUMscUZBQXFGLEtBQUssY0FBYyxTQUFTLEVBQUUsUUFBUSxpSEFBaUgsV0FBVywyQ0FBMkMsb0JBQW9CLElBQUksYUFBYSw4V0FBOFcsNFVBQTRVLHlCQUF5QixFQUFFLFdBQVcsSUFBSSxjQUFjLEVBQUUsV0FBVyxLQUFLLE1BQU0sWUFBWSxLQUFLLE1BQU0sWUFBWSxLQUFLLElBQUksRUFBRSxxQ0FBcUMsSUFBSSxRQUFRLGNBQWMsT0FBTyxZQUFZLDREQUE0RCxHQUFHLCtHQUErRyx5QkFBeUIsS0FBSyxLQUFLLFNBQVMseUhBQXlILGtCQUFrQixZQUFZLFFBQVEsc0dBQXNHLDJCQUEyQix1RUFBdUUsTUFBTSw2QkFBNkIsTUFBTSxzQkFBc0IsTUFBTSw4REFBOEQsTUFBTSxrQ0FBa0Msb0NBQW9DLFNBQVMsVUFBVSxrREFBa0QsUUFBUSwwQ0FBMEMsUUFBUSxnREFBZ0QsUUFBUSxTQUFTLGlHQUFpRyxzTUFBc00sb0JBQW9CLGdFQUFnRSxVQUFVLGtDQUFrQywyQ0FBMkMsaUJBQWlCLGtEQUFrRCxxQkFBcUIsb0JBQW9CLG1GQUFtRixVQUFVLGdDQUFnQywwRUFBMEUseUNBQXlDLCtDQUErQyxZQUFZLDZEQUE2RCxzR0FBc0csb0JBQW9CLFlBQVksUUFBUSxxQ0FBcUMsNkNBQTZDLDBGQUEwRix5Q0FBeUMsUUFBUSxvQkFBb0Isa0NBQWtDLHVCQUF1QixXQUFXLGdDQUFnQyxNQUFNLDJDQUEyQyxVQUFVLG9EQUFvRCxxRUFBcUUsT0FBTyxpQkFBaUIsRUFBRSxHQUFHLFFBQVEsRUFBRSxtQkFBbUIsT0FBTyx1Q0FBdUMsaUJBQWlCLDJCQUEyQixTQUFTLEVBQUUsc0JBQXNCLDhJQUE4SSxXQUFXLFNBQVMsZUFBZSx3QkFBd0IsY0FBYyxnQ0FBZ0MsZUFBZSx1QkFBdUIsNEJBQTRCLGdCQUFnQixFQUFFLG9DQUFvQyxpQ0FBaUMsb0lBQW9JLHNCQUFzQixvQkFBb0IsRUFBRSxvQ0FBb0MsZUFBZSxrRUFBa0UsaUJBQWlCLHlCQUF5Qix5QkFBeUIsVUFBVSwrSUFBK0ksTUFBTSxnQ0FBZ0MsTUFBTSxrQ0FBa0MsTUFBTSxzRUFBc0UsTUFBTSxzQkFBc0IsTUFBTSw0QkFBNEIsZUFBZSxNQUFNLCtIQUErSCxxQkFBcUIsTUFBTSwrQkFBK0IsTUFBTSx1REFBdUQseVNBQXlTLE1BQU0sOFdBQThXLHFCQUFxQixNQUFNLCtCQUErQixNQUFNLHNDQUFzQyxNQUFNLHVDQUF1QyxNQUFNLDZDQUE2QyxNQUFNLDBDQUEwQywwREFBMEQsdUJBQXVCLHVDQUF1QyxlQUFlLE1BQU0sc0VBQXNFLE1BQU0sZ0VBQWdFLE1BQU0sOExBQThMLDJGQUEyRixnQ0FBZ0MsTUFBTSwyRUFBMkUsTUFBTSx1UEFBdVAsTUFBTSx3Y0FBd2MsTUFBTSw0SkFBNEosTUFBTSx3SkFBd0osTUFBTSwrSEFBK0gsTUFBTSxvRUFBb0UsTUFBTSwwRUFBMEUsTUFBTSwwRUFBMEUsTUFBTSxvRUFBb0UsTUFBTSxvRUFBb0UsTUFBTSxzRUFBc0UsTUFBTSxvRUFBb0UsTUFBTSx3RUFBd0UsTUFBTSx3RUFBd0UsTUFBTSwwRUFBMEUsTUFBTSxzQkFBc0IsTUFBTSxnR0FBZ0cseUJBQXlCLFVBQVUsc0JBQXNCLE1BQU0sMENBQTBDLDBEQUEwRCx1QkFBdUIsdUNBQXVDLGVBQWUsTUFBTSwrRkFBK0YsTUFBTSx1Q0FBdUMsTUFBTSw2Q0FBNkMsTUFBTSxzQ0FBc0MsTUFBTSxzSUFBc0ksb0NBQW9DLGdNQUFnTSxxSEFBcUgsUUFBUSxzREFBc0QsbUJBQW1CLFVBQVUsaUZBQWlGLHFDQUFxQyxnQkFBZ0IsbUNBQW1DLFdBQVcscUJBQXFCLGVBQWUsTUFBTSxrQkFBa0IsTUFBTSxtRUFBbUUsNEJBQTRCLGtFQUFrRSxPQUFPLDRCQUE0QiwrQkFBK0IsbUNBQW1DLFdBQVcscUJBQXFCLGVBQWUsTUFBTSxlQUFlLE1BQU0sa0JBQWtCLE1BQU0seUJBQXlCLE1BQU0sZ0JBQWdCLE1BQU0sdUJBQXVCLE1BQU0sOEVBQThFLE1BQU0sNEJBQTRCLHFCQUFxQixPQUFPLG9HQUFvRyxnQkFBZ0IsTUFBTSx1QkFBdUIsTUFBTSxtQkFBbUIsMkJBQTJCLHNFQUFzRSxPQUFPLHNHQUFzRyxnQkFBZ0IsTUFBTSx1QkFBdUIsTUFBTSxtQkFBbUIsTUFBTSw0REFBNEQsTUFBTSwyQkFBMkIsWUFBWSxPQUFPLHdKQUF3SixPQUFPLDhFQUE4RSxNQUFNLHVDQUF1QyxNQUFNLGdDQUFnQyxZQUFZLGdCQUFnQixNQUFNLHVDQUF1QyxNQUFNLDZCQUE2QixNQUFNLCtEQUErRCx1TEFBdUwsbUVBQW1FLDJCQUEyQixPQUFPLGtCQUFrQix3RUFBd0UsUUFBUSxtRUFBbUUsb0JBQW9CLGVBQWUsd0NBQXdDLGVBQWUsVUFBVSwwQ0FBMEMsa0RBQWtELGtCQUFrQixpQkFBaUIsbUJBQW1CLG1CQUFtQixvQkFBb0IsaUJBQWlCLHNDQUFzQyxpQkFBaUIsa1BBQWtQLCtPQUErTywwQ0FBMEMsSUFBSSxlQUFlLHNCQUFzQixRQUFRLEVBQUUsZUFBZSxpQkFBaUIsaUJBQWlCLFlBQVksR0FBRyxvQkFBb0Isc0VBQXNFLFVBQVUsdUJBQXVCLE9BQU8sSUFBSSwyREFBMkQsdURBQXVELG9CQUFvQiwyQkFBMkIsdUJBQXVCLEVBQUUsRUFBRSxpQ0FBaUMsd0dBQXdHLHlDQUF5QyxJQUFJLFNBQVMsTUFBTSxpQkFBaUIsUUFBUSxJQUFJLEdBQUcsb0JBQW9CLHFVQUFxVSxTQUFTLCtDQUErQyxJQUFJLFNBQVMsZUFBZSxtQkFBbUIsMENBQTBDLEVBQUUsRUFBRSxRQUFRLG1DQUFtQyw2Q0FBNkMsU0FBUyxrQ0FBa0MsMERBQTBELGtCQUFrQixpQkFBaUIsS0FBSyxlQUFlLGlEQUFpRCxTQUFTLGVBQWUsbUNBQW1DLGVBQWUsMkVBQTJFLGVBQWUsS0FBSyxRQUFRLGlCQUFpQixpQkFBaUIsc0JBQXNCLFVBQVUsb0ZBQW9GLG1DQUFtQyxTQUFTLFlBQVksZUFBZSxnQkFBZ0IsWUFBWSxFQUFFLEVBQUUsbUJBQW1CLGFBQWEsdUJBQXVCLGtDQUFrQyxJQUFJLHdEQUF3RCxnQkFBZ0IsWUFBWSxlQUFlLG9CQUFvQixZQUFZLEVBQUUsRUFBRSxtQkFBbUIsYUFBYSxtREFBbUQsa0JBQWtCLElBQUksNEJBQTRCLG9CQUFvQixZQUFZLG1CQUFtQixrQkFBa0IseURBQXlELFNBQVMsOENBQThDLFNBQVMsOENBQThDLFNBQVMsNkJBQTZCLGVBQWUsdUJBQXVCLFNBQVMsNkJBQTZCLE1BQU0sMEJBQTBCLGVBQWUsd0ZBQXdGLFdBQVcsS0FBSyxhQUFhLG9CQUFvQixZQUFZLGVBQWUsWUFBWSxtREFBbUQsZUFBZSxrQ0FBa0MsaUJBQWlCLCtCQUErQixtQkFBbUIseUJBQXlCLDRDQUE0Qyw2S0FBNkssUUFBUSxVQUFVLG9CQUFvQixNQUFNLHFCQUFxQixpQkFBaUIsK0RBQStELGtNQUFrTSxpQkFBaUIsb0JBQW9CLGlIQUFpSCxVQUFVLCtHQUErRyxxQkFBcUIsMkJBQTJCLDZDQUE2QyxVQUFVLHlJQUF5SSx1RUFBdUUsaUJBQWlCLG9CQUFvQixpREFBaUQsdUNBQXVDLGVBQWUsc0dBQXNHLDRDQUE0QyxjQUFjLG1CQUFtQixzQkFBc0IscUNBQXFDLGVBQWUsZUFBZSxPQUFPLE9BQU8sd0JBQXdCLHlDQUF5QyxLQUFLLEtBQUssNENBQTRDLDJCQUEyQixpQ0FBaUMsb0RBQW9ELHVCQUF1Qix1Q0FBdUMsYUFBYSx3Q0FBd0MsYUFBYSwwQkFBMEIsR0FBRyw2Q0FBNkMsY0FBYyxpQkFBaUIsb0JBQW9CLGlEQUFpRCx1Q0FBdUMsNkJBQTZCLHNHQUFzRyw0Q0FBNEMsZ0JBQWdCLGtEQUFrRCxtQkFBbUIsOEJBQThCLFlBQVksOEdBQThHLDJCQUEyQixzR0FBc0cscUJBQXFCLCtCQUErQiwwQkFBMEIsVUFBVSxtQ0FBbUMsaUlBQWlJLDhDQUE4QyxpQkFBaUIsOENBQThDLDRGQUE0RixhQUFhLCtDQUErQywrQkFBK0IsK0NBQStDLHdCQUF3QiwrRkFBK0YsdUpBQXVKLHVMQUF1TCxvQkFBb0Isd0NBQXdDLG9CQUFvQixvRkFBb0YsU0FBUyxzQ0FBc0MsWUFBWSx5SkFBeUosK0NBQStDLGlCQUFpQiw4Q0FBOEMsK0JBQStCLGVBQWUseUJBQXlCLGVBQWUsc0NBQXNDLGVBQWUsV0FBVyxJQUFJLCtDQUErQyxFQUFFLGVBQWUsMEJBQTBCLGVBQWUsd0JBQXdCLG1CQUFtQiw4Q0FBOEMsd0VBQXdFLGlDQUFpQyxVQUFVLElBQUksNEVBQTRFLEVBQUUsMkdBQTJHLDhCQUE4Qiw2QkFBNkIsb0RBQW9ELGdGQUFnRixRQUFRLHNDQUFzQyx1QkFBdUIsc0VBQXNFLGlGQUFpRixtQ0FBbUMsOEdBQThHLHVCQUF1QixtQ0FBbUMsdUhBQXVILG1CQUFtQixxSUFBcUksV0FBVyxLQUFLLFdBQVcsZ0NBQWdDLG9CQUFvQixzR0FBc0csaUJBQWlCLGdKQUFnSixpQkFBaUIsNEpBQTRKLFlBQVksbUJBQW1CLGNBQWMsMkJBQTJCLFdBQVcsOENBQThDLHFCQUFxQixrREFBa0QsV0FBVyxLQUFLLFdBQVcscUhBQXFILDRCQUE0QixNQUFNLGVBQWUsMEJBQTBCLFNBQVMsbUJBQW1CLDZGQUE2RixlQUFlLG9EQUFvRCxZQUFZLGNBQWMsZ0NBQWdDLDhDQUE4Qyx3QkFBd0IscUJBQXFCLDBCQUEwQixZQUFZLGlCQUFpQixpR0FBaUcsaUJBQWlCLHlCQUF5QixnQkFBZ0IsdUJBQXVCLEtBQUssc0JBQXNCLGlGQUFpRixXQUFXLEtBQUssV0FBVyxnR0FBZ0csaUJBQWlCLGlUQUFpVCxRQUFRLHdGQUF3RiwrQkFBK0IsdXBCQUF1cEIseUJBQXlCLDZFQUE2RSxVQUFVLDBGQUEwRixpQkFBaUIsb0RBQW9ELGtCQUFrQiw0QkFBNEIsaUJBQWlCLGlDQUFpQyxlQUFlLDJCQUEyQixzQkFBc0IsNkNBQTZDLGVBQWUsMkJBQTJCLDJCQUEyQiw2QkFBNkIsVUFBVSxxQkFBcUIsVUFBVSxTQUFTLFVBQVUsSUFBSSxrQkFBa0IsUUFBUSxhQUFhLHFCQUFxQixVQUFVLFNBQVMsVUFBVSxJQUFJLGtCQUFrQixRQUFRLGFBQWEscUJBQXFCLE9BQU8sWUFBWSxtQ0FBbUMsNEJBQTRCLFVBQVUsNENBQTRDLDhDQUE4Qyw4Q0FBOEMsb0NBQW9DLGtEQUFrRCx3RkFBd0YsU0FBUyxnQ0FBZ0MsdUNBQXVDLEtBQUssU0FBUyxFQUFFLFlBQVksMEJBQTBCLDhEQUE4RCx5QkFBeUIsVUFBVSxRQUFRLDBDQUEwQyxFQUFFLEVBQUUsa0JBQWtCLDRCQUE0Qix5Q0FBeUMsTUFBTSwyREFBMkQsZ0RBQWdELElBQUksOEJBQThCLHVCQUF1QixlQUFlLG1CQUFtQixZQUFZLGVBQWUsNkJBQTZCLFdBQVcsbUJBQW1CLEtBQUssWUFBWSxXQUFXLDRCQUE0QixPQUFPLGdCQUFnQiw0QkFBNEIsT0FBTyxlQUFlLGtHQUFrRyxPQUFPLHNCQUFzQixpQkFBaUIsZUFBZSxVQUFVLG16QkFBbXpCLHVTQUF1UywyQkFBMkIsaUJBQWlCLGlCQUFpQiwwQkFBMEIsMEJBQTBCLGtCQUFrQixtQkFBbUIsa1VBQWtVLGlCQUFpQixVQUFVLHFDQUFxQyxNQUFNLHdDQUF3QyxNQUFNLHVDQUF1QyxNQUFNLDBEQUEwRCxNQUFNLHlFQUF5RSx5QkFBeUIsdUNBQXVDLGlGQUFpRiwwSEFBMEgsZUFBZSxtQkFBbUIsYUFBYSxXQUFXLGFBQWEsbUJBQW1CLG9CQUFvQix1Q0FBdUMsTUFBTSxFQUFFLFFBQVEsZ0JBQWdCLG9CQUFvQix1Q0FBdUMsTUFBTSxFQUFFLFFBQVEsK0RBQStELHFEQUFxRCxTQUFTLGlCQUFpQixlQUFlLCtCQUErQiw2QkFBNkIsV0FBVyxFQUFFLHdCQUF3Qiw0REFBNEQsaURBQWlELGlEQUFpRCxTQUFTLG1CQUFtQixtQkFBbUIsY0FBYywySEFBMkgsaUJBQWlCLDBHQUEwRyxZQUFZLGVBQWUsK0VBQStFLGtCQUFrQixZQUFZLFdBQVcsTUFBTSw2QkFBNkIsb0RBQW9ELFdBQVcsWUFBWSxvQ0FBb0MsMkNBQTJDLFFBQVEsR0FBRyxlQUFlLGNBQWMsZUFBZSx3RkFBd0YsWUFBWSxZQUFZLEtBQUssWUFBWSxvQ0FBb0MsS0FBSyx3Q0FBd0Msc0NBQXNDLDREQUE0RCxXQUFXLE1BQU0sa0NBQWtDLGlDQUFpQyxXQUFXLFdBQVcsb0NBQW9DLG9DQUFvQyw4QkFBOEIsZ0JBQWdCLDJEQUEyRCxjQUFjLGNBQWMsMERBQTBELG1CQUFtQiwrQkFBK0IsV0FBVyxFQUFFLHFDQUFxQyxFQUFFLGFBQWEsMkNBQTJDLGFBQWEsK0JBQStCLDhCQUE4QiwyQ0FBMkMsNkRBQTZELEdBQUcsZ0NBQWdDLGdCQUFnQiw4S0FBOEssaUxBQWlMLGVBQWUscUJBQXFCLGVBQWUscUJBQXFCLG9EQUFvRCx5QkFBeUIsZ0NBQWdDLGlDQUFpQyxzREFBc0QseUJBQXlCLGFBQWEsd0JBQXdCLHNCQUFzQixrREFBa0QscURBQXFELE1BQU0sV0FBVyxHQUFHLG9DQUFvQyxZQUFZLHFDQUFxQyxLQUFLLGdDQUFnQyxpQkFBaUIsbUdBQW1HLDZCQUE2Qix3QkFBd0IsZUFBZSxtREFBbUQsK0NBQStDLHlDQUF5QyxrQkFBa0IsT0FBTyx1Q0FBdUMsb0JBQW9CLGlCQUFpQixFQUFFLGVBQWUsa0JBQWtCLGtCQUFrQixhQUFhLHdCQUF3QixJQUFJLFNBQVMsTUFBTSxzQkFBc0IsY0FBYyxFQUFFLEVBQUUsdUJBQXVCLHVCQUF1QixZQUFZLG9CQUFvQiwrQkFBK0IsS0FBSyx1QkFBdUIsRUFBRSxFQUFFLFVBQVUsYUFBYSxNQUFNLFVBQVUsYUFBYSxNQUFNLFlBQVksT0FBTyxjQUFjLEVBQUUsRUFBRSxVQUFVLGFBQWEsTUFBTSxVQUFVLGFBQWEsTUFBTSxZQUFZLDJCQUEyQix1Q0FBdUMsaUNBQWlDLG1DQUFtQyxtQkFBbUIsWUFBWSx5Q0FBeUMsY0FBYyxTQUFTLEVBQUUsNEJBQTRCLFlBQVksWUFBWSwyQkFBMkIscURBQXFELHNDQUFzQyx3Q0FBd0MsY0FBYyxrS0FBa0ssUUFBUSxXQUFXLDJCQUEyQiwrRUFBK0UsNkNBQTZDLHdjQUF3YyxvQ0FBb0MsNENBQTRDLHlFQUF5RSxhQUFhLDBDQUEwQyxjQUFjLG9DQUFvQyx1QkFBdUIsK0NBQStDLFlBQVksbUJBQW1CLG1EQUFtRCxvQ0FBb0MsMkhBQTJILGNBQWMsT0FBTyxHQUFHLGlCQUFpQixvQkFBb0IsNkJBQTZCLHNCQUFzQixrR0FBa0csZ0JBQWdCLHlFQUF5RSw4RkFBOEYsa0VBQWtFLDJFQUEyRSx1QkFBdUIsa0VBQWtFLE9BQU8sOEVBQThFLGFBQWEseUJBQXlCLGdCQUFnQixJQUFJLCtCQUErQixRQUFRLHFCQUFxQiw0QkFBNEIsOEdBQThHLDJCQUEyQiw2QkFBNkIseUJBQXlCLGlEQUFpRCw0SUFBNEksdUVBQXVFLDBDQUEwQyx5QkFBeUIsd0ZBQXdGLEdBQUcsK0JBQStCLHVEQUF1RCxnQ0FBZ0MsNEJBQTRCLFNBQVMsc0hBQXNILEdBQUcsdUJBQXVCLHlCQUF5Qiw0RUFBNEUsZ0NBQWdDLFdBQVcsMmRBQTJkLEdBQUcsK0JBQStCLDRCQUE0Qiw0QkFBNEIsU0FBUyw4SEFBOEgsRUFBRSxjQUFjLGdDQUFnQyxTQUFTLHlDQUF5QyxZQUFZLGdDQUFnQywrQkFBK0IsNEJBQTRCLHFDQUFxQyw2Q0FBNkMsdURBQXVELGFBQWEsY0FBYyxzSEFBc0gsMkNBQTJDLFNBQVMsa0JBQWtCLCtFQUErRSxzREFBc0QsYUFBYSxjQUFjLHNIQUFzSCwyQ0FBMkMsU0FBUyxrQkFBa0Isd0VBQXdFLGtGQUFrRixhQUFhLDBHQUEwRyxnQkFBZ0IsNEJBQTRCLDJFQUEyRSxhQUFhLCtDQUErQyxrQkFBa0IsV0FBVyxnRkFBZ0YsMEJBQTBCLFNBQVMsT0FBTywrREFBK0QseURBQXlELCtEQUErRCxhQUFhLHFYQUFxWCxxQkFBcUIsU0FBUyxnQ0FBZ0MsaUNBQWlDLDhCQUE4QixzQkFBc0Isa0JBQWtCLDBEQUEwRCxjQUFjLGtCQUFrQiwwREFBMEQsK0JBQStCLG9DQUFvQywyS0FBMkssa0RBQWtELHFDQUFxQyxzREFBc0QseUJBQXlCLHdCQUF3QiwyREFBMkQsb0JBQW9CLGNBQWMsT0FBTyw0QkFBNEIsbUNBQW1DLGtCQUFrQixZQUFZLE9BQU8sdURBQXVELGNBQWMsbURBQW1ELGFBQWEsZ0JBQWdCLFFBQVEsK0RBQStELGtCQUFrQixtQ0FBbUMsWUFBWSxrQkFBa0Isa0JBQWtCLG9CQUFvQixhQUFhLDZCQUE2QixxQkFBcUIsMkNBQTJDLFNBQVMsaUJBQWlCLGVBQWUsNENBQTRDLE1BQU0sZ0NBQWdDLG1CQUFtQixNQUFNLGtEQUFrRCwrR0FBK0csU0FBUyxxSUFBcUksSUFBSSx1QkFBdUIsb0JBQW9CLFdBQVcsb0NBQW9DLDhJQUE4SSxtQkFBbUIsc0NBQXNDLHNCQUFzQixrREFBa0QsaUJBQWlCLCtCQUErQiw4QkFBOEIsNEZBQTRGLHVEQUF1RCxhQUFhLHVEQUF1RCxhQUFhLCtCQUErQiwrQkFBK0IsUUFBUSxhQUFhLG9IQUFvSCw4QkFBOEIsa0ZBQWtGLFNBQVMsdUJBQXVCLHVCQUF1QixJQUFJLGNBQWMsbUJBQW1CLGdCQUFnQix5QkFBeUIsMkRBQTJELGFBQWEsMkRBQTJELDRDQUE0QywwQ0FBMEMsZ0JBQWdCLDZEQUE2RCxrRUFBa0UscUNBQXFDLDhIQUE4SCxFQUFFLG1DQUFtQyx5QkFBeUIsT0FBTyxxQkFBcUIsT0FBTyxrQkFBa0IsT0FBTyw2QkFBNkIsa0JBQWtCLFlBQVksOEJBQThCLGVBQWUsd0JBQXdCLElBQUksbUJBQW1CLFFBQVEsc0JBQXNCLElBQUksSUFBSSxxQkFBcUIsdUJBQXVCLFNBQVMsTUFBTSxrQkFBa0IsOEZBQThGLFVBQVUsaUxBQWlMLDZCQUE2Qiw0QkFBNEIscUJBQXFCLGtCQUFrQixnQ0FBZ0MsMEJBQTBCLFlBQVksZ0NBQWdDLHNGQUFzRixVQUFVLGtCQUFrQixrSkFBa0oseUJBQXlCLHNCQUFzQixhQUFhLHVCQUF1QixJQUFJLHdCQUF3QixhQUFhLHFCQUFxQiw2QkFBNkIsVUFBVSx1RkFBdUYseUJBQXlCLHNCQUFzQixHQUFHLGlDQUFpQyxVQUFVLFFBQVEscUhBQXFILHlCQUF5QixzQkFBc0IsYUFBYSx1QkFBdUIsSUFBSSx3QkFBd0IsYUFBYSwwRUFBMEUsZ0JBQWdCLHdCQUF3QixPQUFPLGNBQWMsMEJBQTBCLE9BQU8scUJBQXFCLHVDQUF1QyxPQUFPLHFCQUFxQixxQkFBcUIsVUFBVSxzQkFBc0IsT0FBTyw2Q0FBNkMsK0JBQStCLGVBQWUsTUFBTSxJQUFJLGdCQUFnQixzRkFBc0YsU0FBUyxLQUFLLFFBQVEsbURBQW1ELHVDQUF1Qyw2QkFBNkIsbUJBQW1CLGtCQUFrQixrQ0FBa0MsaUNBQWlDLDZCQUE2Qiw0QkFBNEIsMEJBQTBCLHlCQUF5Qiw2QkFBNkIsa0NBQWtDLGlDQUFpQywyQkFBMkIsMEJBQTBCLG9CQUFvQixtQkFBbUIsdUNBQXVDLHNDQUFzQyxvQ0FBb0MsbUNBQW1DLGlDQUFpQyxnQ0FBZ0MseUJBQXlCLHdCQUF3QiwrQkFBK0IsOEJBQThCLDhCQUE4Qiw2QkFBNkIsc0JBQXNCLHFCQUFxQix3QkFBd0IsdUJBQXVCLHdDQUF3Qyx1Q0FBdUMsNEJBQTRCLDJCQUEyQiw2Q0FBNkMsNkRBQTZELGFBQWEsOEVBQThFLGtEQUFrRCxhQUFhLDZEQUE2RCx3REFBd0QsYUFBYSx5RUFBeUUsdUVBQXVFLGFBQWEsZ0JBQWdCLGVBQWUsY0FBYyxJQUFJLEVBQUUscUJBQXFCLDhCQUE4QixZQUFZLGNBQWMsOEJBQThCLGNBQWMsNEJBQTRCLHFCQUFxQixVQUFVLE9BQU8sK0JBQStCLElBQUksRUFBRSxvQ0FBb0Msa0VBQWtFLHdDQUF3QyxZQUFZLFNBQVMsZ0JBQWdCLDhCQUE4Qix5QkFBeUIsMkZBQTJGLG9CQUFvQiwwQkFBMEIsZ0JBQWdCLEtBQUsscUJBQXFCLDBCQUEwQixrQkFBa0IsME1BQTBNLGNBQWMsZUFBZSxTQUFTLEVBQUUsMEJBQTBCLGdFQUFnRSxXQUFXLFFBQVEsY0FBYyxrREFBa0QsS0FBSyxXQUFXLDhCQUE4Qix1QkFBdUIsYUFBYSxtQ0FBbUMsYUFBYSxXQUFXLHVCQUF1QixJQUFJLFNBQVMsSUFBSSxHQUFHLDhCQUE4QixRQUFRLElBQUksR0FBRyxnQkFBZ0IscUNBQXFDLEVBQUUsaUJBQWlCLHlCQUF5QixrQ0FBa0MsNkJBQTZCLDRDQUE0Qyx1QkFBdUIsUUFBUSxvQkFBb0IsVUFBVSxPQUFPLGlCQUFpQixLQUFLLFdBQVcsbUNBQW1DLFFBQVEsUUFBUSxrQkFBa0IsUUFBUSxhQUFhLHFDQUFxQyxNQUFNLDRDQUE0QyxtQ0FBbUMsaUNBQWlDLHFCQUFxQixrQkFBa0IsUUFBUSxnQkFBZ0IsZUFBZSxvQkFBb0IsSUFBSSxnTkFBZ04sZ0JBQWdCLHVDQUF1QyxzS0FBc0ssK0NBQStDLFNBQVMsNkJBQTZCLFVBQVUsNkJBQTZCLE1BQU0sWUFBWSxRQUFRLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSyxvQ0FBb0MsS0FBSywwQ0FBMEMsVUFBVSx5Q0FBeUMsWUFBWSxRQUFRLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSyw2Q0FBNkMsdUJBQXVCLGlGQUFpRixnQkFBZ0IsTUFBTSxhQUFhLE1BQU0sb0JBQW9CLE1BQU0sYUFBYSxNQUFNLGNBQWMsZ0JBQWdCLDRFQUE0RSxxSUFBcUksOERBQThELFFBQVEsa0JBQWtCLFFBQVEsSUFBSSxJQUFJLCtCQUErQixRQUFRLE9BQU8sc0RBQXNELGFBQWEscUVBQXFFLDJFQUEyRSxNQUFNLGFBQWEsdUVBQXVFLHlCQUF5QixzQ0FBc0MsU0FBUyw4d0JBQTh3QiwwQ0FBMEMsOEJBQThCLGdCQUFnQixrQkFBa0IsdUZBQXVGLG9EQUFvRCw2R0FBNkcseUJBQXlCLGtGQUFrRixvQkFBb0IsZ0JBQWdCLGtCQUFrQixzREFBc0Qsb0RBQW9ELGtIQUFrSCx5QkFBeUIsa0ZBQWtGLDRCQUE0QixrRkFBa0YsT0FBTyxzQkFBc0IsS0FBSyxhQUFhLElBQUksbURBQW1ELE1BQU0sYUFBYSxPQUFPLFFBQVEsWUFBWSxlQUFlLEdBQUcsb0NBQW9DLGdCQUFnQiw2Q0FBNkMsaURBQWlELElBQUksSUFBSSxJQUFJLElBQUksOENBQThDLGVBQWUsYUFBYSxxREFBcUQsTUFBTSxjQUFjLFdBQVcsK0JBQStCLFlBQVksV0FBVyxNQUFNLElBQUkseUJBQXlCLFFBQVEsZUFBZSxpQkFBaUIsMkJBQTJCLElBQUksMkVBQTJFLGFBQWEsdUNBQXVDLGdEQUFnRCxvRUFBb0UsbUNBQW1DLGdCQUFnQix1Q0FBdUMsb0xBQW9MLGFBQWEsNkNBQTZDLGtDQUFrQyxPQUFPLHdCQUF3QixpR0FBaUcsaUZBQWlGLHdCQUF3QixvREFBb0QsVUFBVSw4RUFBOEUsdUNBQXVDLHdCQUF3QixtQ0FBbUMsK0JBQStCLG1EQUFtRCxnQ0FBZ0MsK0hBQStILFdBQVcsNERBQTRELElBQUksRUFBRSx5QkFBeUIsd0JBQXdCLEVBQUUsS0FBSyw2Q0FBNkMsTUFBTSxhQUFhLE9BQU8sb0JBQW9CLG1FQUFtRSxrQkFBa0IsMkNBQTJDLGdFQUFnRSw2QkFBNkIsYUFBYSwrQkFBK0IsbUJBQW1CLDRCQUE0QixnRUFBZ0UsbUNBQW1DLHNCQUFzQixFQUFFLGVBQWUsWUFBWSx5Q0FBeUMsNEJBQTRCLFNBQVMsNkZBQTZGLGdCQUFnQiwwQ0FBMEMsbUZBQW1GLHNDQUFzQyxTQUFTLGFBQWEsZ0JBQWdCLDhCQUE4QixlQUFlLHNDQUFzQyxTQUFTLG1EQUFtRCxhQUFhLDJZQUEyWSxzQkFBc0IsYUFBYSxtQkFBbUIsZUFBZSx5Q0FBeUMsK0JBQStCLHlCQUF5QixtQ0FBbUMsMkJBQTJCLHdHQUF3RyxVQUFVLHFCQUFxQixpQkFBaUIsSUFBSSxXQUFXLE9BQU8sdUVBQXVFLDREQUE0RCx5REFBeUQsK0NBQStDLEtBQUssWUFBWSxLQUFLLGdCQUFnQixFQUFFLGdCQUFnQixpQ0FBaUMsV0FBVyxzQ0FBc0MsV0FBVyxlQUFlLGlCQUFpQixpQkFBaUIsb0RBQW9ELEVBQUUsR0FBRyxXQUFXLG9CQUFvQixjQUFjLGtFQUFrRSxjQUFjLDhCQUE4Qix3QkFBd0IsUUFBUSxNQUFNLDZDQUE2QyxnQkFBZ0IsOEJBQThCLGtCQUFrQixPQUFPLDRCQUE0QixpQkFBaUIsdUJBQXVCLGtDQUFrQyxvQkFBb0IsOENBQThDLDBCQUEwQixZQUFZLHNDQUFzQyxTQUFTLHFEQUFxRCxJQUFJLDBCQUEwQixVQUFVLGdCQUFnQiw0QkFBNEIsZ0JBQWdCLHFCQUFxQixtRUFBbUUsa0JBQWtCLDJDQUEyQyxnRUFBZ0UsNkJBQTZCLGFBQWEsK0JBQStCLG1CQUFtQiw0QkFBNEIsMkNBQTJDLG1GQUFtRixzQ0FBc0MsU0FBUyx5RUFBeUUsYUFBYSxRQUFRLHNDQUFzQyxTQUFTLDRDQUE0QyxtQ0FBbUMsVUFBVSxNQUFNLCtDQUErQyxxQkFBcUIsOENBQThDLDBCQUEwQixZQUFZLHNDQUFzQyxTQUFTLG1KQUFtSiw2Q0FBNkMsNklBQTZJLEVBQUUseUJBQXlCLHdCQUF3QixnQkFBZ0IsSUFBSSxzQ0FBc0MsNkJBQTZCLGFBQWEsNkJBQTZCLCtCQUErQixTQUFTLHVEQUF1RCxzQkFBc0IsVUFBVSxPQUFPLHVCQUF1QixpQkFBaUIsUUFBUSxjQUFjLG1CQUFtQixRQUFRLDJDQUEyQyxRQUFRLCtDQUErQyx1QkFBdUIsU0FBUyxnQkFBZ0IseUNBQXlDLDhDQUE4QyxPQUFPLHdCQUF3QixtQ0FBbUMsU0FBUyxnQkFBZ0Isa0NBQWtDLFFBQVEsY0FBYyxFQUFFLDhCQUE4Qiw0QkFBNEIsU0FBUyxnQkFBZ0IsSUFBSSxjQUFjLEdBQUcsK0RBQStELHlJQUF5SSxPQUFPLHlCQUF5Qix5Q0FBeUMsaUJBQWlCLGVBQWUsdUJBQXVCLFlBQVksdUJBQXVCLHFLQUFxSyxhQUFhLHNDQUFzQyxTQUFTLEVBQUUsYUFBYSxVQUFVLHNDQUFzQyxTQUFTLCtFQUErRSxvQkFBb0IseUJBQXlCLDJCQUEyQixjQUFjLG1CQUFtQixTQUFTLHNCQUFzQixTQUFTLDBCQUEwQiwrREFBK0QseUJBQXlCLHlCQUF5QixtREFBbUQsWUFBWSxvRUFBb0UsU0FBUyxvRUFBb0UsU0FBUyxnQkFBZ0IsZ0NBQWdDLHNLQUFzSyx1Q0FBdUMsRUFBRSxjQUFjLHdGQUF3Rix3QkFBd0IsVUFBVSxrT0FBa08saUJBQWlCLGlEQUFpRCwyQ0FBMkMsK0VBQStFLDZDQUE2QywrQ0FBK0MsMkNBQTJDLDJDQUEyQyw4REFBOEQsd0NBQXdDLHlHQUF5Ryx3RUFBd0Usd0VBQXdFLDJFQUEyRSw4QkFBOEIseUNBQXlDLGVBQWUsc0NBQXNDLFNBQVMsRUFBRSxzQkFBc0Isa0JBQWtCLE1BQU0sZUFBZSxpR0FBaUcsV0FBVyxhQUFhLFdBQVcsRUFBRSxNQUFNLHlFQUF5RSx3REFBd0QsRUFBRSxNQUFNLDBFQUEwRSwrQkFBK0IsRUFBRSxNQUFNLG9EQUFvRCxNQUFNLDJGQUEyRiw2QkFBNkIsRUFBRSxNQUFNLHlFQUF5RSw2QkFBNkIsY0FBYyxXQUFXLEdBQUcsTUFBTSxxRUFBcUUsTUFBTSx5RUFBeUUsTUFBTSxrREFBa0QsTUFBTSw4SEFBOEgsc0JBQXNCLGlEQUFpRCxHQUFHLG9EQUFvRCxzQkFBc0IscUVBQXFFLHdCQUF3QixnRUFBZ0Usc0JBQXNCLHdFQUF3RSxhQUFhLFlBQVksTUFBTSx1RUFBdUUsc0RBQXNELEVBQUUsV0FBVyxxREFBcUQsaURBQWlELEVBQUUsV0FBVyxxRUFBcUUsb0ZBQW9GLEVBQUUsVUFBVSxrQ0FBa0Msb0ZBQW9GLEVBQUUsNEJBQTRCLGtCQUFrQixNQUFNLHFFQUFxRSxxREFBcUQsRUFBRSxXQUFXLHFEQUFxRCxpREFBaUQsRUFBRSxXQUFXLGtEQUFrRCxtRUFBbUUsRUFBRSxVQUFVLHNDQUFzQyxtRUFBbUUsRUFBRSxVQUFVLGtDQUFrQyx5RUFBeUUsRUFBRSw0QkFBNEIsa0JBQWtCLE1BQU0sNkNBQTZDLE1BQU0sNEZBQTRGLE1BQU0sc0VBQXNFLGFBQWEsRUFBRSxNQUFNLHlEQUF5RCxNQUFNLCtDQUErQyxPQUFPLFlBQVksZUFBZSxRQUFRLE1BQU0sc0NBQXNDLFNBQVMsczlCQUFzOUIsZ0RBQWdELFFBQVEscUJBQXFCLHVFQUF1RSxXQUFXLDhLQUE4SyxjQUFjLDJCQUEyQix5QkFBeUIsb0ZBQW9GLE9BQU8sdUJBQXVCLGtDQUFrQyxzQ0FBc0Msb0NBQW9DLGNBQWMsZUFBZSxJQUFJLCtEQUErRCxHQUFHLHNIQUFzSCxVQUFVLHlCQUF5QixFQUFFLGlCQUFpQixJQUFJLFVBQVUsR0FBRyxxQ0FBcUMsMEJBQTBCLGtCQUFrQiw2QkFBNkIsMEJBQTBCLHVCQUF1QixFQUFFLDhCQUE4QixnQkFBZ0IsUUFBUSxrQkFBa0IsNkJBQTZCLFlBQVksa0NBQWtDLHFCQUFxQixXQUFXLHlJQUF5SSx1QkFBdUIsT0FBTyw4QkFBOEIsMElBQTBJLGNBQWMscUJBQXFCLDBFQUEwRSxTQUFTLGVBQWUsdUNBQXVDLFdBQVcsMEJBQTBCLDJCQUEyQixjQUFjLGVBQWUsT0FBTyxRQUFRLDREQUE0RCx5R0FBeUcsb0JBQW9CLDRCQUE0QixFQUFFLGNBQWMsZUFBZSxPQUFPLFFBQVEsMENBQTBDLGlHQUFpRyxnQ0FBZ0MsdUJBQXVCLHdCQUF3QixFQUFFLHdCQUF3QixjQUFjLEVBQUUsd0JBQXdCLFNBQVMsMkZBQTJGLG9CQUFvQix5QkFBeUIsd0JBQXdCLDRCQUE0QixjQUFjLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLHFDQUFxQywyQkFBMkIsY0FBYywwQkFBMEIsT0FBTyxRQUFRLGtEQUFrRCx5R0FBeUcsZ0JBQWdCLDRCQUE0QixFQUFFLDBEQUEwRCxZQUFZLGdDQUFnQyw2QkFBNkIsOERBQThELFVBQVUsNkJBQTZCLEVBQUUsK0ZBQStGLEVBQUUsZ0JBQWdCLHVGQUF1RixlQUFlLGVBQWUsMENBQTBDLGdDQUFnQyxFQUFFLGVBQWUsMkJBQTJCLGVBQWUsZzhCQUFnOEIseURBQXlELFdBQVcsaUNBQWlDLFdBQVcsaUNBQWlDLFVBQVUsa0NBQWtDLFFBQVEsc0JBQXNCLFVBQVUsaUNBQWlDLE1BQU0sb0NBQW9DLE9BQU8sa0NBQWtDLGFBQWEsZUFBZSwwREFBMEQsOEJBQThCLEVBQUUsV0FBVyxlQUFlLCtGQUErRixFQUFFLFFBQVEsZUFBZSxnREFBZ0QsRUFBRSxTQUFTLGVBQWUsMkZBQTJGLEVBQUUsWUFBWSw2QkFBNkIsMkJBQTJCLEVBQUUsUUFBUSx5QkFBeUIsV0FBVyx1QkFBdUIsYUFBYSxzQ0FBc0MsYUFBYSxxQ0FBcUMscUNBQXFDLGdCQUFnQixHQUFHLDJDQUEyQyxHQUFHLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsR0FBRyxtQkFBbUIsR0FBRyxzYkFBc2IsR0FBRyxtRUFBbUUsRUFBRSxzSEFBc0gsRUFBRSw4RkFBOEYsSUFBSSxHQUFHLElBQUksWUFBWSxJQUFJLGNBQWMsSUFBSSxHQUFHLElBQUksZUFBZSxJQUFJLEdBQUcsSUFBSSxhQUFhLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxjQUFjLElBQUksRUFBRSxJQUFJLGNBQWMsSUFBSSxHQUFHLElBQUksY0FBYyxJQUFJLEVBQUUsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxjQUFjLElBQUksRUFBRSxJQUFJLGFBQWEsSUFBSSxnQkFBZ0IsSUFBSSxFQUFFLElBQUksa0JBQWtCLElBQUksRUFBRSxJQUFJLHVCQUF1QixJQUFJLEVBQUUsSUFBSSxhQUFhLEdBQUcsWUFBWSxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksb0JBQW9CLElBQUksT0FBTyxJQUFJLFVBQVUsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLElBQUksb0JBQW9CLElBQUksR0FBRyxJQUFJLHFCQUFxQixJQUFJLE9BQU8sSUFBSSxVQUFVLElBQUksbUJBQW1CLElBQUksT0FBTyxJQUFJLDRCQUE0QixJQUFJLEdBQUcsSUFBSSxZQUFZLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxlQUFlLElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksY0FBYyxJQUFJLEdBQUcsSUFBSSxjQUFjLElBQUksRUFBRSxJQUFJLGNBQWMsSUFBSSxHQUFHLElBQUksY0FBYyxJQUFJLEVBQUUsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLGNBQWMsSUFBSSxFQUFFLElBQUksYUFBYSxJQUFJLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxrQkFBa0IsSUFBSSxFQUFFLElBQUksdUJBQXVCLElBQUksRUFBRSxJQUFJLGFBQWEsR0FBRyxZQUFZLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxvQkFBb0IsSUFBSSxPQUFPLElBQUksVUFBVSxJQUFJLG1CQUFtQixJQUFJLE9BQU8sSUFBSSxvQkFBb0IsSUFBSSxHQUFHLElBQUkscUJBQXFCLElBQUksT0FBTyxJQUFJLFVBQVUsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLElBQUksK0RBQStELEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsdUdBQXVHLEVBQUUsb0hBQW9ILEVBQUUsSUFBSSxjQUFjLGlCQUFpQixpQkFBaUIsRUFBRSxPQUFPLEVBQUUsYUFBYSwyQkFBMkIsRUFBRSxhQUFhLDBCQUEwQixvQ0FBb0MsRUFBRSxHQUFHLEVBQUUsRUFBRSxjQUFjLFNBQVMsRUFBRSxHQUFHLEtBQUssT0FBTywyREFBMkQsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsWUFBWSxjQUFjLEVBQUUsSUFBSSxrQkFBa0IsVUFBVSxZQUFZLE1BQU0sd0ZBQXdGLDhCQUE4QixpQ0FBaUMsdUZBQXVGLFlBQVksd0JBQXdCLCtIQUErSCxvR0FBb0csYUFBYSxzR0FBc0csa0dBQWtHLGFBQWEsMkJBQTJCLG9EQUFvRCxrRUFBa0Usa0dBQWtHLGdDQUFnQyxvR0FBb0csYUFBYSxpR0FBaUcsd0VBQXdFLGFBQWEsNkNBQTZDLHNCQUFzQixLQUFLLGdCQUFnQixtRkFBbUYsd0VBQXdFLGFBQWEsZ0dBQWdHLHVFQUF1RSxhQUFhLGtHQUFrRyx5RUFBeUUsYUFBYSxnR0FBZ0csdUVBQXVFLGFBQWEsaUdBQWlHLHdFQUF3RSxhQUFhLGdHQUFnRyx1RUFBdUUsYUFBYSwyQkFBMkIsZ0JBQWdCLE1BQU0sdURBQXVELHNFQUFzRSxZQUFZLHdIQUF3SCx3RUFBd0Usb0tBQW9LLCtDQUErQyxxQ0FBcUMsbUJBQW1CLDZOQUE2TiwrQ0FBK0MsbUJBQW1CLG1CQUFtQixtSEFBbUgsK0NBQStDLGlCQUFpQixtQkFBbUIsNEdBQTRHLDJFQUEyRSxxR0FBcUcsdUVBQXVFLHdDQUF3QyxLQUFLLDBFQUEwRSx1RUFBdUUseUdBQXlHLDJFQUEyRSxxS0FBcUsscUVBQXFFLDRDQUE0Qyx1QkFBdUIsSUFBSSxvQkFBb0IsZUFBZSx3R0FBd0csMEZBQTBGLFNBQVMsTUFBTSxVQUFVLHdFQUF3RSxzRUFBc0UsdUtBQXVLLHVFQUF1RSx3R0FBd0cseUVBQXlFLDBHQUEwRyw0RUFBNEUsbUNBQW1DLE9BQU8sNkJBQTZCLGNBQWMscUNBQXFDLDJFQUEyRSxFQUFFLGFBQWEsY0FBYyw0Q0FBNEMsRUFBRSxTQUFTLHVCQUF1Qix3Q0FBd0MsRUFBRSxPQUFPLHVCQUF1QixzQ0FBc0MsRUFBRSxTQUFTLHVCQUF1Qix3Q0FBd0MsRUFBRSxRQUFRLHVCQUF1Qix1Q0FBdUMsRUFBRSxVQUFVLHVCQUF1Qix5Q0FBeUMsRUFBRSxRQUFRLHVCQUF1Qix1Q0FBdUMsRUFBRSxTQUFTLHVCQUF1Qix3Q0FBd0MsRUFBRSxRQUFRLHVCQUF1Qix1Q0FBdUMsRUFBRSxVQUFVLHVCQUF1Qix5Q0FBeUMsRUFBRSxhQUFhLHVCQUF1Qiw0Q0FBNEMsRUFBRSxPQUFPLHVCQUF1QixzQ0FBc0MsRUFBRSxNQUFNLHVCQUF1QixxQ0FBcUMsRUFBRSxRQUFRLHVCQUF1Qix1Q0FBdUMsRUFBRSxZQUFZLHlDQUF5Qyw0REFBNEQsa0JBQWtCLDhJQUE4SSxFQUFFLFFBQVEsdUJBQXVCLHNCQUFzQixFQUFFLFFBQVEseUNBQXlDLHFDQUFxQyxrQkFBa0Isa0dBQWtHLEVBQUUsWUFBWSx1QkFBdUIsMkNBQTJDLEVBQUUsV0FBVyx1QkFBdUIsZ0RBQWdELEVBQUUsY0FBYyx1QkFBdUIsaUZBQWlGLEVBQUUsZ0JBQWdCLHVCQUF1QixxREFBcUQsRUFBRSxjQUFjLHVCQUF1QixtREFBbUQsRUFBRSxTQUFTLHVCQUF1Qiw4Q0FBOEMsRUFBRSxTQUFTLHVCQUF1Qiw4Q0FBOEMsRUFBRSxZQUFZLHVCQUF1QixpREFBaUQsRUFBRSxZQUFZLDJDQUEyQyxPQUFPLGNBQWMsMENBQTBDLFlBQVksRUFBRSxFQUFFLGNBQWMsY0FBYywwQ0FBMEMsbUJBQW1CLEVBQUUsRUFBRSxjQUFjLGNBQWMsMENBQTBDLG1CQUFtQixFQUFFLEVBQUUsaUJBQWlCLHNEQUFzRCxhQUFhLGtEQUFrRCxhQUFhLGtEQUFrRCxpQkFBaUIsc0RBQXNELGNBQWMsbURBQW1ELFlBQVksaURBQWlELGNBQWMsbURBQW1ELGFBQWEsa0RBQWtELGVBQWUsb0RBQW9ELGFBQWEsa0RBQWtELGNBQWMsbURBQW1ELGFBQWEsa0RBQWtELFdBQVcsZ0RBQWdELGFBQWEsa0RBQWtELGVBQWUsb0RBQW9ELGtCQUFrQix1REFBdUQsZ0JBQWdCLFdBQVcsaUZBQWlGLFNBQVMsZ0JBQWdCLFdBQVcsaUZBQWlGLFVBQVUsaUNBQWlDLDREQUE0RCxFQUFFLGtCQUFrQixjQUFjLGtGQUFrRixVQUFVLE1BQU0sd0ZBQXdGLDhCQUE4QixpQ0FBaUMsdUZBQXVGLFlBQVksd0JBQXdCLCtIQUErSCx1RkFBdUYsa0lBQWtJLDZHQUE2RyxrSUFBa0ksMkdBQTJHLHFEQUFxRCxrR0FBa0cseUdBQXlHLDBFQUEwRSx5RUFBeUUsZ0hBQWdILGlEQUFpRCxtQ0FBbUMsT0FBTyw2QkFBNkIsU0FBUyx5REFBeUQsUUFBUSx5REFBeUQsU0FBUyx5REFBeUQsUUFBUSx5REFBeUQsa0JBQWtCLGNBQWMsMENBQTBDLDJEQUEyRCxFQUFFLEVBQUUsYUFBYSxjQUFjLDRDQUE0QyxFQUFFLE9BQU8sdUJBQXVCLDJDQUEyQyxFQUFFLFlBQVksdUJBQXVCLGdFQUFnRSxFQUFFLFlBQVksdUJBQXVCLGdFQUFnRSxFQUFFLGVBQWUsdUJBQXVCLGdFQUFnRSxFQUFFLGVBQWUsdUJBQXVCLGdFQUFnRSxFQUFFLGdCQUFnQix1QkFBdUIsMERBQTBELEVBQUUsVUFBVSx1QkFBdUIsOENBQThDLEVBQUUsUUFBUSx1QkFBdUIsc0ZBQXNGLGFBQWEsc0ZBQXNGLEVBQUUsZUFBZSxXQUFXLGlGQUFpRixTQUFTLGVBQWUsV0FBVyxpRkFBaUYsU0FBUyxZQUFZLG1HQUFtRyxlQUFlLGtCQUFrQixtR0FBbUcseUdBQXlHLCtDQUErQyxpQ0FBaUMsNERBQTRELEVBQUUsa0JBQWtCLGNBQWMsd0RBQXdELFVBQVUsTUFBTSx3QkFBd0Isc0JBQXNCLE1BQU0sZ0NBQWdDLDZFQUE2RSx3QkFBd0IsbUpBQW1KLG9HQUFvRyxrSUFBa0ksa0dBQWtHLHVIQUF1SCx5RUFBeUUsbUNBQW1DLE9BQU8sNkJBQTZCLG9CQUFvQiw4QkFBOEIsaUNBQWlDLHVGQUF1RixZQUFZLFNBQVMseURBQXlELFFBQVEseURBQXlELFNBQVMseURBQXlELFFBQVEseURBQXlELGtCQUFrQixjQUFjLDBDQUEwQywyREFBMkQsRUFBRSxFQUFFLGFBQWEsY0FBYyw0Q0FBNEMsRUFBRSxZQUFZLHVCQUF1Qix3RUFBd0UsRUFBRSxZQUFZLHVCQUF1Qix3RUFBd0UsRUFBRSxlQUFlLHVCQUF1Qix3RUFBd0UsRUFBRSxlQUFlLHVCQUF1Qix3RUFBd0UsRUFBRSxnQkFBZ0IsdUJBQXVCLDBEQUEwRCxFQUFFLGVBQWUsV0FBVyxpRkFBaUYsU0FBUyxlQUFlLFdBQVcsaUZBQWlGLFVBQVUsaUNBQWlDLDREQUE0RCxFQUFFLGtCQUFrQixVQUFVLG1GQUFtRiw4QkFBOEIsaUNBQWlDLHdGQUF3RixZQUFZLHdCQUF3QixrQ0FBa0MsbURBQW1ELEVBQUUsa0JBQWtCLFVBQVUsTUFBTSx3RkFBd0YsOEJBQThCLGlDQUFpQyxxRkFBcUYsWUFBWSxtQ0FBbUMsOEJBQThCLGlDQUFpQyxpQ0FBaUMsWUFBWSx3QkFBd0IsK0hBQStILGtHQUFrRyw4R0FBOEcsZ0dBQWdHLG1DQUFtQyxPQUFPLGlEQUFpRCxhQUFhLGNBQWMsNENBQTRDLEVBQUUsU0FBUyx1QkFBdUIsNkRBQTZELEVBQUUsU0FBUyx1QkFBdUIsNkRBQTZELEVBQUUsY0FBYyxXQUFXLGlGQUFpRixnQ0FBZ0MsY0FBYyxXQUFXLGlGQUFpRixpQ0FBaUMsK0JBQStCLDBEQUEwRCxFQUFFLGtCQUFrQixVQUFVLDhDQUE4Qyw4QkFBOEIsaUNBQWlDLHVGQUF1RixZQUFZLHdCQUF3QixpQ0FBaUMsNkJBQTZCLEVBQUUsa0JBQWtCLFVBQVUsaURBQWlELDhCQUE4QixpQ0FBaUMsMEZBQTBGLFlBQVksd0JBQXdCLG9DQUFvQyxnQ0FBZ0MsRUFBRSxrQkFBa0IsVUFBVSw0Q0FBNEMsOEJBQThCLGlDQUFpQyxxRkFBcUYsWUFBWSx3QkFBd0IsK0JBQStCLDJCQUEyQixFQUFFLGtCQUFrQixjQUFjLGlDQUFpQyxVQUFVLHdCQUF3Qiw4QkFBOEIsMEJBQTBCLEVBQUUsa0JBQWtCLGNBQWMscUNBQXFDLFVBQVUsd0JBQXdCLGtDQUFrQyw4QkFBOEIsRUFBRSxrQkFBa0IsVUFBVSw4QkFBOEIsaUNBQWlDLHNGQUFzRixhQUFhLGdDQUFnQyw0QkFBNEIsRUFBRSxrQkFBa0IsVUFBVSxpREFBaUQsOEJBQThCLGlDQUFpQyxxRkFBcUYsWUFBWSx3QkFBd0IsK0JBQStCLDJCQUEyQixFQUFFLGtCQUFrQixVQUFVLElBQUksZUFBZSx5Q0FBeUMseUVBQXlFLHNGQUFzRixZQUFZLHlCQUF5Qiw0RUFBNEUsb0NBQW9DLGtNQUFrTSxhQUFhLG9GQUFvRix1SEFBdUgsOEZBQThGLHFIQUFxSCx1SkFBdUoscUVBQXFFLHFDQUFxQyxjQUFjLHNCQUFzQixTQUFTLGNBQWMsd0JBQXdCLHlDQUF5QyxFQUFFLFNBQVMsY0FBYyx3QkFBd0IseUNBQXlDLEVBQUUsWUFBWSxjQUFjLDBCQUEwQix5Q0FBeUMsRUFBRSxZQUFZLHNCQUFzQixvQ0FBb0Msa0ZBQWtGLEVBQUUsa0JBQWtCLGNBQWMsK0ZBQStGLGFBQWEsMkNBQTJDLCtDQUErQyxxQkFBcUIsZUFBZSxjQUFjLFVBQVUsOENBQThDLDhCQUE4QixpQ0FBaUMsdUZBQXVGLFlBQVksSUFBSSxlQUFlLDhCQUE4QixlQUFlLHdCQUF3QixvSEFBb0gsU0FBUyxnQkFBZ0IsdUJBQXVCLFFBQVEsS0FBSyx1QkFBdUIsMkRBQTJELEVBQUUsb0NBQW9DLDRCQUE0Qiw0Q0FBNEMsS0FBSyx1QkFBdUIsUUFBUSxnQ0FBZ0MsRUFBRSw2REFBNkQsNkNBQTZDLGFBQWEscUJBQXFCLHlFQUF5RSxLQUFLLHlCQUF5QixnQkFBZ0IsZ0JBQWdCLFFBQVEsS0FBSyx1QkFBdUIsMkRBQTJELEdBQUcsdURBQXVELFNBQVMsZ0JBQWdCLGtDQUFrQyxRQUFRLG9DQUFvQyxFQUFFLFNBQVMsaUZBQWlGLFlBQVkseUJBQXlCLFVBQVUsbUNBQW1DLGlEQUFpRCxpQkFBaUIsd0RBQXdELG9DQUFvQywyQ0FBMkMsRUFBRSxZQUFZLElBQUksRUFBRSxRQUFRLGNBQWMsaUNBQWlDLEVBQUUsY0FBYyxjQUFjLHVDQUF1QyxFQUFFLFVBQVUsY0FBYyx5QkFBeUIsMEJBQTBCLEVBQUUsRUFBRSxTQUFTLGNBQWMsb0VBQW9FLHVDQUF1Qyx1QkFBdUIsRUFBRSxZQUFZLHFCQUFxQixNQUFNLEVBQUUsWUFBWSxjQUFjLHdCQUF3QixFQUFFLFFBQVEsU0FBUyw0RUFBNEUsY0FBYyx5QkFBeUIsRUFBRSxRQUFRLFNBQVMsc0VBQXNFLGNBQWMseUJBQXlCLEVBQUUsY0FBYyxxQkFBcUIsbUJBQW1CLFNBQVMsc0JBQXNCLGlCQUFpQixxQkFBcUIsY0FBYyxzQkFBc0IsRUFBRSxnQ0FBZ0MsNEJBQTRCLEVBQUUsbURBQW1ELG1EQUFtRCx3REFBd0QsY0FBYyxPQUFPLFdBQVcsU0FBUyw0Q0FBNEMsb0JBQW9CLGtDQUFrQyxjQUFjLHlCQUF5QixFQUFFLFlBQVksU0FBUywwRUFBMEUsS0FBSyxvQkFBb0IsS0FBSyxnQkFBZ0Isb0JBQW9CLE9BQU8sY0FBYyx5QkFBeUIsRUFBRSxRQUFRLDBDQUEwQyxxQ0FBcUMsaUZBQWlGLCtCQUErQixrRkFBa0YsNkJBQTZCLDZFQUE2RSxFQUFFLGtCQUFrQixVQUFVLElBQUksTUFBTSxpREFBaUQscURBQXFELE9BQU8sYUFBYSxzQkFBc0IsY0FBYyxPQUFPLDRCQUE0QixpQ0FBaUMsU0FBUyxvQkFBb0IsNERBQTRELHlHQUF5RyxvREFBb0QsaUNBQWlDLGdEQUFnRCxZQUFZLEdBQUcsV0FBVyxnQkFBZ0IsT0FBTyxhQUFhLHNCQUFzQixhQUFhLGlCQUFpQixpQ0FBaUMsRUFBRSwrQkFBK0IsMkJBQTJCLGVBQWUsa0RBQWtELGtFQUFrRSxrQ0FBa0MsaUNBQWlDLGdEQUFnRCxhQUFhLGNBQWMsMEJBQTBCLG9DQUFvQyxzQ0FBc0MsRUFBRSxVQUFVLHNDQUFzQywyQ0FBMkMsbUNBQW1DLG9DQUFvQyxzREFBc0QsbURBQW1ELHNDQUFzQyxvQ0FBb0Msd0RBQXdELHNEQUFzRCw2Q0FBNkMsNkNBQTZDLG1EQUFtRCxlQUFlLGtCQUFrQixVQUFVLElBQUksTUFBTSw2QkFBNkIsMEVBQTBFLHVGQUF1RixZQUFZLDhEQUE4RCx1Q0FBdUMsaUNBQWlDLGdCQUFnQixpQ0FBaUMsOEJBQThCLG9HQUFvRyxhQUFhLG9CQUFvQiwrQkFBK0IsY0FBYyx5QkFBeUIsaUJBQWlCLDRCQUE0QixxQkFBcUIsY0FBYyxnQkFBZ0Isb0JBQW9CLDREQUE0RCxFQUFFLG9EQUFvRCxnQkFBZ0Isa0RBQWtELFdBQVcsc0JBQXNCLFVBQVUsR0FBRyxZQUFZLGNBQWMsZ0ZBQWdGLEdBQUcsMEJBQTBCLGtCQUFrQixVQUFVLElBQUksZUFBZSx1Q0FBdUMsMkRBQTJELHNCQUFzQixzREFBc0QsZ0JBQWdCLGlCQUFpQiwyREFBMkQsa0ZBQWtGLFdBQVcsZ0JBQWdCLG1CQUFtQixtQkFBbUIsVUFBVSxZQUFZLE9BQU8saUJBQWlCLHlEQUF5RCw4QkFBOEIsVUFBVSxTQUFTLFlBQVksV0FBVyxLQUFLLG1CQUFtQixtQkFBbUIsVUFBVSxlQUFlLE9BQU8saUJBQWlCLHFFQUFxRSxpQkFBaUIsT0FBTyxVQUFVLGtCQUFrQixpRUFBaUUsNEJBQTRCLDhCQUE4QiwrQ0FBK0MsY0FBYywrREFBK0QsaUNBQWlDLCtCQUErQixpQ0FBaUMsdURBQXVELGlDQUFpQyw4QkFBOEIsaUNBQWlDLElBQUksNkNBQTZDLGtEQUFrRCxFQUFFLGtCQUFrQixVQUFVLElBQUksZUFBZSw2QkFBNkIseUVBQXlFLHNGQUFzRixZQUFZLHlFQUF5RSxnR0FBZ0csWUFBWSxtRkFBbUYsOEZBQThGLGFBQWEsOEJBQThCLHlDQUF5Qyw0Q0FBNEMsaUJBQWlCLDBHQUEwRyxZQUFZLHVCQUF1QixRQUFRLGNBQWMsb0JBQW9CLEdBQUcsOEJBQThCLDBGQUEwRixjQUFjLDhDQUE4QyxHQUFHLGtCQUFrQixnQkFBZ0IseUJBQXlCLGtCQUFrQiwyQkFBMkIsVUFBVSxJQUFJLGVBQWUsNkJBQTZCLDBFQUEwRSx1RkFBdUYsWUFBWSxtREFBbUQsNEJBQTRCLG9HQUFvRyxFQUFFLDZGQUE2RixjQUFjLDJCQUEyQixxQkFBcUIsNkJBQTZCLG1EQUFtRCxFQUFFLDREQUE0RCxHQUFHLGNBQWMsa0JBQWtCLGdCQUFnQix5QkFBeUIsa0JBQWtCLDJCQUEyQixVQUFVLElBQUksZUFBZSw2QkFBNkIsdUVBQXVFLG9GQUFvRixZQUFZLHVGQUF1Rix3RkFBd0YsR0FBRyxtQkFBbUIsY0FBYyx3Q0FBd0MsZ0JBQWdCLGtDQUFrQywrREFBK0QsMkVBQTJFLE9BQU8sd0JBQXdCLEdBQUcsY0FBYyxnQkFBZ0Isc0JBQXNCLCtEQUErRCwyRUFBMkUsT0FBTywwQkFBMEIsb0NBQW9DLGdEQUFnRCxFQUFFLG1CQUFtQixVQUFVLElBQUksZUFBZSw2QkFBNkIsdUVBQXVFLG9GQUFvRixZQUFZLGdCQUFnQiwyRUFBMkUsaUhBQWlILHdGQUF3RiwrR0FBK0csYUFBYSwwQkFBMEIsY0FBYyxjQUFjLGdCQUFnQix5Q0FBeUMsNkNBQTZDLE9BQU8sd0JBQXdCLHFFQUFxRSx3REFBd0QsU0FBUyxlQUFlLHNCQUFzQix5Q0FBeUMsRUFBRSxTQUFTLGVBQWUsc0JBQXNCLHlDQUF5QyxFQUFFLFVBQVUsOEJBQThCLFlBQVksc0JBQXNCLHFDQUFxQyxnRUFBZ0UsRUFBRSxtQkFBbUIsY0FBYyxpREFBaUQsVUFBVSxJQUFJLE1BQU0sNkJBQTZCLDRFQUE0RSx5RkFBeUYsWUFBWSxnQkFBZ0IsdUJBQXVCLDRJQUE0SSx3REFBd0QsRUFBRSxnQkFBZ0IsdUJBQXVCLDRJQUE0SSwyREFBMkQsRUFBRSxPQUFPLHFDQUFxQyxVQUFVLG9DQUFvQyxXQUFXLG9DQUFvQyx1RUFBdUUsMkJBQTJCLGtDQUFrQyxnRUFBZ0UsMkJBQTJCLEVBQUUsR0FBRyxXQUFXLDhCQUE4QixpQ0FBaUMsbURBQW1ELG1FQUFtRSxtREFBbUQsY0FBYyxHQUFHLGFBQWEsc0JBQXNCLGFBQWEseUJBQXlCLFdBQVcsZUFBZSwrQ0FBK0MsRUFBRSxXQUFXLGVBQWUsdUJBQXVCLEVBQUUsYUFBYSxxQkFBcUIsbUJBQW1CLHFCQUFxQixxQkFBcUIsZUFBZSwyRkFBMkYsR0FBRyxpQkFBaUIsbUJBQW1CLGFBQWEsMEJBQTBCLFVBQVUsSUFBSSxNQUFNLDZCQUE2QixrQ0FBa0MsaUNBQWlDLEdBQUcsc0NBQXNDLG9DQUFvQyxFQUFFLG1CQUFtQixVQUFVLDZCQUE2Qiw4QkFBOEIsaUNBQWlDLDZFQUE2RSxZQUFZLE9BQU8sNkJBQTZCLFlBQVksd0JBQXdCLGlCQUFpQixlQUFlLG9DQUFvQyxFQUFFLHlDQUF5QyxzQ0FBc0MsRUFBRSxtQkFBbUIsVUFBVSw0QkFBNEIsaURBQWlELGlDQUFpQyxxRkFBcUYsWUFBWSxrRkFBa0YsaURBQWlELGlDQUFpQyxpRUFBaUUsWUFBWSx1QkFBdUIsY0FBYyx3QkFBd0IsV0FBVyxTQUFTLHFDQUFxQyxTQUFTLGFBQWEsU0FBUyxxQ0FBcUMsU0FBUyxXQUFXLFNBQVMscUNBQXFDLFNBQVMsdUJBQXVCLG9CQUFvQixrQkFBa0IsRUFBRSx1QkFBdUIseURBQXlELGtCQUFrQixHQUFHLDBCQUEwQixtQkFBbUIsVUFBVSw0RUFBNEUsaUZBQWlGLDZCQUE2QixpQ0FBaUMscUZBQXFGLFlBQVksNkdBQTZHLDZCQUE2QixpQ0FBaUMsaUVBQWlFLFlBQVksdUJBQXVCLFdBQVcseUJBQXlCLDRDQUE0QywwQ0FBMEMsRUFBRSxtQkFBbUIsU0FBUyxzQkFBc0IsVUFBVSxJQUFJLE1BQU0sNkJBQTZCLGdHQUFnRyx3RkFBd0YsWUFBWSw0RUFBNEUsc0RBQXNELGlEQUFpRCxLQUFLLHlDQUF5QyxxQ0FBcUMsRUFBRSxtQkFBbUIsWUFBWSx3QkFBd0IsYUFBYSxvR0FBb0csVUFBVSxJQUFJLGVBQWUseURBQXlELGFBQWEseURBQXlELFlBQVksZ0JBQWdCLHdEQUF3RCw0QkFBNEIsMkRBQTJELHdDQUF3QywwQ0FBMEMsNEJBQTRCLEVBQUUsa0dBQWtHLEdBQUcsd0NBQXdDLG1DQUFtQyw0QkFBNEIsRUFBRSxtR0FBbUcsMEJBQTBCLFVBQVUsd0JBQXdCLDRDQUE0QyxpSUFBaUksVUFBVSw0REFBNEQsaUNBQWlDLDhGQUE4Riw2QkFBNkIsTUFBTSxtQ0FBbUMsaUNBQWlDLEVBQUUsZ0ZBQWdGLDZCQUE2QixHQUFHLG9GQUFvRixpQ0FBaUMsNkVBQTZFLHVCQUF1QixjQUFjLEtBQUssbUNBQW1DLGlDQUFpQyxFQUFFLHNDQUFzQyw2QkFBNkIsdUlBQXVJLE9BQU8sd0JBQXdCLHVCQUF1QiwrREFBK0QsZ0RBQWdELDJDQUEyQyxpQkFBaUIsOEJBQThCLCtCQUErQixFQUFFLG1CQUFtQixVQUFVLG1HQUFtRyxTQUFTLDRCQUE0QiwwQ0FBMEMsMkNBQTJDLEVBQUUsbUJBQW1CLFVBQVUsNEZBQTRGLFNBQVMsNEJBQTRCLDBDQUEwQywyQ0FBMkMsRUFBRSxtQkFBbUIsVUFBVSxJQUFJLE1BQU0sc0NBQXNDLDBHQUEwRyw0QkFBNEIsRUFBRSxnQkFBZ0IsNEJBQTRCLHlDQUF5Qyw0R0FBNEcsRUFBRSxtQkFBbUIsVUFBVSxJQUFJLE1BQU0sZ0NBQWdDLGFBQWEsdUJBQXVCLCtCQUErQixnQ0FBZ0MsTUFBTSxFQUFFLG1DQUFtQyxzRUFBc0UsWUFBWSx1Q0FBdUMsY0FBYyxFQUFFLElBQUksc0VBQXNFLFlBQVksdUNBQXVDLGNBQWMsR0FBRyxjQUFjLDRCQUE0Qix1Q0FBdUMsa0dBQWtHLEVBQUUsbUJBQW1CLFVBQVUsMkNBQTJDLDhCQUE4QixpQ0FBaUMsb0ZBQW9GLFlBQVksT0FBTyw4QkFBOEIsaUNBQWlDLDBCQUEwQiw4QkFBOEIsbUJBQW1CLFVBQVUsSUFBSSxNQUFNLHNDQUFzQyw4QkFBOEIsNEJBQTRCLEVBQUUsU0FBUyx1QkFBdUIsZ0JBQWdCLG1CQUFtQixVQUFVLElBQUksZUFBZSw2QkFBNkIsbUNBQW1DLHNDQUFzQyxpQ0FBaUMsRUFBRSxvSEFBb0gsa0NBQWtDLEVBQUUsS0FBSywrQkFBK0IsaUNBQWlDLEVBQUUsb0VBQW9FLDZCQUE2Qiw0QkFBNEIsa0NBQWtDLEdBQUcsbUJBQW1CLGVBQWUsa0NBQWtDLEdBQUcsaUJBQWlCLG1CQUFtQixVQUFVLGdHQUFnRyw0Q0FBNEMsU0FBUyw0QkFBNEIsaUJBQWlCLG9EQUFvRCxVQUFVLEdBQUcsMEJBQTBCLFVBQVUsR0FBRyxrQkFBa0IsSUFBSSx3Q0FBd0MsV0FBVywwQ0FBMEMsT0FBTywrQkFBK0IsWUFBWSwyQkFBMkIsR0FBRyxFQUFFLE9BQU8sK0JBQStCLFlBQVksMkJBQTJCLEdBQUcsYUFBYSwwQ0FBMEMsMkNBQTJDLFVBQVUsb0JBQW9CLG9DQUFvQyxrNUJBQWs1QixpQ0FBaUMsT0FBTyxFQUFFLDJCQUEyQixnQkFBZ0IsWUFBWSxnQkFBZ0IsOENBQThDLGdCQUFnQix1ZEFBdWQsaUJBQWlCLHNPQUFzTyxvQkFBb0IsZUFBZSxzQkFBc0IsZUFBZSx1QkFBdUIsZUFBZSxzQkFBc0IsZUFBZSxvQkFBb0IsZUFBZSxFQUFFLG9CQUFvQixNQUFNLGNBQWMsV0FBVywrQkFBK0IsWUFBWSxXQUFXLE1BQU0sSUFBSSx3Q0FBd0MsUUFBUSxlQUFlLGlCQUFpQiwyQkFBMkIsS0FBSyw2QkFBNkIsU0FBUyxpQ0FBbUIsSUFBSSxrQ0FBa0MsK0JBQStCLG1DQUFtQyxpQkFBaUIsMENBQTBDLGlDQUFtQixZQUFZLGlDQUFtQixPQUFPLDBDQUEwQyxPQUFPLGlDQUFtQixNQUFNLElBQUksSUFBSSxPQUFPLHlFQUF5RSxpQ0FBbUIsaUJBQWlCLDhHQUE4RywwQkFBMEIsaUNBQW1CLE1BQU0sU0FBUyxlQUFlLGNBQWMsaUJBQWlCLG1DQUFtQyxpREFBaUQsY0FBYyxFQUFFLHVCQUF1QixpQ0FBbUIsV0FBVyxJQUFJLGlDQUFtQixXQUFXLGVBQWUsaUNBQW1CLFVBQVUsaUNBQW1CLG9DQUFvQyx1QkFBdUIsRUFBRSxDQUFDLGlDQUFtQixvREFBb0QsaUNBQW1CLE9BQU8sNEZBQTRGLGVBQWUsd0NBQXdDLFNBQVMsRUFBRSxDQUFDLGlDQUFtQixXQUFXLElBQUksMEJBQW1CLElBQUksOEJBQThCLGFBQWEsaUNBQW1CLEdBQUcsMEJBQW1CLEVBQUUsaUNBQW1CLEdBQUcsMEJBQW1CLEVBQUUsK0hBQStILEVBQUUsWUFBWSxpQ0FBbUIsMkxBQTJMLGlDQUFtQixRQUFRLGlDQUFtQiw4S0FBOEssaUNBQW1CLFFBQVEsaUNBQW1CLGtFQUFrRSxpQ0FBbUIsUUFBUSxpQ0FBbUIsaU1BQWlNLGlDQUFtQixRQUFRLGlDQUFtQixxTEFBcUwsaUNBQW1CLFFBQVEsaUNBQW1CLG9MQUFvTCxpQ0FBbUIsUUFBUSxpQ0FBbUIsME9BQTBPLHNJQUFzSSxNQUFNLGlDQUFtQiwwUEFBMFAsc0lBQXNJLE1BQU0saUNBQW1CLDJDQUEyQyxpQ0FBbUIsZ0RBQWdELGlDQUFtQixxQ0FBcUMsaUNBQW1CLFVBQVUsaUNBQW1CLG9JQUFvSSxrQkFBa0IseUNBQXlDLGtEQUFrRCxXQUFXLGNBQWMsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFlBQVksRUFBRSxTQUFTLGdCQUFnQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxPQUFPLGlDQUFpQyw0ekJBQTR6QixlQUFlLHFDQUFxQyxpQkFBaUIsSUFBZ0MscUNBQXFDLG1LQUFtSyxZQUFZLGNBQWMsc0NBQXNDLFlBQVksMkJBQTJCLDBEQUEwRCx1Q0FBdUMseURBQXlELElBQUksaUNBQW1CLHdDQUF3QyxlQUFlLGtEQUFrRCxJQUFJLHdCQUF3QixpQkFBaUIsMkNBQTJDLGdCQUFnQiwrRUFBK0UsR0FBRyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsY0FBYywwREFBMEQsd0NBQXdDLDZCQUE2QiwrQkFBK0IsNkJBQTZCLHlFQUF5RSw2UEFBNlAsU0FBUywyQ0FBMkMsNkNBQTZDLDZCQUE2QiwrQkFBK0IsNkJBQTZCLDhFQUE4RSw2UEFBNlAsU0FBUyx1Q0FBdUMsd0NBQXdDLDZCQUE2QiwrQkFBK0IsNkJBQTZCLHFFQUFxRSwwTkFBME4sU0FBUyx1Q0FBdUMsNkNBQTZDLDZCQUE2QiwrQkFBK0IsNkJBQTZCLDBFQUEwRSwwTkFBME4sU0FBUyxvRUFBb0UsS0FBSyx3QkFBd0IsSUFBSSxxQkFBcUIsU0FBUyxHQUFHLGtCQUFrQixtQkFBbUIsZ0hBQWdILGNBQWMsc0NBQXNDLHNFQUFzRSw4QkFBOEIsT0FBTyxpQ0FBbUIsdUNBQXVDLGVBQWUsa0RBQWtELHFGQUFxRixlQUFlLHVEQUF1RCxxQkFBcUIsd0RBQXdELCtCQUErQiw0S0FBNEssd0NBQXdDLHVCQUF1QixzQkFBc0IsMEJBQTBCLGVBQWUsb0JBQW9CLHVEQUF1RCx3QkFBd0IsNERBQTRELEVBQUUsc0JBQXNCLElBQUksa0JBQWtCLGtCQUFrQixlQUFlLGlDQUFpQyxXQUFXLEtBQUssV0FBVyxzQ0FBc0MsbUVBQW1FLHdEQUF3RCxzREFBc0QsSUFBSSxpQkFBaUIsc0RBQXNELElBQUksVUFBVSx1RUFBdUUscUNBQXFDLFNBQVMsSUFBSSwrQkFBK0IsWUFBWSxNQUFNLEdBQUcscUJBQXFCLFNBQVMsc0JBQXNCLFlBQVkscUNBQXFDLEdBQUcscUJBQXFCLDRCQUE0QixXQUFXLG9CQUFvQix1REFBdUQsWUFBWSx5Q0FBeUMsV0FBVywwQkFBMEIseUdBQXlHLGVBQWUsdUJBQXVCLElBQUksa0NBQWtDLHVCQUF1QixNQUFNLGNBQWMsc0JBQXNCLG1CQUFtQixTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsU0FBUyxlQUFlLHVCQUF1QixJQUFJLGtDQUFrQyx1QkFBdUIsTUFBTSxjQUFjLG1CQUFtQixTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsU0FBUywyQkFBMkIsSUFBSSx3QkFBd0IsU0FBUyxLQUFLLE9BQU8seUNBQXlDLGVBQWUsa0JBQWtCLHVCQUF1QixpQ0FBaUMsbUJBQW1CLGNBQWMsdUJBQXVCLGNBQWMsd0JBQXdCLFVBQVUsR0FBRyxpQkFBaUIsYUFBYSx3QkFBd0IscUJBQXFCLFlBQVksZ0JBQWdCLDBFQUEwRSx3R0FBd0csWUFBWSxJQUFJLGNBQWMsbUJBQW1CLFlBQVksd0RBQXdELEtBQUssdUJBQXVCLEtBQUssa0hBQWtILHlDQUF5QyxrQkFBa0IsTUFBTSx5QkFBeUIsb0JBQW9CLDhCQUE4QixTQUFTLGtDQUFrQyxTQUFTLDBFQUEwRSxJQUFJLFNBQVMseUNBQXlDLGFBQWEsTUFBTSwyQkFBMkIsaUJBQWlCLE1BQU0sb0JBQW9CLDJCQUEyQixNQUFNLCtCQUErQixTQUFTLGNBQWMsU0FBUyxZQUFZLFFBQVEsTUFBTSxxQkFBcUIsT0FBTyxrQ0FBa0MsaUJBQWlCLE1BQU0sNEZBQTRGLDhHQUE4RyxnQkFBZ0IsUUFBUSwyQkFBMkIsK0NBQStDLFVBQVUsZ05BQWdOLEVBQUUsRUFBRSxzQkFBc0IsUUFBUSxPQUFPLHVNQUF1TSxFQUFFLG1CQUFtQixxQkFBcUIsWUFBWSwyQkFBMkIsZ0JBQWdCLFVBQVUsK0VBQStFLDZCQUE2QixnRkFBZ0YscUNBQXFDLEdBQUcsK0JBQStCLGtDQUFrQyxpREFBaUQsbUJBQW1CLDREQUE0RCxrQkFBa0IsSUFBSSx5QkFBeUIsbUJBQW1CLDRCQUE0Qiw4Q0FBOEMsYUFBYSxrR0FBa0csRUFBRSxLQUFLLEVBQUUsSUFBSSxlQUFlLG9CQUFvQixzQkFBc0Isa0JBQWtCLFNBQVMsNkJBQTZCLGdJQUFnSSxTQUFTLGFBQWEsK0pBQStKLGVBQWUscUJBQXFCLHlCQUF5Qix5QkFBeUIsbUNBQW1DLGtEQUFrRCw4QkFBOEIsMEJBQTBCLGtHQUFrRyxNQUFrQywyRUFBMkUsNEdBQTRHLEdBQUcsdUNBQXVDLGVBQWUsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxlQUFlLHFCQUFxQiwyRUFBMkUscWZBQXFmLG9EQUFvRCwwRkFBMEYsS0FBSyxXQUFXLDJCQUEyQixlQUFlLHFCQUFxQiwyRUFBMkUscWpCQUFxakIsb0RBQW9ELHVHQUF1RyxLQUFLLFdBQVcsMkJBQTJCLGVBQWUsc0NBQXNDLDhFQUE4RSxtQkFBbUIsd0JBQXdCLDRGQUE0RixtQkFBbUIsa0dBQWtHLG1CQUFtQiw0R0FBNEcsbUJBQW1CLG1GQUFtRixtQkFBbUIsZ0ZBQWdGLG9CQUFvQixjQUFjLG1CQUFtQiwwRUFBMEUsc0hBQXNILHF4RkFBcXhGLEVBQUUsbUJBQW1CLGNBQWMsbUJBQW1CLDBFQUEwRSx5R0FBeUcsNnFDQUE2cUMsRUFBRSxtQkFBbUIsY0FBYyxtQkFBbUIsMkVBQTJFLHdIQUF3SCxxREFBcUQsb0JBQW9CLHFEQUFxRCxvQkFBb0Isdy9DQUF3L0MsR0FBRyxtQkFBbUIsY0FBYyxtQkFBbUIsMEVBQTBFLGlHQUFpRyxnUUFBZ1EsRUFBRSxtQkFBbUIsY0FBYyxxQkFBcUIsd0VBQXdFLHNFQUFzRSxneExBQWd4TCxFQUFFLHFGQUFxRixnR0FBZ0csK0JBQStCLDBEQUEwRCxvQ0FBb0MsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLE9BQU8saUNBQW1CLHNDQUFzQyxpQ0FBbUIsVUFBVSxpQ0FBbUIsMkNBQTJDLGlDQUFtQixPQUFPLGVBQWUsNENBQTRDLHVGQUF1RixrQ0FBa0MsZUFBZSx1QkFBdUIsOENBQThDLE1BQU0sK0JBQStCLHdFQUF3RSxhQUFhLFNBQVMsMEJBQTBCLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxlQUFlLGtFQUFrRSxtQkFBbUIseUJBQXlCLHVDQUF1QywrQkFBK0IsSUFBSSxpQ0FBaUMsdUJBQXVCLE1BQU0sY0FBYyw0RkFBNEYsV0FBVyxLQUFLLFdBQVcsd0JBQXdCLHFCQUFxQixnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSxJQUFJLGFBQWEsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxHQUFHLEtBQUssVUFBVSxrQ0FBa0MsZ0JBQWdCLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYywrQkFBK0IseUJBQXlCLHNCQUFzQixPQUFPLHFNQUFxTSx1RUFBdUUsR0FBRyxFQUFFLGNBQWMsd0VBQXdFLHdEQUF3RCx3QkFBd0Isc0RBQXNELHVEQUF1RCx3REFBd0QsbURBQW1ELE9BQU8sRUFBRSxxQkFBcUIsc0RBQXNELGtCQUFrQixHQUFHLHNCQUFzQixrSEFBa0gsdUVBQXVFLG1CQUFtQixFQUFFLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixxREFBcUQsMERBQTBELHNFQUFzRSx1SEFBdUgsU0FBUyw2QkFBNkIsd0JBQXdCLFVBQVUsa0RBQWtELHdCQUF3QixlQUFlLDBCQUEwQixtQkFBbUIsNEJBQTRCLHFCQUFxQixFQUFFLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLHdCQUF3QixFQUFFLEVBQUUsR0FBRyxFQUFFLG1CQUFtQiw2QkFBNkIsaUNBQWlDLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLDRLQUE0SyxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUseUNBQXlDLFNBQVMsV0FBVyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSw0Q0FBNEMsZ0JBQWdCLDZCQUE2QixpQ0FBaUMsb0JBQW9CLHdCQUF3QixvQkFBb0IsWUFBWSxrQkFBa0IsUUFBUSxXQUFXLHdDQUF3QyxTQUFTLE1BQU0saUNBQWlDLHNDQUFzQyxRQUFRLFdBQVcsNEZBQTRGLFNBQVMsNEtBQTRLLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsRUFBRSw0Q0FBNEMsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLDZDQUE2QyxjQUFjLDhDQUE4Qyw4Q0FBOEMscUNBQXFDLHNDQUFzQyxrQ0FBa0MsdUNBQXVDLHNDQUFzQyxzQkFBc0IsNkJBQTZCLGtCQUFrQixvQ0FBb0MsOENBQThDLHlCQUF5Qix3QkFBd0Isa0JBQWtCLGlCQUFpQiwwQ0FBMEMsc0RBQXNELHdEQUF3RCxpQ0FBaUMsbUJBQW1CLGlCQUFpQixPQUFPLHFEQUFxRCxrQkFBa0IsdUdBQXVHLHVEQUF1RCxtQkFBbUIsT0FBTyxLQUFLLDRCQUE0QixpQkFBaUIsS0FBSyxxQ0FBcUMsaUJBQWlCLDJFQUEyRSxLQUFLLG9DQUFvQyxrQkFBa0IsS0FBSyw2RkFBNkYsaUJBQWlCLEtBQUssb0NBQW9DLG1CQUFtQixnQkFBZ0Isb0JBQW9CLDZCQUE2Qix5QkFBeUIsMENBQTBDLEtBQUssa0VBQWtFLHFCQUFxQix5QkFBeUIsS0FBSyxnRUFBZ0UseUJBQXlCLHFCQUFxQixLQUFLLGtDQUFrQyxvQ0FBb0Msc0NBQXNDLE9BQU8sS0FBSyxpQ0FBaUMsaUNBQWlDLHVDQUF1QyxPQUFPLEtBQUssaUNBQWlDLGlDQUFpQyx1Q0FBdUMsT0FBTyxLQUFLLGlDQUFpQyxpQ0FBaUMsdUNBQXVDLE9BQU8sS0FBSyxnRUFBZ0UsS0FBSyx3QkFBd0IsSUFBSSxxQkFBcUIsU0FBUyxHQUFHLGdCQUFnQixjQUFjLDBDQUEwQyxJQUFJLHNCQUFzQixtQ0FBbUMsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsaUJBQWlCLHdCQUF3QixnQkFBZ0Isb0JBQW9CLGdCQUFnQixxQkFBcUIsZ0JBQWdCLG1CQUFtQiw0QkFBNEIsR0FBRyxlQUFlLE9BQU8sdUJBQXVCLGNBQWMsT0FBTyxpQkFBaUIsdURBQXVELDJCQUEyQiwwQkFBMEIsbUJBQW1CLGdCQUFnQiw4RUFBOEUseUVBQXlFLEdBQUcsMEVBQTBFLGdCQUFnQixnQkFBZ0IsdURBQXVELDZEQUE2RCw2QkFBNkIsVUFBVSxFQUFFLGdCQUFnQixRQUFRLDZEQUE2RCxXQUFXLGdCQUFnQixRQUFRLHNFQUFzRSxhQUFhLDhCQUE4QixtREFBbUQsZ0JBQWdCLGdCQUFnQiw2Q0FBNkMsOENBQThDLDRCQUE0QixlQUFlLG1EQUFtRCxHQUFHLGNBQWMsRUFBRSxhQUFhLEdBQUcscUJBQXFCLEVBQUUsTUFBTSx3RUFBd0UsR0FBRyw4REFBOEQsR0FBRyxhQUFhLEVBQUUsaU5BQWlOLGVBQWUsb0RBQW9ELDBCQUEwQixvQkFBb0Isd0JBQXdCLG9CQUFvQixZQUFZLGtCQUFrQixRQUFRLFdBQVcsd0NBQXdDLFNBQVMsTUFBTSxpQ0FBaUMsc0NBQXNDLFFBQVEsV0FBVyw0RkFBNEYsU0FBUywyU0FBMlMscUJBQXFCLGdDQUFnQyxRQUFRLDBDQUEwQywrRUFBK0Usd0JBQXdCLDBCQUEwQiw0R0FBNEcsd0JBQXdCLDRCQUE0QixJQUFJLE1BQU0sa0JBQWtCLGtCQUFrQiwrSkFBK0osZ0VBQWdFLGlFQUFpRSxtQkFBbUIsaUVBQWlFLHlDQUF5QyxzREFBc0QsNEpBQTRKLE9BQU8sa0NBQWtDLGlEQUFpRCxrSEFBa0gsS0FBSyxvSUFBb0ksOEVBQThFLGVBQWUscUJBQXFCLDJFQUEyRSw0akJBQTRqQixvREFBb0QsMEZBQTBGLEtBQUssV0FBVywyQkFBMkIsY0FBYyxtQkFBbUIsMEVBQTBFLG9JQUFvSSx1S0FBdUssRUFBRSxtQkFBbUIsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxrQkFBa0IsdUNBQXVDLGlFQUFpRSxrQ0FBa0MsR0FBRyxlQUFlLDRDQUE0QywwREFBMEQscUJBQXFCLG9GQUFvRix5SEFBeUgsd05BQXdOLEVBQUUsa0ZBQWtGLDJEQUEyRCw0R0FBNEcsRUFBRSxvRUFBb0UscUJBQXFCLG9GQUFvRix5SEFBeUgseUxBQXlMLEVBQUUsa0ZBQWtGLDJEQUEyRCwrR0FBK0csRUFBRSxvRUFBb0UscUJBQXFCLG9GQUFvRix5SEFBeUgsd0tBQXdLLEVBQUUsbUZBQW1GLDJCQUEyQiwyREFBMkQsa0ZBQWtGLEVBQUUsR0FBRyxnR0FBZ0csNklBQTZJLGdDQUFnQyxvQkFBb0IsZ0NBQWdDLG9CQUFvQixnQ0FBZ0MsR0FBRyxpR0FBaUcsNElBQTRJLGlDQUFpQyxvQkFBb0IsaUNBQWlDLG9CQUFvQiwrQkFBK0IsR0FBRyx5RkFBeUYsMkNBQTJDLDJJQUEySSxpQ0FBaUMsb0JBQW9CLGlDQUFpQyxvQkFBb0IsaUNBQWlDLG9CQUFvQixnQ0FBZ0Msb0JBQW9CLGdDQUFnQyxHQUFHLEdBQUcsd0RBQXdELDBGQUEwRixLQUFLLHVCQUF1Qiw4QkFBOEIsZUFBZSw0Q0FBNEMsMERBQTBELHFCQUFxQixvRkFBb0YseUhBQXlILHdOQUF3TixFQUFFLGtGQUFrRiwyREFBMkQsOEdBQThHLEVBQUUsb0VBQW9FLHFCQUFxQixvRkFBb0YseUhBQXlILDRMQUE0TCxFQUFFLGtGQUFrRiwyREFBMkQsNkdBQTZHLEVBQUUsb0VBQW9FLHFCQUFxQixvRkFBb0YseUhBQXlILDJLQUEySyxFQUFFLG1GQUFtRiwyQkFBMkIsMkRBQTJELGlGQUFpRixFQUFFLEdBQUcsZ0dBQWdHLDZJQUE2SSxnQ0FBZ0Msb0JBQW9CLGdDQUFnQyxvQkFBb0IsZ0NBQWdDLEdBQUcsaUdBQWlHLDRJQUE0SSxpQ0FBaUMsb0JBQW9CLGlDQUFpQyxvQkFBb0IsK0JBQStCLEdBQUcseUZBQXlGLDJDQUEyQywySUFBMkksaUNBQWlDLG9CQUFvQixpQ0FBaUMsb0JBQW9CLGlDQUFpQyxvQkFBb0IsZ0NBQWdDLG9CQUFvQixnQ0FBZ0MsR0FBRyxHQUFHLHdEQUF3RCwwRkFBMEYsS0FBSyx1QkFBdUIsOEJBQThCLDBGQUEwRixlQUFlLG1EQUFtRCw4RUFBOEUsaUVBQWlFLDJDQUEyQyx3S0FBd0ssNkZBQTZGLGtPQUFrTyxpRUFBaUUsRUFBRSxvQkFBb0IsZUFBZSx3REFBd0QsMkNBQTJDLG9LQUFvSyxpQ0FBaUMsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSw2QkFBNkIsY0FBYyw4SkFBOEosaUJBQWlCLDRCQUE0Qix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLGVBQWUsMEJBQTBCLG9HQUFvRyxpQkFBaUIsaUJBQWlCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGdsQkFBZ2xCLGVBQWUsMkJBQTJCLGlCQUFpQixFQUFFLGtEQUFrRCxlQUFlLDJCQUEyQix1QkFBdUIsRUFBRSxlQUFlLDBDQUEwQyx3QkFBd0IsK0ZBQStGLFlBQVkseUJBQXlCLFlBQVksS0FBSyw0QkFBNEIsV0FBVyxtQkFBbUIsMEJBQTBCLFFBQVEsMEVBQTBFLGlFQUFpRSw0Q0FBNEMsd0tBQXdLLGtHQUFrRyxxSkFBcUosaUVBQWlFLEVBQUUsb0JBQW9CLGVBQWUseUJBQXlCLDJFQUEyRSx1YUFBdWEsNkRBQTZELFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsRUFBRSwwRkFBMEYsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLDhCQUE4QixlQUFlLDJGQUEyRixvQ0FBb0MsNEJBQTRCLGlFQUFpRSx1QkFBdUIsZ0NBQWdDLDJDQUEyQyxpQ0FBaUMsc0JBQXNCLHNGQUFzRixxREFBcUQsa0RBQWtELGVBQWUseUJBQXlCLHdFQUF3RSw0Q0FBNEMseXNCQUF5c0IsRUFBRSw2REFBNkQsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLHFIQUFxSCxTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsOEJBQThCLGVBQWUseUJBQXlCLDJFQUEyRSxnbkJBQWduQiw2REFBNkQsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLHVIQUF1SCxTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsOEJBQThCLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLDJCQUEyQixJQUFJLHdCQUF3QixTQUFTLEtBQUssT0FBTyx5Q0FBeUMsbUJBQW1CLHlDQUF5QyxrREFBa0QsV0FBVyxlQUFlLDBEQUEwRCxrQkFBa0IsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsdURBQXVELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosMkJBQTJCLEtBQXFDLGlDQUFpQyxNQUFNLG9CQUFvQixxQkFBcUIsYUFBYSx3QkFBd0IscUJBQXFCLFlBQVksZ0JBQWdCLDBFQUEwRSx3R0FBd0csWUFBWSxJQUFJLGNBQWMsbUJBQW1CLFlBQVksd0RBQXdELEtBQUssdUJBQXVCLEtBQUssa0hBQWtILHlDQUF5QyxrQkFBa0IsTUFBTSx5QkFBeUIsb0JBQW9CLDhCQUE4QixTQUFTLGtDQUFrQyxTQUFTLDBFQUEwRSxJQUFJLFNBQVMseUNBQXlDLGFBQWEsTUFBTSwyQkFBMkIsaUJBQWlCLE1BQU0sb0JBQW9CLDJCQUEyQixNQUFNLCtCQUErQixTQUFTLGNBQWMsU0FBUyxZQUFZLFFBQVEsTUFBTSxxQkFBcUIsT0FBTyxrQ0FBa0Msa0JBQWtCLGdCQUFnQixxQkFBcUIsUUFBUSxxQkFBcUIsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLGFBQWEsRUFBRSxTQUFTLEdBQUcsb0JBQW9CLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxZQUFZLHVEQUF1RCxNQUFrQyw4REFBOEQsb0NBQW9DLEtBQUssMkZBQTJGLHlFQUF5RSxrQkFBa0IsRUFBRSxZQUFZLHVCQUF1QixpQ0FBaUMsbUJBQW1CLGNBQWMsdUJBQXVCLGNBQWMsd0JBQXdCLFVBQVUsRUFBRSxJQUFJLE1BQU0sdUJBQXVCLGdIQUFnSCwwR0FBMEcseUJBQXlCLHlCQUF5Qix3QkFBd0IsMEhBQTBILEVBQUUsc0JBQXNCLDJGQUEyRixhQUFhLGdLQUFnSyxxQkFBcUIsRUFBRSxzQkFBc0IsK0ZBQStGLGFBQWEsZ0tBQWdLLDRCQUE0QixxQkFBcUIsRUFBRSxHQUFHLEVBQUUsRUFBRSxlQUFlLG1DQUFtQyxtQ0FBbUMsdUNBQXVDLDZEQUE2RCxrRkFBa0YsMEJBQTBCLG1DQUFtQyxvQkFBb0IsMEJBQTBCLHFDQUFxQyxpQkFBaUIsb0JBQW9CLDhDQUE4QyxrREFBa0QsS0FBSyx1QkFBdUIsd0JBQXdCLFdBQVcsa0NBQWtDLHlCQUF5QixrQkFBa0IsT0FBTyxLQUFLLHFDQUFxQyxvQkFBb0IsMEJBQTBCLGVBQWUsMEJBQTBCLG1DQUFtQyxLQUFLLDhCQUE4Qiw2QkFBNkIsb0JBQW9CLDBCQUEwQiwwQkFBMEIseUVBQXlFLHdCQUF3Qix1QkFBdUIsbUJBQW1CLHVDQUF1Qyw0QkFBNEIsNkJBQTZCLG9CQUFvQiwwQkFBMEIsOEJBQThCLHNCQUFzQixpQkFBaUIsbUNBQW1DLE9BQU8saUJBQWlCLGdEQUFnRCxPQUFPLGtCQUFrQixnREFBZ0QsT0FBTyxLQUFLLDhDQUE4QyxtQkFBbUIsMEJBQTBCLEtBQUssOEJBQThCLDhDQUE4QyxLQUFLLDZDQUE2QyxtQ0FBbUMsNEJBQTRCLDZCQUE2QixLQUFLLFVBQVUsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsaUJBQWlCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQiwyREFBMkQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4SixHQUFHLGVBQWUsb0pBQW9KLDZEQUE2RCx5Q0FBeUMsaUZBQWlGLG9FQUFvRSw0Q0FBNEMsZ0VBQWdFLG1GQUFtRiwyQkFBMkIsc0RBQXNELHNCQUFzQixtQkFBbUIsYUFBYSwySUFBMkksR0FBRyx3RUFBd0UsNERBQTRELG9DQUFvQyxlQUFlLGlDQUFpQyxxQ0FBcUMsMEZBQTBGLDBCQUEwQixlQUFlLDZDQUE2QywyRUFBMkUsK1JBQStSLHdEQUF3RCxnSUFBZ0ksaUNBQWlDLGVBQWUsNkNBQTZDLDJFQUEyRSwrUkFBK1Isd0RBQXdELGdJQUFnSSxpQ0FBaUMsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSw0R0FBNEcsaUNBQWlDLHVDQUF1Qyx3QkFBd0IsRUFBRSw4QkFBOEIsUUFBUSxrREFBa0QsdUNBQXVDLHNEQUFzRCxFQUFFLDRDQUE0Qyw0RkFBNEYsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsdURBQXVELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosa0JBQWtCLDhEQUE4RCxLQUFLLGdCQUFnQixRQUFRLDRDQUE0QyxZQUFZLG9EQUFvRCwySUFBMkkseUZBQXlGLCtFQUErRSw4SUFBOEksWUFBWSwwQkFBMEIsMEhBQTBILHNCQUFzQiw4R0FBOEcseUdBQXlHLG9CQUFvQixpRUFBaUUsa0VBQWtFLDBFQUEwRSx5SkFBeUosMkNBQTJDLFVBQVUsMkNBQTJDLG9EQUFvRCxtQ0FBbUMsa0JBQWtCLCtCQUErQixzREFBc0QscUVBQXFFLDBEQUEwRCxtQ0FBbUMsb0NBQW9DLHdFQUF3RSw4REFBOEQsMEVBQTBFLHFKQUFxSixnR0FBZ0csc0dBQXNHLDZDQUE2QyxlQUFlLHlCQUF5Qiw2RUFBNkUsc0NBQXNDLDZEQUE2RCxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUsMEZBQTBGLFNBQVMsV0FBVyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSw4QkFBOEIsZUFBZSwwRUFBMEUsaUNBQWlDLDRDQUE0QyxHQUFHLGtCQUFrQixtRkFBbUYsVUFBVSx5R0FBeUcsTUFBTSxzSkFBc0osTUFBTSx1SkFBdUosTUFBTSwySUFBMkksTUFBTSw2RkFBNkYsT0FBTyxpQ0FBaUMsMENBQTBDLG9EQUFvRCw0Q0FBNEMsc0ZBQXNGLHVCQUF1QixxREFBcUQsOE5BQThOLDhDQUE4QyxvQkFBb0Isb0RBQW9ELEtBQUssRUFBRSxRQUFRLHFJQUFxSSxzRUFBc0Usc0RBQXNELDBEQUEwRCxxQ0FBcUMsWUFBWSw2RUFBNkUsb0RBQW9ELG1DQUFtQywwQkFBMEIsNkZBQTZGLHVCQUF1QixvR0FBb0csNkJBQTZCLHFEQUFxRCxlQUFlLCtGQUErRixTQUEwQixFQUFFLENBQVMsQ0FBQywrQ0FBK0MsaUNBQWlDLHFEQUFxRCxtQ0FBbUMsa0RBQWtELEVBQUUsbUVBQW1FLG9DQUFvQyw0QkFBNEIsRUFBRSxnRUFBZ0Usa0RBQWtELG1DQUFtQyxlQUFlLGVBQWUsaUVBQWlFLHdFQUF3RSx5REFBeUQsNkRBQTZELGlDQUFpQyxjQUFjLHVCQUF1QiwwREFBMEQsaUJBQWlCLHFGQUFxRiw0SUFBNEksMkpBQTJKLDJDQUEyQyxvQkFBb0IseUhBQXlILEdBQUcsb0JBQW9CLHNJQUFzSSxvQkFBb0Isa2xCQUFrbEIsR0FBRyxxRkFBcUYsc0xBQXNMLDZFQUE2RSxtS0FBbUsseURBQXlELG9CQUFvQixtSkFBbUosR0FBRyxvQkFBb0Isa0xBQWtMLG9CQUFvQixrd0JBQWt3QixHQUFHLEdBQUcsbUJBQW1CLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLG1RQUFtUSw4SEFBOEgsb0JBQW9CLHdCQUF3QixvQkFBb0IsWUFBWSxrQkFBa0IsUUFBUSxXQUFXLHdDQUF3QyxTQUFTLE1BQU0saUNBQWlDLHNDQUFzQyxRQUFRLFdBQVcsNEZBQTRGLFNBQVMsZ01BQWdNLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLGtCQUFrQixzQ0FBc0MsNkNBQTZDLHlEQUF5RCxxQkFBcUIsa0JBQWtCLGlEQUFpRCwyQkFBMkIsU0FBUyxtQkFBbUIsd0VBQXdFLFdBQVcsYUFBYSx5RUFBeUUsdUdBQXVHLGlCQUFpQix3Q0FBd0MsMEdBQTBHLDRFQUE0RSw0QkFBNEIsbU5BQW1OLHFDQUFxQyxzQ0FBc0Msb0NBQW9DLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsRUFBRSxvTEFBb0wsa0NBQWtDLFNBQVMsV0FBVyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSxPQUFPLGVBQWUsa0NBQWtDLGlDQUFpQyxvQkFBb0Isd0JBQXdCLG9CQUFvQixZQUFZLGtCQUFrQixRQUFRLFdBQVcsd0NBQXdDLFNBQVMsTUFBTSxpQ0FBaUMsc0NBQXNDLFFBQVEsV0FBVyw0RkFBNEYsU0FBUyx1TUFBdU0sWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLHdKQUF3SixTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsbUZBQW1GLDBEQUEwRCxvQ0FBb0MsZUFBZSx1QkFBdUIsa0RBQWtELFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsRUFBRSwrQkFBK0IsU0FBUyxvQkFBb0IsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsOEJBQThCLGVBQWUsZ0NBQWdDLGlDQUFpQyxzREFBc0QsMEJBQTBCLGVBQWUsZ0NBQWdDLGlDQUFpQyxvREFBb0QsMEJBQTBCLHdCQUF3QiwrQkFBK0IsaUNBQWlDLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLGtRQUFrUSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUsNENBQTRDLFNBQVMsV0FBVyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSw2Q0FBNkMsY0FBYyxzQkFBc0IsbUlBQW1JLEVBQUUsY0FBYyw2QkFBNkIsY0FBYyw2REFBNkQsbUtBQW1LLEtBQUssY0FBYyxpREFBaUQsdUJBQXVCLGdCQUFnQixLQUFLLGdFQUFnRSxLQUFLLHdCQUF3QixJQUFJLHFCQUFxQixTQUFTLEdBQUcsZUFBZSwyQkFBMkIsaUNBQWlDLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLHVIQUF1SCxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEdBQUcsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLHFDQUFxQyxnQkFBZ0IsZUFBZSxnRUFBZ0UsMEVBQTBFLDZGQUE2RixxQkFBcUIsNkZBQTZGLDhEQUE4RCxtRkFBbUYsaUZBQWlGLEVBQUUsMEJBQTBCLGVBQWUsdUNBQXVDLHFDQUFxQyxtREFBbUQsMEJBQTBCLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGVBQWUseUNBQXlDLGtLQUFrSyx1QkFBdUIscUJBQXFCLCtEQUErRCxNQUFNLHNFQUFzRSxtQkFBbUIsd2tCQUF3a0IsZUFBZSwrQkFBK0Isc0dBQXNHLDRGQUE0RixzR0FBc0csaUZBQWlGLHlGQUF5RixzREFBc0QsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLG1DQUFtQywrQ0FBK0MsUUFBUSx3REFBd0QsMkdBQTJHLHdDQUF3QyxFQUFFLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGlCQUFpQixtQkFBbUIsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosR0FBRyxzQ0FBc0MsMERBQTBELDBCQUEwQixvQkFBb0Isd0JBQXdCLG9CQUFvQixZQUFZLGtCQUFrQixRQUFRLFdBQVcsd0NBQXdDLFNBQVMsTUFBTSxpQ0FBaUMsc0NBQXNDLFFBQVEsV0FBVyw0RkFBNEYsU0FBUyx3R0FBd0csNExBQTRMLFNBQVMsdUNBQXVDLDZCQUE2QiwrQ0FBK0MsTUFBTSxrQkFBa0IsRUFBRSwrQkFBK0Isd0JBQXdCLGlLQUFpSyxvQkFBb0IsdURBQXVELG9EQUFvRCxpQkFBaUIsb0dBQW9HLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTLHlCQUF5QixnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSx1REFBdUQsRUFBRSxlQUFlLHVCQUF1QiwwQkFBMEIsb0JBQW9CLHdCQUF3QixvQkFBb0IsWUFBWSxrQkFBa0IsUUFBUSxXQUFXLHdDQUF3QyxTQUFTLE1BQU0saUNBQWlDLHNDQUFzQyxRQUFRLFdBQVcsNEZBQTRGLFNBQVMsOERBQThELGtCQUFrQix5REFBeUQsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLHVFQUF1RSxvQ0FBb0MsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsZUFBZSx3WUFBd1ksYUFBYSwwQkFBMEIsdUJBQXVCLFFBQVEsdUJBQXVCLDBCQUEwQiw4QkFBOEIseUZBQXlGLG9DQUFvQyxrQkFBa0IsNEJBQTRCLDBKQUEwSiw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQix1REFBdUQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4SiwwQkFBMEIsMEdBQTBHLGdDQUFnQyw2RUFBNkUsV0FBVyxFQUFFLGtCQUFrQiw2REFBNkQsb0VBQW9FLGVBQWUseUZBQXlGLG9DQUFvQyxnQkFBZ0IsU0FBUyw4REFBOEQsZ0NBQWdDLG1DQUFtQyxnQkFBZ0IsU0FBUywwQkFBMEIsUUFBUSw4RkFBOEYseUVBQXlFLHFHQUFxRyxZQUFZLG9DQUFvQyxVQUFVLDJCQUEyQixZQUFZLHlGQUF5RixrQ0FBa0Msc0ZBQXNGLGtEQUFrRCxvRkFBb0Ysd0NBQXdDLGdHQUFnRyw0RkFBNEYsc0VBQXNFLGVBQWUsa0VBQWtFLGVBQWUsOERBQThELFdBQVcsa0VBQWtFLGVBQWUscUZBQXFGLDBEQUEwRCw0Q0FBNEMsbUJBQW1CLDhDQUE4QywwQkFBMEIsNkdBQTZHLG1FQUFtRSw2SEFBNkgsa0RBQWtELDhFQUE4RSx1REFBdUQsS0FBSyxpQkFBaUIscUdBQXFHLEtBQUssZUFBZSw4Q0FBOEMsNkVBQTZFLG9CQUFvQiw2QkFBNkIsOENBQThDLG1DQUFtQywwRUFBMEUsNkVBQTZFLHFDQUFxQyx5QkFBeUIsdUJBQXVCLEtBQUssb0NBQW9DLHVCQUF1QixtQkFBbUIsS0FBSyx5REFBeUQseUJBQXlCLEtBQUssMENBQTBDLGdDQUFnQyxrQ0FBa0Msd0JBQXdCLGlDQUFpQyxtQ0FBbUMsS0FBSywyQ0FBMkMsZ0NBQWdDLG9DQUFvQyx3QkFBd0IsS0FBSyxrREFBa0QsK0NBQStDLEtBQUssbURBQW1ELGdCQUFnQixzQkFBc0IsS0FBSyw2Q0FBNkMscUJBQXFCLHdCQUF3QixLQUFLLHlGQUF5Rix5QkFBeUIsZ0JBQWdCLGtCQUFrQixLQUFLLDZFQUE2RSw0Q0FBNEMsc0RBQXNELG9CQUFvQixxQ0FBcUMsMEJBQTBCLG9CQUFvQiwyQkFBMkIsaUJBQWlCLG9CQUFvQixpRkFBaUYsOENBQThDLDhCQUE4Qiw4REFBOEQsb0JBQW9CLGdEQUFnRCxzQkFBc0IsNENBQTRDLDBFQUEwRSw0QkFBNEIsMkJBQTJCLCtCQUErQiwyQkFBMkIseURBQXlELHVDQUF1Qyx5QkFBeUIsV0FBVyxnREFBZ0QsZ0NBQWdDLFdBQVcsU0FBUyxnQ0FBZ0MsMEJBQTBCLHlEQUF5RCx1Q0FBdUMsd0JBQXdCLHVDQUF1QyxXQUFXLGdEQUFnRCwrQkFBK0IsV0FBVyxTQUFTLHFDQUFxQyw2QkFBNkIsMERBQTBELCtCQUErQixzQkFBc0IsK0RBQStELFNBQVMsT0FBTyxLQUFLLGlDQUFpQyx1Q0FBdUMsNENBQTRDLCtFQUErRSwwRUFBMEUsNEJBQTRCLHlCQUF5QixxREFBcUQsc0NBQXNDLDJCQUEyQixvQkFBb0IsMkRBQTJELDZCQUE2QixXQUFXLHVDQUF1QywwQkFBMEIsV0FBVyxTQUFTLE9BQU8sS0FBSyx5REFBeUQsdUJBQXVCLGdCQUFnQix5Q0FBeUMsdUNBQXVDLHVCQUF1QixnQ0FBZ0Msa0NBQWtDLCtDQUErQyxrQ0FBa0MsS0FBSywyREFBMkQseUJBQXlCLEtBQUssc0NBQXNDLGdCQUFnQix1QkFBdUIsa0NBQWtDLHVCQUF1QixnQ0FBZ0MsOEJBQThCLGtDQUFrQyxnQ0FBZ0MsNEJBQTRCLEtBQUssZ0RBQWdELHdCQUF3Qix1QkFBdUIsS0FBSyxrREFBa0QseUJBQXlCLGdCQUFnQixjQUFjLGVBQWUsbUJBQW1CLG1JQUFtSSxLQUFLLCtDQUErQyx5QkFBeUIsbUJBQW1CLGdCQUFnQixrQ0FBa0Msb0JBQW9CLDBCQUEwQix1QkFBdUIsOENBQThDLG9EQUFvRCwyQkFBMkIsc0hBQXNILGdDQUFnQyxzQkFBc0IsbUNBQW1DLHVCQUF1Qiw2Q0FBNkMsS0FBSyxxREFBcUQsd0NBQXdDLEtBQUssZ0RBQWdELG9CQUFvQixlQUFlLEtBQUssNkVBQTZFLG9CQUFvQiw4QkFBOEIsMEJBQTBCLDhCQUE4Qiw2QkFBNkIsOENBQThDLG1DQUFtQyxvREFBb0Qsc0NBQXNDLHlDQUF5QyxhQUFhLDhCQUE4QiwrQkFBK0IsT0FBTyxpQkFBaUIsbUNBQW1DLE9BQU8sZ0NBQWdDLGdEQUFnRCxPQUFPLGlDQUFpQyxnREFBZ0QsT0FBTyxvQkFBb0IsZ0RBQWdELDRCQUE0QixPQUFPLEtBQUssMENBQTBDLG1DQUFtQyxLQUFLLDRDQUE0QyxvQkFBb0IsMEJBQTBCLGVBQWUsS0FBSyxLQUFLLGNBQWMsaURBQWlELHNCQUFzQixhQUFhLGVBQWUsZ0JBQWdCLGNBQWMsOEVBQThFLHNCQUFzQiw0QkFBNEIsMEJBQTBCLDZCQUE2QiwyQkFBMkIsS0FBSyxrQ0FBa0Msb0NBQW9DLDZCQUE2QixPQUFPLEtBQUsscUNBQXFDLHNCQUFzQixhQUFhLGVBQWUsZ0JBQWdCLGNBQWMsOENBQThDLGtDQUFrQywwQkFBMEIsa0JBQWtCLEtBQUssMkNBQTJDLDBCQUEwQix5Q0FBeUMsaUNBQWlDLEtBQUssZ0VBQWdFLEtBQUssd0JBQXdCLElBQUkscUJBQXFCLFNBQVMsR0FBRyxnQkFBZ0IsZUFBZSwrSEFBK0gsaUNBQWlDLHlCQUF5QixxQ0FBcUMsNkRBQTZELDJFQUEyRSxrTEFBa0wsNkRBQTZELHdCQUF3Qix3QkFBd0Isb0JBQW9CLCtCQUErQixHQUFHLG1FQUFtRSwrSkFBK0osd0NBQXdDLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLG1CQUFtQiwyREFBMkQsVUFBVSxxQkFBcUIsb0JBQW9CLGtCQUFrQix3Q0FBd0MsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsdURBQXVELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosc0ZBQXNGLE9BQU8sMkJBQTJCLGtCQUFrQixTQUFTLGdDQUFnQyxzQkFBc0IsNENBQTRDLHNCQUFzQixtREFBbUQsR0FBRyxhQUFhLDJEQUEyRCxFQUFFLHFCQUFxQixhQUFhLFNBQVMsU0FBUyxLQUFLLCtDQUErQyxzRUFBc0UsMEJBQTBCLHVDQUF1QyxFQUFFLE1BQU0sYUFBYSxPQUFPLEVBQUUsVUFBVSxxS0FBcUssS0FBSyx1TkFBdU4sdURBQXVELHdCQUF3QixzREFBc0QseURBQXlELHdEQUF3RCxtREFBbUQsT0FBTyxFQUFFLG9CQUFvQiw4QkFBOEIsc0JBQXNCLGtIQUFrSCx1RUFBdUUsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLHNEQUFzRCwyREFBMkQsd0JBQXdCLGtCQUFrQixZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUsa0RBQWtELHdCQUF3QixlQUFlLDBCQUEwQixtQkFBbUIsZ0NBQWdDLGVBQWUsRUFBRSw4QkFBOEIsb0JBQW9CLG9CQUFvQix1QkFBdUIsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixvQkFBb0IsNkNBQTZDLGdCQUFnQixzQ0FBc0MsMEJBQTBCLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLDZHQUE2RyxRQUFRLGtJQUFrSSxTQUFTLHFGQUFxRixjQUFjLHNDQUFzQyxvR0FBb0csU0FBMEIsUUFBUSw2REFBNkQsUUFBUSxrQ0FBa0MsVUFBVSxpSEFBaUgsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLDhFQUE4RSxTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0Usa0VBQWtFLGVBQWUsbUJBQW1CLGdJQUFnSSx5QkFBeUIsd0VBQXdFLHFDQUFxQyxZQUFZLHdDQUF3QyxRQUFRLGtCQUFrQixTQUFTLDRDQUE0QyxrQkFBa0IscUdBQXFHLDBIQUEwSCxtQkFBbUIsRUFBRSxvSEFBb0gsMkRBQTJELCtCQUErQixtRkFBbUYsbUJBQW1CLEVBQUUsMEdBQTBHLDBEQUEwRCxxRkFBcUYsd0VBQXdFLDJHQUEyRyw2SUFBNkksOERBQThELGNBQWMsbUJBQW1CLDBFQUEwRSxxSEFBcUgsdWZBQXVmLEVBQUUsbUJBQW1CLGNBQWMsdURBQXVELHlCQUF5QixzQkFBc0IsS0FBSyx1Q0FBdUMsb0JBQW9CLHFDQUFxQywwQkFBMEIsaUNBQWlDLGdDQUFnQyxrQkFBa0IsS0FBSyxzQ0FBc0Msb0JBQW9CLHFDQUFxQywwQkFBMEIsZUFBZSxrQkFBa0Isc0NBQXNDLGdDQUFnQyx1QkFBdUIsS0FBSyxzQ0FBc0Msb0JBQW9CLDhCQUE4QiwwQkFBMEIsOEJBQThCLDZCQUE2QixlQUFlLHNDQUFzQyx5QkFBeUIsZ0NBQWdDLHVCQUF1QixrQ0FBa0MsMkNBQTJDLHdDQUF3QyxLQUFLLDJEQUEyRCxpQkFBaUIsb0JBQW9CLDBCQUEwQixlQUFlLG1DQUFtQyxnQ0FBZ0Msa0NBQWtDLHlCQUF5Qix1QkFBdUIseUJBQXlCLHdDQUF3QyxpQkFBaUIsMENBQTBDLE9BQU8saUJBQWlCLG1DQUFtQyxPQUFPLGFBQWEsOEJBQThCLCtCQUErQixPQUFPLEtBQUssZ0VBQWdFLEtBQUssd0JBQXdCLElBQUkscUJBQXFCLFNBQVMsR0FBRyxlQUFlLDRHQUE0RywwQ0FBMEMsNEVBQTRFLG9EQUFvRCxHQUFHLHlGQUF5Riw0SkFBNEosR0FBRyw4RUFBOEUsa0RBQWtELCtFQUErRSxrQ0FBa0MsUUFBUSxTQUFTLCtHQUErRyxxREFBcUQscUNBQXFDLGdCQUFnQixpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxlQUFlLG9HQUFvRyw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQix1REFBdUQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4Siw2Q0FBNkMsOEJBQThCLHVCQUF1QixJQUFJLE1BQU0sb0JBQW9CLDBEQUEwRCwrQkFBK0IsTUFBTSx3REFBd0QscUhBQXFILCtDQUErQyxVQUFVLHNCQUFzQixFQUFFLGVBQWUsNkJBQTZCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLHdDQUF3QyxPQUFPLG9DQUFvQyxHQUFHLDJGQUEyRixPQUFPLHlCQUF5QixnS0FBZ0ssdUVBQXVFLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsRUFBRSwrRkFBK0YsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLHFDQUFxQyxpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsZUFBZSxzR0FBc0csbURBQW1ELGdKQUFnSiwyQkFBMkIsdUpBQXVKLDhCQUE4QixtRUFBbUUsVUFBVSxFQUFFLHlEQUF5RCxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUsbURBQW1ELElBQUkseURBQXlELGNBQWMsOEJBQThCLG1FQUFtRSxVQUFVLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLHFCQUFxQiw0QkFBNEIsU0FBUyw4QkFBOEIsYUFBYSxpQkFBaUIsWUFBWSw0RkFBNEYsNklBQTZJLG1FQUFtRSxpRkFBaUYsV0FBVyxFQUFFLCtFQUErRSxtSEFBbUgsNkNBQTZDLGlDQUFpQyxlQUFlLG1CQUFtQiwyQkFBMkIsSUFBSSx3QkFBd0IsU0FBUyxLQUFLLE9BQU8seUNBQXlDLGVBQWUsa0JBQWtCLHVCQUF1QixpQ0FBaUMsbUJBQW1CLGNBQWMsdUJBQXVCLGNBQWMsd0JBQXdCLFVBQVUsR0FBRyxlQUFlLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsaUJBQWlCLHFCQUFxQixnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSxJQUFJLGlCQUFpQixhQUFhLHdCQUF3QixxQkFBcUIsWUFBWSxnQkFBZ0IsMEVBQTBFLHdHQUF3RyxZQUFZLElBQUksY0FBYyxtQkFBbUIsWUFBWSx3REFBd0QsS0FBSyx1QkFBdUIsS0FBSyxrSEFBa0gseUNBQXlDLGtCQUFrQixNQUFNLHlCQUF5QixvQkFBb0IsOEJBQThCLFNBQVMsa0NBQWtDLFNBQVMsMEVBQTBFLElBQUksU0FBUyx5Q0FBeUMsYUFBYSxNQUFNLDJCQUEyQixpQkFBaUIsTUFBTSxvQkFBb0IsMkJBQTJCLE1BQU0sK0JBQStCLFNBQVMsY0FBYyxTQUFTLFlBQVksUUFBUSxNQUFNLHFCQUFxQixPQUFPLGtDQUFrQyxtQkFBbUIsZUFBZSxjQUFjLGVBQWUsNElBQTRJLGtCQUFrQix3SkFBd0osaUJBQWlCLGVBQWUsb0ZBQW9GLDREQUE0RCw4REFBOEQsd0VBQXdFLDRCQUE0Qiw0RUFBNEUsZUFBZSxpQ0FBaUMsZUFBZSxnRUFBZ0Usc0VBQXNFLHFCQUFxQixvQkFBb0IsOENBQThDLDhDQUE4QywwQ0FBMEMsK0NBQStDLGdDQUFnQywyQkFBMkIscUVBQXFFLEtBQUsscURBQXFELDRCQUE0QixrQkFBa0IseUJBQXlCLCtCQUErQixLQUFLLDhEQUE4RCx5Q0FBeUMseURBQXlELHdCQUF3QixLQUFLLGdFQUFnRSxpQkFBaUIsd0JBQXdCLGVBQWUsc0JBQXNCLE9BQU8sS0FBSyw0REFBNEQseUNBQXlDLEtBQUssMERBQTBELG1DQUFtQyx5QkFBeUIsS0FBSyxzSEFBc0gsb0NBQW9DLEtBQUssK0RBQStELHVDQUF1QyxLQUFLLHlIQUF5SCxrQ0FBa0MsbUNBQW1DLHlCQUF5QixLQUFLLHdIQUF3SCxvQ0FBb0MsS0FBSywwREFBMEQsNEJBQTRCLG1CQUFtQixnQkFBZ0IsS0FBSyxzRUFBc0Usb0NBQW9DLEtBQUssZ0RBQWdELGdCQUFnQixLQUFLLDBIQUEwSCx3QkFBd0Isd0VBQXdFLDJCQUEyQixLQUFLLHFEQUFxRCxxQkFBcUIsa0JBQWtCLDRCQUE0QixvQ0FBb0MseUJBQXlCLEtBQUssc0RBQXNELGdDQUFnQyxLQUFLLG1EQUFtRCxvQ0FBb0MsS0FBSyxvREFBb0Qsa0NBQWtDLEtBQUssVUFBVSxlQUFlLCtFQUErRSxpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxlQUFlLDBDQUEwQyxlQUFlLCtCQUErQixpQ0FBaUMsa0JBQWtCLDBCQUEwQixlQUFlLG9IQUFvSCxtSkFBbUosdUJBQXVCLGtCQUFrQixFQUFFLDBCQUEwQixRQUFRLGdFQUFnRSxlQUFlLHlHQUF5RyxvQkFBb0Isd0JBQXdCLG9CQUFvQixZQUFZLGtCQUFrQixRQUFRLFdBQVcsd0NBQXdDLFNBQVMsTUFBTSxpQ0FBaUMsc0NBQXNDLFFBQVEsV0FBVyw0RkFBNEYsU0FBUyxrSEFBa0gsNElBQTRJLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLGtCQUFrQixlQUFlLHFGQUFxRix3QkFBd0IsaUJBQWlCLG1CQUFtQiw2SEFBNkgsK1BBQStQLGtCQUFrQixnQkFBZ0IsVUFBVSxxRUFBcUUsT0FBTyxvREFBb0QsNERBQTRELDJCQUEyQixTQUFTLGtDQUFrQyx1REFBdUQsRUFBRSw4Q0FBOEMsT0FBTyx3REFBd0QsMEJBQTBCLE9BQU8sc0RBQXNELG1DQUFtQyxvQkFBb0IsdURBQXVELFNBQVMsdUNBQXVDLDJJQUEySSxnQ0FBZ0MsY0FBYyx5UkFBeVIseUJBQXlCLCtCQUErQixRQUFRLDRMQUE0TCx1Q0FBdUMsZ0dBQWdHLHlIQUF5SCxrRkFBa0YsRUFBRSxtREFBbUQsZ0xBQWdMLGdDQUFnQyxnRUFBZ0UsRUFBRSw2QkFBNkIscUNBQXFDLGVBQWUsU0FBUyx1Q0FBdUMsMEJBQTBCLDZDQUE2QywyQ0FBMkMsdUNBQXVDLHlEQUF5RCwyQkFBMkIsaUJBQWlCLEVBQUUsZUFBZSx3QkFBd0IseUJBQXlCLHlFQUF5RSx5RUFBeUUsdUJBQXVCLHVFQUF1RSx5RUFBeUUsU0FBUyxrQkFBa0IsK0NBQStDLHVDQUF1QyxvQ0FBb0Msb0NBQW9DLG9HQUFvRyxTQUEwQixRQUFRLDBCQUEwQix5QkFBeUIsd0JBQXdCLEVBQUUsRUFBRSxrQkFBa0IsNkRBQTZELG1DQUFtQyxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEVBQUUscURBQXFELFVBQVUsZ0JBQWdCLFFBQVEsNkhBQTZILFNBQVMsNEJBQTRCLDRFQUE0RSx3QkFBd0IsNEZBQTRGLEVBQUUsd0JBQXdCLHNHQUFzRyx1Q0FBdUMsRUFBRSxRQUFRLDJDQUEyQyx3REFBd0QsNkJBQTZCLDBCQUEwQixpQ0FBaUMseUJBQXlCLDJCQUEyQixrQkFBa0IsR0FBRyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSxNQUFNLGVBQWUsd0RBQXdELDJFQUEyRSxpREFBaUQsbUZBQW1GLHVQQUF1UCwrQ0FBK0MsZ0RBQWdELG1GQUFtRixvR0FBb0csdURBQXVELHdEQUF3RCxrRUFBa0UsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxTQUFTLGVBQWUsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsNEZBQTRGLDBKQUEwSixvRkFBb0YseURBQXlELHFCQUFxQixzREFBc0QsRUFBRSxxR0FBcUcsNEVBQTRFLG9FQUFvRSxTQUFTLEdBQUcscUZBQXFGLGdFQUFnRSxzRkFBc0YsaUhBQWlILG1GQUFtRixPQUFPLHdGQUF3RixrRUFBa0Usd0ZBQXdGLHdGQUF3Rix5RUFBeUUsT0FBTyx3RkFBd0Ysa0VBQWtFLHdGQUF3Rix3RkFBd0YseUVBQXlFLE9BQU8sd0ZBQXdGLGlFQUFpRSx1RkFBdUYsMkVBQTJFLG1FQUFtRSxzRUFBc0Usd0NBQXdDLHdGQUF3Rix3RUFBd0UsR0FBRyxtQkFBbUIsd0RBQXdELEVBQUUsbUJBQW1CLHNEQUFzRCxFQUFFLG1CQUFtQix5REFBeUQsR0FBRyxFQUFFLEdBQUcsRUFBRSx1REFBdUQsZUFBZSw2QkFBNkIsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxpQkFBaUIsb0JBQW9CLHdCQUF3QixvQkFBb0IsWUFBWSxrQkFBa0IsUUFBUSxXQUFXLHdDQUF3QyxTQUFTLE1BQU0saUNBQWlDLHNDQUFzQyxRQUFRLFdBQVcsNEZBQTRGLFNBQVMsZUFBZSw4QkFBOEIsd0pBQXdKLGdGQUFnRixrRUFBa0UsbUZBQW1GLGlCQUFpQixnT0FBZ08sbUNBQW1DLHlKQUF5Siw4R0FBOEcsT0FBTyx5RkFBeUYsb05BQW9OLG1FQUFtRSxtQ0FBbUMsS0FBSyxpQkFBaUIsa0NBQWtDLGVBQWUsZ0NBQWdDLGlLQUFpSyxrRUFBa0UsbUZBQW1GLGdLQUFnSyx3QkFBd0IsT0FBTyxtQkFBbUIsME9BQTBPLHlFQUF5RSxnRkFBZ0YsMk1BQTJNLDBIQUEwSCxrQkFBa0IsMkZBQTJGLHVNQUF1TSxnQ0FBZ0MsNEpBQTRKLHdDQUF3Qyw0Q0FBNEMsbUJBQW1CLEVBQUUsc0ZBQXNGLDBFQUEwRSxtQ0FBbUMsS0FBSyxpQkFBaUIsb0NBQW9DLFFBQVEsT0FBTyxvTUFBb00sTUFBTSxvT0FBb08sZUFBZSx5QkFBeUIsZ01BQWdNLGFBQWEsc0JBQXNCLGFBQWEsMkNBQTJDLGNBQWMsbUJBQW1CLDBFQUEwRSxpR0FBaUcsZ2dCQUFnZ0IsRUFBRSxtQkFBbUIsY0FBYyxxQkFBcUIsd0VBQXdFLGlFQUFpRSxna0JBQWdrQixFQUFFLHFGQUFxRix3SEFBd0gsK0JBQStCLHFEQUFxRCxzQ0FBc0MsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLGNBQWMsbUJBQW1CLDBFQUEwRSx3SEFBd0gsdXZCQUF1dkIsRUFBRSxtQkFBbUIsY0FBYyxtQkFBbUIsMEVBQTBFLHlFQUF5RSwyTEFBMkwsRUFBRSxtQkFBbUIsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsaUJBQWlCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQiwyREFBMkQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSwyQkFBMkIsOEpBQThKLEdBQUcsZUFBZSxtQkFBbUIsaUNBQWlDLGlCQUFpQixvR0FBb0csdUJBQXVCLHlKQUF5SixHQUFHLGlCQUFpQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixjQUFjLHVDQUF1QyxvQkFBb0IsMEJBQTBCLDhCQUE4QixlQUFlLHlCQUF5QiwwQ0FBMEMsbUNBQW1DLHNCQUFzQiw0QkFBNEIsaUJBQWlCLGdDQUFnQyxpREFBaUQseUNBQXlDLHlCQUF5Qix5QkFBeUIsa0NBQWtDLHNDQUFzQywyREFBMkQsdUNBQXVDLHdEQUF3RCxxQkFBcUIsZ0RBQWdELFdBQVcsU0FBUyxtQkFBbUIsOENBQThDLFNBQVMsMEJBQTBCLHVDQUF1QyxTQUFTLGlEQUFpRCw2QkFBNkIsU0FBUywyQkFBMkIscUNBQXFDLCtCQUErQixTQUFTLE9BQU8sYUFBYSw2QkFBNkIsNEJBQTRCLGdDQUFnQyw0Q0FBNEMsMENBQTBDLHdCQUF3QixxQkFBcUIsd0JBQXdCLDJCQUEyQixzQ0FBc0Msa0NBQWtDLHlCQUF5QixTQUFTLE9BQU8seUNBQXlDLHdCQUF3QixzQ0FBc0Msb0JBQW9CLHFCQUFxQixzQkFBc0IsNEJBQTRCLGdDQUFnQywyQkFBMkIseURBQXlELG1CQUFtQiw0Q0FBNEMsU0FBUywyQkFBMkIscUNBQXFDLFNBQVMsZUFBZSxzQkFBc0IsdUJBQXVCLFNBQVMsT0FBTyxLQUFLLCtCQUErQiwyQkFBMkIsd0JBQXdCLG9CQUFvQiwwQkFBMEIsZUFBZSxLQUFLLGtDQUFrQyxpQkFBaUIsMkNBQTJDLG9DQUFvQyx5Q0FBeUMsZ0NBQWdDLHVCQUF1Qix5QkFBeUIseUJBQXlCLHNDQUFzQyx5QkFBeUIsaUJBQWlCLGtCQUFrQiwwQkFBMEIsd0JBQXdCLG1HQUFtRyw2QkFBNkIsbUJBQW1CLGlCQUFpQixPQUFPLGFBQWEsMkJBQTJCLG9DQUFvQyxxQkFBcUIsa0JBQWtCLE9BQU8sbUNBQW1DLHNCQUFzQiw0QkFBNEIsaUJBQWlCLE9BQU8sd0NBQXdDLG1CQUFtQixvQkFBb0IsMkJBQTJCLHVCQUF1Qix5Q0FBeUMsa0NBQWtDLDZDQUE2QyxTQUFTLE9BQU8sS0FBSyxnRUFBZ0UsS0FBSyx3QkFBd0IsSUFBSSxxQkFBcUIsU0FBUyxHQUFHLHdEQUF3RCxlQUFlLHFKQUFxSiwrQ0FBK0MsaUpBQWlKLDRDQUE0Qyx3Q0FBd0MsNkRBQTZELGtCQUFrQix1Q0FBdUMsNERBQTRELE1BQU0sTUFBTSxPQUFPLHFEQUFxRCxrREFBa0Qsd0JBQXdCLHNCQUFzQixXQUFXLFlBQVksMEJBQTBCLDZCQUE2QixjQUFjLDRDQUE0QyxXQUFXLDBCQUEwQix1QkFBdUIsSUFBSSxNQUFNLE1BQU0sV0FBVyxrQ0FBa0MsR0FBRyxxQ0FBcUMsUUFBUSx1QkFBdUIsTUFBTSxpRUFBaUUsTUFBTSxVQUFVLHVCQUF1QixRQUFRLDZEQUE2RCxrQkFBa0IsZ0JBQWdCLFFBQVEsNkRBQTZELE1BQU0sd0VBQXdFLGdCQUFnQixRQUFRLDJDQUEyQyxzREFBc0QsaUdBQWlHLG9HQUFvRywwREFBMEQsa0VBQWtFLEVBQUUsc0dBQXNHLHlKQUF5SixpRkFBaUYsMkRBQTJELDJCQUEyQixtQ0FBbUMsaURBQWlELG9EQUFvRCxxR0FBcUcsNkRBQTZELG1FQUFtRSw2RUFBNkUsNkNBQTZDLHFDQUFxQyxlQUFlLDJCQUEyQixlQUFlLG9CQUFvQixXQUFXLElBQUksZUFBZSxzQkFBc0IsY0FBYyxtQkFBbUIsMEVBQTBFLG1IQUFtSCxtTkFBbU4sRUFBRSxtQkFBbUIsZUFBZSxzQ0FBc0Msd0JBQXdCLFVBQVUsZ0NBQWdDLEVBQUUsaUNBQWlDLHNDQUFzQyxzQkFBc0Isc0JBQXNCLG1DQUFtQyxpREFBaUQsd0JBQXdCLDBCQUEwQiwwQkFBMEIsMkJBQTJCLHNCQUFzQiwwQkFBMEIsdUJBQXVCLCtDQUErQyxVQUFVLHVCQUF1QixRQUFRLHVCQUF1QixXQUFXLGlEQUFpRCwrQkFBK0IsT0FBTyxnRkFBZ0YsdUZBQXVGLGdUQUFnVCxnQ0FBZ0MsbUJBQW1CLDhDQUE4QywyQkFBMkIsaUNBQWlDLGNBQWMsd0VBQXdFLGdKQUFnSixRQUFRLG9FQUFvRSxpQ0FBaUMsOEdBQThHLHNDQUFzQyw4Q0FBOEMsbUJBQW1CLDBCQUEwQixjQUFjLG1CQUFtQiwwRUFBMEUsNkZBQTZGLDRYQUE0WCxFQUFFLG1CQUFtQixnQkFBZ0IsZUFBZSxrR0FBa0csaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsMkJBQTJCLElBQUksd0JBQXdCLFNBQVMsS0FBSyxPQUFPLHlDQUF5QyxPQUFPLGlDQUFtQixrREFBa0QsdVhBQXVYLHlDQUF5Qyw4RkFBOEYsRUFBRSxlQUFlLCtFQUErRSxTQUFTLFNBQVMsY0FBYywrQkFBK0IseUJBQXlCLEtBQUssb0NBQW9DLHVCQUF1QixrQ0FBa0MscUJBQXFCLG9CQUFvQiwwREFBMEQsZUFBZSxFQUFFLEdBQUcsZUFBZSxzQkFBc0IsbUdBQW1HLG1CQUFtQiw2SUFBNkksa0JBQWtCLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixrQkFBa0Isa0tBQWtLLFNBQVMsa0RBQWtELGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGNBQWMsMkNBQTJDLGtCQUFrQixLQUFLLGlDQUFpQyw4QkFBOEIscUJBQXFCLE9BQU8sS0FBSyx1Q0FBdUMscUJBQXFCLEtBQUssMkJBQTJCLHNCQUFzQixxREFBcUQsb0JBQW9CLHFDQUFxQywwQkFBMEIsZ0JBQWdCLEtBQUssc0NBQXNDLDBCQUEwQixLQUFLLDBCQUEwQix1QkFBdUIsY0FBYyxLQUFLLGdDQUFnQyxnQ0FBZ0MsdUJBQXVCLG9DQUFvQyxnQkFBZ0IsS0FBSywrQkFBK0IsbUNBQW1DLGdDQUFnQyxnQkFBZ0IsS0FBSyx5Q0FBeUMsb0JBQW9CLDBCQUEwQixlQUFlLDhDQUE4Qyw4Q0FBOEMsdUNBQXVDLHVCQUF1QixnQ0FBZ0Msb0NBQW9DLHVCQUF1Qix5REFBeUQsaUJBQWlCLDRDQUE0QyxPQUFPLGFBQWEsb0JBQW9CLHFCQUFxQiwwQkFBMEIsT0FBTyxLQUFLLHNCQUFzQixzQkFBc0IsbUNBQW1DLDZCQUE2QixPQUFPLGdCQUFnQixtQkFBbUIsT0FBTyxnQkFBZ0Isc0NBQXNDLGdEQUFnRCxPQUFPLEtBQUssMkNBQTJDLG1CQUFtQiwwQkFBMEIsS0FBSyxzQkFBc0Isa0JBQWtCLG1CQUFtQixrQkFBa0IsS0FBSyxnRUFBZ0UsS0FBSyx3QkFBd0IsSUFBSSxxQkFBcUIsU0FBUyxHQUFHLGVBQWUscVFBQXFRLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLGVBQWUsMEJBQTBCLG9DQUFvQyxvQkFBb0IsZ0JBQWdCLHFCQUFxQixhQUFhLHdCQUF3QixxQkFBcUIsWUFBWSxnQkFBZ0IsMEVBQTBFLHdHQUF3RyxZQUFZLElBQUksY0FBYyxtQkFBbUIsWUFBWSx3REFBd0QsS0FBSyx1QkFBdUIsS0FBSyxrSEFBa0gseUNBQXlDLGtCQUFrQixNQUFNLHlCQUF5QixvQkFBb0IsOEJBQThCLFNBQVMsa0NBQWtDLFNBQVMsMEVBQTBFLElBQUksU0FBUyx5Q0FBeUMsYUFBYSxNQUFNLDJCQUEyQixpQkFBaUIsTUFBTSxvQkFBb0IsMkJBQTJCLE1BQU0sK0JBQStCLFNBQVMsY0FBYyxTQUFTLFlBQVksUUFBUSxNQUFNLHFCQUFxQixPQUFPLGtDQUFrQyxrQkFBa0IsZ0JBQWdCLDRHQUE0Ryw2RkFBNkYsZ0JBQWdCLG1CQUFtQixxQkFBcUIsb0JBQW9CLDJHQUEyRyxHQUFHLGdKQUFnSixrQkFBa0IsY0FBYyxHQUFHLGtJQUFrSSxjQUFjLCtCQUErQixpQ0FBaUMseUJBQXlCLEdBQUcsMEJBQTBCLHlGQUF5RixnQkFBZ0IsbUJBQW1CLHFCQUFxQixHQUFHLG9FQUFvRSxZQUFZLDZCQUE2Qix3QkFBd0IsK0dBQStHLHdGQUF3Riw0QkFBNEIsbUJBQW1CLEVBQUUsWUFBWSx1QkFBdUIsaUNBQWlDLG1CQUFtQixjQUFjLHVCQUF1QixjQUFjLHdCQUF3QixVQUFVLEVBQUUsSUFBSSxhQUFhLHlEQUF5RCw4QkFBOEIsY0FBYyw4QkFBOEIsMkRBQTJELGVBQWUsRUFBRSxPQUFPLGlGQUFpRixhQUFhLDREQUE0RCxjQUFjLEdBQUcsNkJBQTZCLFNBQVMseUJBQXlCLHVCQUF1QixnQ0FBZ0MsRUFBRSx3QkFBd0IsU0FBUyx5QkFBeUIsNkJBQTZCLFVBQVUsUUFBUSxFQUFFLHdCQUF3QixTQUFTLHlFQUF5RSw0REFBNEQscUZBQXFGLDJEQUEyRCxpQ0FBaUMsaUJBQWlCLDRFQUE0RSxHQUFHLDJDQUEyQyxRQUFRLCtGQUErRixpQ0FBaUMsd0JBQXdCLCtCQUErQix3QkFBd0IsNkJBQTZCLDJHQUEyRywwREFBMEQsc0VBQXNFLEdBQUcsaUhBQWlILDJEQUEyRCx1Q0FBdUMsaUJBQWlCLHNGQUFzRixHQUFHLDBGQUEwRiwyQ0FBMkMsd0JBQXdCLDZDQUE2Qyx3QkFBd0IscUNBQXFDLHdCQUF3Qix1Q0FBdUMsaUhBQWlILDBEQUEwRCxzRUFBc0UsR0FBRywwR0FBMEcsMkRBQTJELCtCQUErQixpQkFBaUIsaUZBQWlGLEdBQUcsNEpBQTRKLHlEQUF5RCxxREFBcUQsR0FBRyx5R0FBeUcsMkRBQTJELCtEQUErRCxpQkFBaUIsMEdBQTBHLEdBQUcscUZBQXFGLHNCQUFzQixnQkFBZ0Isb0VBQW9FLDREQUE0RCw2REFBNkQsc0lBQXNJLEVBQUUsR0FBRyxnR0FBZ0csMkRBQTJELHVEQUF1RCxpQkFBaUIsbUdBQW1HLEdBQUcsZ0pBQWdKLDREQUE0RCxzREFBc0QsbUJBQW1CLEVBQUUsR0FBRyx5R0FBeUcsOENBQThDLHdGQUF3RixnRUFBZ0UsdUZBQXVGLDBEQUEwRCwwREFBMEQseUhBQXlILHVEQUF1RCxlQUFlLEdBQUcsRUFBRSw4RkFBOEYseURBQXlELDhIQUE4SCx1RUFBdUUsd0ZBQXdGLDJEQUEyRCxzREFBc0QsaUJBQWlCLG9IQUFvSCxHQUFHLDRDQUE0QyxXQUFXLDZCQUE2QixFQUFFLGdHQUFnRyxtQkFBbUIsNkRBQTZELDZEQUE2RCw0REFBNEQsNERBQTRELHdPQUF3TyxFQUFFLEdBQUcsRUFBRSw4REFBOEQsS0FBK0Msa0JBQWtCLDZEQUE2RCwyREFBMkQsMkRBQTJELHdEQUF3RCxpQkFBaUIseUtBQXlLLEdBQUcsbUJBQW1CLDREQUE0RCxrUkFBa1IsV0FBVyw2QkFBNkIsRUFBRSx3Q0FBd0MsdUJBQXVCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFJLDhGQUE4RixxQkFBcUIsNkNBQTZDLGVBQWUsMkJBQTJCLDZCQUE2QixxQkFBcUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLGtCQUFrQiwwQkFBMEIsbUJBQW1CLElBQUksZUFBZSxrQ0FBa0MsaUNBQWlDLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLCtKQUErSixZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEdBQUcsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLG9HQUFvRyx5REFBeUQsMkNBQTJDLG1DQUFtQyxlQUFlLHVCQUF1QixnQkFBZ0IscUZBQXFGLG1CQUFtQixtRkFBbUYsbUJBQW1CLG9GQUFvRixtQkFBbUIscUJBQXFCLGdCQUFnQixjQUFjLG1CQUFtQiwwRUFBMEUsdUZBQXVGLDBSQUEwUixFQUFFLG1CQUFtQixjQUFjLDhEQUE4RCxvQkFBb0IsMEJBQTBCLDhDQUE4Qyx5Q0FBeUMsOENBQThDLHNDQUFzQyxLQUFLLHdEQUF3RCxtQkFBbUIsb0JBQW9CLDBCQUEwQiw4QkFBOEIsS0FBSyxvRUFBb0UsK0JBQStCLGlFQUFpRSxLQUFLLG1FQUFtRSwrQkFBK0IsaUVBQWlFLEtBQUssOENBQThDLGlCQUFpQixtQkFBbUIsd0NBQXdDLEtBQUssZ0VBQWdFLEtBQUssd0JBQXdCLElBQUkscUJBQXFCLFNBQVMsR0FBRyxnQkFBZ0IsY0FBYyxnWUFBZ1ksS0FBSyx3QkFBd0IsSUFBSSxxQkFBcUIsU0FBUyxHQUFHLGNBQWMseUJBQXlCLGdEQUFnRCxxQkFBcUIsYUFBYSw4QkFBOEIsK0JBQStCLE9BQU8sS0FBSyx1Q0FBdUMsOENBQThDLDBCQUEwQixLQUFLLDREQUE0RCxzQkFBc0IsS0FBSyw2R0FBNkcsbUNBQW1DLEtBQUssc0RBQXNELHFDQUFxQyxLQUFLLG1EQUFtRCx1QkFBdUIseUJBQXlCLHlDQUF5QyxLQUFLLDJEQUEyRCx1QkFBdUIsS0FBSyxxREFBcUQsbUJBQW1CLEtBQUssc0NBQXNDLHdCQUF3QixxQkFBcUIsNkJBQTZCLDBCQUEwQixnQ0FBZ0MsNkJBQTZCLDRCQUE0Qix5QkFBeUIseUNBQXlDLEtBQUsscUNBQXFDLG9CQUFvQiwwQkFBMEIsZUFBZSwyQkFBMkIsK0NBQStDLHNDQUFzQyxnQ0FBZ0MsdUJBQXVCLGtDQUFrQyxhQUFhLGdDQUFnQyxpQ0FBaUMsT0FBTyxLQUFLLDREQUE0RCxvQkFBb0IsMEJBQTBCLDhCQUE4Qix5Q0FBeUMsbUJBQW1CLCtCQUErQixhQUFhLDhCQUE4QiwrQkFBK0IsT0FBTyx5QkFBeUIsbUNBQW1DLDZCQUE2QixPQUFPLGlCQUFpQiwwQ0FBMEMsT0FBTyxLQUFLLHFDQUFxQyxtQ0FBbUMsZ0NBQWdDLGtDQUFrQyxLQUFLLGtEQUFrRCx1QkFBdUIsZ0JBQWdCLHlDQUF5Qyx3Q0FBd0MsdUJBQXVCLGdDQUFnQyxtQ0FBbUMsK0NBQStDLGtDQUFrQyxLQUFLLHdEQUF3RCxrQkFBa0Isd0NBQXdDLHlCQUF5Qiw4Q0FBOEMsdUNBQXVDLDhDQUE4QywwR0FBMEcsS0FBSywyQ0FBMkMseUNBQXlDLEtBQUssMkNBQTJDLHlDQUF5QyxrQkFBa0IsS0FBSyxtQ0FBbUMsa0JBQWtCLHlCQUF5QixtQkFBbUIsZ0JBQWdCLHdCQUF3QixLQUFLLHlDQUF5QyxpQ0FBaUMscUVBQXFFLCtCQUErQixvS0FBb0ssc0JBQXNCLGlDQUFpQyxrQkFBa0Isc0JBQXNCLHVCQUF1QixrQkFBa0IsOENBQThDLDJDQUEyQyx5QkFBeUIsNEVBQTRFLE9BQU8sK0RBQStELDZDQUE2QyxzR0FBc0csU0FBUyxPQUFPLGlDQUFpQyw2Q0FBNkMsOERBQThELFNBQVMsT0FBTyw2SEFBNkgsa0NBQWtDLE9BQU8saUNBQWlDLDZDQUE2QyxvQ0FBb0MsU0FBUyxPQUFPLEtBQUssb0NBQW9DLDBDQUEwQyxvQkFBb0IsOEJBQThCLDBCQUEwQixlQUFlLHlCQUF5QixLQUFLLHVDQUF1QyxtQ0FBbUMseUJBQXlCLGdDQUFnQyx1QkFBdUIsa0NBQWtDLHlDQUF5QyxLQUFLLHdDQUF3QyxvQkFBb0IsOEJBQThCLDBCQUEwQiw4QkFBOEIsNkJBQTZCLHdDQUF3QyxxQkFBcUIscUJBQXFCLHlDQUF5QyxhQUFhLDhCQUE4QiwrQkFBK0IsT0FBTyx5QkFBeUIsbUNBQW1DLE9BQU8saUNBQWlDLDBDQUEwQyxPQUFPLG9CQUFvQixxQkFBcUIsNEJBQTRCLE9BQU8sS0FBSyw2Q0FBNkMsb0NBQW9DLEtBQUssa0NBQWtDLGlDQUFpQywrQ0FBK0Msb0RBQW9ELG9DQUFvQyw4QkFBOEIsOENBQThDLHlCQUF5QiwrQ0FBK0MsZ0NBQWdDLGlEQUFpRCxvQkFBb0IsYUFBYSw4QkFBOEIsK0JBQStCLE9BQU8sS0FBSyw0Q0FBNEMseUNBQXlDLEtBQUssNEJBQTRCLHFCQUFxQixLQUFLLHlCQUF5Qiw2QkFBNkIsS0FBSyxvQ0FBb0MsdUJBQXVCLHVCQUF1QixLQUFLLDBCQUEwQixrQkFBa0IsNENBQTRDLGlDQUFpQyxxREFBcUQsS0FBSyxtREFBbUQsbUJBQW1CLCtCQUErQix5Q0FBeUMsd0JBQXdCLHlCQUF5QixtQ0FBbUMsNkJBQTZCLE9BQU8saUJBQWlCLDBDQUEwQyxPQUFPLEtBQUssbUZBQW1GLG9EQUFvRCxLQUFLLHdDQUF3QyxxQkFBcUIsb0NBQW9DLCtDQUErQyxLQUFLLGdGQUFnRix5QkFBeUIseUJBQXlCLGlCQUFpQiwyQkFBMkIsbUJBQW1CLE9BQU8sa0JBQWtCLG9CQUFvQiwwREFBMEQsOENBQThDLG1EQUFtRCx5Q0FBeUMseURBQXlELDJCQUEyQixPQUFPLEtBQUsscUNBQXFDLGdCQUFnQixLQUFLLHdCQUF3QixvQkFBb0IsZ0JBQWdCLGlCQUFpQixLQUFLLDRDQUE0Qyx3QkFBd0IsS0FBSyx5Q0FBeUMsdUJBQXVCLDRCQUE0QixLQUFLLG1DQUFtQyxtQ0FBbUMsS0FBSyxvRkFBb0Ysb0RBQW9ELEtBQUssZ0NBQWdDLHFCQUFxQixvQ0FBb0MsK0NBQStDLEtBQUssd0NBQXdDLG9CQUFvQiwwQkFBMEIscUNBQXFDLHNCQUFzQixnQkFBZ0IsS0FBSyw0Q0FBNEMsd0NBQXdDLEtBQUssc0NBQXNDLHVCQUF1Qiw0QkFBNEIsS0FBSyw4Q0FBOEMsa0JBQWtCLDZCQUE2Qix1QkFBdUIsS0FBSyxxQ0FBcUMsc0JBQXNCLEtBQUssMkNBQTJDLHdDQUF3QyxLQUFLLGtEQUFrRCx3QkFBd0IsS0FBSyx1Q0FBdUMsK0JBQStCLEtBQUssc0NBQXNDLGdDQUFnQyxLQUFLLHVDQUF1QyxzQ0FBc0MsZ0NBQWdDLHVCQUF1QixLQUFLLDBEQUEwRCxtQ0FBbUMsS0FBSyx3Q0FBd0Msc0NBQXNDLHlCQUF5QixnQ0FBZ0MsS0FBSyxpQ0FBaUMsc0JBQXNCLHNDQUFzQyxLQUFLLHVDQUF1Qyw0QkFBNEIsS0FBSywwQkFBMEIsb0JBQW9CLDBCQUEwQixrQ0FBa0MsS0FBSyxnQ0FBZ0Msd0JBQXdCLEtBQUssK0JBQStCLHdCQUF3QixtQkFBbUIsdUJBQXVCLDRDQUE0QyxpQkFBaUIscUNBQXFDLG1CQUFtQixLQUFLLHFDQUFxQyxpQkFBaUIsS0FBSyw0Q0FBNEMsb0JBQW9CLDBCQUEwQixxQ0FBcUMsMEJBQTBCLEtBQUssb0NBQW9DLHNCQUFzQixLQUFLLHNDQUFzQyw0QkFBNEIsS0FBSywwREFBMEQsb0JBQW9CLDhCQUE4QiwwQkFBMEIsZUFBZSwrQkFBK0IsK0JBQStCLDhDQUE4QyxtQ0FBbUMsb0RBQW9ELHNDQUFzQyx5Q0FBeUMscUNBQXFDLGdDQUFnQyx1QkFBdUIsa0NBQWtDLEtBQUsscURBQXFELDRCQUE0QixtQ0FBbUMsaUJBQWlCLDBDQUEwQyxPQUFPLGlCQUFpQixtQ0FBbUMsT0FBTyxLQUFLLDBDQUEwQyxtQ0FBbUMscUNBQXFDLEtBQUssd0NBQXdDLG1DQUFtQyxxQ0FBcUMsS0FBSywyQ0FBMkMsaUNBQWlDLG1DQUFtQyxLQUFLLDBDQUEwQyxrQ0FBa0Msb0NBQW9DLEtBQUssc0VBQXNFLG1KQUFtSiw0QkFBNEIsb0NBQW9DLDJDQUEyQyxLQUFLLCtCQUErQix3Q0FBd0Msb0NBQW9DLCtDQUErQyx1QkFBdUIsZ0JBQWdCLGdDQUFnQyxnQ0FBZ0MseUNBQXlDLEtBQUssNENBQTRDLG1CQUFtQixLQUFLLGtDQUFrQyx5QkFBeUIsOENBQThDLG9EQUFvRCx5Q0FBeUMsdUJBQXVCLEtBQUssc0NBQXNDLGdCQUFnQiwrQ0FBK0MsZ0NBQWdDLEtBQUssbUNBQW1DLHlCQUF5QixzQkFBc0IsOEJBQThCLDBCQUEwQixpQkFBaUIsZUFBZSxtQkFBbUIsNkJBQTZCLDRCQUE0Qix5Q0FBeUMsb0RBQW9ELDhDQUE4QyxLQUFLLHVDQUF1QyxxQkFBcUIsdUJBQXVCLHNCQUFzQixLQUFLLGdFQUFnRSxtREFBbUQsd0NBQXdDLEtBQUssMkNBQTJDLHlDQUF5QyxLQUFLLDZDQUE2QyxzQ0FBc0MsS0FBSyxxQ0FBcUMsa0JBQWtCLGtCQUFrQixzQkFBc0IsOENBQThDLHlCQUF5QiwyQkFBMkIsd0JBQXdCLGtCQUFrQiw0QkFBNEIsY0FBYyx5Q0FBeUMsNEJBQTRCLGVBQWUsMEVBQTBFLHlGQUF5RixPQUFPLEtBQUssV0FBVyxFQUFFLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGlCQUFpQixtQkFBbUIsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosR0FBRyxpQkFBaUIsMENBQTBDLHlCQUF5Qix5QkFBeUIsd0pBQXdKLGtEQUFrRCxRQUFRLG1EQUFtRCxNQUFNLCtDQUErQyxNQUFNLGdCQUFnQixpQ0FBaUMsMkdBQTJHLHFCQUFxQixnQ0FBZ0MsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxlQUFlLGlJQUFpSSxLQUFxQixDQUFDLG1EQUFtRCxjQUFjLGdCQUFnQiwwREFBMEQsNkNBQTZDLHlGQUF5RixpREFBaUQsUUFBUSxrRkFBa0YsS0FBSyxpQ0FBaUMsa0ZBQWtGLEdBQUcsT0FBTyxFQUFFLGtIQUFrSCxLQUFLLG1GQUFtRixtSkFBbUosOEZBQThGLG9CQUFvQixpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxtQkFBbUIseUNBQXlDLGtEQUFrRCxXQUFXLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLGFBQWEsRUFBRSxTQUFTLGlCQUFpQixtQkFBbUIsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosR0FBRyxtQkFBbUIscUJBQXFCLHlEQUF5RCw2REFBNkQsOEJBQThCLGdCQUFnQiwyRUFBMkUsb0RBQW9ELGdCQUFnQiw0Q0FBNEMsdUJBQXVCLHdCQUF3QixXQUFXLEtBQUssa0JBQWtCLFdBQVcsYUFBYSxTQUFTLElBQUksTUFBTSw2QkFBNkIsWUFBWSw0QkFBNEIsaUNBQWlDLFlBQVksYUFBYSw2QkFBNkIsVUFBVSwyQkFBMkIsZ0JBQWdCLGVBQWUsTUFBTSw2Q0FBNkMsMEJBQTBCLGlCQUFpQixLQUFLLHdCQUF3QixxQkFBcUIsMkJBQTJCLGdCQUFnQiw0Q0FBNEMsMkJBQTJCLEVBQUUsSUFBSSxlQUFlLFNBQVMsRUFBRSxHQUFHLHNCQUFzQixTQUFTLGdDQUFnQyxvRUFBb0Usa0JBQWtCLEVBQUUsc0JBQXNCLGlCQUFpQixRQUFRLGNBQWMsb0JBQW9CLGNBQWMsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxFQUFFLGFBQWEsT0FBTywyRUFBMkUsZUFBZSwyQ0FBMkMsa0NBQWtDLDJDQUEyQyxnQkFBZ0Isc0JBQXNCLG1DQUFtQyxHQUFHLGNBQWMscURBQXFELDhDQUE4QyxpR0FBaUcsa0dBQWtHLE9BQU8saUNBQW1CLHFSQUFxUixpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSx5QkFBeUIsMkVBQTJFLGdaQUFnWiw2REFBNkQsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLDBGQUEwRixTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsOEJBQThCLGVBQWUseUJBQXlCLDJFQUEyRSxpeEJBQWl4Qiw2REFBNkQsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxFQUFFLDBGQUEwRixTQUFTLFdBQVcsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsOEJBQThCLGdKQUFnSiwrQ0FBK0MsNEJBQTRCLGVBQWUsdUJBQXVCLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxpQkFBaUIscUJBQXFCLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLElBQUksaUJBQWlCLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLGlCQUFpQixtQkFBbUIsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosR0FBRyxjQUFjLG1EQUFtRCw2REFBNkQscUNBQXFDLDRDQUE0Qyw0REFBNEQsa0VBQWtFLGdFQUFnRSxtRUFBbUUsaUVBQWlFLHFEQUFxRCx5REFBeUQsNkRBQTZELG9DQUFvQyxlQUFlLGFBQWEsb0NBQW9DLDRCQUE0QixrQ0FBa0Msc0NBQXNDLGlDQUFpQyxhQUFhLGlDQUFpQyxpQ0FBaUMsa0NBQWtDLDRCQUE0QixrQ0FBa0MsaUNBQWlDLDZDQUE2Qyw4TEFBOEwsMENBQTBDLGlEQUFpRCxnQ0FBZ0MsOEJBQThCLHVCQUF1QiwrQkFBK0IsZ0VBQWdFLGdRQUFnUSw4Q0FBOEMsNEJBQTRCLGVBQWUsb0RBQW9ELDRCQUE0QixlQUFlLDJFQUEyRSwyQ0FBMkMsb0NBQW9DLGVBQWUsc0NBQXNDLG9DQUFvQyw4Q0FBOEMsb0NBQW9DLDZEQUE2RCxzQ0FBc0MscUNBQXFDLCtDQUErQyx5Q0FBeUMsbUJBQW1CLDZCQUE2QixpRUFBaUUsbUJBQW1CLGlCQUFpQixlQUFlLGdGQUFnRix5QkFBeUIsZUFBZSx1QkFBdUIsOEJBQThCLGVBQWUsYUFBYSxvREFBb0QseUNBQXlDLGFBQWEsbUVBQW1FLHlDQUF5QyxtQ0FBbUMsYUFBYSwwQkFBMEIsMEJBQTBCLG1DQUFtQyxvQ0FBb0MsK0JBQStCLDhEQUE4RCxpQ0FBaUMsaUNBQWlDLHVCQUF1Qix5QkFBeUIsdUJBQXVCLG1DQUFtQyxvREFBb0Qsc0RBQXNELGFBQWEsNkJBQTZCLGtDQUFrQyw0QkFBNEIsdUJBQXVCLGtDQUFrQyxnQ0FBZ0MsaUNBQWlDLHFDQUFxQyxnQ0FBZ0MsaURBQWlELGdFQUFnRSxpREFBaUQsMkRBQTJELGVBQWUsK0NBQStDLDZEQUE2RCxlQUFlLDhCQUE4QixvQ0FBb0MsZUFBZSxhQUFhLGtDQUFrQyx3Q0FBd0MsMkJBQTJCLGlDQUFpQywyQkFBMkIsNEJBQTRCLHVCQUF1QixrQ0FBa0Msd0JBQXdCLDBDQUEwQywrQkFBK0IseUJBQXlCLGtDQUFrQyxpQ0FBaUMsMkJBQTJCLGVBQWUsYUFBYSxzQ0FBc0Msb0NBQW9DLHFDQUFxQyxpREFBaUQsZ0VBQWdFLHlCQUF5QiwyREFBMkQsZUFBZSxhQUFhLDRCQUE0QiwwQkFBMEIsb0NBQW9DLHFDQUFxQyxhQUFhLGdDQUFnQyxzQ0FBc0MsdUNBQXVDLDRCQUE0Qiw0QkFBNEIsa0NBQWtDLGlEQUFpRCx3RUFBd0UsaUNBQWlDLDJCQUEyQixlQUFlLHlCQUF5Qiw0REFBNEQsZUFBZSxxQkFBcUIsK0JBQStCLHNDQUFzQyx1Q0FBdUMsZUFBZSxhQUFhLDZDQUE2Qyw0QkFBNEIseUNBQXlDLGlEQUFpRCx5Q0FBeUMsb0ZBQW9GLDBDQUEwQyxpQkFBaUIsZUFBZSxxQkFBcUIsaUNBQWlDLGVBQWUsMENBQTBDLGdFQUFnRSxlQUFlLDJDQUEyQywrREFBK0QsZUFBZSxhQUFhLDBDQUEwQyxvQ0FBb0Msc0NBQXNDLCtEQUErRCxlQUFlLGFBQWEsc0JBQXNCLHlEQUF5RCxhQUFhLHNCQUFzQixzREFBc0Qsb0NBQW9DLGFBQWEsdUJBQXVCLG1DQUFtQyxhQUFhLGlDQUFpQyxrQkFBa0IsMkJBQTJCLGtDQUFrQywyQ0FBMkMsZUFBZSxvQkFBb0IsMkJBQTJCLGtDQUFrQyx5Q0FBeUMsZUFBZSxhQUFhLGtDQUFrQyxrQkFBa0IsMkJBQTJCLGtDQUFrQyx5Q0FBeUMsZUFBZSxvQkFBb0IsMkJBQTJCLDZDQUE2QyxrQ0FBa0MsZUFBZSxhQUFhLGdDQUFnQyxvQ0FBb0MseUNBQXlDLGVBQWUscUNBQXFDLHFDQUFxQyxlQUFlLHFDQUFxQyxxQ0FBcUMsZUFBZSxzQ0FBc0Msd0NBQXdDLGVBQWUsYUFBYSxnQ0FBZ0Msb0NBQW9DLHlDQUF5QyxlQUFlLHFDQUFxQyxxQ0FBcUMsZUFBZSxxQ0FBcUMscUNBQXFDLGVBQWUsc0NBQXNDLHdDQUF3QyxlQUFlLGFBQWEsK0NBQStDLHlIQUF5SCxtREFBbUQsZUFBZSxhQUFhLHdFQUF3RSxLQUFLLHdCQUF3QixJQUFJLHFCQUFxQixTQUFTLEdBQUcsZUFBZSxzR0FBc0csOEZBQThGLHNQQUFzUCx5QkFBeUIsZ0pBQWdKLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLCtDQUErQyxRQUFRLHdDQUF3QyxpQ0FBaUMsTUFBTSxtQ0FBbUMsTUFBTSxJQUFJLGtCQUFrQixtQkFBbUIsaU1BQWlNLGdCQUFnQixNQUFNLHFDQUFxQyxnQ0FBZ0MsRUFBRSwrQkFBK0Isd0JBQXdCLDBNQUEwTSw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQix1REFBdUQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4Six5RkFBeUYsd0dBQXdHLCtCQUErQixLQUFLLGdEQUFnRCxvQ0FBb0MscUJBQXFCLDJCQUEyQixrQkFBa0Isb0NBQW9DLHVNQUF1TSx5QkFBeUIsOERBQThELGdDQUFnQyxTQUFTLDRFQUE0RSxrQkFBa0IsK0JBQStCLFNBQVMsaU1BQWlNLGtTQUFrUyxLQUFLLHVCQUF1QiwrQ0FBK0MsRUFBRSxxU0FBcVMsZ0RBQWdELDRFQUE0RSx1Q0FBdUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxXQUFXLG1EQUFtRCxnREFBZ0QsRUFBRSxnQkFBZ0IsdURBQXVELDBCQUEwQix5Q0FBeUMscUZBQXFGLEdBQUcsR0FBRyxxQ0FBcUMsa0ZBQWtGLE1BQU0sb0VBQW9FLHdCQUF3QixnQkFBZ0IsRUFBRSxHQUFHLDJMQUEyTCxzQkFBc0IsZ0hBQWdILG1HQUFtRyxrSUFBa0ksK0JBQStCLDhEQUE4RCxvREFBb0Qsc0NBQXNDLGVBQWUsOEJBQThCLHNIQUFzSCwwQkFBMEIsb0NBQW9DLHdEQUF3RCxxREFBcUQsK0RBQStELDZGQUE2RixLQUFLLGdDQUFnQyxvREFBb0QsZUFBZSx1SEFBdUgsOEJBQThCLHNNQUFzTSx3QkFBd0IseUJBQXlCLHFDQUFxQyxzSkFBc0osOERBQThELDhDQUE4Qyx3RUFBd0UsdUpBQXVKLFlBQVksb0JBQW9CLDhDQUE4QyxvQkFBb0IsdUNBQXVDLEdBQUcsaUVBQWlFLHNKQUFzSixZQUFZLG9CQUFvQix1Q0FBdUMsR0FBRyxnR0FBZ0csaURBQWlELHdDQUF3QyxvQkFBb0Isb0NBQW9DLEdBQUcsOERBQThELGlCQUFpQix3RkFBd0YsaUdBQWlHLDZDQUE2QyxrQ0FBa0Msb0NBQW9DLGlDQUFpQyxvQkFBb0Isd0JBQXdCLG9CQUFvQixZQUFZLGtCQUFrQixRQUFRLFdBQVcsd0NBQXdDLFNBQVMsTUFBTSxpQ0FBaUMsc0NBQXNDLFFBQVEsV0FBVyw0RkFBNEYsU0FBUyx3S0FBd0ssb0VBQW9FLHNLQUFzSyxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEdBQUcsU0FBUyx1Q0FBdUMsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsZ0VBQWdFLEVBQUUsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlDQUFpQyxlQUFlLHNHQUFzRyxpQkFBaUIscUNBQXFDLG9CQUFvQixnQ0FBZ0MsT0FBTyxzREFBc0QsVUFBVSw2QkFBNkIsbUJBQW1CLEVBQUUsY0FBYywyQkFBMkIsZUFBZSx3Q0FBd0MsMEJBQTBCLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLGdHQUFnRyxnQ0FBZ0Msd0JBQXdCLHNEQUFzRCxLQUFLLE1BQU0sa0lBQWtJLHVCQUF1QixRQUFRLHVCQUF1Qiw4QkFBOEIsZ0JBQWdCLGdDQUFnQyx5QkFBeUIsa0VBQWtFLG1EQUFtRCxvQ0FBb0MsMkRBQTJELFNBQVMsMkdBQTJHLE1BQU0sU0FBUyxtQkFBbUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UseURBQXlELGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxpQkFBaUIscUJBQXFCLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLElBQUksaUJBQWlCLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLGVBQWUsbUJBQW1CLGlDQUFpQyxpQkFBaUIsb0dBQW9HLHVCQUF1Qix5SkFBeUosR0FBRyxpQkFBaUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsZUFBZSwwQ0FBMEMsa1lBQWtZLGtCQUFrQix5Q0FBeUMsYUFBYSx1Q0FBdUMsUUFBUSxrQkFBa0IsUUFBUSxzRUFBc0UsUUFBUSxrSUFBa0ksaUJBQWlCLEVBQUUsYUFBYSx1T0FBdU8sS0FBSyxjQUFjLHlGQUF5RixjQUFjLGdCQUFnQix5SEFBeUgsaUNBQWlDLE1BQU0sbURBQW1ELFFBQVEsaUVBQWlFLG9CQUFvQixjQUFjLGlDQUFpQyxNQUFNLGtEQUFrRCxhQUFhLHdEQUF3RCxjQUFjLDhCQUE4Qiw0REFBNEQsNkNBQTZDLG1DQUFtQyx3T0FBd08sNkJBQTZCLE9BQU8sd0JBQXdCLHFDQUFxQyxlQUFlLGdDQUFnQyxFQUFFLGlCQUFpQiw2REFBNkQsdUJBQXVCLHlEQUF5RCxhQUFhLG9CQUFvQixxQkFBcUIsU0FBUyxxREFBcUQsY0FBYyxRQUFRLEVBQUUsNkVBQTZFLFlBQVksaURBQWlELHVDQUF1QyxnQkFBZ0IsNkJBQTZCLGdCQUFnQixFQUFFLGdDQUFnQyxNQUFNLDBCQUEwQiwyQkFBMkIsZ0NBQWdDLFlBQVksaUJBQWlCLEVBQUUsNkJBQTZCLGtCQUFrQixTQUFTLG9FQUFvRSx3QkFBd0Isd0JBQXdCLFlBQVksY0FBYyxxSkFBcUosc0ZBQXNGLHFEQUFxRCxZQUFZLEVBQUUsaUhBQWlILHdDQUF3QyxtQ0FBbUMseURBQXlELE9BQU8sU0FBUyw0QkFBNEIsK01BQStNLDRHQUE0RyxvQkFBb0IseUJBQXlCLFlBQVksT0FBTyxTQUFTLE1BQU0sMEJBQTBCLE9BQU8scUJBQXFCLHFIQUFxSCxtQkFBbUIsMkJBQTJCLDZCQUE2QixxQkFBcUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLDJCQUEyQiw4SkFBOEosa0JBQWtCLE9BQU8sK0RBQStELDhEQUE4RCxzQkFBc0IsSUFBSSxrQ0FBa0MsRUFBRSwwQkFBMEIsR0FBRyw0QkFBNEIsZUFBZSxzQkFBc0IsTUFBTSw4REFBOEQsRUFBRSxzQkFBc0IsZ0RBQWdELDhCQUE4Qiw2REFBNkQsZ0lBQWdJLEtBQUssTUFBTSxNQUFNLG1CQUFtQiw4REFBOEQsZUFBZSxrQkFBa0IsZUFBZSxrRUFBa0UscUJBQXFCLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLG1CQUFtQix5Q0FBeUMsa0RBQWtELFdBQVcsVUFBVSxjQUFjLDRIQUE0SCxvR0FBb0csdUJBQXVCLDZCQUE2QixxQkFBcUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLHVEQUF1RCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLGtCQUFrQiwwQkFBMEIsb0dBQW9HLG1GQUFtRixtQkFBbUIseUNBQXlDLEdBQUcsMEJBQTBCLE1BQU0sbUJBQW1CLE9BQU8sNkVBQTZFLDBCQUEwQixpREFBaUQsOEJBQThCLHNIQUFzSCw4RUFBOEUsMEdBQTBHLGtFQUFrRSxxQ0FBcUMsa0JBQWtCLGlEQUFpRCwrREFBK0QsR0FBRyxzQ0FBc0MsRUFBRSw2REFBNkQsT0FBTyxzQkFBc0IsR0FBRyxxQ0FBcUMsU0FBUyxNQUFNLHdCQUF3QixFQUFFLHVEQUF1RCxlQUFlLHVCQUF1QixpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxtQkFBbUIseUNBQXlDLGtEQUFrRCxXQUFXLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLGFBQWEsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsNkJBQTZCLEVBQUUsZUFBZSw0Q0FBNEMsMEJBQTBCLG9CQUFvQix3QkFBd0Isb0JBQW9CLFlBQVksa0JBQWtCLFFBQVEsV0FBVyx3Q0FBd0MsU0FBUyxNQUFNLGlDQUFpQyxzQ0FBc0MsUUFBUSxXQUFXLDRGQUE0RixTQUFTLGdNQUFnTSxtSUFBbUksc0RBQXNELGlGQUFpRiwrQ0FBK0MsUUFBUSx5REFBeUQsMkJBQTJCLDBFQUEwRSxhQUFhLG1EQUFtRCxvQ0FBb0MsMEJBQTBCLG1DQUFtQyxzQ0FBc0MsaURBQWlELDBEQUEwRCxpREFBaUQsOEtBQThLLDJJQUEySSxLQUFLLGVBQWUsOEdBQThHLG1CQUFtQix5T0FBeU8sd0JBQXdCLFVBQVUsMkJBQTJCLE9BQU8sMkJBQTJCLGNBQWMsT0FBTyxxQkFBcUIsbUNBQW1DLE1BQU0sbUNBQW1DLG9EQUFvRCxFQUFFLEtBQUssZ0dBQWdHLHdKQUF3SixVQUFVLHlCQUF5QixnQkFBZ0IseUJBQXlCLGdCQUFnQixFQUFFLHVCQUF1Qiw0QkFBNEIsbUJBQW1CLDJCQUEyQixpQkFBaUIsU0FBUyxjQUFjLG9CQUFvQixnREFBZ0QsRUFBRSxNQUFNLGtCQUFrQixnREFBZ0QsRUFBRSxNQUFNLGVBQWUsMkNBQTJDLEVBQUUsTUFBTSxjQUFjLDBDQUEwQyxFQUFFLE1BQU0sdUJBQXVCLGdEQUFnRCxFQUFFLE1BQU0sdUJBQXVCLGdEQUFnRCxHQUFHLDZJQUE2SSxvZkFBb2YsNEJBQTRCLE9BQU8sbUNBQW1DLDRCQUE0QixPQUFPLDJCQUEyQiw4QkFBOEIsdUJBQXVCLDJGQUEyRix3QkFBd0IsRUFBRSxtQkFBbUIsb0VBQW9FLE1BQU0sMEJBQTBCLDREQUE0RCxnQkFBZ0IsaURBQWlELGlCQUFpQixnQkFBZ0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLGlCQUFpQixnQkFBZ0IsaUJBQWlCLHFCQUFxQixrQkFBa0IsSUFBSSxTQUFTLGVBQWUsd0NBQXdDLDJFQUEyRSxzREFBc0QsMERBQTBELCtFQUErRSxpQ0FBaUMsY0FBYyxtQkFBbUIsMEVBQTBFLHFIQUFxSCxzUkFBc1IsRUFBRSxtQkFBbUIsZUFBZSxpREFBaUQsaURBQWlELDJFQUEyRSxPQUFPLDJFQUEyRSxFQUFFLEVBQUUsZ0RBQWdELDJFQUEyRSxPQUFPLDhDQUE4QyxFQUFFLEVBQUUsaUZBQWlGLDZCQUE2QixpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxnREFBZ0QscURBQXFELE9BQU8sa0dBQWtHLGdCQUFnQix3S0FBd0ssNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsdURBQXVELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosK0VBQStFLGtDQUFrQyw2QkFBNkIsTUFBTSw0QkFBNEIsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxHQUFHLFNBQVMsOENBQThDLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLDJCQUEyQixpSEFBaUgsNENBQTRDLHVDQUF1QyxNQUFNLDhGQUE4RixVQUFVLG9HQUFvRyx1QkFBdUIsc0dBQXNHLHNDQUFzQyxzREFBc0QsK0NBQStDLHdIQUF3SCxPQUFPLDRIQUE0SCxZQUFZLEVBQUUsZUFBZSwyQkFBMkIscUVBQXFFLFNBQVMsSUFBSSxpQ0FBbUIsbVJBQW1SLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGdKQUFnSixtQkFBbUIsME1BQTBNLG1EQUFtRCw4QkFBOEIsZ0JBQWdCLDJDQUEyQyw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQix1REFBdUQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4SixrQkFBa0IsK0JBQStCLGNBQWMsNkNBQTZDLEdBQUcsNEpBQTRKLEdBQUcseU1BQXlNLGlDQUFpQyxLQUFLLGtGQUFrRix5RUFBeUUsNkZBQTZGLGNBQWMsNEdBQTRHLG1FQUFtRSxJQUFJLHVCQUF1QixRQUFRLGlCQUFpQixtQ0FBbUMsa0RBQWtELFlBQVksSUFBSSxpRkFBaUYscUZBQXFGLFFBQVEsMkVBQTJFLHNDQUFzQyxzREFBc0QsMkVBQTJFLGdEQUFnRCwwQkFBMEIsbUxBQW1MLDBFQUEwRSwrT0FBK08sZ0tBQWdLLGVBQWUscUNBQXFDLDhCQUE4Qix5RUFBeUUsVUFBVSxtQkFBbUIsK0RBQStELGtCQUFrQiwrREFBK0Qsb0JBQW9CLCtEQUErRCxpQkFBaUIsK0RBQStELHNCQUFzQix5RkFBeUYsdUJBQXVCLHlGQUF5Rix5QkFBeUIseUZBQXlGLDBCQUEwQix5RkFBeUYsc0JBQXNCLGVBQWUsVUFBVSxvQ0FBb0Msb0NBQW9DLG9DQUFvQyxvQ0FBb0MscUJBQXFCLE9BQU8saUNBQW1CLHdQQUF3UCxpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxtQkFBbUIseUNBQXlDLGtEQUFrRCxXQUFXLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLGFBQWEsRUFBRSxTQUFTLGlCQUFpQixtQkFBbUIsNkJBQTZCLG1CQUFtQix1RkFBdUYsWUFBWSxtQkFBbUIsSUFBSSxnQkFBZ0IsMkRBQTJELE9BQU8sU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLFVBQVUscUJBQXFCLE1BQU0scUNBQXFDLG9EQUFvRCxpR0FBaUcsdUZBQXVGLGtCQUFrQiw4SkFBOEosR0FBRyxlQUFlLHFFQUFxRSwrQkFBK0Isb0NBQW9DLGtJQUFrSSwrQ0FBK0Msc0NBQXNDLGVBQWUscUhBQXFILG9GQUFvRixzQkFBc0Isb1pBQW9aLG1DQUFtQyxVQUFVLDZDQUE2QyxxQ0FBcUMsT0FBTyxxQkFBcUIsRUFBRSxnR0FBZ0cseVRBQXlULE9BQU8scUlBQXFJLHlJQUF5SSxpQkFBaUIsR0FBRyxvSUFBb0ksR0FBRyxzREFBc0QsK0NBQStDLDhOQUE4TixvQkFBb0IsT0FBTyxzTUFBc00sMkJBQTJCLGdFQUFnRSw0RkFBNEYsSUFBSSxzTUFBc00sRUFBRSwyR0FBMkcseUJBQXlCLG1DQUFtQyxrREFBa0QsdURBQXVELCtDQUErQyxHQUFHLHFDQUFxQyw0QkFBNEIsMkJBQTJCLE1BQU0sRUFBRSxRQUFRLDJDQUEyQyxnREFBZ0QsbUNBQW1DLFNBQVMseUZBQXlGLGlEQUFpRCxXQUFXLG1CQUFtQiw2RUFBNkUsR0FBRyxnSEFBZ0gscUJBQXFCLGlDQUFpQyxzQ0FBc0Msa0JBQWtCLFNBQVMsaUNBQWlDLGdFQUFnRSxnQ0FBZ0MsMkVBQTJFLHdCQUF3QiwyQkFBMkIsZ0JBQWdCLDhCQUE4QixHQUFHLHFFQUFxRSx3QkFBd0IsNkJBQTZCLGdCQUFnQiw0QkFBNEIsR0FBRyxtRUFBbUUsd0JBQXdCLGdDQUFnQyxnQkFBZ0IsaUNBQWlDLGdCQUFnQixtQ0FBbUMsZ0JBQWdCLG9DQUFvQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsZ0pBQWdKLE9BQU8saUNBQW1CLHlRQUF5USxlQUFlLFlBQVksbUJBQW1CLEtBQUssd0NBQXdDLGtCQUFrQixnSEFBZ0gsdURBQXVELDBCQUEwQixVQUFVLGlEQUFpRCxrREFBa0QsU0FBUyxFQUFFLFNBQVMsZ0pBQWdKLG1CQUFtQixzQkFBc0IsNEJBQTRCLHFCQUFxQix3QkFBd0Isb0JBQW9CLDhCQUE4QixxQkFBcUIsMEVBQTBFLCtDQUErQyxVQUFVLDBDQUEwQyxhQUFhLE1BQU0sMEJBQTBCLGFBQWEsdUJBQXVCLElBQUksa0NBQWtDLHVCQUF1QixtQkFBbUIsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxlQUFlLE9BQU8sbUJBQW1CLGtDQUFrQyxJQUFJLGlDQUFpQyx1QkFBdUIsTUFBTSxjQUFjLCtCQUErQix5QkFBeUIsbUJBQW1CLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxpQkFBaUIsUUFBUSxvQkFBb0IsNENBQTRDLElBQUksaUNBQWlDLHVCQUF1QixNQUFNLGNBQWMsbUJBQW1CLEtBQUssTUFBTSwyQkFBMkIsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLG9CQUFvQixlQUFlLHFCQUFxQixLQUFLLEtBQUssa0JBQWtCLHFFQUFxRSxPQUFPLFNBQVMsb0JBQW9CLFdBQVcsRUFBRSxzQkFBc0IsMEZBQTBGLDJCQUEyQiw4QkFBOEIsK0JBQStCLGlDQUFtQixpUkFBaVIsZ0pBQWdKLFVBQVUsaUJBQWlCLG1CQUFtQiwwQ0FBMEMsVUFBVSxlQUFlLGtCQUFrQixTQUFTLGdCQUFnQixjQUFjLFlBQVksV0FBVyw0Q0FBNEMscUJBQXFCLElBQUksWUFBWSwwQkFBMEIsV0FBVyxxRUFBcUUsNkJBQTZCLGNBQWMsNEJBQTRCLDZCQUE2Qiw4QkFBOEIseUJBQXlCLHVEQUF1RCxlQUFlLHFCQUFxQiwwQ0FBMEMsY0FBYyxPQUFPLDBFQUEwRSxvQkFBb0IsU0FBUyxlQUFlLGFBQWEsOENBQThDLEVBQUUsSUFBSSxVQUFVLDhEQUE4RCxRQUFRLEtBQUssZ0JBQWdCLFFBQVEsS0FBSyxrQkFBa0IsaUJBQWlCLGdCQUFnQixXQUFXLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxLQUFLLDJCQUEyQiw4QkFBOEIsd0JBQXdCLHFCQUFxQixFQUFFLEdBQUcsR0FBRyxJQUFJLFVBQVUsTUFBTSxjQUFjLGNBQWMsT0FBTyxVQUFVLDJCQUEyQixTQUFTLDJDQUEyQyxVQUFVLHNCQUFzQiw0REFBNEQsNkdBQTZHLGVBQWUsSUFBSSxnQkFBZ0IsVUFBVSw2QkFBNkIsc0JBQXNCLGdCQUFnQixvQkFBb0IsRUFBRSxlQUFlLElBQUksV0FBVyxzQ0FBc0MsMkJBQTJCLHlCQUF5QixxQ0FBcUMsOEJBQThCLDZCQUE2QixzQkFBc0IsMkNBQTJDLHNCQUFzQixFQUFFLGVBQWUsSUFBSSxvQ0FBb0MsdUJBQXVCLHFGQUFxRixvREFBb0QsaUNBQWlDLGFBQWEsb0JBQW9CLHVCQUF1Qix3QkFBd0Isa0ZBQWtGLDhCQUE4Qix1QkFBdUIsd0VBQXdFLGlCQUFpQixjQUFjLGlDQUFpQyxlQUFlLHdEQUF3RCxlQUFlLE1BQU0sd0VBQXdFLGVBQWUsTUFBTSw4RkFBOEYsZUFBZSwyREFBMkQsZUFBZSxpRUFBaUUsZUFBZSx5RUFBeUUsZUFBZSx1R0FBdUcsc0NBQXNDLGVBQWUsSUFBSSw2Q0FBNkMsT0FBTyxnRUFBZ0Usa0VBQWtFLGVBQWUsbUJBQW1CLElBQUksb0JBQW9CLFNBQVMsVUFBVSxFQUFFLDhLQUE4SyxlQUFlLDJCQUEyQixtUUFBbVEsY0FBYyw4RkFBOEYsNENBQTRDLGVBQWUscUJBQXFCLGVBQWUsaUNBQWlDLGVBQWUsY0FBYyw4Q0FBOEMsRUFBRSwwQ0FBMEMsZUFBZSwyQkFBMkIseURBQXlELHNCQUFzQixtQkFBbUIsTUFBTSxzQ0FBc0Msb0JBQW9CLFlBQVksNkVBQTZFLDREQUE0RCxNQUFNLFlBQVksaUVBQWlFLDhCQUE4QixlQUFlLHFFQUFxRSxlQUFlLHVCQUF1QiwrQkFBK0IsZUFBZSxPQUFPLDZCQUE2QixtQkFBbUIsU0FBUyxtREFBbUQsY0FBYywrQkFBK0IsOEJBQThCLG9CQUFvQiw0REFBNEQsRUFBRSw2RUFBNkUsaUJBQWlCLGdCQUFnQiw4QkFBOEIscURBQXFELGlCQUFpQixnQkFBZ0IsOEJBQThCLGlEQUFpRCxrQkFBa0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxpQ0FBaUMscUxBQXFMLHdCQUF3Qix5TEFBeUwsZUFBZSx1Q0FBdUMsZUFBZSw2SEFBNkgsZUFBZSxnTkFBZ04saUJBQWlCLHNCQUFzQiwwQ0FBMEMscUhBQXFILGVBQWUsc0JBQXNCLEtBQUssbUNBQW1DLDhCQUE4QixTQUFTLGlCQUFpQixtQkFBbUIsd0JBQXdCLDBCQUEwQixhQUFhLFFBQVEsS0FBSyxFQUFFLEVBQUUsa0JBQWtCLHdCQUF3QixTQUFTLGVBQWUsc0RBQXNELGlCQUFpQix1R0FBdUcsZUFBZSxrQ0FBa0MsZUFBZSxnSkFBZ0osZUFBZSxzREFBc0QsZUFBZSxrREFBa0QsR0FBRyxZQUFZLGVBQWUsc0JBQXNCLEVBQUUsRUFBRSwwQkFBMEIsbUJBQW1CLHNCQUFzQiwrQkFBK0IseUJBQXlCLFVBQVUsa0NBQWtDLGNBQWMsZUFBZSxpQ0FBaUMsa0JBQWtCLEVBQUUsSUFBSSxvREFBb0QsSUFBSSw4RUFBOEUsb0pBQW9KLDJCQUEyQixnQ0FBZ0MsNkNBQTZDLEVBQUUsaUJBQWlCLHNDQUFzQyx1QkFBdUIsWUFBWSxPQUFPLEVBQUUsb0RBQW9ELDZCQUE2Qiw2QkFBNkIsY0FBYyxxQkFBcUIscUNBQXFDLCtDQUErQyx1Q0FBdUMseUJBQXlCLHlDQUF5QyxzQ0FBc0MsZ0VBQWdFLG9CQUFvQiw2QkFBNkIsWUFBWSxjQUFjLDBCQUEwQiw2REFBNkQsNEZBQTRGLGlCQUFpQiwwQkFBMEIsa0NBQWtDLGtGQUFrRixRQUFRLDJMQUEyTCxxUkFBcVIsY0FBYywyRkFBMkYscUNBQXFDLGlCQUFpQiwyQkFBMkIscUJBQXFCLGNBQWMsdUJBQXVCLFlBQVkscUJBQXFCLGdFQUFnRSxrQ0FBa0Msc0VBQXNFLHFDQUFxQyxFQUFFLGdCQUFnQixpREFBaUQsc0NBQXNDLE9BQU8sMERBQTBELGNBQWMsOENBQThDLHNFQUFzRSxtQkFBbUIsS0FBSyxhQUFhLFVBQVUsY0FBYyxjQUFjLGtEQUFrRCx3REFBd0QsYUFBYSxpQkFBaUIsMEJBQTBCLDBCQUEwQixzQkFBc0IseUZBQXlGLGlJQUFpSSw4RUFBOEUsMEJBQTBCLDJDQUEyQywrQkFBK0IsNEJBQTRCLDZCQUE2QixxQkFBcUIsY0FBYyx3QkFBd0IsT0FBTyxnREFBZ0QsSUFBSSxjQUFjLEdBQUcsYUFBYSxzQ0FBc0Msd0tBQXdLLGdCQUFnQix3QkFBd0IsWUFBWSxHQUFHLFFBQVEsc0JBQXNCLDBGQUEwRixpQkFBaUIseUNBQXlDLEtBQUssRUFBRSxFQUFFLDBCQUEwQixpQ0FBaUMsU0FBUyxpQkFBaUIsMkJBQTJCLGtCQUFrQixJQUFJLE9BQU8sdUNBQXVDLDJDQUEyQyxTQUFTLGdCQUFnQixFQUFFLElBQUksdURBQXVELHlGQUF5Rix5REFBeUQsZUFBZSxRQUFRLGFBQWEsY0FBYyw0RUFBNEUsSUFBSSxvQkFBb0IsK1lBQStZLHVCQUF1QixvQkFBb0IsS0FBSyxPQUFPLDhGQUE4RixVQUFVLG1CQUFtQixxSEFBcUgsU0FBUyxVQUFVLG9FQUFvRSxNQUFNLHVFQUF1RSxNQUFNLHFFQUFxRSxNQUFNLHNFQUFzRSxpQkFBaUIsb0JBQW9CLFVBQVUsb0JBQW9CLDhCQUE4QixxREFBcUQscUNBQXFDLHVCQUF1QixzQkFBc0IsNkJBQTZCLHlCQUF5QixVQUFVLFdBQVcsaUZBQWlGLHlFQUF5RSxjQUFjLDhFQUE4RSxxRUFBcUUsdUpBQXVKLGFBQWEsK0VBQStFLHFFQUFxRSxrQkFBa0Isb0NBQW9DLG9CQUFvQixxQkFBcUIsR0FBRyxjQUFjLGtCQUFrQixFQUFFLElBQUksb0RBQW9ELElBQUksOEJBQThCLHdDQUF3QyxpQkFBaUIsYUFBYSx5QkFBeUIsYUFBYSxnRkFBZ0YsYUFBYSxhQUFhLGFBQWEsYUFBYSx5SEFBeUgsdUhBQXVILHdDQUF3QyxzQ0FBc0MsdUJBQXVCLFlBQVksU0FBUyxFQUFFLDJEQUEyRCxRQUFRLHNCQUFzQixlQUFlLGFBQWEsWUFBWSxvQkFBb0Isd0JBQXdCLGFBQWEseUJBQXlCLDZCQUE2QixxQkFBcUIsbUJBQW1CLElBQUksbUNBQW1DLFNBQVMsVUFBVSxXQUFXLDRCQUE0QixXQUFXLGFBQWEsMEhBQTBILGVBQWUsK0RBQStELDRIQUE0SCxHQUFHLDRCQUE0Qix3QkFBd0IsWUFBWSxHQUFHLFFBQVEsaUNBQWlDLGlCQUFpQixhQUFhLGlCQUFpQixTQUFTLFVBQVUsZUFBZSxTQUFTLG9CQUFvQiwyQ0FBMkMsb0ZBQW9GLFdBQVcsZ0JBQWdCLFdBQVcsa0JBQWtCLCtJQUErSSxVQUFVLHFCQUFxQixpRkFBaUYsU0FBUyxnQkFBZ0IsY0FBYyxrQkFBa0IscUJBQXFCLGlCQUFpQixvQkFBb0IsZUFBZSxXQUFXLDZDQUE2Qyx3QkFBd0IsRUFBRSxZQUFZLHdFQUF3RSw4QkFBOEIsY0FBYyw0QkFBNEIsNkJBQTZCLFFBQVEsT0FBTyxtQkFBbUIsTUFBTSxXQUFXLHdCQUF3QixLQUFLLHVCQUF1QixLQUFLLDhDQUE4QyxlQUFlLE9BQU8seUdBQXlHLGtCQUFrQixFQUFFLElBQUksMkNBQTJDLElBQUksc0tBQXNLLHlGQUF5RiwyQkFBMkIsUUFBUSwyQkFBMkIsNkVBQTZFLHdCQUF3QixZQUFZLGdCQUFnQixxREFBcUQsV0FBVyxrREFBa0Qsd0VBQXdFLHlDQUF5QyxTQUFTLGlCQUFpQix1RUFBdUUsWUFBWSxxREFBcUQsV0FBVyxVQUFVLDBFQUEwRSxXQUFXLFdBQVcsOENBQThDLHFDQUFxQyxXQUFXLGVBQWUsZ0NBQWdDLDZCQUE2QixnQkFBZ0IsOEVBQThFLGtCQUFrQixZQUFZLHVEQUF1RCxLQUFLLFVBQVUsRUFBRSxZQUFZLHVCQUF1QixJQUFJLHdHQUF3RyxVQUFVLHlUQUF5VCxlQUFlLGtIQUFrSCxvREFBb0Qsb0NBQW9DLGVBQWUsU0FBUyxpQkFBaUIsMEVBQTBFLFlBQVksd0JBQXdCLFdBQVcsc0VBQXNFLDRCQUE0QixXQUFXLG1HQUFtRyxrQkFBa0IsNkVBQTZFLEVBQUUsT0FBTyxNQUFNLFdBQVcsMkZBQTJGLFdBQVcsdUVBQXVFLGtDQUFrQyxXQUFXLHNHQUFzRyx1R0FBdUcsNkVBQTZFLFdBQVcsMkpBQTJKLEVBQUUsaUJBQWlCLGlCQUFpQixpRUFBaUUsYUFBYSxjQUFjLDBCQUEwQixhQUFhLHVCQUF1QixhQUFhLHNCQUFzQixhQUFhLEVBQUUscUJBQXFCLG1XQUFtVyxTQUFTLDJRQUEyUSwrQkFBK0IsV0FBVyxFQUFFLE9BQU8sNFlBQTRZLGtDQUFrQyxhQUFhLCtEQUErRCw2QkFBNkIsUUFBUSxzQkFBc0IsbUJBQW1CLFlBQVksc0NBQXNDLHdCQUF3QixXQUFXLHlDQUF5QyxzQkFBc0Isd0JBQXdCLGlDQUFpQyxZQUFZLDRDQUE0Qyw2QkFBNkIsRUFBRSxvQkFBb0IsbUdBQW1HLFdBQVcsd0JBQXdCLHVCQUF1QixHQUFHLFVBQVUsMEtBQTBLLFFBQVEsTUFBTSxvREFBb0QsS0FBSyx5QkFBeUIsaUJBQWlCLGtDQUFrQyxlQUFlLHVCQUF1QixlQUFlLHVCQUF1QixlQUFlLHNCQUFzQixlQUFlLCtCQUErQixpQ0FBaUMsZUFBZSw2QkFBNkIsZUFBZSx3Q0FBd0Msb0ZBQW9GLGVBQWUsb0RBQW9ELGVBQWUsMEJBQTBCLG1DQUFtQyxFQUFFLCtCQUErQixlQUFlLElBQUkseUJBQXlCLEdBQUcsT0FBTyw0REFBNEQsbUJBQW1CLDJCQUEyQixpQkFBaUIsZ0NBQWdDLGlCQUFpQixhQUFhLGtCQUFrQixFQUFFLGlCQUFpQixhQUFhLDhEQUE4RCxFQUFFLGVBQWUsK0RBQStELEdBQUcsRUFBRSxRQUFRLGFBQWEsOENBQThDLFNBQVMsbUJBQW1CLG9DQUFvQywwQkFBMEIsbUJBQW1CLHFGQUFxRixTQUFTLGtCQUFrQixFQUFFLElBQUksaURBQWlELEdBQUcsNEJBQTRCLG9CQUFvQixnQkFBZ0IsRUFBRSxrQ0FBa0MsbUJBQW1CLFVBQVUsd0JBQXdCLDBCQUEwQixxQkFBcUIsaUJBQWlCLDJDQUEyQyxtQkFBbUIsa0VBQWtFLGtCQUFrQixpTUFBaU0sdUJBQXVCLHNEQUFzRCxXQUFXLG1CQUFtQixnQ0FBZ0MsMkZBQTJGLFlBQVksV0FBVyxNQUFNLGtCQUFrQixvREFBb0QscUJBQXFCLHFCQUFxQixnQkFBZ0IsV0FBVywrS0FBK0ssK0JBQStCLGVBQWUsdUJBQXVCLG9IQUFvSCxTQUFTLDZCQUE2Qix5QkFBeUIsNERBQTRELDhHQUE4RywyQkFBMkIsc0JBQXNCLFlBQVksRUFBRSxXQUFXLGVBQWUsb0JBQW9CLGdCQUFnQixzQkFBc0Isa0JBQWtCLFVBQVUsRUFBRSxFQUFFLFdBQVcsY0FBYyxnQkFBZ0IsaUJBQWlCLGdDQUFnQyxzQkFBc0IsVUFBVSxFQUFFLFdBQVcsY0FBYyw4QkFBOEIsMENBQTBDLFNBQVMsZUFBZSxJQUFJLHVDQUF1QyxzQ0FBc0MsV0FBVyx1QkFBdUIsTUFBTSx1QkFBdUIsa0JBQWtCLDBCQUEwQixZQUFZLFNBQVMsOEZBQThGLGFBQWEsc0VBQXNFLG9DQUFvQyxFQUFFLG1CQUFtQixHQUFHLEVBQUUsTUFBTSxpQkFBaUIsVUFBVSxtQkFBbUIsRUFBRSxjQUFjLCtCQUErQixrQkFBa0IsdUJBQXVCLHVFQUF1RSwyQkFBMkIsZUFBZSxrQ0FBa0MsYUFBYSxNQUFNLE1BQU0sT0FBTyxTQUFTLFlBQVksYUFBYSx3QkFBd0IsMEJBQTBCLFdBQVcsMEhBQTBILGFBQWEsNkZBQTZGLFlBQVksd0VBQXdFLFFBQVEsa0RBQWtELGtFQUFrRSw2QkFBNkIsZ0JBQWdCLE9BQU8sdUJBQXVCLHlDQUF5QyxZQUFZLHdEQUF3RCxJQUFJLDJCQUEyQiwrQ0FBK0Msc0NBQXNDLG9CQUFvQixnQkFBZ0IsdUVBQXVFLHFEQUFxRCxhQUFhLG9EQUFvRCxpQ0FBaUMsZ0dBQWdHLCtCQUErQiwrTEFBK0wseWFBQXlhLHVCQUF1Qix1R0FBdUcseUJBQXlCLGlEQUFpRCxJQUFJLHlDQUF5QyxJQUFJLDZFQUE2RSw4R0FBOEcsYUFBYSwySkFBMkosYUFBYSxpQkFBaUIsK0NBQStDLGtEQUFrRCxLQUFLLGNBQWMsZUFBZSxhQUFhLGtSQUFrUixLQUFLLCtCQUErQixrQkFBa0IsdUJBQXVCLHlJQUF5SSxTQUFTLDJCQUEyQixpQkFBaUIsNkJBQTZCLFVBQVUsUUFBUSxVQUFVLHVCQUF1QixPQUFPLGFBQWEscUVBQXFFLGlCQUFpQixnQ0FBZ0MsZUFBZSxnQkFBZ0IsV0FBVyxVQUFVLCtCQUErQixNQUFNLHVDQUF1QyxNQUFNLHVCQUF1QiwwREFBMEQsMEVBQTBFLGdDQUFnQyxlQUFlLE1BQU0sdURBQXVELE1BQU0sV0FBVywwQ0FBMEMsV0FBVyxnQkFBZ0IsS0FBSyxVQUFVLFNBQVMsTUFBTSxlQUFlLDJCQUEyQixpQkFBaUIsd0JBQXdCLGVBQWUsbUNBQW1DLDRCQUE0QixHQUFHLGlCQUFpQix1QkFBdUIsY0FBYyxXQUFXLGdCQUFnQixTQUFTLDhNQUE4TSxzU0FBc1MsMkJBQTJCLHVCQUF1QixrSEFBa0gsU0FBUyxLQUFLLFFBQVEsc0JBQXNCLElBQUkseUJBQXlCLElBQUksOEJBQThCLEVBQUUsYUFBYSxXQUFXLHNDQUFzQyx3T0FBd08sb0RBQW9ELDZDQUE2QyxpQkFBaUIsZ0RBQWdELE9BQU8sdUJBQXVCLE9BQU8saUJBQWlCLGFBQWEsR0FBRyxlQUFlLHdCQUF3QixpQkFBaUIsTUFBTSw0Q0FBNEMsUUFBUSx1Q0FBdUMsYUFBYSx1Q0FBdUMsUUFBUSxZQUFZLFFBQVEsR0FBRywwQkFBMEIsYUFBYSx1Q0FBdUMsaUVBQWlFLE1BQU0sT0FBTywwQkFBMEIsNENBQTRDLGtFQUFrRSx1QkFBdUIsSUFBSSx1QkFBdUIsbUNBQW1DLDJCQUEyQixhQUFhLElBQUksUUFBUSxxRkFBcUYsSUFBSSwwREFBMEQsSUFBSSxRQUFRLG9CQUFvQix1RUFBdUUsZ0ZBQWdGLDREQUE0RCx3QkFBd0IsNEJBQTRCLHNCQUFzQixlQUFlLGdDQUFnQyxFQUFFLElBQUkscUNBQXFDLFNBQVMsRUFBRSw0Q0FBNEMsaUZBQWlGLGlCQUFpQixtQkFBbUIsb0JBQW9CLGlDQUFpQyxFQUFFLHdEQUF3RCxjQUFjLDhCQUE4Qiw0R0FBNEcsYUFBYSw2Q0FBNkMsNENBQTRDLE1BQU0sbU1BQW1NLEVBQUUsOEJBQThCLFdBQVcsMklBQTJJLFdBQVcseUJBQXlCLGFBQWEsUUFBUSxXQUFXLFVBQVUsdUJBQXVCLDRCQUE0QixlQUFlLFlBQVksOEdBQThHLHNCQUFzQiwrR0FBK0csc0JBQXNCLEVBQUUsU0FBUyxZQUFZLGlFQUFpRSxvQkFBb0IsRUFBRSxJQUFJLGdDQUFnQyxJQUFJLDJFQUEyRSwrQ0FBK0MsaUJBQWlCLHdCQUF3QixnQkFBZ0IsZ0NBQWdDLGlEQUFpRCxzRkFBc0YsZUFBZSxlQUFlLEVBQUUsWUFBWSxnQkFBZ0IsdUJBQXVCLGlCQUFpQixPQUFPLHNCQUFzQixvQ0FBb0MscUdBQXFHLGFBQWEsa0JBQWtCLHFCQUFxQix3QkFBd0IsWUFBWSxXQUFXLEtBQUssNktBQTZLLFlBQVksMkhBQTJILG9CQUFvQixFQUFFLElBQUksK0JBQStCLElBQUksNkJBQTZCLGdLQUFnSyxTQUFTLHVDQUF1QyxjQUFjLEVBQUUsNEhBQTRILGdCQUFnQixpQkFBaUIsS0FBSyxvQkFBb0IsZ0JBQWdCLG1CQUFtQiwyQkFBMkIscUJBQXFCLDRCQUE0QixpQ0FBaUMsT0FBTyxZQUFZLFNBQVMsb0NBQW9DLHFCQUFxQixzQkFBc0IsOEJBQThCLG9CQUFvQixJQUFJLE9BQU8scUJBQXFCLE1BQU0sRUFBRSxlQUFlLFVBQVUsbUNBQW1DLHdCQUF3QixTQUFTLFFBQVEsd0JBQXdCLDhCQUE4QixHQUFHLFlBQVksS0FBSyxZQUFZLDJCQUEyQixJQUFJLDhDQUE4QyxJQUFJLDJDQUEyQywrU0FBK1Msc0NBQXNDLFFBQVEsZ0NBQWdDLFFBQVEsbUdBQW1HLGlDQUFpQyxrSkFBa0osY0FBYywyQ0FBMkMsRUFBRSxHQUFHLHVDQUF1QyxvRUFBb0UsZ0NBQWdDLEVBQUUsdUNBQXVDLHNEQUFzRCw4QkFBOEIsYUFBYSxRQUFRLGdCQUFnQiwrREFBK0QsaUNBQWlDLElBQUksRUFBRSxFQUFFLFFBQVEsNEdBQTRHLCtCQUErQixnQ0FBZ0MsdUNBQXVDLDBIQUEwSCxlQUFlLGlMQUFpTCxLQUFLLDZDQUE2Qyw2Q0FBNkMsNENBQTRDLDBKQUEwSiwyQkFBMkIsaUJBQWlCLEVBQUUsK0JBQStCLCtDQUErQyxVQUFVLGdDQUFnQyxRQUFRLCtCQUErQixjQUFjLHFCQUFxQiwyQkFBMkIseUNBQXlDLE9BQU8sU0FBUyxnQkFBZ0IsRUFBRSxrQkFBa0IsV0FBVyxnQkFBZ0IsWUFBWSxpQkFBaUIsZUFBZSxnQkFBZ0IsRUFBRSxrQ0FBa0MsaUJBQWlCLGNBQWMsRUFBRSxnRkFBZ0YsaUJBQWlCLE1BQU0sc0lBQXNJLGNBQWMsMkZBQTJGLDRHQUE0Ryx3SkFBd0osT0FBTyxvQ0FBb0MsNEZBQTRGLHFCQUFxQix3QkFBd0IsT0FBTyxpQkFBaUIscUJBQXFCLGFBQWEsbUJBQW1CLGlCQUFpQixNQUFNLFNBQVMsYUFBYSxHQUFHLEVBQUUsU0FBUyxZQUFZLElBQUksaUJBQWlCLElBQUkscUJBQXFCLGdEQUFnRCxPQUFPLGNBQWMsU0FBUyw2R0FBNkcsNkdBQTZHLEVBQUUsUUFBUSxlQUFlLHVCQUF1QixnQkFBZ0Isd0RBQXdELG1CQUFtQiwwQkFBMEIsb0JBQW9CLGVBQWUsNkNBQTZDLDJDQUEyQyxxQkFBcUIsK0NBQStDLGdDQUFnQyxjQUFjLCtDQUErQyxrQ0FBa0MseUJBQXlCLHdDQUF3QyxnQkFBZ0Isd0NBQXdDLGtFQUFrRSwrQ0FBK0MseUJBQXlCLHVEQUF1RCxnQkFBZ0IsdURBQXVELHFCQUFxQixrQkFBa0IsMkNBQTJDLHdDQUF3QyxLQUFLLFNBQVMsRUFBRSw0Q0FBNEMsRUFBRSw2T0FBNk8sb0JBQW9CLDBCQUEwQixVQUFVLGtCQUFrQix3QkFBd0IsbUJBQW1CLHdCQUF3Qix3QkFBd0IsaUNBQWlDLG1CQUFtQix5RkFBeUYsR0FBRyxnREFBZ0QsZ0JBQWdCLHFFQUFxRSxnQ0FBZ0MsT0FBTyxrRUFBa0Usa0NBQWtDLDZCQUE2QixrQ0FBa0MsdURBQXVELCtDQUErQyw2QkFBNkIsK0NBQStDLHdDQUF3Qyw0QkFBNEIsMEJBQTBCLCtCQUErQixpREFBaUQsY0FBYyxxQ0FBcUMsdUZBQXVGLE9BQU8sS0FBSyxpQkFBaUIsY0FBYyxvREFBb0QsY0FBYyw4Q0FBOEMsY0FBYywwREFBMEQsT0FBTyxrQkFBa0IsUUFBUSxhQUFhLDJJQUEySSxvQkFBb0IsYUFBYSxNQUFNLG9CQUFvQiwwQkFBMEIsTUFBTSxtRkFBbUYsT0FBTywyRkFBMkYsV0FBVywwQkFBMEIsMkRBQTJELGtDQUFrQyx3QkFBd0IsZ0NBQWdDLEdBQUcsY0FBYyxLQUFLLDJPQUEyTyxtQ0FBbUMsSUFBSSxpQkFBaUIsSUFBSSxvSUFBb0ksK0ZBQStGLFFBQVEsMkNBQTJDLGdCQUFnQix3Q0FBd0MsVUFBVSxhQUFhLDBGQUEwRixXQUFXLGtCQUFrQixvR0FBb0cseUJBQXlCLGdCQUFnQix3TEFBd0wsMkxBQTJMLHVDQUF1QyxFQUFFLCtFQUErRSw0REFBNEQsb0JBQW9CLFlBQVkseUJBQXlCLHVCQUF1QixvQkFBb0IsU0FBUyx3QkFBd0IsdUJBQXVCLEdBQUcsVUFBVSxLQUFLLGdEQUFnRCxlQUFlLGtDQUFrQyxhQUFhLEtBQUssR0FBRyx5REFBeUQsMkNBQTJDLElBQUksc0NBQXNDLGtCQUFrQix3QkFBd0IsZ0JBQWdCLGtHQUFrRyxhQUFhLEVBQUUsUUFBUSxHQUFHLGFBQWEsb0RBQW9ELGFBQWEsRUFBRSx5REFBeUQsb0JBQW9CLGVBQWUsZUFBZSxNQUFNLGVBQWUsT0FBTyxRQUFRLHVCQUF1QixvQ0FBb0MsZUFBZSwwQkFBMEIsZUFBZSxNQUFNLFdBQVcsVUFBVSxrRUFBa0UsZ2ZBQWdmLG1GQUFtRixvQkFBb0IsRUFBRSw4REFBOEQsWUFBWSxNQUFNLHFCQUFxQixjQUFjLHFCQUFxQixvSEFBb0gsY0FBYyxPQUFPLG9DQUFvQyxpQkFBaUIsaUNBQWlDLGdCQUFnQixPQUFPLGVBQWUsb0RBQW9ELGlDQUFpQyxZQUFZLFdBQVcsTUFBTSxXQUFXLDRCQUE0QixnQkFBZ0IsV0FBVywrQkFBK0IsTUFBTSwwQkFBMEIsZUFBZSxZQUFZLFdBQVcsTUFBTSxXQUFXLDRCQUE0QixnQkFBZ0IsV0FBVyxpQ0FBaUMsTUFBTSxpQ0FBaUMsbUJBQW1CLGlGQUFpRixHQUFHLE1BQU0sc0JBQXNCLEtBQUssb0JBQW9CLEtBQUssMkRBQTJELGdCQUFnQix5TEFBeUwsR0FBRyxpQkFBaUIsZ0VBQWdFLEdBQUcsTUFBTSxrQkFBa0IsS0FBSyxrQ0FBa0MsS0FBSyxhQUFhLEtBQUssZUFBZSxLQUFLLHFCQUFxQixLQUFLLGtCQUFrQixLQUFLLGtCQUFrQixLQUFLLDBDQUEwQywyQkFBMkIsb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsUUFBUSxPQUFPLHFCQUFxQixJQUFJLG1GQUFtRixvREFBb0QseUNBQXlDLFNBQVMsZ0JBQWdCLFdBQVcseUJBQXlCLGNBQWMsNEJBQTRCLFNBQVMsaUJBQWlCLGdCQUFnQixvQkFBb0IsZ0JBQWdCLGlCQUFpQixTQUFTLG1CQUFtQiwwQ0FBMEMsMEJBQTBCLG1DQUFtQyxPQUFPLGdCQUFnQixZQUFZLFdBQVcsa0JBQWtCLFNBQVMsY0FBYywyRUFBMkUsUUFBUSxxQkFBcUIsNEZBQTRGLGtIQUFrSCxNQUFNLDRDQUE0QyxNQUFNLHNDQUFzQyxvQkFBb0IsdUNBQXVDLDBCQUEwQixRQUFRLGdEQUFnRCxtQkFBbUIsNkJBQTZCLFlBQVksdUJBQXVCLG9FQUFvRSxvQkFBb0IsZUFBZSw2REFBNkQsK0JBQStCLGtCQUFrQix1QkFBdUIsbUlBQW1JLFNBQVMsZ0JBQWdCLEVBQUUsSUFBSSwrREFBK0QsZ0RBQWdELGdCQUFnQixvQ0FBb0MsR0FBRyxRQUFRLGFBQWEsSUFBSSxnRkFBZ0YsMkJBQTJCLE9BQU8scUJBQXFCLE9BQU8sYUFBYSwwQ0FBMEMsNEhBQTRILG1CQUFtQixFQUFFLDJFQUEyRSxFQUFFLGVBQWUsZ0JBQWdCLHVGQUF1RixvQkFBb0Isa0NBQWtDLElBQUksSUFBSSxtRUFBbUUsR0FBRyxXQUFXLGtDQUFrQyxvQ0FBb0MsT0FBTyxnQkFBZ0IsVUFBVSxjQUFjLHFEQUFxRCwrRUFBK0UsMENBQTBDLFlBQVkscUdBQXFHLGtCQUFrQixvQ0FBb0MsUUFBUSxXQUFXLGNBQWMsTUFBTSx5QkFBeUIsd0JBQXdCLGVBQWUsa0JBQWtCLDhCQUE4QixjQUFjLFdBQVcsZUFBZSxXQUFXLGlCQUFpQixtRUFBbUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLElBQUksa0RBQWtELElBQUksc0ZBQXNGLDZFQUE2RSxtQkFBbUIsZ0JBQWdCLHlCQUF5QixpQkFBaUIsMENBQTBDLHFEQUFxRCxpQkFBaUIseURBQXlELGNBQWMsZUFBZSxnQkFBZ0Isd0JBQXdCLE1BQU0sdUJBQXVCLDZDQUE2QyxjQUFjLHlCQUF5QixjQUFjLFNBQVMsZUFBZSxJQUFJLDBHQUEwRyxJQUFJLGdDQUFnQyxjQUFjLEVBQUUsSUFBSSxxRUFBcUUsT0FBTyxjQUFjLDBDQUEwQyxPQUFPLCtCQUErQiwwQkFBMEIsS0FBSyxlQUFlLGdCQUFnQixpQkFBaUIsMERBQTBELGlCQUFpQixxQ0FBcUMsRUFBRSxXQUFXLEVBQUUsZUFBZSwrREFBK0QsRUFBRSxrQ0FBa0MsSUFBSSwwREFBMEQsSUFBSSx1SUFBdUksc0NBQXNDLDZCQUE2QixLQUFLLG9CQUFvQixhQUFhLFNBQVMsTUFBTSxpQkFBaUIsbUNBQW1DLGVBQWUsYUFBYSxxQkFBcUIsdUJBQXVCLGVBQWUsMkVBQTJFLGtIQUFrSCxlQUFlLGtCQUFrQiwrR0FBK0csbURBQW1ELG9MQUFvTCxPQUFPLHFFQUFxRSxZQUFZLHNHQUFzRyxnQ0FBZ0MsRUFBRSxFQUFFLGlCQUFpQixvRUFBb0UsUUFBUSxFQUFFLFVBQVUsa0RBQWtELGdCQUFnQixHQUFHLEVBQUUsNkNBQTZDLHFCQUFxQixhQUFhLG9EQUFvRCxRQUFRLElBQUkseUNBQXlDLGtCQUFrQiw4Q0FBOEMsMkRBQTJELEVBQUUsdUJBQXVCLG1GQUFtRixJQUFJLE1BQU0sdUlBQXVJLCtCQUErQixzQkFBc0IsZUFBZSxnQkFBZ0IsdUJBQXVCLDZGQUE2RixFQUFFLEVBQUUsMFhBQTBYLDJKQUEySixNQUFNLHlEQUF5RCxhQUFhLHNDQUFzQyxvQkFBb0IsbUJBQW1CLG1FQUFtRSxnREFBZ0QsZ0JBQWdCLDZFQUE2RSx5QkFBeUIsb0JBQW9CLGtCQUFrQiwwREFBMEQsb0RBQW9ELHNCQUFzQiw2QkFBNkIsU0FBUyxFQUFFLGdCQUFnQixvQ0FBb0MsMkRBQTJELG9DQUFvQywyQkFBMkIsRUFBRSxLQUFLLDJEQUEyRCxxSUFBcUksU0FBUywyQ0FBMkMsb0NBQW9DLDJCQUEyQixFQUFFLG9DQUFvQyxTQUFTLGdCQUFnQixzREFBc0QsZ0JBQWdCLHNDQUFzQyw2RkFBNkYsa0JBQWtCLFlBQVksMEJBQTBCLGtCQUFrQixxRkFBcUYsZ0JBQWdCLDBCQUEwQixrQkFBa0IsWUFBWSxXQUFXLCtDQUErQyxnQkFBZ0Isb0JBQW9CLG9DQUFvQyxnRUFBZ0Usd0hBQXdILFNBQVMsWUFBWSxTQUFTLDhLQUE4SyxtQkFBbUIsZ0JBQWdCLGdCQUFnQixNQUFNLHlDQUF5QyxnQkFBZ0IsOERBQThELCtIQUErSCxNQUFNLDZGQUE2RixTQUFTLGdCQUFnQixxREFBcUQsb0JBQW9CLGtCQUFrQix1Q0FBdUMsc0RBQXNELG1FQUFtRSwrQ0FBK0MscUNBQXFDLG9DQUFvQyxLQUFLLHlCQUF5QixZQUFZLEVBQUUsRUFBRSw4QkFBOEIsNENBQTRDLGdFQUFnRSxJQUFJLDBDQUEwQyw4QkFBOEIsU0FBUyxnQkFBZ0IsZ0ZBQWdGLEVBQUUsRUFBRSx1Q0FBdUMsWUFBWSxvQkFBb0IsS0FBSyx5QkFBeUIsa0ZBQWtGLFNBQVMsa0JBQWtCLFNBQVMsa0JBQWtCLFFBQVEsb0pBQW9KLDRCQUE0QixVQUFVLGtCQUFrQixtQ0FBbUMsZ0JBQWdCLDhDQUE4QywyQkFBMkIsa0JBQWtCLGNBQWMsK0JBQStCLDBFQUEwRSw0Q0FBNEMsc0RBQXNELEVBQUUsa0NBQWtDLCtEQUErRCxlQUFlLGtCQUFrQixrQkFBa0IsMkNBQTJDLG9GQUFvRiw0Q0FBNEMsa0JBQWtCLGNBQWMsMkNBQTJDLGdFQUFnRSwyQ0FBMkMsa0JBQWtCLFVBQVUsb0NBQW9DLG1DQUFtQyxhQUFhLG1JQUFtSSxFQUFFLGlCQUFpQiw0QkFBNEIsZ0JBQWdCLCtCQUErQixpQ0FBaUMsZUFBZSwyQkFBMkIsZUFBZSw0QkFBNEIsaUJBQWlCLDJDQUEyQyxtQkFBbUIsZUFBZSx1QkFBdUIsa0ZBQWtGLEVBQUUsZUFBZSxrREFBa0QseUJBQXlCLHVGQUF1RixFQUFFLHFFQUFxRSxnQkFBZ0IsRUFBRSxJQUFJLFlBQVkseURBQXlELG1CQUFtQixnQ0FBZ0MsZUFBZSxFQUFFLGNBQWMsd0JBQXdCLHdDQUF3QyxhQUFhLG9DQUFvQywrREFBK0QsZ0JBQWdCLGtDQUFrQyx1QkFBdUIsNENBQTRDLFdBQVcsNkRBQTZELG9DQUFvQyxzRUFBc0UsY0FBYyxlQUFlLElBQUksNkNBQTZDLFNBQVMsWUFBWSx1SkFBdUosd0JBQXdCLCtGQUErRiw4RUFBOEUsY0FBYyxhQUFhLHlCQUF5QixlQUFlLDJCQUEyQixjQUFjLGdDQUFnQyxzQkFBc0IsK0hBQStILHVDQUF1Qyx3Q0FBd0MsOEJBQThCLEtBQUssZ0NBQWdDLGFBQWEsMEJBQTBCLDBCQUEwQiw4Q0FBOEMsd0NBQXdDLDhCQUE4QixLQUFLLGdDQUFnQywrRUFBK0UsR0FBRyxFQUFFLCtCQUErQixlQUFlLElBQUksd0NBQXdDLElBQUksVUFBVSxNQUFNLG1DQUFtQywrQkFBK0Isa0JBQWtCLEVBQUUsT0FBTywrQkFBK0IsbUJBQW1CLE9BQU8sdUJBQXVCLHVIQUF1SCxVQUFVLGFBQWEsb0JBQW9CLE1BQU0sZ0JBQWdCLG9CQUFvQixNQUFNLGVBQWUsbUJBQW1CLE1BQU0sY0FBYyxtQkFBbUIsTUFBTSxXQUFXLGFBQWEsY0FBYyxnQ0FBZ0MsTUFBTSw4QkFBOEIsU0FBUyxzQkFBc0IsSUFBSSxzRUFBc0UsNEZBQTRGLGtDQUFrQyxHQUFHLFFBQVEsbUJBQW1CLEtBQUssWUFBWSxXQUFXLEtBQUssSUFBSSxZQUFZLE9BQU8sdUJBQXVCLFVBQVUsZ0dBQWdHLHdCQUF3QixFQUFFLCtCQUErQixVQUFVLGNBQWMsb0hBQW9ILGtDQUFrQyxZQUFZLFFBQVEsa0JBQWtCLE9BQU8sa0RBQWtELHVCQUF1QixNQUFNLGlCQUFpQixFQUFFLElBQUksaURBQWlELElBQUksa0hBQWtILDhGQUE4Rix5TUFBeU0scUJBQXFCLHdEQUF3RCx1TEFBdUwsUUFBUSw2SEFBNkgsNENBQTRDLEtBQUssT0FBTyx5SUFBeUksaUJBQWlCLE9BQU8sdUZBQXVGLGVBQWUsMkJBQTJCLCtCQUErQix1QkFBdUIsSUFBSSxrQ0FBa0MsNEhBQTRILHVDQUF1QyxxQkFBcUIsMENBQTBDLEVBQUUsK0VBQStFLHNEQUFzRCxZQUFZLEVBQUUsYUFBYSxlQUFlLHVJQUF1SSxxQkFBcUIsc0JBQXNCLGVBQWUsZ0NBQWdDLGVBQWUsWUFBWSx1QkFBdUIsaUNBQWlDLHFCQUFxQixpRUFBaUUsa0VBQWtFLFNBQVMsYUFBYSxlQUFlLFlBQVksK0JBQStCLDJEQUEyRCxJQUFJLHFCQUFxQixVQUFVLHNDQUFzQyxnREFBZ0QsZ0NBQWdDLDJJQUEySSxNQUFNLDJDQUEyQyxLQUFLLFlBQVksRUFBRSx5SkFBeUoscURBQXFELFdBQVcseUJBQXlCLEVBQUUsaUJBQWlCLHVCQUF1QixtQ0FBbUMsbUJBQW1CLG1CQUFtQixvRUFBb0UsT0FBTyx5QkFBeUIscUNBQXFDLG1CQUFtQixNQUFNLGtDQUFrQyxnRkFBZ0YsTUFBTSxxQkFBcUIsV0FBVyxxREFBcUQsT0FBTywwQkFBMEIsTUFBTSxxQ0FBcUMsZ05BQWdOLHVFQUF1RSwwQkFBMEIsUUFBUSw4QkFBOEIsMElBQTBJLE9BQU8sOEJBQThCLE1BQU0sS0FBSyxZQUFZLEdBQUcsbURBQW1ELGFBQWEsZUFBZSxnQ0FBZ0MsaUJBQWlCLGdEQUFnRCxpQkFBaUIscUJBQXFCLDZDQUE2QyxpQkFBaUIsTUFBTSxZQUFZLGtCQUFrQixXQUFXLFlBQVksS0FBSyxVQUFVLEVBQUUsMEJBQTBCLFFBQVEsU0FBUyxjQUFjLEtBQUssOEJBQThCLFdBQVcsZ0RBQWdELFlBQVksS0FBSyxjQUFjLEVBQUUsa0JBQWtCLGVBQWUsUUFBUSxZQUFZLE9BQU8seUJBQXlCLDBFQUEwRSxPQUFPLDBCQUEwQixvREFBb0QseUJBQXlCLFNBQVMsc0RBQXNELG1CQUFtQix5Q0FBeUMsb0JBQW9CLHNCQUFzQiwyREFBMkQsT0FBTywrREFBK0QsdURBQXVELHdDQUF3QyxLQUFLLGtFQUFrRSxJQUFJLDRDQUE0QywrQ0FBK0Msd0JBQXdCLE9BQU8seUJBQXlCLHlCQUF5Qiw0REFBNEQsWUFBWSxpREFBaUQsZ0NBQWdDLE9BQU8sNEdBQTRHLG1EQUFtRCxJQUFJLCtDQUErQyx3REFBd0QsZUFBZSxjQUFjLGlHQUFpRyxLQUFLLGNBQWMsRUFBRSxvQkFBb0IsMkhBQTJILFlBQVksa0VBQWtFLHdDQUF3QyxvQkFBb0Isc0RBQXNELGdCQUFnQixtSEFBbUgsWUFBWSxPQUFPLDZEQUE2RCxrRUFBa0Usc0NBQXNDLDJCQUEyQixJQUFJLGlCQUFpQixPQUFPLE9BQU8sa0JBQWtCLDRDQUE0QyxnQ0FBZ0MsaUJBQWlCLG9FQUFvRSxxQkFBcUIsTUFBTSxpQkFBaUIsRUFBRSxJQUFJLG9LQUFvSyw4Q0FBOEMsY0FBYyxrQ0FBa0MsV0FBVyxvQ0FBb0MsRUFBRSx5QkFBeUIscUJBQXFCLGFBQWEsTUFBTSxtREFBbUQsdUJBQXVCLHlDQUF5QyxpQ0FBaUMsOEJBQThCLEdBQUcsd0JBQXdCLG9FQUFvRSw2RUFBNkUsTUFBTSxjQUFjLDZCQUE2QixVQUFVLGlCQUFpQiw0QkFBNEIsV0FBVyxNQUFNLGlEQUFpRCxJQUFJLDhCQUE4QiwwQkFBMEIsRUFBRSxTQUFTLGdDQUFnQyxhQUFhLE9BQU8sdUJBQXVCLDZCQUE2QixTQUFTLHlGQUF5RixNQUFNLDBCQUEwQixPQUFPLG9DQUFvQyxtQkFBbUIsdUJBQXVCLFlBQVksZ0RBQWdELFlBQVksTUFBTSxjQUFjLDBFQUEwRSw4RUFBOEUseUVBQXlFLGlCQUFpQixVQUFVLGtCQUFrQiwrQkFBK0IsOERBQThELDZCQUE2QixxQkFBcUIsb0NBQW9DLFFBQVEsT0FBTyw0QkFBNEIsU0FBUyxrRUFBa0UsUUFBUSxPQUFPLFFBQVEsdUNBQXVDLFFBQVEsT0FBTyxFQUFFLFdBQVcsd0RBQXdELFNBQVMsa0JBQWtCLGVBQWUsNkZBQTZGLGlCQUFpQixZQUFZLHlCQUF5QixlQUFlLGtCQUFrQixlQUFlLFlBQVksSUFBSSxtQkFBbUIsMkNBQTJDLFFBQVEsb0hBQW9ILEtBQUssbUJBQW1CLElBQUksb0JBQW9CLEdBQUcsT0FBTyxpREFBaUQsa0RBQWtELGFBQWEsa0RBQWtELGVBQWUsY0FBYywrQkFBK0IsZ1RBQWdULDRJQUE0SSxrSEFBa0gsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLEtBQUssa0VBQWtFLHVFQUF1RSw0SEFBNEgsT0FBTyx3Q0FBd0MscUNBQXFDLDJCQUEyQixvQ0FBb0MsUUFBUSxJQUFJLHFDQUFxQyxtQkFBbUIsMkZBQTJGLEVBQUUsc0JBQXNCLG9CQUFvQixnQkFBZ0IsOEVBQThFLElBQUkseUJBQXlCLDJGQUEyRixhQUFhLGNBQWMsSUFBSSw4RUFBOEUsSUFBSSwwSUFBMEksU0FBUyxpREFBaUQsbUhBQW1ILFlBQVksc0JBQXNCLGtCQUFrQixtQ0FBbUMsOEJBQThCLFVBQVUsMkNBQTJDLGVBQWUsc0NBQXNDLGtCQUFrQixzQkFBc0IsNkRBQTZELFdBQVcsZ0ZBQWdGLHNCQUFzQixzQkFBc0IsbUJBQW1CLDBHQUEwRyx5REFBeUQsUUFBUSx3QkFBd0IsWUFBWSx3QkFBd0IscUJBQXFCLHNEQUFzRCw2RkFBNkYsTUFBTSxvQkFBb0IsUUFBUSxjQUFjLGdIQUFnSCxnQkFBZ0IsZUFBZSw0QkFBNEIsTUFBTSxzQkFBc0Isc0JBQXNCLFNBQVMsK0dBQStHLFNBQVMsTUFBTSwyQkFBMkIsZ0JBQWdCLE9BQU8sY0FBYyxVQUFVLGVBQWUsbUJBQW1CLE1BQU0sa0RBQWtELE9BQU8scUJBQXFCLGtEQUFrRCw4REFBOEQsdUJBQXVCLHVCQUF1QixJQUFJLFNBQVMsbUNBQW1DLE9BQU8scUNBQXFDLFFBQVEsR0FBRyxnQkFBZ0IsSUFBSSw2Q0FBNkMsSUFBSSx3Q0FBd0MsWUFBWSxRQUFRLCtEQUErRCx1QkFBdUIsRUFBRSw2QkFBNkIsTUFBTSxvSEFBb0gsbUJBQW1CLE1BQU0sUUFBUSxxT0FBcU8sbUJBQW1CLE9BQU8sY0FBYyxrQkFBa0IsZ0JBQWdCLHlCQUF5QixHQUFHLG1DQUFtQyxJQUFJLG9CQUFvQixJQUFJLHdDQUF3QyxPQUFPLElBQUksUUFBUSxHQUFHLE9BQU8sVUFBVSxNQUFNLFlBQVksUUFBUSxtREFBbUQsTUFBTSx3RUFBd0UsZ0JBQWdCLE1BQU0sd0VBQXdFLGdCQUFnQixZQUFZLGlCQUFpQixFQUFFLE9BQU8sV0FBVyx5QkFBeUIsZ0JBQWdCLGdCQUFnQixFQUFFLDJFQUEyRSxJQUFJLHlCQUF5QixZQUFZLFVBQVUsV0FBVyxRQUFRLFlBQVksb0NBQW9DLEVBQUUsZ0JBQWdCLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixRQUFRLHlCQUF5QixTQUFTLElBQUksb0JBQW9CLHlCQUF5QixHQUFHLGFBQWEsUUFBUSxTQUFTLDBDQUEwQyxJQUFJLGNBQWMsTUFBTSx3REFBd0QsaUJBQWlCLFlBQVkscUpBQXFKLDBHQUEwRyxvSEFBb0gsa0VBQWtFLDBGQUEwRixTQUFTLHdDQUF3QyxFQUFFLHdDQUF3QyxrQ0FBa0MsT0FBTyxVQUFVLEtBQUssZUFBZSxVQUFVLG1GQUFtRixTQUFTLElBQUkscUNBQXFDLElBQUksbUVBQW1FLElBQUksNENBQTRDLGFBQWEsb0JBQW9CLGVBQWUsUUFBUSx3UEFBd1AsNERBQTRELCtOQUErTixPQUFPLGlCQUFpQixnQ0FBZ0MsbUJBQW1CLFdBQVcsZUFBZSxHQUFHLHlCQUF5QixHQUFHLGtDQUFrQyxJQUFJLFFBQVEsSUFBSSxrQ0FBa0MsU0FBUyxVQUFVLHVCQUF1QixxQkFBcUIsZ0NBQWdDLGVBQWUsT0FBTyxNQUFNLGlEQUFpRCxlQUFlLHFCQUFxQixvQkFBb0IsY0FBYyxPQUFPLE1BQU0saUNBQWlDLG1CQUFtQixnQkFBZ0IsRUFBRSw2QkFBNkIsSUFBSSxvREFBb0Qsc05BQXNOLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxHQUFHLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxhQUFhLEdBQUcsS0FBSyxFQUFFLElBQUksU0FBUyxFQUFFLEtBQUssa0JBQWtCLElBQUksaUZBQWlGLElBQUksU0FBUyxZQUFZLGVBQWUsZ0RBQWdELEVBQUUsdUJBQXVCLDRHQUE0RyxRQUFRLG9IQUFvSCxjQUFjLEVBQUUsSUFBSSxTQUFTLFNBQVMsZUFBZSw0Q0FBNEMsNkhBQTZILFFBQVEsaUJBQWlCLE1BQU0sa0JBQWtCLGlCQUFpQixFQUFFLElBQUksZ0ZBQWdGLHVCQUF1QixHQUFHLDhDQUE4QyxxQkFBcUIsZ0RBQWdELGlCQUFpQixzQkFBc0IsY0FBYyxxRUFBcUUsa0NBQWtDLHlCQUF5QixrQ0FBa0MsMEhBQTBILGlDQUFpQyxPQUFPLHFDQUFxQyw2Q0FBNkMsaUJBQWlCLGlCQUFpQixJQUFJLG9CQUFvQixlQUFlLGdCQUFnQixFQUFFLGtDQUFrQyxPQUFPLGtDQUFrQyw0REFBNEQsS0FBSyxHQUFHLEVBQUUsY0FBYyxRQUFRLGtFQUFrRSxxQkFBcUIsSUFBSSxNQUFNLG1CQUFtQiwwQkFBMEIsYUFBYSxjQUFjLDJDQUEyQyxxQ0FBcUMsS0FBSyxjQUFjLHNCQUFzQixvREFBb0QsMkJBQTJCLHVCQUF1QiwwQkFBMEIsT0FBTyx5QkFBeUIsd0JBQXdCLDhDQUE4QyxVQUFVLHNFQUFzRSx3QkFBd0IsRUFBRSx5QkFBeUIsMkJBQTJCLHVCQUF1QixpREFBaUQsZUFBZSxFQUFFLGVBQWUsWUFBWSxjQUFjLHNCQUFzQixhQUFhLDJHQUEyRyxHQUFHLDRCQUE0QiwrQkFBK0IsZ0pBQWdKLDZCQUE2QiwrREFBK0Qsa0NBQWtDLDZCQUE2QixvQ0FBb0MscUNBQXFDLGVBQWUsZUFBZSxvQ0FBb0MsNENBQTRDLGlCQUFpQixrQkFBa0IsaUNBQWlDLGFBQWEsRUFBRSw4R0FBOEcsR0FBRyxrQkFBa0Isc0JBQXNCLHFCQUFxQixtQkFBbUIsR0FBRyxZQUFZLEdBQUcsSUFBSSw0Q0FBNEMsUUFBUSxhQUFhLHlFQUF5RSwwREFBMEQsOEJBQThCLGFBQWEsZ0JBQWdCLCtHQUErRyw4QkFBOEIsbUZBQW1GLGlCQUFpQiwyRkFBMkYscURBQXFELDRDQUE0Qyx1QkFBdUIsK0lBQStJLHFDQUFxQyxlQUFlLDhCQUE4QixlQUFlLElBQUksbURBQW1ELGtHQUFrRywyQ0FBMkMsV0FBVyxzQ0FBc0MsbUJBQW1CLGNBQWMscURBQXFELG1CQUFtQixTQUFTLGFBQWEsRUFBRSxJQUFJLFFBQVEsUUFBUSxxSUFBcUksZ0JBQWdCLDJCQUEyQixZQUFZLEdBQUcsUUFBUSxtQkFBbUIsUUFBUSxzQkFBc0Isc0ZBQXNGLGlCQUFpQiw2QkFBNkIsbUJBQW1CLEVBQUUsY0FBYyxlQUFlLGNBQWMsZUFBZSxpQkFBaUIsbUNBQW1DLDhKQUE4SixrQ0FBa0MsT0FBTyxjQUFjLEdBQUcsTUFBTSxpQ0FBaUM7QUFDcnA4bkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsT0FBTyxLQUFLLE1BQU07QUFDMUIsUUFBUSxPQUFPLEtBQUssU0FBUztBQUM3QixRQUFRLFFBQVEsS0FBSyxTQUFTO0FBQzlCLFFBQVEsUUFBUSxLQUFLLE1BQU07QUFDM0IsUUFBUSxPQUFPLEtBQUssTUFBTTtBQUMxQixPQUFPLHVCQUF1Qiw4REFBOEQsK0VBQStFLEVBQUUsZ0NBQWdDLE1BQU0sSUFBSSxpUEFBaVAsSUFBSSxrTEFBa0wsbUJBQW1CLHVCQUF1QixnRUFBZ0UsU0FBUyxpQkFBaUIsNkJBQTZCLGVBQWUsYUFBYSxPQUFPLGlCQUFpQiwwQkFBMEIsa0JBQWtCLFlBQVksbUNBQW1DLDJHQUEyRyxZQUFZLGtHQUFrRyxvQ0FBb0MsNFBBQTRQLEdBQUcsU0FBUyx1QkFBdUIsU0FBUyxvQ0FBb0MscUNBQXFDLDZCQUE2QiwyQkFBMkIsaUJBQWlCLGNBQWMsMkhBQTJILGlDQUFpQyx1QkFBdUIsK0JBQStCLHFCQUFxQiwrQkFBK0IsRUFBRSxZQUFZLHNCQUFzQixvRkFBb0YsOERBQThELG9JQUFvSSx1RkFBdUYsbURBQW1ELFdBQVcsaUhBQWlILG1HQUFtRyxtQ0FBbUMsOElBQThJLGdCQUFnQiw0QkFBNEIscUNBQXFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sOERBQThELGVBQWUsdUVBQXVFLHdCQUF3QixnREFBZ0QsY0FBYywrQkFBK0IsY0FBYyw0QkFBNEIsaUJBQWlCLHVGQUF1RixnQ0FBZ0MsMENBQTBDLG9FQUFvRSwrQkFBK0IsaVBBQWlQLGVBQWUsSUFBSSxzS0FBc0ssSUFBSSxtREFBbUQsMkJBQTJCLGdSQUFnUixXQUFXLG1EQUFtRCxFQUFFLGlCQUFpQixnQkFBZ0IsY0FBYywwREFBMEQsWUFBWSw0Q0FBNEMsb0NBQW9DLHFDQUFxQyxxREFBcUQsb0NBQW9DLGNBQWMsNkJBQTZCLHVCQUF1QiwyQkFBMkIsZ0JBQWdCLGFBQWEsYUFBYSxjQUFjLGdEQUFnRCxvQkFBb0IsMFdBQTBXLHdFQUF3RSxpQkFBaUIsK0NBQStDLGlCQUFpQiw4QkFBOEIsNkJBQTZCLE9BQU8sY0FBYyxhQUFhLE9BQU8sNERBQTRELEVBQUUsZ0JBQWdCLGFBQWEsNENBQTRDLDZCQUE2QixFQUFFLHFLQUFxSywwSkFBMEosb0NBQW9DLDJGQUEyRixpQkFBaUIsZ0JBQWdCLHFEQUFxRCxhQUFhLG1FQUFtRSxvQkFBb0IseUJBQXlCLCtFQUErRSwwQkFBMEIsWUFBWSw0QkFBNEIsa0RBQWtELDJCQUEyQixZQUFZLCtCQUErQiwwREFBMEQsZ0JBQWdCLDZDQUE2QyxxQ0FBcUMsS0FBSyxtR0FBbUcsZ0lBQWdJLEVBQUUseUJBQXlCLGNBQWMsZ0RBQWdELG9HQUFvRyx1R0FBdUcsR0FBRyxnRUFBZ0Usd09BQXdPLFdBQVcsS0FBSyxnQ0FBZ0Msb0JBQW9CLGdCQUFnQixvQkFBb0IsMEVBQTBFLGdCQUFnQixvQkFBb0IsRUFBRSxFQUFFLHdCQUF3QixNQUFNLGdCQUFnQixZQUFZLFlBQVksMEJBQTBCLEVBQUUscUhBQXFILGtDQUFrQyxLQUFLLFNBQVMscUNBQXFDLG9CQUFvQixnQkFBZ0IsK0JBQStCLG1HQUFtRyw4QkFBOEIsdUpBQXVKLHNCQUFzQixpSEFBaUgsZ0NBQWdDLGNBQWMsNEJBQTRCLDRCQUE0QixHQUFHLG9CQUFvQixrQkFBa0IsV0FBVywrQkFBK0IsSUFBSSwrREFBK0QsaUJBQWlCLGFBQWEsR0FBRyx5Q0FBeUMsb0JBQW9CLGFBQWEsRUFBRSx1QkFBdUIsZ0JBQWdCLGNBQWMsWUFBWSwyREFBMkQsWUFBWSxtREFBbUQsMkNBQTJDLGtCQUFrQix3Q0FBd0MsK0RBQStELE9BQU8sOEJBQThCLDBCQUEwQiw2QkFBNkIsb0JBQW9CLFVBQVUsMkJBQTJCLDZCQUE2QiwyQkFBMkIsdUNBQXVDLE1BQU0sVUFBVSxrQkFBa0IsOEVBQThFLFlBQVksV0FBVywwQ0FBMEMscUJBQXFCLHVDQUF1QyxnQkFBZ0IsbUZBQW1GLFlBQVksV0FBVyx5Q0FBeUMsR0FBRyxFQUFFLFFBQVEsWUFBWSwrQkFBK0IsSUFBSSx1Q0FBdUMsSUFBSSxvSkFBb0osT0FBTyxpQ0FBaUMsWUFBWSx1QkFBdUIsc0lBQXNJLFNBQVMsR0FBRyxJQUFJLDBCQUEwQixZQUFZLEVBQUUsSUFBSSxTQUFTLE1BQU0saUJBQWlCLGNBQWMsMEJBQTBCLDRCQUE0QixrQkFBa0IsUUFBUSxrQkFBa0Isc0JBQXNCLDBFQUEwRSwyRkFBMkYscUJBQXFCLEVBQUUsNkNBQTZDLG9FQUFvRSw2R0FBNkcsRUFBRSwyREFBMkQsSUFBSSwwQkFBMEIsOENBQThDLGFBQWEscUJBQXFCLGFBQWEsdUNBQXVDLEVBQUUsNkJBQTZCLG1CQUFtQixFQUFFLEVBQUUsZUFBZSx1QkFBdUIsa0NBQWtDLElBQUksK0JBQStCLFlBQVksYUFBYSxZQUFZLHVCQUF1QiwwSEFBMEgsU0FBUyxHQUFHLHlCQUF5QixVQUFVLHFCQUFxQixhQUFhLCtCQUErQixFQUFFLE1BQU0sb0JBQW9CLHNDQUFzQyxJQUFJLDBKQUEwSixJQUFJLHlCQUF5QixhQUFhLElBQUksZ0lBQWdJLHFCQUFxQiw2QkFBNkIsS0FBSyw2Q0FBNkMseUJBQXlCLG9EQUFvRCwwQ0FBMEMsYUFBYSxpREFBaUQsYUFBYSxtQkFBbUIsK0JBQStCLEVBQUUsZ0JBQWdCLGtFQUFrRSxtQ0FBbUMsdUJBQXVCLHlCQUF5QixTQUFTLEVBQUUsOEhBQThILEVBQUUsbUJBQW1CLHNCQUFzQix5QkFBeUIsaUNBQWlDLEVBQUUsaUNBQWlDLElBQUksb0NBQW9DLDBCQUEwQixRQUFRLG1CQUFtQiwrREFBK0QsNkJBQTZCLFNBQVMsTUFBTSxvQkFBb0IsMkdBQTJHLEVBQUUsRUFBRSwwQkFBMEIsZUFBZSxtR0FBbUcsbUJBQW1CLGVBQWUsd0JBQXdCLGVBQWUsd0JBQXdCLGlCQUFpQixvQ0FBb0MsdUJBQXVCLElBQUksY0FBYyxTQUFTLGVBQWUsWUFBWSxtQkFBbUIsS0FBSyx3Q0FBd0Msa0JBQWtCLGdIQUFnSCx1REFBdUQsMEJBQTBCLFVBQVUsaURBQWlELGtEQUFrRCxTQUFTLEVBQUUsU0FBUyxpQkFBaUIscUJBQXFCLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLElBQUksaUJBQWlCLG1CQUFtQiw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQiwyREFBMkQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSxxQkFBcUIsTUFBTSxxQ0FBcUMsb0RBQW9ELGlHQUFpRyx1RkFBdUYsa0JBQWtCLDhKQUE4SixHQUFHLGtCQUFrQiwwQ0FBMEMsSUFBSSxzQkFBc0IsbUJBQW1CLHNCQUFzQiwyQ0FBMkMsSUFBSSxlQUFlLDBMQUEwTCxvQkFBb0IsTUFBTSw2Q0FBNkMseUNBQXlDLGdCQUFnQix5REFBeUQsNERBQTRELG1GQUFtRixZQUFZLEdBQUcsMEZBQTBGLG9EQUFvRCxzQkFBc0IsRUFBRSxnREFBZ0Qsb0JBQW9CLEVBQUUsMkRBQTJELDJCQUEyQixLQUFLLG9EQUFvRCxvQkFBb0IsaUNBQWlDLDJCQUEyQixzQ0FBc0MsRUFBRSxnQkFBZ0IsTUFBa0MsMkVBQTJFLHFDQUFxQyxVQUFVLCtDQUErQyxNQUFNLG9CQUFvQixNQUFNLHdCQUF3QixXQUFXLEdBQUcscUNBQXFDLGdGQUFnRixnQkFBZ0IsRUFBRSxhQUFhLHFCQUFxQiwrREFBK0QscUhBQXFILGtCQUFrQiwyQkFBMkIsS0FBSyxNQUFNLEdBQUcsYUFBYSxnQkFBZ0IsbUNBQW1DLHdJQUF3SSwrREFBK0Qsd0JBQXdCLHFFQUFxRSxvQkFBb0IscUJBQXFCLDhEQUE4RCxrQkFBa0IsK0NBQStDLFVBQVUsR0FBRyxnQkFBZ0Isd0JBQXdCLDhEQUE4RCxrQkFBa0IsK0NBQStDLFVBQVUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLGNBQWMscUJBQXFCLHdFQUF3RSw0REFBNEQsK2NBQStjLEVBQUUscUZBQXFGLDRIQUE0SCwrQkFBK0IsZ0RBQWdELCtEQUErRCxFQUFFLEVBQUUsR0FBRyxtQkFBbUIsY0FBYyxxQkFBcUIsd0VBQXdFLDREQUE0RCwrM0JBQSszQixFQUFFLHFGQUFxRix3SEFBd0gsK0JBQStCLGdEQUFnRCwrREFBK0QsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLGNBQWMsbUJBQW1CLDBFQUEwRSx5SEFBeUgsK2lCQUEraUIsRUFBRSxtQkFBbUIsY0FBYyxtQkFBbUIsMEVBQTBFLHFIQUFxSCw2YkFBNmIsRUFBRSxtQkFBbUIsZUFBZSxxQkFBcUIsMkVBQTJFLGdmQUFnZixvREFBb0QsMkNBQTJDLEtBQUssV0FBVywyQkFBMkIsZUFBZSxxQkFBcUIsMkVBQTJFLGlFQUFpRSxzQkFBc0IsRUFBRSx3REFBd0QsS0FBSyxXQUFXLDJCQUEyQiwrQkFBK0IsY0FBYyx1QkFBdUIseUhBQXlILFNBQVMsa0NBQWtDLElBQUksMEJBQTBCLElBQUksMENBQTBDLE1BQU0sc0JBQXNCLHNCQUFzQixPQUFPLHVEQUF1RCxFQUFFLDZCQUE2QixjQUFjLHVCQUF1QiwrSUFBK0ksU0FBUyxrQ0FBa0MsSUFBSSwwQkFBMEIsSUFBSSxpRUFBaUUsTUFBTSxtQkFBbUIsc0JBQXNCLG1DQUFtQywrQkFBK0IseUJBQXlCLDhCQUE4QixFQUFFLE1BQU0sWUFBWSwrQkFBK0IsSUFBSSwwQkFBMEIsSUFBSSx1RkFBdUYsT0FBTyxlQUFlLE1BQU0sV0FBVywwQkFBMEIsWUFBWSxjQUFjLHNCQUFzQixtREFBbUQsb0ZBQW9GLEVBQUUsMkRBQTJELElBQUksZ1FBQWdRLElBQUksNEZBQTRGLFlBQVksd01BQXdNLHVCQUF1QixtRUFBbUUsU0FBUyx3QkFBd0IsbUJBQW1CLFNBQVMsbURBQW1ELHFDQUFxQyw2QkFBNkIsaURBQWlELGFBQWEsMkJBQTJCLDZEQUE2RCx1REFBdUQscUZBQXFGLGdFQUFnRSw4REFBOEQsRUFBRSw2QkFBNkIsbUJBQW1CLEVBQUUsRUFBRSxlQUFlLFVBQVUsWUFBWSxFQUFFLHdDQUF3QyxlQUFlLElBQUksd0NBQXdDLElBQUksVUFBVSxNQUFNLG1DQUFtQywrQkFBK0Isa0JBQWtCLEVBQUUsT0FBTyx3QkFBd0IscUNBQXFDLFVBQVUsa0JBQWtCLFVBQVUsOEJBQThCLGFBQWEsb0JBQW9CLGNBQWMsRUFBRSxlQUFlLElBQUksaUNBQWlDLHdFQUF3RSw2QkFBNkIsc0JBQXNCLHFHQUFxRyxvQkFBb0IsRUFBRSw4Q0FBOEMsSUFBSSxtQ0FBbUMscUJBQXFCLHFCQUFxQiwyQkFBMkIsZUFBZSxTQUFTLDZCQUE2QiwrQkFBK0Isd0NBQXdDLEVBQUUsR0FBRyxlQUFlLGdDQUFnQyxlQUFlLElBQUksc0pBQXNKLCtHQUErRyxtREFBbUQsVUFBVSxrQkFBa0IsaUdBQWlHLGFBQWEsZ0JBQWdCLGlGQUFpRixZQUFZLDhCQUE4QixJQUFJLDBDQUEwQyxpQkFBaUIsY0FBYyxFQUFFLElBQUkscUNBQXFDLFFBQVEsZ0NBQWdDLFVBQVUsT0FBTyxVQUFVLFVBQVUsdUJBQXVCLDRCQUE0QixjQUFjLHNCQUFzQiwwQ0FBMEMsZ0JBQWdCLEVBQUUsSUFBSSxtQ0FBbUMsSUFBSSxhQUFhLElBQUksb0dBQW9HLHVDQUF1QyxlQUFlLGFBQWEseUZBQXlGLG9DQUFvQyxvQ0FBb0MsV0FBVyxLQUFLLDhCQUE4QixpQkFBaUIsNEJBQTRCLFdBQVcsbUNBQW1DLHdCQUF3QixtQ0FBbUMsaUhBQWlILG9DQUFvQyxlQUFlLHNCQUFzQiwwQ0FBMEMsV0FBVywwQkFBMEIsNkVBQTZFLHNFQUFzRSxnQ0FBZ0MsU0FBUyw0REFBNEQsMEJBQTBCLFVBQVUsVUFBVSxXQUFXLFVBQVUsNkJBQTZCLEdBQUcsdUNBQXVDLDBCQUEwQixFQUFFLElBQUksMkJBQTJCLDBCQUEwQixRQUFRLElBQUksNkNBQTZDLHdGQUF3RixnRUFBZ0UsUUFBUSxVQUFVLCtCQUErQix1Q0FBdUMscUJBQXFCLGlEQUFpRCxtQ0FBbUMseUJBQXlCLHdNQUF3TSxnUUFBZ1EsNkRBQTZELElBQUksV0FBVyw4REFBOEQsbUNBQW1DLG1DQUFtQyxZQUFZLGNBQWMseUZBQXlGLGtEQUFrRCxrQ0FBa0MsV0FBVyxxREFBcUQscUJBQXFCLDBCQUEwQixzQkFBc0IsNENBQTRDLHNCQUFzQix5QkFBeUIsc0JBQXNCLGdCQUFnQiw2Q0FBNkMsWUFBWSxxQkFBcUIsY0FBYyxpQkFBaUIsT0FBTywrREFBK0QsTUFBTSx3QkFBd0IsWUFBWSxHQUFHLFFBQVEsSUFBSSxnREFBZ0Qsc0JBQXNCLGdPQUFnTyxtREFBbUQsd0RBQXdELGVBQWUsNkJBQTZCLDRCQUE0QixFQUFFLE9BQU8saUNBQW1CLCtQQUErUCxnSkFBZ0osc0NBQXNDLDhLQUE4SyxlQUFlLHdCQUF3QixRQUFRLHNDQUFzQyxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLEdBQUcsU0FBUyxXQUFXLGdIQUFnSCxxQkFBcUIsaUNBQWlDLHNDQUFzQyxrQkFBa0IsU0FBUyxpQ0FBaUMsZ0VBQWdFLE1BQU0sMkRBQTJELGVBQWUsK0JBQStCLGlFQUFpRSx1QkFBdUIsdUNBQXVDLDhCQUE4QixRQUFRLGtEQUFrRCx3QkFBd0IsY0FBYyxpQkFBaUIsMEJBQTBCLHNDQUFzQyw0REFBNEQsd0JBQXdCLGNBQWMsaUJBQWlCLDBCQUEwQixRQUFRLDZDQUE2QyxvQkFBb0IsZ0dBQWdHLG1DQUFtQywrR0FBK0csc0VBQXNFLHlGQUF5Rix1QkFBdUIseUVBQXlFLHdCQUF3Qix5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSxlQUFlLDZMQUE2TCx3RUFBd0UsK0NBQStDLGdFQUFnRSxvRUFBb0UsRUFBRSwwQkFBMEIsZUFBZSxZQUFZLG1CQUFtQixLQUFLLHdDQUF3QyxrQkFBa0IsZ0hBQWdILHVEQUF1RCwwQkFBMEIsVUFBVSxpREFBaUQsa0RBQWtELFNBQVMsRUFBRSxTQUFTLGlCQUFpQixxQkFBcUIsZ0hBQWdILHFCQUFxQixpQ0FBaUMsc0NBQXNDLGtCQUFrQixTQUFTLGlDQUFpQyxnRUFBZ0UsSUFBSSxtQkFBbUIsUUFBUSxvRkFBb0YsZUFBZSw4QkFBOEIsd0VBQXdFLCtDQUErQywwRUFBMEUsNERBQTRELEdBQUcsMEJBQTBCLGVBQWUsdUxBQXVMLDJFQUEyRSw0RUFBNEUsNERBQTRELHFEQUFxRCwwRkFBMEYsa0VBQWtFLDhEQUE4RCxFQUFFLCtDQUErQyxlQUFlLHFPQUFxTywwSUFBMEksTUFBTSx1QkFBdUIsTUFBTSxXQUFXLGdDQUFnQyxrQkFBa0IsTUFBa0MsdURBQXVELHFEQUFxRCx3REFBd0QscURBQXFELGdCQUFnQixzQkFBc0IseUZBQXlGLHFDQUFxQyxxREFBcUQsZUFBZSxvRkFBb0YsMEJBQTBCLFVBQVUsc0pBQXNKLGFBQWEsSUFBSSxxREFBcUQsZUFBZSxNQUFNLDBIQUEwSCxRQUFRLEVBQUUsSUFBSSx1QkFBdUIsUUFBUSwwREFBMEQsb0RBQW9ELDBDQUEwQyxPQUFPLDJFQUEyRSxnQ0FBZ0MsNkNBQTZDLDhHQUE4RywwQkFBMEIsRUFBRSw4REFBOEQsd0NBQXdDLHdGQUF3RiwyRUFBMkUsNkNBQTZDLHNCQUFzQixlQUFlLDhEQUE4RCwrQkFBK0IsMENBQTBDLFNBQVMsNkJBQTZCLG9CQUFvQixlQUFlLGdDQUFnQyx3RUFBd0UseUJBQXlCLDBDQUEwQyx3Q0FBd0MsbUJBQW1CLGtCQUFrQixTQUFTLHdKQUF3SixrRUFBa0UsZUFBZSxvQkFBb0IsOElBQThJLDBCQUEwQiwwQkFBMEIsa0RBQWtELElBQUksaUNBQWlDLHVCQUF1QixNQUFNLDhCQUE4QixNQUFNLFVBQVUsVUFBVSxTQUFTLFlBQVksU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxjQUFjLGtFQUFrRSxLQUFLLEtBQUssdUJBQXVCLGVBQWUsdUJBQXVCLFdBQVcsSUFBSSxRQUFRLDhCQUE4QixJQUFJLGlDQUFpQyx1QkFBdUIsTUFBTSw4QkFBOEIsaUNBQWlDLElBQUksUUFBUSxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsT0FBTyxvQkFBb0IsOERBQThELDZCQUE2QixvQkFBb0IsaUNBQWlDLHVCQUF1Qix1Q0FBdUMseUJBQXlCLDhCQUE4QixtSEFBbUgsaURBQWlELEVBQUUsb0NBQW9DLDRCQUE0QixzRUFBc0Usc0VBQXNFLDJFQUEyRSxhQUFhLEdBQUcsbUJBQW1CLHlDQUF5QyxnQ0FBZ0MsOERBQThELG9CQUFvQiw4Q0FBOEMsMFFBQTBRLG9CQUFvQixtSUFBbUksbUVBQW1FLEVBQUUsSUFBSSxFQUFFLDRCQUE0QiwrQkFBK0IsR0FBRyxFQUFFLEVBQUUsRUFBRSxvQkFBb0Isb0JBQW9CLGtCQUFrQixvQkFBb0Isb0JBQW9CLCtCQUErQixJQUFJLEdBQUcsRUFBRSxlQUFlLHVCQUF1QiwyRUFBMkUsOElBQThJLHNCQUFzQiw4TUFBOE0scUVBQXFFLDBGQUEwRixLQUFLLGVBQWUsMkJBQTJCLGNBQWMsbUJBQW1CLDBFQUEwRSxzSUFBc0ksa1BBQWtQLEVBQUUsbUJBQW1CLGVBQWUscUJBQXFCLDJFQUEyRSx3b0JBQXdvQixvREFBb0Qsc0ZBQXNGLEtBQUssV0FBVywyQkFBMkIsY0FBYyxxRUFBcUUsdUNBQXVDLFdBQVcsc0VBQXNFLEtBQUssd0JBQXdCLElBQUkscUJBQXFCLFNBQVMsR0FBRyxlQUFlLDRHQUE0RyxvRUFBb0UsTUFBTSwrQkFBK0IsbUhBQW1ILGlNQUFpTSxtRUFBbUUsK0VBQStFLDRDQUE0QyxtQkFBbUIsK0NBQStDLG9CQUFvQiwwRUFBMEUsMktBQTJLLGtCQUFrQixrRUFBa0UsK0lBQStJLGlHQUFpRyxrQkFBa0IsbUZBQW1GLGlDQUFpQyxxREFBcUQsZUFBZSxrREFBa0QsMkVBQTJFLGVBQWUsc0JBQXNCLGVBQWUsK0RBQStELHNMQUFzTCwwQkFBMEIsY0FBYyxtQkFBbUIsMEVBQTBFLHFIQUFxSCxxeERBQXF4RCxFQUFFLG1CQUFtQixPQUFPLGlDQUFtQixzUEFBc1AsZ0pBQWdKLGtCQUFrQiw2SkFBNkosNkVBQTZFLDZJQUE2SSxXQUFXLHFCQUFxQix5QkFBeUIsR0FBRyxPQUFPLFVBQVUsT0FBTyxzQkFBc0IsT0FBTyxHQUFHLHNFQUFzRSxrSEFBa0gsdUJBQXVCLHVCQUF1Qix1QkFBdUIsMkNBQTJDLG9CQUFvQiwyQkFBMkIsc0VBQXNFLHFEQUFxRCwrREFBK0QsTUFBcUIsQ0FBQyxDQUFpRSxFQUFFLG1IQUFtSCxxQkFBcUIsd0JBQXdCLGtEQUFrRCxLQUE2QyxNQUFNLHdDQUF3QyxxQkFBcUIsNkJBQTZCLGFBQWEsNEJBQTRCLG9HQUFvRywyQ0FBMkMsd0JBQXdCLDhFQUE4RSxzQkFBc0IsZ0NBQWdDLDZEQUE2RCxpR0FBaUcsa0JBQWtCLDZEQUE2RCxlQUFlLGdFQUFnRSxzRUFBc0UsR0FBRyx1Q0FBdUMsRUFBRSxvRkFBb0YsMkJBQTJCLHFEQUFxRCw0QkFBNEIsTUFBTSwrQkFBK0IsNkJBQTZCLDJEQUEyRCxlQUFlLG1JQUFtSSx1REFBdUQsd0RBQXdELGtEQUFrRCxjQUFjLGlHQUFpRyxrQkFBa0Isb01BQW9NLGFBQWEsNkxBQTZMLGtCQUFrQixvQ0FBb0MsdURBQXVELGdEQUFnRCwySUFBMkksOENBQThDLEVBQUUsaUJBQWlCLGtCQUFrQixhQUFhLGdDQUFnQyx1RkFBdUYsb0JBQW9CLG1CQUFtQiwyREFBMkQsMENBQTBDLGtGQUFrRixFQUFFLHdCQUF3QixxR0FBcUcseUJBQXlCLDhCQUE4QixrQ0FBa0MsK0RBQStELDJCQUEyQixRQUFRLDRGQUE0Rix3REFBd0QsOERBQThELDZEQUE2RCwyQkFBMkIsT0FBTyxxRUFBcUUseUNBQXlDLCtGQUErRix5Q0FBeUMsa0ZBQWtGLElBQUksaUdBQWlHLEtBQTJDLG1CQUFtQiwrQ0FBK0MsaUZBQWlGLDBHQUEwRyxzQ0FBc0Msc0JBQXNCLG1CQUFtQix5QkFBeUIsWUFBWSxFQUFFLEVBQUUsc0RBQXNELGdDQUFnQyxnQ0FBZ0MsOEJBQThCLG1HQUFtRyxzQkFBc0Isd0ZBQXdGLG1EQUFtRCxnQkFBZ0IsMkRBQTJELEdBQUcsOENBQThDLHlDQUF5QyxrRkFBa0YsRUFBRSxnR0FBZ0cscUJBQXFCLHFEQUFxRCxnQkFBZ0IsNEJBQTRCLG9DQUFvQyxvRUFBb0Usb0hBQW9ILEVBQUUsMEJBQTBCLGVBQWUsd0dBQXdHLCtCQUErQixHQUFHLGVBQWUsRUFBRSx5REFBeUQsR0FBRywwQkFBMEIsT0FBTyx5RUFBeUUsR0FBRyxtQkFBbUIseURBQXlELGNBQWMsRUFBRSw4S0FBOEssNERBQTRELHVJQUF1SSxFQUFFLHNIQUFzSCxlQUFlLDJCQUEyQiw4QkFBOEIsZUFBZSwrREFBK0QsbURBQW1ELDJCQUEyQixnQkFBZ0IsMkNBQTJDLGtCQUFrQix1QkFBdUIsaUJBQWlCLDhCQUE4QixXQUFXLGFBQWEsaUZBQWlGLHVCQUF1QixRQUFRLDhDQUE4Qyw0REFBNEQsb0VBQW9FLG1CQUFtQixvQ0FBb0MsZUFBZSxJQUFJLGVBQWUsRUFBRSxpQkFBaUIsb0NBQW9DLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxpQkFBaUIsbUJBQW1CLDZCQUE2QixtQkFBbUIsdUZBQXVGLFlBQVksbUJBQW1CLElBQUksZ0JBQWdCLDJEQUEyRCxPQUFPLFNBQVMsU0FBUyxRQUFRLElBQUksOEJBQThCLFFBQVEsY0FBYyxVQUFVLHFCQUFxQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsOEpBQThKLEdBQUcsK0NBQStDLDRCQUE0QixjQUFjLHNNQUFzTSx3RUFBd0UsbUJBQW1CLGlHQUFpRywwQ0FBMEMsNEJBQTRCLCtDQUErQyx1QkFBdUIsT0FBTyxrQ0FBa0MseUJBQXlCLE9BQU8sbUVBQW1FLHlCQUF5QixtRkFBbUYsaUJBQWlCLGlCQUFpQixHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsd0ZBQXdGLDRCQUE0QiwrQkFBK0IsR0FBRyxtQ0FBbUMsaUJBQWlCLG9DQUFvQyx1QkFBdUIsSUFBSSxjQUFjLFNBQVMsZUFBZSxtQkFBbUIsaUNBQWlDLGlCQUFpQixvR0FBb0csdUJBQXVCLHlKQUF5SixHQUFHLGlCQUFpQixNQUFNLHFDQUFxQyxvREFBb0QsaUdBQWlHLHVGQUF1RixrQkFBa0IsZUFBZSxrQkFBa0IsMENBQTBDLElBQUksc0JBQXNCLDBEQUEwRCxrQ0FBa0MsR0FBRyxRQUFRLHlCQUF5QixHQUFHLE9BQU8sRUFBRSxnQ0FBZ0MsR0FBRyxpQkFBaUIsRUFBRSxpQ0FBaUMsR0FBRyxPQUFPLEVBQUUsMkJBQTJCLEdBQUcsT0FBTyxFQUFFLGlDQUFpQyxHQUFHLHFCQUFxQixFQUFFLHFDQUFxQyxHQUFHLHlCQUF5QixFQUFFLCtCQUErQixHQUFHLG1CQUFtQixFQUFFLGtDQUFrQyxHQUFHLHNCQUFzQixFQUFFLG9DQUFvQyxHQUFHLHdCQUF3QixFQUFFLG9DQUFvQyxHQUFHLGdCQUFnQixFQUFFLHdDQUF3QyxHQUFHLGdCQUFnQixFQUFFLGtDQUFrQyxHQUFHLE9BQU8sRUFBRSxtQ0FBbUMsR0FBRyxPQUFPLEVBQUUsb0NBQW9DLEdBQUcsT0FBTyxFQUFFLHVDQUF1QyxHQUFHLE9BQU8sRUFBRSx1Q0FBdUMsR0FBRyxPQUFPLEVBQUUsd0NBQXdDLEdBQUcsT0FBTyxFQUFFLHdDQUF3QyxHQUFHLE9BQU8sRUFBRSwwQ0FBMEMsTUFBTSw2Q0FBNkMsTUFBTSxtREFBbUQsR0FBRyxlQUFlLEVBQUUsR0FBRyxlQUFlLDRPQUE0TywyQkFBMkIsNkRBQTZELG1FQUEyQixDQUFDLDBDQUEwQyxtSUFBbUksNENBQTRDLElBQUksMkNBQTJDLE1BQU0sMkVBQTJFLGtEQUFrRCxVQUFVLE9BQU8sK0ZBQStGLE1BQU0sMkJBQTJCLHFHQUFxRyx3QkFBd0IscUdBQXFHLEVBQUUsMkNBQTJDLDZEQUE2RCxlQUFlLG9CQUFvQixLQUFLLHNCQUFzQixFQUFFLG9CQUFvQixLQUFLLGtDQUFrQyxFQUFFLG9CQUFvQixLQUFLLGdCQUFnQixFQUFFLG9CQUFvQixLQUFLLHFCQUFxQixFQUFFLG9CQUFvQixLQUFLLGNBQWMsMEJBQTBCLEVBQUUsb0JBQW9CLEtBQUssOEZBQThGLGFBQWEsRUFBRSwwQ0FBMEMsd0JBQXdCLEtBQUssdURBQXVELEVBQUUsMkJBQTJCLEtBQUsscUNBQXFDLGtCQUFrQixxQ0FBcUMsRUFBRSxFQUFFLGlCQUFpQixvQkFBb0IsS0FBSywwQkFBMEIsRUFBRSxvQkFBb0IsS0FBSywrQkFBK0IsRUFBRSxvQkFBb0IsS0FBSyx3RUFBd0UsRUFBRSxvQkFBb0IsS0FBSyxzQkFBc0IsRUFBRSxvQkFBb0IsS0FBSyxzQkFBc0IsRUFBRSxvQkFBb0IsS0FBSyx5Q0FBeUMsRUFBRSxvQkFBb0IsS0FBSyxxQkFBcUIsRUFBRSxvQkFBb0IsS0FBSyxxQkFBcUIsRUFBRSxvQkFBb0IsS0FBSyxzQkFBc0IsRUFBRSxvQkFBb0IsS0FBSyxzQkFBc0IsRUFBRSxvQkFBb0IsS0FBSyxvQ0FBb0MsRUFBRSxvQkFBb0IsS0FBSyw0QkFBNEIsOEJBQThCLGlDQUFpQyxFQUFFLG9CQUFvQixLQUFLLGNBQWMsRUFBRSxxQkFBcUIsS0FBSyxZQUFZLEVBQUUsZ0tBQWdLLGFBQWEsS0FBSyxtU0FBbVMsRUFBRSxrQkFBa0IsOENBQThDLE1BQU0sNENBQTRDLGdFQUFnRSw2QkFBNkIsbUJBQW1CLHVGQUF1RixZQUFZLG1CQUFtQixJQUFJLGdCQUFnQix1REFBdUQsT0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGNBQWMsVUFBVSwyQkFBMkIsOEpBQThKLHNCQUFzQixxREFBcUQsY0FBYywwTUFBME0sK0tBQStLLE1BQU0sNEJBQTRCLGFBQWEsSUFBSSx1QkFBdUIsSUFBSSxrQ0FBa0MsdUJBQXVCLG9CQUFvQixTQUFTLFNBQVMsUUFBUSxJQUFJLDhCQUE4QixRQUFRLGVBQWUsUUFBUSxhQUFhLEtBQUssRUFBRSxrQkFBa0IseUJBQXlCLDJMQUEyTCxtRUFBbUUsc0VBQXNFLHVIQUF1SCx1REFBdUQsMEJBQTBCLG1CQUFtQixHQUFHLDZCQUE2QiwrQ0FBK0MsMkJBQTJCLGFBQWEsY0FBYyxZQUFZLGlCQUFpQixtR0FBbUcsUUFBUSx1Q0FBdUMscUdBQXFHLDhDQUE4Qyw4Q0FBOEMsMkJBQTJCLHdCQUF3QixvQkFBb0IsWUFBWSxFQUFFLGlDQUFpQyx1QkFBdUIsdUdBQXVHLEdBQUcsU0FBUyxtQkFBbUIsaUdBQWlHLFFBQVEsOENBQThDLDZEQUE2RCx1QkFBdUIsSUFBSSxpQ0FBaUMsdUJBQXVCLE1BQU0sY0FBYyx5QkFBeUIsdUJBQXVCLElBQUksOENBQThDLHVCQUF1QiwrQ0FBK0MsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxpQkFBaUIsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxlQUFlLHlCQUF5QixhQUFhLCtCQUErQiwyQkFBMkIsd0JBQXdCLG9CQUFvQixZQUFZLEVBQUUsaUNBQWlDLHVCQUF1Qix3R0FBd0csR0FBRyxVQUFVLElBQUkseUJBQXlCLENBQUMsMEJBQW1CLG1CQUFtQixrQkFBa0IsQ0FBQywwQkFBbUIsWUFBWSwyQkFBMkIsQ0FBQywwQkFBbUIscUJBQXFCLDZCQUE2QixDQUFDLDBCQUFtQix1QkFBdUIsNEJBQTRCLENBQUMsMEJBQW1CLHNCQUFzQiwwQkFBbUIsOEpBQThKLDBCQUFtQixpQkFBaUIsOENBQTJDLENBQUMsU0FBUyxFQUFDO0FBQzF6bUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qZXR0Y2hlbmcxMDE4L2NvZGUvZHJhbWFsaW5nLXZvY2FiLWxlYXJuaW5nL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX193ZWJwYWNrX21vZHVsZXNfXz17XCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1pbmRpY2F0b3IvZGV2dG9vbHMtaW5kaWNhdG9yLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGBbZGF0YS1uZXh0anMtdG9hc3RdIHtcbiAgJltkYXRhLWhpZGRlbj0ndHJ1ZSddIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLW1lbnUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZW51KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC14bCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XG4gIHotaW5kZXg6IDM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIG91dGxpbmU6IDA7XG4gIG1pbi13aWR0aDogMjQ4cHg7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tYW5pbWF0ZS1vdXQtZHVyYXRpb24tbXMpXG4gICAgdmFyKC0tYW5pbWF0ZS1vdXQtdGltaW5nLWZ1bmN0aW9uKTtcblxuICAmW2RhdGEtcmVuZGVyZWQ9J3RydWUnXSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBzY2FsZTogMTtcbiAgfVxufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1pbm5lciB7XG4gIHBhZGRpbmc6IDZweDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggNnB4O1xuICBoZWlnaHQ6IHZhcigtLXNpemUtMzYpO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBzdmcge1xuICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xuICB9XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWZvb3RlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbiAgcGFkZGluZzogNnB4O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItaXRlbVtkYXRhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItbGFiZWwge1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci12YWx1ZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50IHtcbiAgLS1jb2xvci1wcmltYXJ5OiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XG4gIC0tY29sb3Itc2Vjb25kYXJ5OiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zaXplLTQwKTtcbiAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbWFsbCk7XG4gIHBhZGRpbmc6IDJweDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDEyOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTMpO1xuICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG4gICZbZGF0YS1oYXMtaXNzdWVzPSd0cnVlJ10ge1xuICAgIC0tY29sb3ItcHJpbWFyeTogdmFyKC0tY29sb3ItcmVkLTgwMCk7XG4gICAgLS1jb2xvci1zZWNvbmRhcnk6IHZhcigtLWNvbG9yLXJlZC0xMDApO1xuICB9XG5cbiAgLmRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnQtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS04KTtcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtOCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWNvbG9yLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB9XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLXNob3J0Y3V0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA0cHg7XG5cbiAga2JkIHtcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yMCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XG4gIH1cbn1cblxuLmRldi10b29scy1ncmFiYmluZyB7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG5cbiAgPiAqIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLWluZGljYXRvci9kZXZ0b29scy1pbmRpY2F0b3IuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFO0lBQ0UsYUFBYTtFQUNmO0FBQ0Y7O0FBRUE7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1Q0FBdUM7RUFDdkMsNkNBQTZDO0VBQzdDLDRCQUE0QjtFQUM1Qiw4QkFBOEI7RUFDOUIsZ0NBQWdDO0VBQ2hDLGtCQUFrQjtFQUNsQixtQ0FBbUM7RUFDbkMsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1YsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQjtzQ0FDb0M7O0VBRXBDO0lBQ0UsVUFBVTtJQUNWLFFBQVE7RUFDVjtBQUNGOztBQUVBO0VBQ0UsWUFBWTtFQUNaLFdBQVc7QUFDYjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsZ0NBQWdDO0VBQ2hDLGlCQUFpQjtFQUNqQixtQkFBbUI7O0VBRW5CO0lBQ0UscUJBQXFCO0lBQ3JCLHNCQUFzQjtFQUN4Qjs7RUFFQTtJQUNFLFVBQVU7RUFDWjtBQUNGOztBQUVBO0VBQ0UsdUNBQXVDO0VBQ3ZDLFlBQVk7RUFDWiwyQ0FBMkM7RUFDM0MsV0FBVztBQUNiOztBQUVBO0VBQ0UsZUFBZTtFQUNmLHVDQUF1QztBQUN6Qzs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QiwyQkFBMkI7RUFDM0IsNkJBQTZCO0FBQy9COztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLDJCQUEyQjtFQUMzQiw0QkFBNEI7RUFDNUIsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0Usc0NBQXNDO0VBQ3RDLHdDQUF3QztFQUN4QyxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsUUFBUTtFQUNSLHlCQUF5QjtFQUN6QixzQkFBc0I7RUFDdEIsdUNBQXVDO0VBQ3ZDLDZDQUE2QztFQUM3Qyw0QkFBNEI7RUFDNUIsK0JBQStCO0VBQy9CLFlBQVk7RUFDWiw2QkFBNkI7RUFDN0Isb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsa0NBQWtDOztFQUVsQztJQUNFLHFDQUFxQztJQUNyQyx1Q0FBdUM7RUFDekM7O0VBRUE7SUFDRSxvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLGdDQUFnQztJQUNoQyw0Q0FBNEM7SUFDNUMsa0JBQWtCO0VBQ3BCO0FBQ0Y7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsUUFBUTs7RUFFUjtJQUNFLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsZ0NBQWdDO0lBQ2hDLHVDQUF1QztJQUN2QyxtQ0FBbUM7SUFDbkMsdUNBQXVDO0lBQ3ZDLDZCQUE2QjtJQUM3QixrQkFBa0I7SUFDbEIseUJBQXlCO0lBQ3pCLDJCQUEyQjtFQUM3QjtBQUNGOztBQUVBO0VBQ0UsZ0JBQWdCOztFQUVoQjtJQUNFLG9CQUFvQjtFQUN0QjtBQUNGXCIsc291cmNlc0NvbnRlbnQ6W1wiW2RhdGEtbmV4dGpzLXRvYXN0XSB7XFxuICAmW2RhdGEtaGlkZGVuPSd0cnVlJ10ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1tZW51IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1lbnUpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC14bCk7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcXG4gIHotaW5kZXg6IDM7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG4gIG91dGxpbmU6IDA7XFxuICBtaW4td2lkdGg6IDI0OHB4O1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1hbmltYXRlLW91dC1kdXJhdGlvbi1tcylcXG4gICAgdmFyKC0tYW5pbWF0ZS1vdXQtdGltaW5nLWZ1bmN0aW9uKTtcXG5cXG4gICZbZGF0YS1yZW5kZXJlZD0ndHJ1ZSddIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgc2NhbGU6IDE7XFxuICB9XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWlubmVyIHtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1pdGVtIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgcGFkZGluZzogOHB4IDZweDtcXG4gIGhlaWdodDogdmFyKC0tc2l6ZS0zNik7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gIHN2ZyB7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gIH1cXG5cXG4gICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgIG91dGxpbmU6IDA7XFxuICB9XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWZvb3RlciB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICBwYWRkaW5nOiA2cHg7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWl0ZW1bZGF0YS1zZWxlY3RlZD0ndHJ1ZSddIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItbGFiZWwge1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci12YWx1ZSB7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudCB7XFxuICAtLWNvbG9yLXByaW1hcnk6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcXG4gIC0tY29sb3Itc2Vjb25kYXJ5OiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGdhcDogOHB4O1xcbiAgbWluLXdpZHRoOiB2YXIoLS1zaXplLTQwKTtcXG4gIGhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtYWxsKTtcXG4gIHBhZGRpbmc6IDJweDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgYm9yZGVyLXJhZGl1czogMTI4cHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEzKTtcXG4gIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XFxuXFxuICAmW2RhdGEtaGFzLWlzc3Vlcz0ndHJ1ZSddIHtcXG4gICAgLS1jb2xvci1wcmltYXJ5OiB2YXIoLS1jb2xvci1yZWQtODAwKTtcXG4gICAgLS1jb2xvci1zZWNvbmRhcnk6IHZhcigtLWNvbG9yLXJlZC0xMDApO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnQtaW5kaWNhdG9yIHtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtOCk7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS04KTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1jb2xvci1zZWNvbmRhcnkpO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB9XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLXNob3J0Y3V0IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBnYXA6IDRweDtcXG5cXG4gIGtiZCB7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTIwKTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gIH1cXG59XFxuXFxuLmRldi10b29scy1ncmFiYmluZyB7XFxuICBjdXJzb3I6IGdyYWJiaW5nO1xcblxcbiAgPiAqIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB9XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1wYW5lbC9yZXNpemUvcmVzaXplLWhhbmRsZS5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLnJlc2l6ZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC8qIHRvZG86IGJldHRlciB6IGluZGV4ICovXG4gIHotaW5kZXg6IDEwO1xuICAvKiB0b2RvOiBpcyB0aGlzIG5lZWRlZCAqL1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLnJlc2l6ZS1saW5lIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICAvKiB0b2RvIHNtYXJ0ZXIgeiBpbmRleCAqL1xuICB6LWluZGV4OiAtMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIC8qIGEgbm9ybWFsIGV4aXQgYW5pbWF0aW9uIGN1cnZlLSBhdCB0aGlzIHBvaW50IHRoZSBleGl0IGFuaW1hdGlvbiBpcyAqL1xuICAvKiBpbW1lZGlhdGVseSByZXNwb25zaXZlIHNvIHdlIGRvbid0IG5lZWQgYSBiZXNwb2tlIGN1cnZlICovXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIC8qIHRvZG86IGJldHRlciB2YXI/ICovXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbn1cblxuLyogc3RhcnQgcmVhbGx5IGZhc3QgYmVjYXVzZSB3ZSBzdGFydCBzdXBlciBoaWRkZW4gaW5pdGlhbGx5IGJlaGluZCB0aGUgcGFuZWwsIG90aGVyd2lzZSBmZWVscyBsaWtlIGFuIHVuaW50ZW5kZWQgYW5pbWF0aW9uIGRlbGF5ICovXG4ucmVzaXplLWNvbnRhaW5lcjpob3ZlciB+IC5yZXNpemUtbGluZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMC45KTtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQsXG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0IHtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAyMnB4O1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLyogdG9kbzogZG9uJ3QgaGFyZCBjb2RlIGFsbCB0aGVzZSB2YWx1ZXMvdXNlIHZhcnMgKi9cblxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLFxuLnJlc2l6ZS1jb250YWluZXIudG9wIHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjJweDtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLnRvcCB7XG4gIHRvcDogLTdweDtcbn1cbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbSB7XG4gIGJvdHRvbTogLTdweDtcbn1cbi5yZXNpemUtY29udGFpbmVyLmxlZnQge1xuICBsZWZ0OiAtN3B4O1xufVxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQge1xuICByaWdodDogLTdweDtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIudG9wLWxlZnQsXG4ucmVzaXplLWNvbnRhaW5lci50b3AtcmlnaHQsXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tbGVmdCxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1yaWdodCB7XG4gIHdpZHRoOiAyNnB4O1xuICBoZWlnaHQ6IDI2cHg7XG4gIHotaW5kZXg6IDE1O1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci50b3AtbGVmdCB7XG4gIHRvcDogLTVweDtcbiAgbGVmdDogLTVweDtcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbn1cbi5yZXNpemUtY29udGFpbmVyLnRvcC1yaWdodCB7XG4gIHRvcDogLTVweDtcbiAgcmlnaHQ6IC01cHg7XG4gIGN1cnNvcjogbmVzdy1yZXNpemU7XG59XG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tbGVmdCB7XG4gIGJvdHRvbTogLTVweDtcbiAgbGVmdDogLTVweDtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1yaWdodCB7XG4gIGJvdHRvbTogLTVweDtcbiAgcmlnaHQ6IC01cHg7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG5cbi5yZXNpemUtbGluZS50b3AsXG4ucmVzaXplLWxpbmUuYm90dG9tIHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xufVxuXG4ucmVzaXplLWxpbmUubGVmdCxcbi5yZXNpemUtbGluZS5yaWdodCB7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbn1cblxuLnJlc2l6ZS1saW5lLnRvcCB7XG4gIHRvcDogLTdweDtcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLWJvcmRlci1sZWZ0LCAycHgpKTtcbiAgd2lkdGg6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci1ob3Jpem9udGFsLCA0cHgpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZykgMCAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMThweCk7XG59XG5cbi5yZXNpemUtbGluZS5ib3R0b20ge1xuICBib3R0b206IC03cHg7XG4gIGxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItbGVmdCwgMnB4KSk7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItaG9yaXpvbnRhbCwgNHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xOHB4KTtcbn1cblxuLnJlc2l6ZS1saW5lLmxlZnQge1xuICB0b3A6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItdG9wLCAycHgpKTtcbiAgbGVmdDogLTdweDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItdmVydGljYWwsIDRweCkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKSAwIDAgdmFyKC0tcm91bmRlZC1sZyk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxOHB4KTtcbn1cblxuLnJlc2l6ZS1saW5lLnJpZ2h0IHtcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLXRvcCwgMnB4KSk7XG4gIHJpZ2h0OiAtN3B4O1xuICBoZWlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci12ZXJ0aWNhbCwgNHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZykgMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xOHB4KTtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQ6aG92ZXIgfiAucmVzaXplLWxpbmUucmlnaHQsXG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLmxlZnQsXG4ucmVzaXplLWxpbmUucmlnaHQuZHJhZ2dpbmcsXG4ucmVzaXplLWxpbmUubGVmdC5kcmFnZ2luZyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tOmhvdmVyIH4gLnJlc2l6ZS1saW5lLmJvdHRvbSxcbi5yZXNpemUtY29udGFpbmVyLnRvcDpob3ZlciB+IC5yZXNpemUtbGluZS50b3AsXG4ucmVzaXplLWxpbmUuYm90dG9tLmRyYWdnaW5nLFxuLnJlc2l6ZS1saW5lLnRvcC5kcmFnZ2luZyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3Qgc2hvdyBtdWx0aXBsZSBoYW5kbGVzIGF0IG9uY2VcbiAqIHdlIHNob3VsZCBvbmx5IGV2ZXIgc2hvdyB0aGUgY3VycmVudGx5IHJlc2l6aW5nIGhhbmRsZVxuICogcmVnYXJkbGVzcyBvZiBob3ZlciBzdGF0ZSBcbiAqL1xuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIucmlnaHQ6aG92ZXIgfiAucmVzaXplLWxpbmUucmlnaHQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpO1xufVxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIubGVmdDpob3ZlciB+IC5yZXNpemUtbGluZS5sZWZ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpO1xufVxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIuYm90dG9tOmhvdmVyIH4gLnJlc2l6ZS1saW5lLmJvdHRvbSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG59XG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci50b3A6aG92ZXIgfiAucmVzaXplLWxpbmUudG9wIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLXBhbmVsL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFdBQVc7RUFDWCx5QkFBeUI7RUFDekIsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixXQUFXO0VBQ1gsb0JBQW9CO0VBQ3BCLHVFQUF1RTtFQUN2RSw0REFBNEQ7RUFDNUQsdURBQXVEO0VBQ3ZELHNCQUFzQjtFQUN0Qix1Q0FBdUM7QUFDekM7O0FBRUEsbUlBQW1JO0FBQ25JO0VBQ0UsNERBQTREO0FBQzlEOztBQUVBOztFQUVFLE1BQU07RUFDTixZQUFZO0VBQ1osV0FBVztFQUNYLGlCQUFpQjtBQUNuQjs7QUFFQSxvREFBb0Q7O0FBRXBEOztFQUVFLE9BQU87RUFDUCxXQUFXO0VBQ1gsWUFBWTtFQUNaLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLFNBQVM7QUFDWDtBQUNBO0VBQ0UsWUFBWTtBQUNkO0FBQ0E7RUFDRSxVQUFVO0FBQ1o7QUFDQTtFQUNFLFdBQVc7QUFDYjs7QUFFQTs7OztFQUlFLFdBQVc7RUFDWCxZQUFZO0VBQ1osV0FBVztBQUNiOztBQUVBO0VBQ0UsU0FBUztFQUNULFVBQVU7RUFDVixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLFNBQVM7RUFDVCxXQUFXO0VBQ1gsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osVUFBVTtFQUNWLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UsWUFBWTtFQUNaLFdBQVc7RUFDWCxtQkFBbUI7QUFDckI7O0FBRUE7O0VBRUUsWUFBWTtFQUNaLFdBQVc7RUFDWCw2Q0FBNkM7QUFDL0M7O0FBRUE7O0VBRUUsV0FBVztFQUNYLFlBQVk7RUFDWiw2Q0FBNkM7QUFDL0M7O0FBRUE7RUFDRSxTQUFTO0VBQ1Qsd0NBQXdDO0VBQ3hDLGlEQUFpRDtFQUNqRCxzREFBc0Q7RUFDdEQsMkJBQTJCO0FBQzdCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLHdDQUF3QztFQUN4QyxpREFBaUQ7RUFDakQsc0RBQXNEO0VBQ3RELDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLHNDQUFzQztFQUN0QyxVQUFVO0VBQ1YsZ0RBQWdEO0VBQ2hELHNEQUFzRDtFQUN0RCwyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRSxzQ0FBc0M7RUFDdEMsV0FBVztFQUNYLGdEQUFnRDtFQUNoRCxzREFBc0Q7RUFDdEQsNEJBQTRCO0FBQzlCOztBQUVBOzs7O0VBSUUsd0JBQXdCO0FBQzFCOztBQUVBOzs7O0VBSUUsd0JBQXdCO0FBQzFCOztBQUVBOzs7RUFHRTtBQUNGO0VBQ0UsNEJBQTRCO0FBQzlCO0FBQ0E7RUFDRSwyQkFBMkI7QUFDN0I7QUFDQTtFQUNFLDRCQUE0QjtBQUM5QjtBQUNBO0VBQ0UsMkJBQTJCO0FBQzdCXCIsc291cmNlc0NvbnRlbnQ6W1wiLnJlc2l6ZS1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLyogdG9kbzogYmV0dGVyIHogaW5kZXggKi9cXG4gIHotaW5kZXg6IDEwO1xcbiAgLyogdG9kbzogaXMgdGhpcyBuZWVkZWQgKi9cXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4ucmVzaXplLWxpbmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgLyogdG9kbyBzbWFydGVyIHogaW5kZXggKi9cXG4gIHotaW5kZXg6IC0xO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAvKiBhIG5vcm1hbCBleGl0IGFuaW1hdGlvbiBjdXJ2ZS0gYXQgdGhpcyBwb2ludCB0aGUgZXhpdCBhbmltYXRpb24gaXMgKi9cXG4gIC8qIGltbWVkaWF0ZWx5IHJlc3BvbnNpdmUgc28gd2UgZG9uJ3QgbmVlZCBhIGJlc3Bva2UgY3VydmUgKi9cXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICAvKiB0b2RvOiBiZXR0ZXIgdmFyPyAqL1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbn1cXG5cXG4vKiBzdGFydCByZWFsbHkgZmFzdCBiZWNhdXNlIHdlIHN0YXJ0IHN1cGVyIGhpZGRlbiBpbml0aWFsbHkgYmVoaW5kIHRoZSBwYW5lbCwgb3RoZXJ3aXNlIGZlZWxzIGxpa2UgYW4gdW5pbnRlbmRlZCBhbmltYXRpb24gZGVsYXkgKi9cXG4ucmVzaXplLWNvbnRhaW5lcjpob3ZlciB+IC5yZXNpemUtbGluZSB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDAuOSk7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0LFxcbi5yZXNpemUtY29udGFpbmVyLmxlZnQge1xcbiAgdG9wOiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDIycHg7XFxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcXG59XFxuXFxuLyogdG9kbzogZG9uJ3QgaGFyZCBjb2RlIGFsbCB0aGVzZSB2YWx1ZXMvdXNlIHZhcnMgKi9cXG5cXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20sXFxuLnJlc2l6ZS1jb250YWluZXIudG9wIHtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMjJweDtcXG4gIGN1cnNvcjogbnMtcmVzaXplO1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci50b3Age1xcbiAgdG9wOiAtN3B4O1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20ge1xcbiAgYm90dG9tOiAtN3B4O1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0IHtcXG4gIGxlZnQ6IC03cHg7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLnJpZ2h0IHtcXG4gIHJpZ2h0OiAtN3B4O1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci50b3AtbGVmdCxcXG4ucmVzaXplLWNvbnRhaW5lci50b3AtcmlnaHQsXFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLWxlZnQsXFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLXJpZ2h0IHtcXG4gIHdpZHRoOiAyNnB4O1xcbiAgaGVpZ2h0OiAyNnB4O1xcbiAgei1pbmRleDogMTU7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLnRvcC1sZWZ0IHtcXG4gIHRvcDogLTVweDtcXG4gIGxlZnQ6IC01cHg7XFxuICBjdXJzb3I6IG53c2UtcmVzaXplO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci50b3AtcmlnaHQge1xcbiAgdG9wOiAtNXB4O1xcbiAgcmlnaHQ6IC01cHg7XFxuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tbGVmdCB7XFxuICBib3R0b206IC01cHg7XFxuICBsZWZ0OiAtNXB4O1xcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLXJpZ2h0IHtcXG4gIGJvdHRvbTogLTVweDtcXG4gIHJpZ2h0OiAtNXB4O1xcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLnRvcCxcXG4ucmVzaXplLWxpbmUuYm90dG9tIHtcXG4gIGhlaWdodDogMThweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUubGVmdCxcXG4ucmVzaXplLWxpbmUucmlnaHQge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxufVxcblxcbi5yZXNpemUtbGluZS50b3Age1xcbiAgdG9wOiAtN3B4O1xcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLWJvcmRlci1sZWZ0LCAycHgpKTtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItaG9yaXpvbnRhbCwgNHB4KSk7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKSAwIDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMThweCk7XFxufVxcblxcbi5yZXNpemUtbGluZS5ib3R0b20ge1xcbiAgYm90dG9tOiAtN3B4O1xcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLWJvcmRlci1sZWZ0LCAycHgpKTtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItaG9yaXpvbnRhbCwgNHB4KSk7XFxuICBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tcm91bmRlZC1sZykgdmFyKC0tcm91bmRlZC1sZyk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE4cHgpO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUubGVmdCB7XFxuICB0b3A6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItdG9wLCAycHgpKTtcXG4gIGxlZnQ6IC03cHg7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci12ZXJ0aWNhbCwgNHB4KSk7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKSAwIDAgdmFyKC0tcm91bmRlZC1sZyk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMThweCk7XFxufVxcblxcbi5yZXNpemUtbGluZS5yaWdodCB7XFxuICB0b3A6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItdG9wLCAycHgpKTtcXG4gIHJpZ2h0OiAtN3B4O1xcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyB2YXIoLS1ib3JkZXItdmVydGljYWwsIDRweCkpO1xcbiAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKSAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xOHB4KTtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQ6aG92ZXIgfiAucmVzaXplLWxpbmUucmlnaHQsXFxuLnJlc2l6ZS1jb250YWluZXIubGVmdDpob3ZlciB+IC5yZXNpemUtbGluZS5sZWZ0LFxcbi5yZXNpemUtbGluZS5yaWdodC5kcmFnZ2luZyxcXG4ucmVzaXplLWxpbmUubGVmdC5kcmFnZ2luZyB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbTpob3ZlciB+IC5yZXNpemUtbGluZS5ib3R0b20sXFxuLnJlc2l6ZS1jb250YWluZXIudG9wOmhvdmVyIH4gLnJlc2l6ZS1saW5lLnRvcCxcXG4ucmVzaXplLWxpbmUuYm90dG9tLmRyYWdnaW5nLFxcbi5yZXNpemUtbGluZS50b3AuZHJhZ2dpbmcge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbn1cXG5cXG4vKiBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBzaG93IG11bHRpcGxlIGhhbmRsZXMgYXQgb25jZVxcbiAqIHdlIHNob3VsZCBvbmx5IGV2ZXIgc2hvdyB0aGUgY3VycmVudGx5IHJlc2l6aW5nIGhhbmRsZVxcbiAqIHJlZ2FyZGxlc3Mgb2YgaG92ZXIgc3RhdGUgXFxuICovXFxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIucmlnaHQ6aG92ZXIgfiAucmVzaXplLWxpbmUucmlnaHQge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIubGVmdDpob3ZlciB+IC5yZXNpemUtbGluZS5sZWZ0IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIubm8taG92ZXIuYm90dG9tOmhvdmVyIH4gLnJlc2l6ZS1saW5lLmJvdHRvbSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci50b3A6aG92ZXIgfiAucmVzaXplLWxpbmUudG9wIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtYm91bmRhcnktdHJpZ2dlci5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNHB4O1xuICBwYWRkaW5nOiA0cHggNnB4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQge1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xuICBmb250LXdlaWdodDogNTAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQgLnBsdXMtaWNvbiB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBlYXNlO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQ6aG92ZXIgLnBsdXMtaWNvbiB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIgc3ZnIHtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTRweDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXI6aG92ZXIgc3ZnIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNzAwKTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcltkaXNhYmxlZF0gc3ZnLFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcltkaXNhYmxlZF06aG92ZXIgc3ZnIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24ge1xuICBwYWRkaW5nOiA4cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBtaW4td2lkdGg6IDEyMHB4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBib3gtc2hhZG93OiAwcHggNHB4IDhweCAtNHB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jb2xvci1ncmF5LTkwMCkgNCUsIHRyYW5zcGFyZW50KTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24tcG9zaXRpb25lciB7XG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtaW4td2lkdGg6IDIyMHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtW2RhdGEtZGlzYWJsZWRdIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbSBzdmcge1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZ3JvdXAtbGFiZWwge1xuICBwYWRkaW5nOiA4cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLFFBQVE7RUFDUixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQiw2QkFBNkI7RUFDN0Isb0JBQW9CO0VBQ3BCLFlBQVk7RUFDWix5QkFBeUI7RUFDekIsZUFBZTtFQUNmLHVDQUF1QztBQUN6Qzs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0UsZ0NBQWdDO0FBQ2xDOztBQUVBO0VBQ0UsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0UsV0FBVztFQUNYLFlBQVk7RUFDWixjQUFjO0VBQ2Qsc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UsNEJBQTRCO0FBQzlCOztBQUVBOztFQUVFLDRCQUE0QjtFQUM1QixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osdUNBQXVDO0VBQ3ZDLHVDQUF1QztFQUN2QyxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysc0ZBQXNGO0FBQ3hGOztBQUVBO0VBQ0UsMkJBQTJCO0FBQzdCOztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsNkJBQTZCO0VBQzdCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixXQUFXO0FBQ2I7O0FBRUE7RUFDRSw0QkFBNEI7RUFDNUIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLGlDQUFpQztBQUNuQzs7QUFFQTtFQUNFLDJCQUEyQjtFQUMzQiw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRSw4QkFBOEI7RUFDOUIsK0JBQStCO0FBQ2pDOztBQUVBO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLDRCQUE0QjtBQUM5QlwiLHNvdXJjZXNDb250ZW50OltcIi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBnYXA6IDRweDtcXG4gIHBhZGRpbmc6IDRweCA2cHg7XFxuICBsaW5lLWhlaWdodDogMTZweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xcbiAgYm9yZGVyOiBub25lO1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0IHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0IC5wbHVzLWljb24ge1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dDpob3ZlciAucGx1cy1pY29uIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIgc3ZnIHtcXG4gIHdpZHRoOiAxNHB4O1xcbiAgaGVpZ2h0OiAxNHB4O1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyOmhvdmVyIHN2ZyB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS03MDApO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyW2Rpc2FibGVkXSBzdmcsXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcltkaXNhYmxlZF06aG92ZXIgc3ZnIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93biB7XFxuICBwYWRkaW5nOiA4cHg7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xcbiAgbWluLXdpZHRoOiAxMjBweDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggLTRweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY29sb3ItZ3JheS05MDApIDQlLCB0cmFuc3BhcmVudCk7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLXBvc2l0aW9uZXIge1xcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgcGFkZGluZzogOHB4O1xcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG1pbi13aWR0aDogMjIwcHg7XFxuICBib3JkZXI6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW1bZGF0YS1kaXNhYmxlZF0ge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW0gc3ZnIHtcXG4gIG1hcmdpbi1yaWdodDogMTJweDtcXG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06aG92ZXIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtOmZpcnN0LWNoaWxkIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06bGFzdC1jaGlsZCB7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS1ncm91cC1sYWJlbCB7XFxuICBwYWRkaW5nOiA4cHg7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICBsaW5lLWhlaWdodDogMTZweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1leHBsb3Jlci5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLnNlZ21lbnQtZXhwbG9yZXItY29udGVudCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XG4gIHBhZGRpbmc6IDAgOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xuICBnYXA6IDEycHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyLXBhdGgge1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtIHtcbiAgbWFyZ2luOiA0cHggMDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtOm50aC1jaGlsZChldmVuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZy10b3A6IDEwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG59XG4uc2VnbWVudC1leHBsb3Jlci1pdGVtLXJvdy1tYWluIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItY2hpbGRyZW4tLWludGVuZGVkIHtcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUgc2VsZWN0IHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tcGF0aCB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLXBhdGggc21hbGwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBvcGFjaXR5OiAwO1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLW5hbWUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS04MDApO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlcyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBnYXA6IDhweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVzICsgLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciB7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAgNnB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xuICBmb250LXdlaWdodDogNTAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLW92ZXJyaWRkZW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci0zMDApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbCAuY29kZS1pY29uIHtcbiAgb3BhY2l0eTogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHdpZHRoOiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZS1pbi1vdXQ7XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsOmhvdmVyIC5jb2RlLWljb24ge1xuICBvcGFjaXR5OiAxO1xuICB3aWR0aDogMTJweDtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbDpob3ZlciB7XG4gIGZpbHRlcjogYnJpZ2h0bmVzcygwLjk1KTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tYnVpbHRpbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xuICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tY29sb3ItZ3JheS01MDApO1xuICBoZWlnaHQ6IDI0cHg7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLWJ1aWx0aW4gc3ZnIHtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xufVxuXG4vKiBGb290ZXIgc3R5bGVzICovXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXIge1xuICBwYWRkaW5nOiA4cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24tLWRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLXRleHQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLXdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHBhZGRpbmc6IDAgNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1hbWJlci0zMDApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdG9vbHRpcC0tc20ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRvb2x0aXAtLWxnIHtcbiAgbWluLXdpZHRoOiAyMDBweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnMge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZ2FwOiA4cHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zLXRvb2x0aXAge1xuICB3aWR0aDogMjAwcHg7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1leHBsb3Jlci5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0UseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxXQUFXO0VBQ1gsWUFBWTtBQUNkOztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsNkNBQTZDO0VBQzdDLFNBQVM7QUFDWDs7QUFFQTtFQUNFLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsNkJBQTZCO0VBQzdCLDZCQUE2QjtFQUM3QixtQkFBbUI7RUFDbkIsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsYUFBYTtFQUNiLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLDZDQUE2QztBQUMvQztBQUNBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLDZCQUE2QjtBQUMvQjs7QUFFQTtFQUNFLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLG9CQUFvQjtFQUNwQixXQUFXO0VBQ1gsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsaUJBQWlCO0FBQ25CO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLHFCQUFxQjtFQUNyQixRQUFRO0VBQ1IsVUFBVTtBQUNaO0FBQ0E7RUFDRSw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRSxvQkFBb0I7RUFDcEIsUUFBUTtFQUNSLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLG9CQUFvQjtFQUNwQixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLGNBQWM7RUFDZCxZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2YsdUNBQXVDO0VBQ3ZDLDZCQUE2QjtBQUMvQjtBQUNBO0VBQ0Usb0JBQW9CO0VBQ3BCLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLHdDQUF3QztFQUN4Qyw2QkFBNkI7QUFDL0I7O0FBRUE7RUFDRSxVQUFVO0VBQ1YsY0FBYztFQUNkLFFBQVE7RUFDUixpQ0FBaUM7QUFDbkM7QUFDQTtFQUNFLFVBQVU7RUFDVixXQUFXO0VBQ1gsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0Usd0JBQXdCO0FBQzFCOztBQUVBO0VBQ0UsNkJBQTZCO0VBQzdCLDRCQUE0QjtFQUM1Qix3Q0FBd0M7RUFDeEMsWUFBWTtFQUNaLGVBQWU7QUFDakI7QUFDQTtFQUNFLGdCQUFnQjtFQUNoQixrQkFBa0I7QUFDcEI7O0FBRUEsa0JBQWtCO0FBQ2xCO0VBQ0UsWUFBWTtFQUNaLDJDQUEyQztFQUMzQyxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixRQUFRO0VBQ1IsV0FBVztFQUNYLFlBQVk7RUFDWix1Q0FBdUM7RUFDdkMsdUNBQXVDO0VBQ3ZDLGtCQUFrQjtFQUNsQiw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsdUNBQXVDO0FBQ3pDOztBQUVBO0VBQ0UsaUNBQWlDO0FBQ25DOztBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0Usa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsZUFBZTtFQUNmLFlBQVk7RUFDWixjQUFjO0VBQ2Qsa0NBQWtDO0VBQ2xDLDZCQUE2QjtFQUM3QixtQkFBbUI7RUFDbkIseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLFFBQVE7QUFDVjs7QUFFQTtFQUNFLFlBQVk7QUFDZFwiLHNvdXJjZXNDb250ZW50OltcIi5zZWdtZW50LWV4cGxvcmVyLWNvbnRlbnQge1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIHBhZGRpbmc6IDAgOHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgcGFkZGluZzogMTRweCAxNnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgZ2FwOiAxMnB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhci1wYXRoIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBsaW5lLWhlaWdodDogMjBweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbSB7XFxuICBtYXJnaW46IDRweCAwO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtOm50aC1jaGlsZChldmVuKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcGFkZGluZy10b3A6IDEwcHg7XFxuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcXG4gIHBhZGRpbmctcmlnaHQ6IDRweDtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3ctbWFpbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHdoaXRlLXNwYWNlOiBwcmU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItY2hpbGRyZW4tLWludGVuZGVkIHtcXG4gIHBhZGRpbmctbGVmdDogMTZweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lIHNlbGVjdCB7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLXBhdGgge1xcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1wYXRoIHNtYWxsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiAwO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLW5hbWUge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZXMge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBnYXA6IDhweDtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlcyArIC5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIge1xcbiAgbWFyZ2luLWxlZnQ6IDhweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDAgNnB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcXG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRleHQge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1vdmVycmlkZGVuIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTMwMCk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbCAuY29kZS1pY29uIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBtYXJnaW4tbGVmdDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2UtaW4tb3V0O1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsOmhvdmVyIC5jb2RlLWljb24ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgbWFyZ2luLWxlZnQ6IDRweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbDpob3ZlciB7XFxuICBmaWx0ZXI6IGJyaWdodG5lc3MoMC45NSk7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLWJ1aWx0aW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gIGhlaWdodDogMjRweDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tYnVpbHRpbiBzdmcge1xcbiAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gIG1hcmdpbi1yaWdodDogLTRweDtcXG59XFxuXFxuLyogRm9vdGVyIHN0eWxlcyAqL1xcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3RlciB7XFxuICBwYWRkaW5nOiA4cHg7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGdhcDogOHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiA2cHg7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbi0tZGlzYWJsZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLXRleHQge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYmFkZ2Uge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBtaW4td2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwYWRkaW5nOiAwIDZweDtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFtYmVyLTMwMCk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRvb2x0aXAtLXNtIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdG9vbHRpcC0tbGcge1xcbiAgbWluLXdpZHRoOiAyMDBweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnMge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBnYXA6IDhweDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnMtdG9vbHRpcCB7XFxuICB3aWR0aDogMjAwcHg7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b2FzdC9zdHlsZS5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLm5leHRqcy10b2FzdCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xuICBtYXgtd2lkdGg6IDQyMHB4O1xuICBib3gtc2hhZG93OiAwcHggMTZweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG59XG5cbi5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudCB7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtNHhsKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3RvYXN0L3N0eWxlLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxlQUFlO0VBQ2YsMkJBQTJCO0VBQzNCLGdCQUFnQjtFQUNoQiw2Q0FBNkM7QUFDL0M7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsaUNBQWlDO0VBQ2pDLGdCQUFnQjtFQUNoQixxQ0FBcUM7RUFDckMsdUNBQXVDO0FBQ3pDXCIsc291cmNlc0NvbnRlbnQ6W1wiLm5leHRqcy10b2FzdCB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XFxuICBtYXgtd2lkdGg6IDQyMHB4O1xcbiAgYm94LXNoYWRvdzogMHB4IDE2cHggMzJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xcbn1cXG5cXG4ubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQge1xcbiAgcGFkZGluZzogMTZweDtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtNHhsKTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAudG9vbHRpcC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4udG9vbHRpcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogNnB4IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMS40O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbn1cblxuLnRvb2x0aXAtYXJyb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRvb2x0aXAtYXJyb3ctLXRvcCB7XG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDBcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xuICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBib3R0b206IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbn1cblxuLnRvb2x0aXAtYXJyb3ctLWJvdHRvbSB7XG4gIGJvcmRlci13aWR0aDogMCB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweClcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xuICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICB0b3A6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG59XG5cbi50b29sdGlwLWFycm93LS1sZWZ0IHtcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICByaWdodDogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuXG4udG9vbHRpcC1hcnJvdy0tcmlnaHQge1xuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCkgMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xufVxuXG4udG9vbHRpcC1wb3NpdGlvbmVyIHtcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLHFCQUFxQjtFQUNyQixjQUFjO0FBQ2hCOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixvQkFBb0I7RUFDcEIsNEJBQTRCO0VBQzVCLHdDQUF3QztBQUMxQzs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixRQUFRO0VBQ1IsU0FBUztFQUNULG1CQUFtQjtFQUNuQixvQ0FBb0M7RUFDcEMseUJBQXlCO0FBQzNCOztBQUVBO0VBQ0U7MEJBQ3dCO0VBQ3hCLHdDQUF3QztFQUN4QyxTQUFTO0VBQ1QsMkJBQTJCO0FBQzdCOztBQUVBO0VBQ0U7MEJBQ3dCO0VBQ3hCLDJDQUEyQztFQUMzQyxNQUFNO0VBQ04sNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0U7MEJBQ3dCO0VBQ3hCLHlDQUF5QztFQUN6QyxRQUFRO0VBQ1IsMkJBQTJCO0FBQzdCOztBQUVBO0VBQ0U7NEJBQzBCO0VBQzFCLDBDQUEwQztFQUMxQyxPQUFPO0VBQ1AsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0UsMkJBQTJCO0FBQzdCXCIsc291cmNlc0NvbnRlbnQ6W1wiLnRvb2x0aXAtd3JhcHBlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBsaW5lLWhlaWdodDogMTtcXG59XFxuXFxuLnRvb2x0aXAge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZzogNnB4IDEycHg7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBsaW5lLWhlaWdodDogMS40O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG59XFxuXFxuLnRvb2x0aXAtYXJyb3cge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuXFxuLnRvb2x0aXAtYXJyb3ctLXRvcCB7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwXFxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XFxuICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgYm90dG9tOiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbn1cXG5cXG4udG9vbHRpcC1hcnJvdy0tYm90dG9tIHtcXG4gIGJvcmRlci13aWR0aDogMCB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweClcXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICB0b3A6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xcbn1cXG5cXG4udG9vbHRpcC1hcnJvdy0tbGVmdCB7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgMCB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXFxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XFxuICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIHJpZ2h0OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbn1cXG5cXG4udG9vbHRpcC1hcnJvdy0tcmlnaHQge1xcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweClcXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwO1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgbGVmdDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxufVxcblxcbi50b29sdGlwLXBvc2l0aW9uZXIge1xcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2dsb2JhbC5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9PmZ9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSksbD1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L25vcm1hbGl6ZS5jc3NcIikscz1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kZWZhdWx0LXRoZW1lLmNzc1wiKSxjPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RhcmstdGhlbWUuY3NzXCIpLHU9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvY29sb3JzLmNzc1wiKSxkPWkoKShvKCkpO2QuaShsLlopLGQuaShzLlopLGQuaShjLlopLGQuaSh1LlopLGQucHVzaChbZS5pZCxgLyogZGV2dG9vbCBnbG9iYWwgY3NzIHZhcmlhYmxlcyAqL1xuOmhvc3Qge1xuICAvKiB2YXJpYWJsZXMgKi9cbiAgLS10b3Atei1pbmRleDogMjE0NzQ4MzY0Nztcbn1cblxuLyogZ2xvYmFsIHN0eWxlcyAqL1xuKiB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG4vKiBnbG9iYWwgcmVzZXQgZm9yIGRyYWdnYWJsZSBjb250ZW50IHNjcm9sbGJhciBzdHlsZXMgKi9cbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdLFxuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0gKiB7XG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xuICAgIGhlaWdodDogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxcmVtIDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMXJlbSAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgfVxuXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNTAwKTtcbiAgfVxufVxuXG4vKiBQbGFjZSBvdmVyZmxvdzogaGlkZGVuIG9uIHRoaXMgc28gd2UgY2FuIGJyZWFrIG91dCBmcm9tIFtkYXRhLW5leHRqcy1kaWFsb2ddICovXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2dsb2JhbC5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUtBLGlDQUFpQztBQUNqQztFQUNFLGNBQWM7RUFDZCx5QkFBeUI7QUFDM0I7O0FBRUEsa0JBQWtCO0FBQ2xCO0VBQ0UsbUNBQW1DO0FBQ3JDOztBQUVBLHdEQUF3RDtBQUN4RDs7RUFFRTtJQUNFLFVBQVU7SUFDVixXQUFXO0lBQ1gsNEJBQTRCO0lBQzVCLG1CQUFtQjtFQUNyQjs7RUFFQTtJQUNFLGFBQWE7RUFDZjs7RUFFQTtJQUNFLDRCQUE0QjtJQUM1Qiw2Q0FBNkM7RUFDL0M7O0VBRUE7SUFDRSxtQkFBbUI7SUFDbkIsdUNBQXVDO0VBQ3pDO0FBQ0Y7O0FBRUEsaUZBQWlGO0FBQ2pGO0VBQ0UsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtBQUN4QlwiLHNvdXJjZXNDb250ZW50OltcIkBpbXBvcnQgJy4vbm9ybWFsaXplLmNzcyc7XFxuQGltcG9ydCAnLi9zdHlsZXMvZGVmYXVsdC10aGVtZS5jc3MnO1xcbkBpbXBvcnQgJy4vc3R5bGVzL2RhcmstdGhlbWUuY3NzJztcXG5AaW1wb3J0ICcuL3N0eWxlcy9jb2xvcnMuY3NzJztcXG5cXG4vKiBkZXZ0b29sIGdsb2JhbCBjc3MgdmFyaWFibGVzICovXFxuOmhvc3Qge1xcbiAgLyogdmFyaWFibGVzICovXFxuICAtLXRvcC16LWluZGV4OiAyMTQ3NDgzNjQ3O1xcbn1cXG5cXG4vKiBnbG9iYWwgc3R5bGVzICovXFxuKiB7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXG59XFxuXFxuLyogZ2xvYmFsIHJlc2V0IGZvciBkcmFnZ2FibGUgY29udGVudCBzY3JvbGxiYXIgc3R5bGVzICovXFxuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0sXFxuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0gKiB7XFxuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICAgIHdpZHRoOiA2cHg7XFxuICAgIGhlaWdodDogNnB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMXJlbSAxcmVtO1xcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgfVxcblxcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG5cXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDFyZW0gMXJlbTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgfVxcblxcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICB9XFxufVxcblxcbi8qIFBsYWNlIG92ZXJmbG93OiBoaWRkZW4gb24gdGhpcyBzbyB3ZSBjYW4gYnJlYWsgb3V0IGZyb20gW2RhdGEtbmV4dGpzLWRpYWxvZ10gKi9cXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgZj1kfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9tZW51L3BhbmVsLXJvdXRlci5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLyogUGFuZWwgY29udGVudCBwYWRkaW5nIHN0eWxlcyAqL1xuLnBhbmVsLWNvbnRlbnQge1xuICBwYWRkaW5nOiAxNnB4O1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBVc2VyIHByZWZlcmVuY2VzIHdyYXBwZXIgc3R5bGVzICovXG4udXNlci1wcmVmZXJlbmNlcy13cmFwcGVyIHtcbiAgcGFkZGluZzogMjBweDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogUGFuZWwgcm91dGUgYmFzZSBzdHlsZXMgKi9cbi5wYW5lbC1yb3V0ZSB7XG4gIG9wYWNpdHk6IHZhcigtLXBhbmVsLW9wYWNpdHkpO1xuICB0cmFuc2l0aW9uOiB2YXIoLS1wYW5lbC10cmFuc2l0aW9uKTtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbWVudS9wYW5lbC1yb3V0ZXIuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQSxpQ0FBaUM7QUFDakM7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtBQUNsQjs7QUFFQSxvQ0FBb0M7QUFDcEM7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtBQUNsQjs7QUFFQSw0QkFBNEI7QUFDNUI7RUFDRSw2QkFBNkI7RUFDN0IsbUNBQW1DO0FBQ3JDXCIsc291cmNlc0NvbnRlbnQ6W1wiLyogUGFuZWwgY29udGVudCBwYWRkaW5nIHN0eWxlcyAqL1xcbi5wYW5lbC1jb250ZW50IHtcXG4gIHBhZGRpbmc6IDE2cHg7XFxuICBwYWRkaW5nLXRvcDogOHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLyogVXNlciBwcmVmZXJlbmNlcyB3cmFwcGVyIHN0eWxlcyAqL1xcbi51c2VyLXByZWZlcmVuY2VzLXdyYXBwZXIge1xcbiAgcGFkZGluZzogMjBweDtcXG4gIHBhZGRpbmctdG9wOiA4cHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4vKiBQYW5lbCByb3V0ZSBiYXNlIHN0eWxlcyAqL1xcbi5wYW5lbC1yb3V0ZSB7XFxuICBvcGFjaXR5OiB2YXIoLS1wYW5lbC1vcGFjaXR5KTtcXG4gIHRyYW5zaXRpb246IHZhcigtLXBhbmVsLXRyYW5zaXRpb24pO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L25vcm1hbGl6ZS5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgOmhvc3Qge1xuICBhbGw6IGluaXRpYWw7XG5cbiAgLyogdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSBpcyBub3QgcmVzZXQgYnkgJ2FsbCcgKi9cbiAgZGlyZWN0aW9uOiBsdHI7XG59XG5cbi8qIVxuICogQm9vdHN0cmFwIFJlYm9vdCB2NC40LjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9yc1xuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICogRm9ya2VkIGZyb20gTm9ybWFsaXplLmNzcywgbGljZW5zZWQgTUlUIChodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQpXG4gKi9cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbjpob3N0IHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5uYXYsXG5zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0IHtcbiAgbWFyZ2luOiAwO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sXG4gICAgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLFxuICAgICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLCAnTm90byBDb2xvciBFbW9qaSc7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG46aG9zdDpub3QoYnV0dG9uKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cblt0YWJpbmRleD0nLTEnXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xufVxuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbnAge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG5hYmJyW3RpdGxlXSxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgY3Vyc29yOiBoZWxwO1xuICBib3JkZXItYm90dG9tOiAwO1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbiAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xufVxuXG5hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxub2wgb2wsXG51bCB1bCxcbm9sIHVsLFxudWwgb2wge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5kdCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbmRkIHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMCAwIDE2cHg7XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5hIHtcbiAgY29sb3I6ICMwMDdiZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmE6aG92ZXIge1xuICBjb2xvcjogIzAwNTZiMztcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbmE6bm90KFtocmVmXSkge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5hOm5vdChbaHJlZl0pOmhvdmVyIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJyxcbiAgICAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5wcmUge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMTZweDtcbn1cblxuaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5zdmcge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMTJweDtcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG4gIGNvbG9yOiAjNmM3NTdkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG5idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmJ1dHRvbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuaW5wdXQsXG5idXR0b24sXG5zZWxlY3QsXG5vcHRncm91cCxcbnRleHRhcmVhIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuYnV0dG9uLFxuaW5wdXQge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbnNlbGVjdCB7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xufVxuXG5idXR0b24sXG5bdHlwZT0nYnV0dG9uJ10sXG5bdHlwZT0ncmVzZXQnXSxcblt0eXBlPSdzdWJtaXQnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG5idXR0b246bm90KDpkaXNhYmxlZCksXG5bdHlwZT0nYnV0dG9uJ106bm90KDpkaXNhYmxlZCksXG5bdHlwZT0ncmVzZXQnXTpub3QoOmRpc2FibGVkKSxcblt0eXBlPSdzdWJtaXQnXTpub3QoOmRpc2FibGVkKSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9J2J1dHRvbiddOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9J3Jlc2V0J106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nc3VibWl0J106Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10sXG5pbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMDtcbn1cblxuaW5wdXRbdHlwZT0nZGF0ZSddLFxuaW5wdXRbdHlwZT0ndGltZSddLFxuaW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcbmlucHV0W3R5cGU9J21vbnRoJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7XG59XG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgbWluLXdpZHRoOiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxubGVnZW5kIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5bdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPSdzZWFyY2gnXSB7XG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cblt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG5vdXRwdXQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbm9ybWFsaXplLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxZQUFZOztFQUVaLGlEQUFpRDtFQUNqRCxjQUFjO0FBQ2hCOztBQUVBOzs7Ozs7RUFNRTtBQUNGOzs7RUFHRSxzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSx1QkFBdUI7RUFDdkIsaUJBQWlCO0VBQ2pCLDhCQUE4QjtFQUM5Qiw2Q0FBNkM7QUFDL0M7O0FBRUE7Ozs7Ozs7Ozs7RUFVRSxjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsU0FBUztFQUNUOzsyREFFeUQ7RUFDekQsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsd0JBQXdCO0VBQ3hCLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLHNCQUFzQjtBQUN4Qjs7QUFFQTtFQUNFLHFCQUFxQjtBQUN2Qjs7QUFFQTtFQUNFLHVCQUF1QjtFQUN2QixTQUFTO0VBQ1QsaUJBQWlCO0FBQ25COztBQUVBOzs7Ozs7RUFNRSxhQUFhO0VBQ2Isa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtBQUNyQjs7QUFFQTs7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QUMxQlwiLHNvdXJjZXNDb250ZW50OltcIjpob3N0IHtcXG4gIGFsbDogaW5pdGlhbDtcXG5cXG4gIC8qIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgaXMgbm90IHJlc2V0IGJ5ICdhbGwnICovXFxuICBkaXJlY3Rpb246IGx0cjtcXG59XFxuXFxuLyohXFxuICogQm9vdHN0cmFwIFJlYm9vdCB2NC40LjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXFxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFR3aXR0ZXIsIEluYy5cXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxcbiAqIEZvcmtlZCBmcm9tIE5vcm1hbGl6ZS5jc3MsIGxpY2Vuc2VkIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKVxcbiAqL1xcbiosXFxuKjo6YmVmb3JlLFxcbio6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcblxcbjpob3N0IHtcXG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XFxuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XFxufVxcblxcbmFydGljbGUsXFxuYXNpZGUsXFxuZmlnY2FwdGlvbixcXG5maWd1cmUsXFxuZm9vdGVyLFxcbmhlYWRlcixcXG5oZ3JvdXAsXFxubWFpbixcXG5uYXYsXFxuc2VjdGlvbiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuXFxuOmhvc3Qge1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLFxcbiAgICAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsXFxuICAgICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLCAnTm90byBDb2xvciBFbW9qaSc7XFxuICBmb250LXNpemU6IDE2cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1mb250KTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcblxcbjpob3N0Om5vdChidXR0b24pIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxufVxcblxcblt0YWJpbmRleD0nLTEnXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcXG4gIG91dGxpbmU6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuaHIge1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICBoZWlnaHQ6IDA7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG59XFxuXFxuaDEsXFxuaDIsXFxuaDMsXFxuaDQsXFxuaDUsXFxuaDYge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG59XFxuXFxucCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcXG59XFxuXFxuYWJiclt0aXRsZV0sXFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbiAgY3Vyc29yOiBoZWxwO1xcbiAgYm9yZGVyLWJvdHRvbTogMDtcXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xcbiAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xcbn1cXG5cXG5hZGRyZXNzIHtcXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuXFxub2wsXFxudWwsXFxuZGwge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XFxufVxcblxcbm9sIG9sLFxcbnVsIHVsLFxcbm9sIHVsLFxcbnVsIG9sIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcblxcbmR0IHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVxcblxcbmRkIHtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG4gIG1hcmdpbi1sZWZ0OiAwO1xcbn1cXG5cXG5ibG9ja3F1b3RlIHtcXG4gIG1hcmdpbjogMCAwIDE2cHg7XFxufVxcblxcbmIsXFxuc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XFxufVxcblxcbnNtYWxsIHtcXG4gIGZvbnQtc2l6ZTogODAlO1xcbn1cXG5cXG5zdWIsXFxuc3VwIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQtc2l6ZTogNzUlO1xcbiAgbGluZS1oZWlnaHQ6IDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcblxcbnN1YiB7XFxuICBib3R0b206IC0wLjI1ZW07XFxufVxcblxcbnN1cCB7XFxuICB0b3A6IC0wLjVlbTtcXG59XFxuXFxuYSB7XFxuICBjb2xvcjogIzAwN2JmZjtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG5hOmhvdmVyIHtcXG4gIGNvbG9yOiAjMDA1NmIzO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XFxufVxcblxcbmE6bm90KFtocmVmXSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbmE6bm90KFtocmVmXSk6aG92ZXIge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbnByZSxcXG5jb2RlLFxcbmtiZCxcXG5zYW1wIHtcXG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLFxcbiAgICAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XFxuICBmb250LXNpemU6IDFlbTtcXG59XFxuXFxucHJlIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxufVxcblxcbmZpZ3VyZSB7XFxuICBtYXJnaW46IDAgMCAxNnB4O1xcbn1cXG5cXG5pbWcge1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcXG59XFxuXFxuc3ZnIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG5cXG50YWJsZSB7XFxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xcbn1cXG5cXG5jYXB0aW9uIHtcXG4gIHBhZGRpbmctdG9wOiAxMnB4O1xcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XFxuICBjb2xvcjogIzZjNzU3ZDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcXG59XFxuXFxudGgge1xcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcXG59XFxuXFxubGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbn1cXG5cXG5idXR0b24ge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlcjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IDA7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYXBwZWFyYW5jZTogbm9uZTtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG59XFxuXFxuYnV0dG9uOmZvY3VzIHtcXG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XFxuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XFxufVxcblxcbmJ1dHRvbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcblxcbmlucHV0LFxcbmJ1dHRvbixcXG5zZWxlY3QsXFxub3B0Z3JvdXAsXFxudGV4dGFyZWEge1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuXFxuYnV0dG9uLFxcbmlucHV0IHtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbn1cXG5cXG5idXR0b24sXFxuc2VsZWN0IHtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbn1cXG5cXG5zZWxlY3Qge1xcbiAgd29yZC13cmFwOiBub3JtYWw7XFxufVxcblxcbmJ1dHRvbixcXG5bdHlwZT0nYnV0dG9uJ10sXFxuW3R5cGU9J3Jlc2V0J10sXFxuW3R5cGU9J3N1Ym1pdCddIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xcbn1cXG5cXG5idXR0b246bm90KDpkaXNhYmxlZCksXFxuW3R5cGU9J2J1dHRvbiddOm5vdCg6ZGlzYWJsZWQpLFxcblt0eXBlPSdyZXNldCddOm5vdCg6ZGlzYWJsZWQpLFxcblt0eXBlPSdzdWJtaXQnXTpub3QoOmRpc2FibGVkKSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXFxuW3R5cGU9J3Jlc2V0J106Oi1tb3otZm9jdXMtaW5uZXIsXFxuW3R5cGU9J3N1Ym1pdCddOjotbW96LWZvY3VzLWlubmVyIHtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXItc3R5bGU6IG5vbmU7XFxufVxcblxcbmlucHV0W3R5cGU9J3JhZGlvJ10sXFxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG59XFxuXFxuaW5wdXRbdHlwZT0nZGF0ZSddLFxcbmlucHV0W3R5cGU9J3RpbWUnXSxcXG5pbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFxcbmlucHV0W3R5cGU9J21vbnRoJ10ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xcbn1cXG5cXG50ZXh0YXJlYSB7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHJlc2l6ZTogdmVydGljYWw7XFxufVxcblxcbmZpZWxkc2V0IHtcXG4gIG1pbi13aWR0aDogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IDA7XFxuICBib3JkZXI6IDA7XFxufVxcblxcbmxlZ2VuZCB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZzogMDtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbn1cXG5cXG5wcm9ncmVzcyB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcblxcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcXG5bdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5cXG5bdHlwZT0nc2VhcmNoJ10ge1xcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxufVxcblxcblt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxufVxcblxcbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xcbiAgZm9udDogaW5oZXJpdDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xcbn1cXG5cXG5vdXRwdXQge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5cXG5zdW1tYXJ5IHtcXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxudGVtcGxhdGUge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuW2hpZGRlbl0ge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3BhbmVsL2R5bmFtaWMtcGFuZWwuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC8qIFBhbmVsIGNvbnRhaW5lciBiYXNlIHN0eWxlcyB3aXRoIGR5bmFtaWMgcG9zaXRpb25pbmcgYW5kIHNpemluZyAqL1xuLmR5bmFtaWMtcGFuZWwtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyMTQ3NDgzNjQ2O1xuICBvdXRsaW5lOiBub25lO1xuICB0b3A6IHZhcigtLXBhbmVsLXRvcCwgYXV0byk7XG4gIGJvdHRvbTogdmFyKC0tcGFuZWwtYm90dG9tLCBhdXRvKTtcbiAgbGVmdDogdmFyKC0tcGFuZWwtbGVmdCwgYXV0byk7XG4gIHJpZ2h0OiB2YXIoLS1wYW5lbC1yaWdodCwgYXV0byk7XG4gIHdpZHRoOiB2YXIoLS1wYW5lbC13aWR0aCk7XG4gIGhlaWdodDogdmFyKC0tcGFuZWwtaGVpZ2h0KTtcbiAgbWluLXdpZHRoOiB2YXIoLS1wYW5lbC1taW4td2lkdGgpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1wYW5lbC1taW4taGVpZ2h0KTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1wYW5lbC1tYXgtd2lkdGgpO1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1wYW5lbC1tYXgtaGVpZ2h0KTtcbn1cblxuLyogUGFuZWwgY29udGVudCBjb250YWluZXIgc3R5bGVzICovXG4ucGFuZWwtY29udGVudC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC14bCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLyogRHJhZ2dhYmxlIGNvbnRlbnQgYXJlYSBzdHlsZXMgKi9cbi5kcmFnZ2FibGUtY29udGVudCB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9wYW5lbC9keW5hbWljLXBhbmVsLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUEsb0VBQW9FO0FBQ3BFO0VBQ0UsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixhQUFhO0VBQ2IsMkJBQTJCO0VBQzNCLGlDQUFpQztFQUNqQyw2QkFBNkI7RUFDN0IsK0JBQStCO0VBQy9CLHlCQUF5QjtFQUN6QiwyQkFBMkI7RUFDM0IsaUNBQWlDO0VBQ2pDLG1DQUFtQztFQUNuQyxpQ0FBaUM7RUFDakMsbUNBQW1DO0FBQ3JDOztBQUVBLG1DQUFtQztBQUNuQztFQUNFLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLDZDQUE2QztFQUM3QyxnQ0FBZ0M7RUFDaEMsdUNBQXVDO0VBQ3ZDLGFBQWE7RUFDYixzQkFBc0I7QUFDeEI7O0FBRUEsa0NBQWtDO0FBQ2xDO0VBQ0UsT0FBTztFQUNQLGNBQWM7QUFDaEJcIixzb3VyY2VzQ29udGVudDpbXCIvKiBQYW5lbCBjb250YWluZXIgYmFzZSBzdHlsZXMgd2l0aCBkeW5hbWljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcgKi9cXG4uZHluYW1pYy1wYW5lbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgei1pbmRleDogMjE0NzQ4MzY0NjtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICB0b3A6IHZhcigtLXBhbmVsLXRvcCwgYXV0byk7XFxuICBib3R0b206IHZhcigtLXBhbmVsLWJvdHRvbSwgYXV0byk7XFxuICBsZWZ0OiB2YXIoLS1wYW5lbC1sZWZ0LCBhdXRvKTtcXG4gIHJpZ2h0OiB2YXIoLS1wYW5lbC1yaWdodCwgYXV0byk7XFxuICB3aWR0aDogdmFyKC0tcGFuZWwtd2lkdGgpO1xcbiAgaGVpZ2h0OiB2YXIoLS1wYW5lbC1oZWlnaHQpO1xcbiAgbWluLXdpZHRoOiB2YXIoLS1wYW5lbC1taW4td2lkdGgpO1xcbiAgbWluLWhlaWdodDogdmFyKC0tcGFuZWwtbWluLWhlaWdodCk7XFxuICBtYXgtd2lkdGg6IHZhcigtLXBhbmVsLW1heC13aWR0aCk7XFxuICBtYXgtaGVpZ2h0OiB2YXIoLS1wYW5lbC1tYXgtaGVpZ2h0KTtcXG59XFxuXFxuLyogUGFuZWwgY29udGVudCBjb250YWluZXIgc3R5bGVzICovXFxuLnBhbmVsLWNvbnRlbnQtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC14bCk7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLyogRHJhZ2dhYmxlIGNvbnRlbnQgYXJlYSBzdHlsZXMgKi9cXG4uZHJhZ2dhYmxlLWNvbnRlbnQge1xcbiAgZmxleDogMTtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9jb2xvcnMuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYDpob3N0IHtcbiAgLyogXG4gICAqIENBVVRJT046IFRISVMgSVMgQSBXT1JLQVJPVU5EIVxuICAgKiBGb3Igbm93LCB3ZSB1c2UgQGJhYmVsL2NvZGUtZnJhbWUgdG8gcGFyc2UgdGhlIGNvZGUgZnJhbWUgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBvcHRpb24gdG8gY2hhbmdlIHRoZSBjb2xvci5cbiAgICogeC1yZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL2VmYTUyMzI0ZmY4MzViNzk0YzQ4MDgwZjE0ODc3YjZjYWYzMmNkMTUvcGFja2FnZXMvYmFiZWwtY29kZS1mcmFtZS9zcmMvZGVmcy50cyNMNDAtTDU0XG4gICAqIFNvLCB3ZSBkbyBhIHdvcmthcm91bmQgbWFwcGluZyB0byBjaGFuZ2UgdGhlIGNvbG9yIG1hdGNoaW5nIHRoZSB0aGVtZS5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGluIEBiYWJlbC9jb2RlLWZyYW1lLCB0aGUgXCJrZXl3b3JkXCIgaXMgbWFwcGVkIHRvIEFOU0kgXCJjeWFuXCIuXG4gICAqIFdlIHdhbnQgdGhlIFwia2V5d29yZFwiIHRvIHVzZSB0aGUgXCJzeW50YXgta2V5d29yZFwiIGNvbG9yIGluIHRoZSB0aGVtZS5cbiAgICogU28sIHdlIG1hcCB0aGUgXCJjeWFuXCIgdG8gdGhlIFwic3ludGF4LWtleXdvcmRcIiBpbiB0aGUgdGhlbWUuXG4gICAqL1xuICAvKiBjeWFuOiBrZXl3b3JkICovXG4gIC0tY29sb3ItYW5zaS1jeWFuOiB2YXIoLS1jb2xvci1zeW50YXgta2V5d29yZCk7XG4gIC8qIHllbGxvdzogY2FwaXRhbGl6ZWQsIGpzeElkZW50aWZpZXIsIHB1bmN0dWF0aW9uICovXG4gIC0tY29sb3ItYW5zaS15ZWxsb3c6IHZhcigtLWNvbG9yLXN5bnRheC1mdW5jdGlvbik7XG4gIC8qIG1hZ2VudGE6IG51bWJlciwgcmVnZXggKi9cbiAgLS1jb2xvci1hbnNpLW1hZ2VudGE6IHZhcigtLWNvbG9yLXN5bnRheC1rZXl3b3JkKTtcbiAgLyogZ3JlZW46IHN0cmluZyAqL1xuICAtLWNvbG9yLWFuc2ktZ3JlZW46IHZhcigtLWNvbG9yLXN5bnRheC1zdHJpbmcpO1xuICAvKiBncmF5IChicmlnaHQgYmxhY2spOiBjb21tZW50LCBndXR0ZXIgKi9cbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ibGFjazogdmFyKC0tY29sb3Itc3ludGF4LWNvbW1lbnQpO1xuXG4gIC8qIEFuc2kgLSBUZW1wb3JhcnkgKi9cbiAgLS1jb2xvci1hbnNpLXNlbGVjdGlvbjogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0zMDApO1xuICAtLWNvbG9yLWFuc2ktYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcbiAgLS1jb2xvci1hbnNpLWZnOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuXG4gIC0tY29sb3ItYW5zaS13aGl0ZTogdmFyKC0tY29sb3ItZ3JheS03MDApO1xuICAtLWNvbG9yLWFuc2ktYmxhY2s6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcbiAgLS1jb2xvci1hbnNpLWJsdWU6IHZhcigtLWNvbG9yLWJsdWUtNzAwKTtcbiAgLS1jb2xvci1hbnNpLXJlZDogdmFyKC0tY29sb3ItcmVkLTcwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGU6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtYmx1ZTogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWN5YW46IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ncmVlbjogdmFyKC0tY29sb3ItZ3JlZW4tODAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1tYWdlbnRhOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtcmVkOiB2YXIoLS1jb2xvci1yZWQtODAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC15ZWxsb3c6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XG5cbiAgLyogQmFja2dyb3VuZCBMaWdodCAqL1xuICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjZmZmZmZmO1xuICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjZmFmYWZhO1xuXG4gIC8qIFN5bnRheCBMaWdodCAqL1xuICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjNTQ1NDU0O1xuICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogIzE3MTcxNztcbiAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICMwMDU0YWQ7XG4gIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNhNTE4NTA7XG4gIC0tY29sb3Itc3ludGF4LWxpbms6ICMwNjYwNTY7XG4gIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogIzhmM2UwMDtcbiAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICMxNzE3MTc7XG4gIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzAzNjE1NztcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwNjYwNTY7XG5cbiAgLyogR3JheSBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLWdyYXktMTAwOiAjZjJmMmYyO1xuICAtLWNvbG9yLWdyYXktMjAwOiAjZWJlYmViO1xuICAtLWNvbG9yLWdyYXktMzAwOiAjZTZlNmU2O1xuICAtLWNvbG9yLWdyYXktNDAwOiAjZWFlYWVhO1xuICAtLWNvbG9yLWdyYXktNTAwOiAjYzljOWM5O1xuICAtLWNvbG9yLWdyYXktNjAwOiAjYThhOGE4O1xuICAtLWNvbG9yLWdyYXktNzAwOiAjOGY4ZjhmO1xuICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xuICAtLWNvbG9yLWdyYXktOTAwOiAjNjY2NjY2O1xuICAtLWNvbG9yLWdyYXktMTAwMDogIzE3MTcxNztcblxuICAvKiBHcmF5IEFscGhhIFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMCwgMCwgMCwgMC4wODEpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMCwgMCwgMCwgMC4yMSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMCwgMCwgMCwgMC40NCk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMCwgMCwgMCwgMC41MSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMCwgMCwgMCwgMC42MDUpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgwLCAwLCAwLCAwLjkxKTtcblxuICAvKiBCbHVlIFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItYmx1ZS0xMDA6ICNmMGY3ZmY7XG4gIC0tY29sb3ItYmx1ZS0yMDA6ICNlZGY2ZmY7XG4gIC0tY29sb3ItYmx1ZS0zMDA6ICNlMWYwZmY7XG4gIC0tY29sb3ItYmx1ZS00MDA6ICNjZGU3ZmY7XG4gIC0tY29sb3ItYmx1ZS01MDA6ICM5OWNlZmY7XG4gIC0tY29sb3ItYmx1ZS02MDA6ICM1MmFlZmY7XG4gIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XG4gIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XG4gIC0tY29sb3ItYmx1ZS05MDA6ICMwMDY3ZDY7XG4gIC0tY29sb3ItYmx1ZS0xMDAwOiAjMDAyNWFkO1xuXG4gIC8qIFJlZCBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLXJlZC0xMDA6ICNmZmYwZjA7XG4gIC0tY29sb3ItcmVkLTIwMDogI2ZmZWJlYjtcbiAgLS1jb2xvci1yZWQtMzAwOiAjZmZlNWU1O1xuICAtLWNvbG9yLXJlZC00MDA6ICNmZGQ4ZDg7XG4gIC0tY29sb3ItcmVkLTUwMDogI2Y4YmFiYTtcbiAgLS1jb2xvci1yZWQtNjAwOiAjZjg3Mjc0O1xuICAtLWNvbG9yLXJlZC03MDA6ICNlNTQ4NGQ7XG4gIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcbiAgLS1jb2xvci1yZWQtOTAwOiAjY2EyYTMwO1xuICAtLWNvbG9yLXJlZC0xMDAwOiAjMzgxMzE2O1xuXG4gIC8qIEFtYmVyIFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItYW1iZXItMTAwOiAjZmZmNmU1O1xuICAtLWNvbG9yLWFtYmVyLTIwMDogI2ZmZjRkNTtcbiAgLS1jb2xvci1hbWJlci0zMDA6ICNmZWYwY2Q7XG4gIC0tY29sb3ItYW1iZXItNDAwOiAjZmZkZGJmO1xuICAtLWNvbG9yLWFtYmVyLTUwMDogI2ZmYzk2YjtcbiAgLS1jb2xvci1hbWJlci02MDA6ICNmNWIwNDc7XG4gIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xuICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcbiAgLS1jb2xvci1hbWJlci05MDA6ICNhMzUyMDA7XG4gIC0tY29sb3ItYW1iZXItMTAwMDogIzRlMjAwOTtcblxuICAvKiBHcmVlbiBTY2FsZSBMaWdodCAqL1xuICAtLWNvbG9yLWdyZWVuLTEwMDogI2VmZmJlZjtcbiAgLS1jb2xvci1ncmVlbi0yMDA6ICNlYWZhZWE7XG4gIC0tY29sb3ItZ3JlZW4tMzAwOiAjZGNmNmRjO1xuICAtLWNvbG9yLWdyZWVuLTQwMDogI2M4ZjFjOTtcbiAgLS1jb2xvci1ncmVlbi01MDA6ICM5OWU1OWY7XG4gIC0tY29sb3ItZ3JlZW4tNjAwOiAjNmNkYTc2O1xuICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcbiAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XG4gIC0tY29sb3ItZ3JlZW4tOTAwOiAjMjk3YzNiO1xuICAtLWNvbG9yLWdyZWVuLTEwMDA6ICMxODMxMWU7XG5cbiAgLyogVHVyYm9wYWNrIExpZ2h0IC0gVGVtcG9yYXJ5ICovXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtcmVkOiAjZmYxZTU2O1xuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICMwMDk2ZmY7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICNmMGFkYmU7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1ibHVlOiAjYWRjY2VhO1xuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogI2ZmZjdmOTtcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjZjZmYmZmO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvY29sb3JzLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRTs7Ozs7Ozs7O0lBU0U7RUFDRixrQkFBa0I7RUFDbEIsOENBQThDO0VBQzlDLG9EQUFvRDtFQUNwRCxpREFBaUQ7RUFDakQsMkJBQTJCO0VBQzNCLGlEQUFpRDtFQUNqRCxrQkFBa0I7RUFDbEIsOENBQThDO0VBQzlDLHlDQUF5QztFQUN6QyxzREFBc0Q7O0VBRXRELHFCQUFxQjtFQUNyQixtREFBbUQ7RUFDbkQsNENBQTRDO0VBQzVDLHVDQUF1Qzs7RUFFdkMseUNBQXlDO0VBQ3pDLHlDQUF5QztFQUN6Qyx3Q0FBd0M7RUFDeEMsc0NBQXNDO0VBQ3RDLGlEQUFpRDtFQUNqRCwrQ0FBK0M7RUFDL0MsK0NBQStDO0VBQy9DLGlEQUFpRDtFQUNqRCxrREFBa0Q7RUFDbEQsNkNBQTZDO0VBQzdDLGtEQUFrRDs7RUFFbEQscUJBQXFCO0VBQ3JCLCtCQUErQjtFQUMvQiwrQkFBK0I7O0VBRS9CLGlCQUFpQjtFQUNqQiwrQkFBK0I7RUFDL0IsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQywrQkFBK0I7RUFDL0IsNEJBQTRCO0VBQzVCLGlDQUFpQztFQUNqQyxtQ0FBbUM7RUFDbkMsOEJBQThCO0VBQzlCLHlDQUF5Qzs7RUFFekMscUJBQXFCO0VBQ3JCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLDBCQUEwQjs7RUFFMUIsMkJBQTJCO0VBQzNCLDJDQUEyQztFQUMzQyw0Q0FBNEM7RUFDNUMsMENBQTBDO0VBQzFDLDJDQUEyQztFQUMzQywyQ0FBMkM7RUFDM0MsMkNBQTJDO0VBQzNDLDJDQUEyQztFQUMzQywyQ0FBMkM7RUFDM0MsNENBQTRDO0VBQzVDLDRDQUE0Qzs7RUFFNUMscUJBQXFCO0VBQ3JCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLDBCQUEwQjs7RUFFMUIsb0JBQW9CO0VBQ3BCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHlCQUF5Qjs7RUFFekIsc0JBQXNCO0VBQ3RCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDJCQUEyQjs7RUFFM0Isc0JBQXNCO0VBQ3RCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDJCQUEyQjs7RUFFM0IsZ0NBQWdDO0VBQ2hDLG1DQUFtQztFQUNuQyxvQ0FBb0M7RUFDcEMscUNBQXFDO0VBQ3JDLHNDQUFzQztFQUN0Qyx5Q0FBeUM7RUFDekMsMENBQTBDO0FBQzVDXCIsc291cmNlc0NvbnRlbnQ6Wyc6aG9zdCB7XFxuICAvKiBcXG4gICAqIENBVVRJT046IFRISVMgSVMgQSBXT1JLQVJPVU5EIVxcbiAgICogRm9yIG5vdywgd2UgdXNlIEBiYWJlbC9jb2RlLWZyYW1lIHRvIHBhcnNlIHRoZSBjb2RlIGZyYW1lIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uIHRvIGNoYW5nZSB0aGUgY29sb3IuXFxuICAgKiB4LXJlZjogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvZWZhNTIzMjRmZjgzNWI3OTRjNDgwODBmMTQ4NzdiNmNhZjMyY2QxNS9wYWNrYWdlcy9iYWJlbC1jb2RlLWZyYW1lL3NyYy9kZWZzLnRzI0w0MC1MNTRcXG4gICAqIFNvLCB3ZSBkbyBhIHdvcmthcm91bmQgbWFwcGluZyB0byBjaGFuZ2UgdGhlIGNvbG9yIG1hdGNoaW5nIHRoZSB0aGVtZS5cXG4gICAqXFxuICAgKiBGb3IgZXhhbXBsZSwgaW4gQGJhYmVsL2NvZGUtZnJhbWUsIHRoZSBcImtleXdvcmRcIiBpcyBtYXBwZWQgdG8gQU5TSSBcImN5YW5cIi5cXG4gICAqIFdlIHdhbnQgdGhlIFwia2V5d29yZFwiIHRvIHVzZSB0aGUgXCJzeW50YXgta2V5d29yZFwiIGNvbG9yIGluIHRoZSB0aGVtZS5cXG4gICAqIFNvLCB3ZSBtYXAgdGhlIFwiY3lhblwiIHRvIHRoZSBcInN5bnRheC1rZXl3b3JkXCIgaW4gdGhlIHRoZW1lLlxcbiAgICovXFxuICAvKiBjeWFuOiBrZXl3b3JkICovXFxuICAtLWNvbG9yLWFuc2ktY3lhbjogdmFyKC0tY29sb3Itc3ludGF4LWtleXdvcmQpO1xcbiAgLyogeWVsbG93OiBjYXBpdGFsaXplZCwganN4SWRlbnRpZmllciwgcHVuY3R1YXRpb24gKi9cXG4gIC0tY29sb3ItYW5zaS15ZWxsb3c6IHZhcigtLWNvbG9yLXN5bnRheC1mdW5jdGlvbik7XFxuICAvKiBtYWdlbnRhOiBudW1iZXIsIHJlZ2V4ICovXFxuICAtLWNvbG9yLWFuc2ktbWFnZW50YTogdmFyKC0tY29sb3Itc3ludGF4LWtleXdvcmQpO1xcbiAgLyogZ3JlZW46IHN0cmluZyAqL1xcbiAgLS1jb2xvci1hbnNpLWdyZWVuOiB2YXIoLS1jb2xvci1zeW50YXgtc3RyaW5nKTtcXG4gIC8qIGdyYXkgKGJyaWdodCBibGFjayk6IGNvbW1lbnQsIGd1dHRlciAqL1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ibGFjazogdmFyKC0tY29sb3Itc3ludGF4LWNvbW1lbnQpO1xcblxcbiAgLyogQW5zaSAtIFRlbXBvcmFyeSAqL1xcbiAgLS1jb2xvci1hbnNpLXNlbGVjdGlvbjogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0zMDApO1xcbiAgLS1jb2xvci1hbnNpLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAtLWNvbG9yLWFuc2ktZmc6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuXFxuICAtLWNvbG9yLWFuc2ktd2hpdGU6IHZhcigtLWNvbG9yLWdyYXktNzAwKTtcXG4gIC0tY29sb3ItYW5zaS1ibGFjazogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xcbiAgLS1jb2xvci1hbnNpLWJsdWU6IHZhcigtLWNvbG9yLWJsdWUtNzAwKTtcXG4gIC0tY29sb3ItYW5zaS1yZWQ6IHZhcigtLWNvbG9yLXJlZC03MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZTogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtYmx1ZTogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1jeWFuOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWdyZWVuOiB2YXIoLS1jb2xvci1ncmVlbi04MDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1tYWdlbnRhOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXJlZDogdmFyKC0tY29sb3ItcmVkLTgwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXllbGxvdzogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcXG5cXG4gIC8qIEJhY2tncm91bmQgTGlnaHQgKi9cXG4gIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICNmZmZmZmY7XFxuICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjZmFmYWZhO1xcblxcbiAgLyogU3ludGF4IExpZ2h0ICovXFxuICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjNTQ1NDU0O1xcbiAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICMxNzE3MTc7XFxuICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzAwNTRhZDtcXG4gIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNhNTE4NTA7XFxuICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMDY2MDU2O1xcbiAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjOGYzZTAwO1xcbiAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICMxNzE3MTc7XFxuICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwMzYxNTc7XFxuICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzA2NjA1NjtcXG5cXG4gIC8qIEdyYXkgU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItZ3JheS0xMDA6ICNmMmYyZjI7XFxuICAtLWNvbG9yLWdyYXktMjAwOiAjZWJlYmViO1xcbiAgLS1jb2xvci1ncmF5LTMwMDogI2U2ZTZlNjtcXG4gIC0tY29sb3ItZ3JheS00MDA6ICNlYWVhZWE7XFxuICAtLWNvbG9yLWdyYXktNTAwOiAjYzljOWM5O1xcbiAgLS1jb2xvci1ncmF5LTYwMDogI2E4YThhODtcXG4gIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XFxuICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xcbiAgLS1jb2xvci1ncmF5LTkwMDogIzY2NjY2NjtcXG4gIC0tY29sb3ItZ3JheS0xMDAwOiAjMTcxNzE3O1xcblxcbiAgLyogR3JheSBBbHBoYSBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMCwgMCwgMCwgMC4wODEpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgwLCAwLCAwLCAwLjA4KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMCwgMCwgMCwgMC4yMSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDAsIDAsIDAsIDAuMzQpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgwLCAwLCAwLCAwLjQ0KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMCwgMCwgMCwgMC41MSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDAsIDAsIDAsIDAuNjA1KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDAsIDAsIDAsIDAuOTEpO1xcblxcbiAgLyogQmx1ZSBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1ibHVlLTEwMDogI2YwZjdmZjtcXG4gIC0tY29sb3ItYmx1ZS0yMDA6ICNlZGY2ZmY7XFxuICAtLWNvbG9yLWJsdWUtMzAwOiAjZTFmMGZmO1xcbiAgLS1jb2xvci1ibHVlLTQwMDogI2NkZTdmZjtcXG4gIC0tY29sb3ItYmx1ZS01MDA6ICM5OWNlZmY7XFxuICAtLWNvbG9yLWJsdWUtNjAwOiAjNTJhZWZmO1xcbiAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcXG4gIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XFxuICAtLWNvbG9yLWJsdWUtOTAwOiAjMDA2N2Q2O1xcbiAgLS1jb2xvci1ibHVlLTEwMDA6ICMwMDI1YWQ7XFxuXFxuICAvKiBSZWQgU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItcmVkLTEwMDogI2ZmZjBmMDtcXG4gIC0tY29sb3ItcmVkLTIwMDogI2ZmZWJlYjtcXG4gIC0tY29sb3ItcmVkLTMwMDogI2ZmZTVlNTtcXG4gIC0tY29sb3ItcmVkLTQwMDogI2ZkZDhkODtcXG4gIC0tY29sb3ItcmVkLTUwMDogI2Y4YmFiYTtcXG4gIC0tY29sb3ItcmVkLTYwMDogI2Y4NzI3NDtcXG4gIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcXG4gIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcXG4gIC0tY29sb3ItcmVkLTkwMDogI2NhMmEzMDtcXG4gIC0tY29sb3ItcmVkLTEwMDA6ICMzODEzMTY7XFxuXFxuICAvKiBBbWJlciBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1hbWJlci0xMDA6ICNmZmY2ZTU7XFxuICAtLWNvbG9yLWFtYmVyLTIwMDogI2ZmZjRkNTtcXG4gIC0tY29sb3ItYW1iZXItMzAwOiAjZmVmMGNkO1xcbiAgLS1jb2xvci1hbWJlci00MDA6ICNmZmRkYmY7XFxuICAtLWNvbG9yLWFtYmVyLTUwMDogI2ZmYzk2YjtcXG4gIC0tY29sb3ItYW1iZXItNjAwOiAjZjViMDQ3O1xcbiAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XFxuICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcXG4gIC0tY29sb3ItYW1iZXItOTAwOiAjYTM1MjAwO1xcbiAgLS1jb2xvci1hbWJlci0xMDAwOiAjNGUyMDA5O1xcblxcbiAgLyogR3JlZW4gU2NhbGUgTGlnaHQgKi9cXG4gIC0tY29sb3ItZ3JlZW4tMTAwOiAjZWZmYmVmO1xcbiAgLS1jb2xvci1ncmVlbi0yMDA6ICNlYWZhZWE7XFxuICAtLWNvbG9yLWdyZWVuLTMwMDogI2RjZjZkYztcXG4gIC0tY29sb3ItZ3JlZW4tNDAwOiAjYzhmMWM5O1xcbiAgLS1jb2xvci1ncmVlbi01MDA6ICM5OWU1OWY7XFxuICAtLWNvbG9yLWdyZWVuLTYwMDogIzZjZGE3NjtcXG4gIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xcbiAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XFxuICAtLWNvbG9yLWdyZWVuLTkwMDogIzI5N2MzYjtcXG4gIC0tY29sb3ItZ3JlZW4tMTAwMDogIzE4MzExZTtcXG5cXG4gIC8qIFR1cmJvcGFjayBMaWdodCAtIFRlbXBvcmFyeSAqL1xcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjFlNTY7XFxuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICMwMDk2ZmY7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjZjBhZGJlO1xcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICNhZGNjZWE7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogI2ZmZjdmOTtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogI2Y2ZmJmZjtcXG59XFxuJ10sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kYXJrLXRoZW1lLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGA6aG9zdCguZGFyaykge1xuICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xuICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDAsIDAsIDAsIDAuOCk7XG4gIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XG5cbiAgLS1jb2xvci10aXRsZS1jb2xvcjogI2ZhZmFmYTtcbiAgLS1jb2xvci1zdGFjay1ub3RlczogI2E5YTlhOTtcblxuICAvKiBCYWNrZ3JvdW5kIERhcmsgKi9cbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogIzBhMGEwYTtcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogIzAwMDAwMDtcblxuICAvKiBTeW50YXggRGFyayAqL1xuICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjYTBhMGEwO1xuICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogI2VkZWRlZDtcbiAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICM1MmE5ZmY7XG4gIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNmNzZlOTk7XG4gIC0tY29sb3Itc3ludGF4LWxpbms6ICMwYWM1YjI7XG4gIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogI2YxYTEwZDtcbiAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICNlZGVkZWQ7XG4gIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzBhYzViMjtcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwYWM1YjI7XG5cbiAgLyogR3JheSBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItZ3JheS0xMDA6ICMxYTFhMWE7XG4gIC0tY29sb3ItZ3JheS0yMDA6ICMxZjFmMWY7XG4gIC0tY29sb3ItZ3JheS0zMDA6ICMyOTI5Mjk7XG4gIC0tY29sb3ItZ3JheS00MDA6ICMyZTJlMmU7XG4gIC0tY29sb3ItZ3JheS01MDA6ICM0NTQ1NDU7XG4gIC0tY29sb3ItZ3JheS02MDA6ICM4Nzg3ODc7XG4gIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XG4gIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XG4gIC0tY29sb3ItZ3JheS05MDA6ICNhMGEwYTA7XG4gIC0tY29sb3ItZ3JheS0xMDAwOiAjZWRlZGVkO1xuXG4gIC8qIEdyYXkgQWxwaGEgU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDY2KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4Nyk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzOSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MDYpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTQpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDcpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjEpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyMyk7XG5cbiAgLyogQmx1ZSBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItYmx1ZS0xMDA6ICMwZjFiMmQ7XG4gIC0tY29sb3ItYmx1ZS0yMDA6ICMxMDI0M2U7XG4gIC0tY29sb3ItYmx1ZS0zMDA6ICMwZjMwNTg7XG4gIC0tY29sb3ItYmx1ZS00MDA6ICMwZDM4Njg7XG4gIC0tY29sb3ItYmx1ZS01MDA6ICMwYTQ0ODE7XG4gIC0tY29sb3ItYmx1ZS02MDA6ICMwMDkxZmY7XG4gIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XG4gIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XG4gIC0tY29sb3ItYmx1ZS05MDA6ICM1MmE5ZmY7XG4gIC0tY29sb3ItYmx1ZS0xMDAwOiAjZWFmNmZmO1xuXG4gIC8qIFJlZCBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItcmVkLTEwMDogIzJhMTMxNDtcbiAgLS1jb2xvci1yZWQtMjAwOiAjM2QxNzE5O1xuICAtLWNvbG9yLXJlZC0zMDA6ICM1NTFhMWU7XG4gIC0tY29sb3ItcmVkLTQwMDogIzY3MWUyMjtcbiAgLS1jb2xvci1yZWQtNTAwOiAjODIyMDI1O1xuICAtLWNvbG9yLXJlZC02MDA6ICNlNTQ4NGQ7XG4gIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcbiAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xuICAtLWNvbG9yLXJlZC05MDA6ICNmZjYzNjk7XG4gIC0tY29sb3ItcmVkLTEwMDA6ICNmZmVjZWU7XG5cbiAgLyogQW1iZXIgU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLWFtYmVyLTEwMDogIzI3MTcwMDtcbiAgLS1jb2xvci1hbWJlci0yMDA6ICMzNDFjMDA7XG4gIC0tY29sb3ItYW1iZXItMzAwOiAjNGEyOTAwO1xuICAtLWNvbG9yLWFtYmVyLTQwMDogIzU3MzMwMDtcbiAgLS1jb2xvci1hbWJlci01MDA6ICM2OTNmMDU7XG4gIC0tY29sb3ItYW1iZXItNjAwOiAjZTc5YzEzO1xuICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcbiAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XG4gIC0tY29sb3ItYW1iZXItOTAwOiAjZjFhMTBkO1xuICAtLWNvbG9yLWFtYmVyLTEwMDA6ICNmZWYzZGQ7XG5cbiAgLyogR3JlZW4gU2NhbGUgRGFyayAqL1xuICAtLWNvbG9yLWdyZWVuLTEwMDogIzBiMjIxMTtcbiAgLS1jb2xvci1ncmVlbi0yMDA6ICMwZjJjMTc7XG4gIC0tY29sb3ItZ3JlZW4tMzAwOiAjMTEzNTFiO1xuICAtLWNvbG9yLWdyZWVuLTQwMDogIzBjNDYxYjtcbiAgLS1jb2xvci1ncmVlbi01MDA6ICMxMjY0Mjc7XG4gIC0tY29sb3ItZ3JlZW4tNjAwOiAjMWE5MzM4O1xuICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcbiAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XG4gIC0tY29sb3ItZ3JlZW4tOTAwOiAjNjNjMTc0O1xuICAtLWNvbG9yLWdyZWVuLTEwMDA6ICNlNWZiZWI7XG5cbiAgLyogVHVyYm9wYWNrIERhcmsgLSBUZW1wb3JhcnkgKi9cbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjZkOTI7XG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzQ1YjJmZjtcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogIzZlMjkzYjtcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICMyODRmODA7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjMjUwZDEyO1xuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICMwYTE3MjM7XG59XG5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgOmhvc3QoOm5vdCgubGlnaHQpKSB7XG4gICAgLS1jb2xvci1mb250OiB3aGl0ZTtcbiAgICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDAsIDAsIDAsIDAuOCk7XG4gICAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcblxuICAgIC0tY29sb3ItdGl0bGUtY29sb3I6ICNmYWZhZmE7XG4gICAgLS1jb2xvci1zdGFjay1ub3RlczogI2E5YTlhOTtcblxuICAgIC8qIEJhY2tncm91bmQgRGFyayAqL1xuICAgIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICMwYTBhMGE7XG4gICAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogIzAwMDAwMDtcblxuICAgIC8qIFN5bnRheCBEYXJrICovXG4gICAgLS1jb2xvci1zeW50YXgtY29tbWVudDogI2EwYTBhMDtcbiAgICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogI2VkZWRlZDtcbiAgICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzUyYTlmZjtcbiAgICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjZjc2ZTk5O1xuICAgIC0tY29sb3Itc3ludGF4LWxpbms6ICMwYWM1YjI7XG4gICAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjZjFhMTBkO1xuICAgIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjZWRlZGVkO1xuICAgIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzBhYzViMjtcbiAgICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzBhYzViMjtcblxuICAgIC8qIEdyYXkgU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItZ3JheS0xMDA6ICMxYTFhMWE7XG4gICAgLS1jb2xvci1ncmF5LTIwMDogIzFmMWYxZjtcbiAgICAtLWNvbG9yLWdyYXktMzAwOiAjMjkyOTI5O1xuICAgIC0tY29sb3ItZ3JheS00MDA6ICMyZTJlMmU7XG4gICAgLS1jb2xvci1ncmF5LTUwMDogIzQ1NDU0NTtcbiAgICAtLWNvbG9yLWdyYXktNjAwOiAjODc4Nzg3O1xuICAgIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XG4gICAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcbiAgICAtLWNvbG9yLWdyYXktOTAwOiAjYTBhMGEwO1xuICAgIC0tY29sb3ItZ3JheS0xMDAwOiAjZWRlZGVkO1xuXG4gICAgLyogR3JheSBBbHBoYSBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2Nik7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4Nyk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzOSk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUwNik7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU0KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDcpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42MSk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MjMpO1xuXG4gICAgLyogQmx1ZSBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1ibHVlLTEwMDogIzBmMWIyZDtcbiAgICAtLWNvbG9yLWJsdWUtMjAwOiAjMTAyNDNlO1xuICAgIC0tY29sb3ItYmx1ZS0zMDA6ICMwZjMwNTg7XG4gICAgLS1jb2xvci1ibHVlLTQwMDogIzBkMzg2ODtcbiAgICAtLWNvbG9yLWJsdWUtNTAwOiAjMGE0NDgxO1xuICAgIC0tY29sb3ItYmx1ZS02MDA6ICMwMDkxZmY7XG4gICAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcbiAgICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xuICAgIC0tY29sb3ItYmx1ZS05MDA6ICM1MmE5ZmY7XG4gICAgLS1jb2xvci1ibHVlLTEwMDA6ICNlYWY2ZmY7XG5cbiAgICAvKiBSZWQgU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItcmVkLTEwMDogIzJhMTMxNDtcbiAgICAtLWNvbG9yLXJlZC0yMDA6ICMzZDE3MTk7XG4gICAgLS1jb2xvci1yZWQtMzAwOiAjNTUxYTFlO1xuICAgIC0tY29sb3ItcmVkLTQwMDogIzY3MWUyMjtcbiAgICAtLWNvbG9yLXJlZC01MDA6ICM4MjIwMjU7XG4gICAgLS1jb2xvci1yZWQtNjAwOiAjZTU0ODRkO1xuICAgIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcbiAgICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XG4gICAgLS1jb2xvci1yZWQtOTAwOiAjZmY2MzY5O1xuICAgIC0tY29sb3ItcmVkLTEwMDA6ICNmZmVjZWU7XG5cbiAgICAvKiBBbWJlciBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1hbWJlci0xMDA6ICMyNzE3MDA7XG4gICAgLS1jb2xvci1hbWJlci0yMDA6ICMzNDFjMDA7XG4gICAgLS1jb2xvci1hbWJlci0zMDA6ICM0YTI5MDA7XG4gICAgLS1jb2xvci1hbWJlci00MDA6ICM1NzMzMDA7XG4gICAgLS1jb2xvci1hbWJlci01MDA6ICM2OTNmMDU7XG4gICAgLS1jb2xvci1hbWJlci02MDA6ICNlNzljMTM7XG4gICAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XG4gICAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XG4gICAgLS1jb2xvci1hbWJlci05MDA6ICNmMWExMGQ7XG4gICAgLS1jb2xvci1hbWJlci0xMDAwOiAjZmVmM2RkO1xuXG4gICAgLyogR3JlZW4gU2NhbGUgRGFyayAqL1xuICAgIC0tY29sb3ItZ3JlZW4tMTAwOiAjMGIyMjExO1xuICAgIC0tY29sb3ItZ3JlZW4tMjAwOiAjMGYyYzE3O1xuICAgIC0tY29sb3ItZ3JlZW4tMzAwOiAjMTEzNTFiO1xuICAgIC0tY29sb3ItZ3JlZW4tNDAwOiAjMGM0NjFiO1xuICAgIC0tY29sb3ItZ3JlZW4tNTAwOiAjMTI2NDI3O1xuICAgIC0tY29sb3ItZ3JlZW4tNjAwOiAjMWE5MzM4O1xuICAgIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xuICAgIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xuICAgIC0tY29sb3ItZ3JlZW4tOTAwOiAjNjNjMTc0O1xuICAgIC0tY29sb3ItZ3JlZW4tMTAwMDogI2U1ZmJlYjtcblxuICAgIC8qIFR1cmJvcGFjayBEYXJrIC0gVGVtcG9yYXJ5ICovXG4gICAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjZkOTI7XG4gICAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjNDViMmZmO1xuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICM2ZTI5M2I7XG4gICAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICMyODRmODA7XG4gICAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICMyNTBkMTI7XG4gICAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjMGExNzIzO1xuICB9XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kYXJrLXRoZW1lLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxtQkFBbUI7RUFDbkIsb0NBQW9DO0VBQ3BDLGlEQUFpRDs7RUFFakQsNEJBQTRCO0VBQzVCLDRCQUE0Qjs7RUFFNUIsb0JBQW9CO0VBQ3BCLCtCQUErQjtFQUMvQiwrQkFBK0I7O0VBRS9CLGdCQUFnQjtFQUNoQiwrQkFBK0I7RUFDL0IsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQywrQkFBK0I7RUFDL0IsNEJBQTRCO0VBQzVCLGlDQUFpQztFQUNqQyxtQ0FBbUM7RUFDbkMsOEJBQThCO0VBQzlCLHlDQUF5Qzs7RUFFekMsb0JBQW9CO0VBQ3BCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJB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Qjs7SUFFM0IscUJBQXFCO0lBQ3JCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDJCQUEyQjs7SUFFM0IsK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyxvQ0FBb0M7SUFDcEMscUNBQXFDO0lBQ3JDLHNDQUFzQztJQUN0Qyx5Q0FBeUM7SUFDekMsMENBQTBDO0VBQzVDO0FBQ0ZcIixzb3VyY2VzQ29udGVudDpbXCI6aG9zdCguZGFyaykge1xcbiAgLS1jb2xvci1mb250OiB3aGl0ZTtcXG4gIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMCwgMCwgMCwgMC44KTtcXG4gIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XFxuXFxuICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjZmFmYWZhO1xcbiAgLS1jb2xvci1zdGFjay1ub3RlczogI2E5YTlhOTtcXG5cXG4gIC8qIEJhY2tncm91bmQgRGFyayAqL1xcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogIzBhMGEwYTtcXG4gIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICMwMDAwMDA7XFxuXFxuICAvKiBTeW50YXggRGFyayAqL1xcbiAgLS1jb2xvci1zeW50YXgtY29tbWVudDogI2EwYTBhMDtcXG4gIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjZWRlZGVkO1xcbiAgLS1jb2xvci1zeW50YXgtZnVuY3Rpb246ICM1MmE5ZmY7XFxuICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjZjc2ZTk5O1xcbiAgLS1jb2xvci1zeW50YXgtbGluazogIzBhYzViMjtcXG4gIC0tY29sb3Itc3ludGF4LXBhcmFtZXRlcjogI2YxYTEwZDtcXG4gIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjZWRlZGVkO1xcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMGFjNWIyO1xcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nLWV4cHJlc3Npb246ICMwYWM1YjI7XFxuXFxuICAvKiBHcmF5IFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItZ3JheS0xMDA6ICMxYTFhMWE7XFxuICAtLWNvbG9yLWdyYXktMjAwOiAjMWYxZjFmO1xcbiAgLS1jb2xvci1ncmF5LTMwMDogIzI5MjkyOTtcXG4gIC0tY29sb3ItZ3JheS00MDA6ICMyZTJlMmU7XFxuICAtLWNvbG9yLWdyYXktNTAwOiAjNDU0NTQ1O1xcbiAgLS1jb2xvci1ncmF5LTYwMDogIzg3ODc4NztcXG4gIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XFxuICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xcbiAgLS1jb2xvci1ncmF5LTkwMDogI2EwYTBhMDtcXG4gIC0tY29sb3ItZ3JheS0xMDAwOiAjZWRlZGVkO1xcblxcbiAgLyogR3JheSBBbHBoYSBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDY2KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wODcpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMzkpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUwNik7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTQpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ3KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42MSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyMyk7XFxuXFxuICAvKiBCbHVlIFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItYmx1ZS0xMDA6ICMwZjFiMmQ7XFxuICAtLWNvbG9yLWJsdWUtMjAwOiAjMTAyNDNlO1xcbiAgLS1jb2xvci1ibHVlLTMwMDogIzBmMzA1ODtcXG4gIC0tY29sb3ItYmx1ZS00MDA6ICMwZDM4Njg7XFxuICAtLWNvbG9yLWJsdWUtNTAwOiAjMGE0NDgxO1xcbiAgLS1jb2xvci1ibHVlLTYwMDogIzAwOTFmZjtcXG4gIC0tY29sb3ItYmx1ZS03MDA6ICMwMDcwZjM7XFxuICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xcbiAgLS1jb2xvci1ibHVlLTkwMDogIzUyYTlmZjtcXG4gIC0tY29sb3ItYmx1ZS0xMDAwOiAjZWFmNmZmO1xcblxcbiAgLyogUmVkIFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItcmVkLTEwMDogIzJhMTMxNDtcXG4gIC0tY29sb3ItcmVkLTIwMDogIzNkMTcxOTtcXG4gIC0tY29sb3ItcmVkLTMwMDogIzU1MWExZTtcXG4gIC0tY29sb3ItcmVkLTQwMDogIzY3MWUyMjtcXG4gIC0tY29sb3ItcmVkLTUwMDogIzgyMjAyNTtcXG4gIC0tY29sb3ItcmVkLTYwMDogI2U1NDg0ZDtcXG4gIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcXG4gIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcXG4gIC0tY29sb3ItcmVkLTkwMDogI2ZmNjM2OTtcXG4gIC0tY29sb3ItcmVkLTEwMDA6ICNmZmVjZWU7XFxuXFxuICAvKiBBbWJlciBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLWFtYmVyLTEwMDogIzI3MTcwMDtcXG4gIC0tY29sb3ItYW1iZXItMjAwOiAjMzQxYzAwO1xcbiAgLS1jb2xvci1hbWJlci0zMDA6ICM0YTI5MDA7XFxuICAtLWNvbG9yLWFtYmVyLTQwMDogIzU3MzMwMDtcXG4gIC0tY29sb3ItYW1iZXItNTAwOiAjNjkzZjA1O1xcbiAgLS1jb2xvci1hbWJlci02MDA6ICNlNzljMTM7XFxuICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcXG4gIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xcbiAgLS1jb2xvci1hbWJlci05MDA6ICNmMWExMGQ7XFxuICAtLWNvbG9yLWFtYmVyLTEwMDA6ICNmZWYzZGQ7XFxuXFxuICAvKiBHcmVlbiBTY2FsZSBEYXJrICovXFxuICAtLWNvbG9yLWdyZWVuLTEwMDogIzBiMjIxMTtcXG4gIC0tY29sb3ItZ3JlZW4tMjAwOiAjMGYyYzE3O1xcbiAgLS1jb2xvci1ncmVlbi0zMDA6ICMxMTM1MWI7XFxuICAtLWNvbG9yLWdyZWVuLTQwMDogIzBjNDYxYjtcXG4gIC0tY29sb3ItZ3JlZW4tNTAwOiAjMTI2NDI3O1xcbiAgLS1jb2xvci1ncmVlbi02MDA6ICMxYTkzMzg7XFxuICAtLWNvbG9yLWdyZWVuLTcwMDogIzQ2YTc1ODtcXG4gIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xcbiAgLS1jb2xvci1ncmVlbi05MDA6ICM2M2MxNzQ7XFxuICAtLWNvbG9yLWdyZWVuLTEwMDA6ICNlNWZiZWI7XFxuXFxuICAvKiBUdXJib3BhY2sgRGFyayAtIFRlbXBvcmFyeSAqL1xcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjZkOTI7XFxuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICM0NWIyZmY7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjNmUyOTNiO1xcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICMyODRmODA7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogIzI1MGQxMjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogIzBhMTcyMztcXG59XFxuXFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiAgOmhvc3QoOm5vdCgubGlnaHQpKSB7XFxuICAgIC0tY29sb3ItZm9udDogd2hpdGU7XFxuICAgIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMCwgMCwgMCwgMC44KTtcXG4gICAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcXG5cXG4gICAgLS1jb2xvci10aXRsZS1jb2xvcjogI2ZhZmFmYTtcXG4gICAgLS1jb2xvci1zdGFjay1ub3RlczogI2E5YTlhOTtcXG5cXG4gICAgLyogQmFja2dyb3VuZCBEYXJrICovXFxuICAgIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICMwYTBhMGE7XFxuICAgIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICMwMDAwMDA7XFxuXFxuICAgIC8qIFN5bnRheCBEYXJrICovXFxuICAgIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICNhMGEwYTA7XFxuICAgIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjZWRlZGVkO1xcbiAgICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzUyYTlmZjtcXG4gICAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2Y3NmU5OTtcXG4gICAgLS1jb2xvci1zeW50YXgtbGluazogIzBhYzViMjtcXG4gICAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjZjFhMTBkO1xcbiAgICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogI2VkZWRlZDtcXG4gICAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMGFjNWIyO1xcbiAgICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzBhYzViMjtcXG5cXG4gICAgLyogR3JheSBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItZ3JheS0xMDA6ICMxYTFhMWE7XFxuICAgIC0tY29sb3ItZ3JheS0yMDA6ICMxZjFmMWY7XFxuICAgIC0tY29sb3ItZ3JheS0zMDA6ICMyOTI5Mjk7XFxuICAgIC0tY29sb3ItZ3JheS00MDA6ICMyZTJlMmU7XFxuICAgIC0tY29sb3ItZ3JheS01MDA6ICM0NTQ1NDU7XFxuICAgIC0tY29sb3ItZ3JheS02MDA6ICM4Nzg3ODc7XFxuICAgIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XFxuICAgIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XFxuICAgIC0tY29sb3ItZ3JheS05MDA6ICNhMGEwYTA7XFxuICAgIC0tY29sb3ItZ3JheS0xMDAwOiAjZWRlZGVkO1xcblxcbiAgICAvKiBHcmF5IEFscGhhIFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2Nik7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wODcpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTI1KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0NSk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMzkpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTA2KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU0KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ3KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYxKTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MjMpO1xcblxcbiAgICAvKiBCbHVlIFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1ibHVlLTEwMDogIzBmMWIyZDtcXG4gICAgLS1jb2xvci1ibHVlLTIwMDogIzEwMjQzZTtcXG4gICAgLS1jb2xvci1ibHVlLTMwMDogIzBmMzA1ODtcXG4gICAgLS1jb2xvci1ibHVlLTQwMDogIzBkMzg2ODtcXG4gICAgLS1jb2xvci1ibHVlLTUwMDogIzBhNDQ4MTtcXG4gICAgLS1jb2xvci1ibHVlLTYwMDogIzAwOTFmZjtcXG4gICAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcXG4gICAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcXG4gICAgLS1jb2xvci1ibHVlLTkwMDogIzUyYTlmZjtcXG4gICAgLS1jb2xvci1ibHVlLTEwMDA6ICNlYWY2ZmY7XFxuXFxuICAgIC8qIFJlZCBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItcmVkLTEwMDogIzJhMTMxNDtcXG4gICAgLS1jb2xvci1yZWQtMjAwOiAjM2QxNzE5O1xcbiAgICAtLWNvbG9yLXJlZC0zMDA6ICM1NTFhMWU7XFxuICAgIC0tY29sb3ItcmVkLTQwMDogIzY3MWUyMjtcXG4gICAgLS1jb2xvci1yZWQtNTAwOiAjODIyMDI1O1xcbiAgICAtLWNvbG9yLXJlZC02MDA6ICNlNTQ4NGQ7XFxuICAgIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcXG4gICAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xcbiAgICAtLWNvbG9yLXJlZC05MDA6ICNmZjYzNjk7XFxuICAgIC0tY29sb3ItcmVkLTEwMDA6ICNmZmVjZWU7XFxuXFxuICAgIC8qIEFtYmVyIFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1hbWJlci0xMDA6ICMyNzE3MDA7XFxuICAgIC0tY29sb3ItYW1iZXItMjAwOiAjMzQxYzAwO1xcbiAgICAtLWNvbG9yLWFtYmVyLTMwMDogIzRhMjkwMDtcXG4gICAgLS1jb2xvci1hbWJlci00MDA6ICM1NzMzMDA7XFxuICAgIC0tY29sb3ItYW1iZXItNTAwOiAjNjkzZjA1O1xcbiAgICAtLWNvbG9yLWFtYmVyLTYwMDogI2U3OWMxMztcXG4gICAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XFxuICAgIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xcbiAgICAtLWNvbG9yLWFtYmVyLTkwMDogI2YxYTEwZDtcXG4gICAgLS1jb2xvci1hbWJlci0xMDAwOiAjZmVmM2RkO1xcblxcbiAgICAvKiBHcmVlbiBTY2FsZSBEYXJrICovXFxuICAgIC0tY29sb3ItZ3JlZW4tMTAwOiAjMGIyMjExO1xcbiAgICAtLWNvbG9yLWdyZWVuLTIwMDogIzBmMmMxNztcXG4gICAgLS1jb2xvci1ncmVlbi0zMDA6ICMxMTM1MWI7XFxuICAgIC0tY29sb3ItZ3JlZW4tNDAwOiAjMGM0NjFiO1xcbiAgICAtLWNvbG9yLWdyZWVuLTUwMDogIzEyNjQyNztcXG4gICAgLS1jb2xvci1ncmVlbi02MDA6ICMxYTkzMzg7XFxuICAgIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xcbiAgICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcXG4gICAgLS1jb2xvci1ncmVlbi05MDA6ICM2M2MxNzQ7XFxuICAgIC0tY29sb3ItZ3JlZW4tMTAwMDogI2U1ZmJlYjtcXG5cXG4gICAgLyogVHVyYm9wYWNrIERhcmsgLSBUZW1wb3JhcnkgKi9cXG4gICAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjZkOTI7XFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzQ1YjJmZjtcXG4gICAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogIzZlMjkzYjtcXG4gICAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICMyODRmODA7XFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjMjUwZDEyO1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICMwYTE3MjM7XFxuICB9XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RlZmF1bHQtdGhlbWUuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYDpob3N0IHtcbiAgLyogXG4gICAqIEFsdGhvdWdoIHRoZSBzdHlsZSBhcHBsaWVkIHRvIHRoZSBzaGFkb3cgaG9zdCBpcyBpc29sYXRlZCxcbiAgICogdGhlIGVsZW1lbnQgdGhhdCBhdHRhY2hlZCB0aGUgc2hhZG93IGhvc3QgKGkuZS4gXCJuZXh0anMtcG9ydGFsXCIpXG4gICAqIGlzIHN0aWxsIGFmZmVjdGVkIGJ5IHRoZSBwYXJlbnQncyBzdHlsZSAoZS5nLiBcImJvZHlcIikuIFRoaXMgbWF5XG4gICAqIG9jY3VyIHN0eWxlIGNvbmZsaWN0cyBsaWtlIFwiZGlzcGxheTogZmxleFwiLCB3aXRoIG90aGVyIGNoaWxkcmVuXG4gICAqIGVsZW1lbnRzIHRoZXJlZm9yZSBnaXZlIHRoZSBzaGFkb3cgaG9zdCBhbiBhYnNvbHV0ZSBwb3NpdGlvbi5cbiAgICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAtLWNvbG9yLWZvbnQ6ICM3NTc1NzU7XG4gIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMC44KTtcbiAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTQ1KTtcblxuICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjMWYxZjFmO1xuICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjNzc3O1xuXG4gIC0tY29sb3ItYWNjZW50cy0xOiAjODA4MDgwO1xuICAtLWNvbG9yLWFjY2VudHMtMjogIzIyMjIyMjtcbiAgLS1jb2xvci1hY2NlbnRzLTM6ICM0MDQwNDA7XG5cbiAgLS1mb250LXN0YWNrLW1vbm9zcGFjZTogJ19fbmV4dGpzLUdlaXN0IE1vbm8nLCAnR2Vpc3QgTW9ubycsICdTRk1vbm8tUmVndWxhcicsXG4gICAgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBNZW5sbywgQ291cmllciwgbW9ub3NwYWNlO1xuICAtLWZvbnQtc3RhY2stc2FuczogJ19fbmV4dGpzLUdlaXN0JywgJ0dlaXN0JywgLWFwcGxlLXN5c3RlbSwgJ1NvdXJjZSBTYW5zIFBybycsXG4gICAgc2Fucy1zZXJpZjtcblxuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcbiAgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9uZTtcblxuICAvKiBUT0RPOiBSZW1vdmUgcmVwbGFjZWQgb25lcy4gKi9cbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMC4xKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG4gIC0tc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMSksXG4gICAgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgLS1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC4xKSxcbiAgICAwIDhweCAxMHB4IC02cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjI1KTtcbiAgLS1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xuICAtLXNoYWRvdy1ub25lOiAwIDAgIzAwMDA7XG5cbiAgLS1zaGFkb3ctc21hbGw6IDBweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gIC0tc2hhZG93LW1lbnU6IDBweCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMiksXG4gICAgMHB4IDRweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMDQpLCAwcHggMTZweCAyNHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcblxuICAtLWZvY3VzLWNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIC0tZm9jdXMtcmluZzogMnB4IHNvbGlkIHZhcigtLWZvY3VzLWNvbG9yKTtcblxuICAtLXRpbWluZy1zd2lmdDogY3ViaWMtYmV6aWVyKDAuMjMsIDAuODgsIDAuMjYsIDAuOTIpO1xuICAtLXRpbWluZy1vdmVybGF5OiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjEpO1xuICAvKiBwcmV0dGllci1pZ25vcmUgKi9cbiAgLS10aW1pbmctYm91bmNlOiBsaW5lYXIoMCAwJSwgMC4wMDU4NzEgMSUsIDAuMDIyMDU4IDIlLCAwLjA0NjYxMiAzJSwgMC4wNzc4MjMgNCUsIDAuMTE0MTk5IDUlLCAwLjE1NDQ0MSA2JSwgMC4xOTc0MzEgNy4wMDAwMDAwMDAwMDAwMDElLCAwLjI0MjIwOCA4JSwgMC4yODc5NTkgOSUsIDAuMzMzOTk1IDEwJSwgMC4zNzk3NDMgMTElLCAwLjQyNDczMiAxMiUsIDAuNDY4NTggMTMlLCAwLjUxMDk4MiAxNC4wMDAwMDAwMDAwMDAwMDIlLCAwLjU1MTcwMiAxNSUsIDAuNTkwNTY0IDE2JSwgMC42Mjc0NDUgMTclLCAwLjY2MjI2MSAxOCUsIDAuNjk0OTcxIDE5JSwgMC43MjU1NjEgMjAlLCAwLjc1NDA0NyAyMSUsIDAuNzgwNDYyIDIyJSwgMC44MDQ4NjEgMjMlLCAwLjgyNzMxIDI0JSwgMC44NDc4ODggMjUlLCAwLjg2NjY3OSAyNiUsIDAuODgzNzc1IDI3JSwgMC44OTkyNzIgMjguMDAwMDAwMDAwMDAwMDA0JSwgMC45MTMyNjcgMjguOTk5OTk5OTk5OTk5OTk2JSwgMC45MjU4NTYgMzAlLCAwLjkzNzEzNyAzMSUsIDAuOTQ3MjA1IDMyJSwgMC45NTYxNTMgMzMlLCAwLjk2NDA3IDM0JSwgMC45NzEwNDMgMzUlLCAwLjk3NzE1MyAzNiUsIDAuOTgyNDc5IDM3JSwgMC45ODcwOTQgMzglLCAwLjk5MTA2NiAzOSUsIDAuOTk0NDYyIDQwJSwgMC45OTczMzkgNDElLCAwLjk5OTc1NSA0MiUsIDEuMDAxNzYxIDQzJSwgMS4wMDM0MDQgNDQlLCAxLjAwNDcyNyA0NSUsIDEuMDA1NzcgNDYlLCAxLjAwNjU2OSA0NyUsIDEuMDA3MTU3IDQ4JSwgMS4wMDc1NjMgNDklLCAxLjAwNzgxMyA1MCUsIDEuMDA3OTMxIDUxJSwgMS4wMDc5MzkgNTIlLCAxLjAwNzg1NSA1MyUsIDEuMDA3Njk3IDU0JSwgMS4wMDc0NzcgNTUuMDAwMDAwMDAwMDAwMDElLCAxLjAwNzIxIDU2LjAwMDAwMDAwMDAwMDAxJSwgMS4wMDY5MDcgNTYuOTk5OTk5OTk5OTk5OTklLCAxLjAwNjU3NiA1Ny45OTk5OTk5OTk5OTk5OSUsIDEuMDA2MjI4IDU5JSwgMS4wMDU4NjggNjAlLCAxLjAwNTUwMyA2MSUsIDEuMDA1MTM3IDYyJSwgMS4wMDQ3NzYgNjMlLCAxLjAwNDQyMiA2NCUsIDEuMDA0MDc4IDY1JSwgMS4wMDM3NDYgNjYlLCAxLjAwMzQyOSA2NyUsIDEuMDAzMTI3IDY4JSwgMS4wMDI4NCA2OSUsIDEuMDAyNTcxIDcwJSwgMS4wMDIzMTggNzElLCAxLjAwMjA4MiA3MiUsIDEuMDAxODYzIDczJSwgMS4wMDE2NiA3NCUsIDEuMDAxNDczIDc1JSwgMS4wMDEzMDEgNzYlLCAxLjAwMTE0MyA3NyUsIDEuMDAxIDc4JSwgMS4wMDA4NjkgNzklLCAxLjAwMDc1MiA4MCUsIDEuMDAwNjQ1IDgxJSwgMS4wMDA1NSA4MiUsIDEuMDAwNDY0IDgzJSwgMS4wMDAzODggODQlLCAxLjAwMDMyMSA4NSUsIDEuMDAwMjYxIDg2JSwgMS4wMDAyMDkgODclLCAxLjAwMDE2MyA4OCUsIDEuMDAwMTIzIDg5JSwgMS4wMDAwODggOTAlKTtcblxuICAtLXJvdW5kZWQtbm9uZTogMHB4O1xuICAtLXJvdW5kZWQtc206IDJweDtcbiAgLS1yb3VuZGVkLW1kOiA0cHg7XG4gIC0tcm91bmRlZC1tZC0yOiA2cHg7XG4gIC0tcm91bmRlZC1sZzogOHB4O1xuICAtLXJvdW5kZWQteGw6IDEycHg7XG4gIC0tcm91bmRlZC0yeGw6IDE2cHg7XG4gIC0tcm91bmRlZC0zeGw6IDI0cHg7XG4gIC0tcm91bmRlZC00eGw6IDMycHg7XG4gIC0tcm91bmRlZC1mdWxsOiA5OTk5cHg7XG5cbiAgLyogXG4gICAgVGhpcyB2YWx1ZSBnZXRzIHNldCBmcm9tIHRoZSBEZXYgVG9vbHMgcHJlZmVyZW5jZXMsXG4gICAgYW5kIHdlIHVzZSB0aGUgZm9sbG93aW5nIC0tc2l6ZS0qIHZhcmlhYmxlcyB0byBcbiAgICBzY2FsZSB0aGUgcmVsZXZhbnQgZWxlbWVudHMuXG5cbiAgICBUaGUgcmVhc29uIHdoeSB3ZSBkb24ndCByZWx5IG9uIHJlbSB2YWx1ZXMgaXMgYmVjYXVzZVxuICAgIGlmIGFuIGFwcCBzZXRzIHRoZWlyIHJvb3QgZm9udCBzaXplIHRvIHNvbWV0aGluZyB0aW55LCBcbiAgICBpdCBmZWVscyB1bmV4cGVjdGVkIHRvIGhhdmUgdGhlIGFwcCByb290IHNpemUgbGVhayBcbiAgICBpbnRvIGEgTmV4dC5qcyBzdXJmYWNlLlxuXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2Rpc2N1c3Npb25zLzc2ODEyXG4gICovXG4gIC0tbmV4dGpzLWRldi10b29scy1zY2FsZTogMTtcbiAgLS1zaXplLTE6IGNhbGMoMXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjogY2FsYygycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zOiBjYWxjKDNweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQ6IGNhbGMoNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNTogY2FsYyg1cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS02OiBjYWxjKDZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTc6IGNhbGMoN3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtODogY2FsYyg4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS05OiBjYWxjKDlweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTEwOiBjYWxjKDEwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xMTogY2FsYygxMXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTI6IGNhbGMoMTJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTEzOiBjYWxjKDEzcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xNDogY2FsYygxNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTU6IGNhbGMoMTVweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTE2OiBjYWxjKDE2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xNzogY2FsYygxN3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTg6IGNhbGMoMThweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTIwOiBjYWxjKDIwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yMjogY2FsYygyMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjQ6IGNhbGMoMjRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTI2OiBjYWxjKDI2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yODogY2FsYygyOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzA6IGNhbGMoMzBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTMyOiBjYWxjKDMycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zNDogY2FsYygzNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzY6IGNhbGMoMzZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTM4OiBjYWxjKDM4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00MDogY2FsYyg0MHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDI6IGNhbGMoNDJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQ0OiBjYWxjKDQ0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00NjogY2FsYyg0NnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDg6IGNhbGMoNDhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcblxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG5hIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtOTAwKTtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtOTAwKTtcbiAgfVxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xuICB9XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9kZWZhdWx0LXRoZW1lLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRTs7Ozs7O0lBTUU7RUFDRixrQkFBa0I7O0VBRWxCLHFCQUFxQjtFQUNyQiwwQ0FBMEM7RUFDMUMsMkNBQTJDOztFQUUzQyw0QkFBNEI7RUFDNUIseUJBQXlCOztFQUV6QiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjs7RUFFMUI7MERBQ3dEO0VBQ3hEO2NBQ1k7O0VBRVosbUNBQW1DO0VBQ25DLDRCQUE0Qjs7RUFFNUIsZ0NBQWdDO0VBQ2hDLDBDQUEwQztFQUMxQyx1RUFBdUU7RUFDdkUsNkVBQTZFO0VBQzdFO21DQUNpQztFQUNqQztvQ0FDa0M7RUFDbEMsaURBQWlEO0VBQ2pELG1EQUFtRDtFQUNuRCx3QkFBd0I7O0VBRXhCLCtDQUErQztFQUMvQztnRkFDOEU7O0VBRTlFLG9DQUFvQztFQUNwQywwQ0FBMEM7O0VBRTFDLG9EQUFvRDtFQUNwRCx1REFBdUQ7RUFDdkQsb0JBQW9CO0VBQ3BCLGkzQ0FBaTNDOztFQUVqM0MsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsc0JBQXNCOztFQUV0Qjs7Ozs7Ozs7Ozs7R0FXQztFQUNELDJCQUEyQjtFQUMzQixtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDs7RUFFckQ7SUFDRSxhQUFhO0VBQ2Y7QUFDRjs7QUFFQTs7Ozs7O0VBTUUsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSw0QkFBNEI7RUFDNUI7SUFDRSw0QkFBNEI7RUFDOUI7RUFDQTtJQUNFLDBCQUEwQjtFQUM1QjtBQUNGXCIsc291cmNlc0NvbnRlbnQ6W1wiOmhvc3Qge1xcbiAgLyogXFxuICAgKiBBbHRob3VnaCB0aGUgc3R5bGUgYXBwbGllZCB0byB0aGUgc2hhZG93IGhvc3QgaXMgaXNvbGF0ZWQsXFxuICAgKiB0aGUgZWxlbWVudCB0aGF0IGF0dGFjaGVkIHRoZSBzaGFkb3cgaG9zdCAoaS5lLiBcXFwibmV4dGpzLXBvcnRhbFxcXCIpXFxuICAgKiBpcyBzdGlsbCBhZmZlY3RlZCBieSB0aGUgcGFyZW50J3Mgc3R5bGUgKGUuZy4gXFxcImJvZHlcXFwiKS4gVGhpcyBtYXlcXG4gICAqIG9jY3VyIHN0eWxlIGNvbmZsaWN0cyBsaWtlIFxcXCJkaXNwbGF5OiBmbGV4XFxcIiwgd2l0aCBvdGhlciBjaGlsZHJlblxcbiAgICogZWxlbWVudHMgdGhlcmVmb3JlIGdpdmUgdGhlIHNoYWRvdyBob3N0IGFuIGFic29sdXRlIHBvc2l0aW9uLlxcbiAgICovXFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFxuICAtLWNvbG9yLWZvbnQ6ICM3NTc1NzU7XFxuICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDI1MCwgMjUwLCAyNTAsIDAuOCk7XFxuICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNDUpO1xcblxcbiAgLS1jb2xvci10aXRsZS1jb2xvcjogIzFmMWYxZjtcXG4gIC0tY29sb3Itc3RhY2stbm90ZXM6ICM3Nzc7XFxuXFxuICAtLWNvbG9yLWFjY2VudHMtMTogIzgwODA4MDtcXG4gIC0tY29sb3ItYWNjZW50cy0yOiAjMjIyMjIyO1xcbiAgLS1jb2xvci1hY2NlbnRzLTM6ICM0MDQwNDA7XFxuXFxuICAtLWZvbnQtc3RhY2stbW9ub3NwYWNlOiAnX19uZXh0anMtR2Vpc3QgTW9ubycsICdHZWlzdCBNb25vJywgJ1NGTW9uby1SZWd1bGFyJyxcXG4gICAgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBNZW5sbywgQ291cmllciwgbW9ub3NwYWNlO1xcbiAgLS1mb250LXN0YWNrLXNhbnM6ICdfX25leHRqcy1HZWlzdCcsICdHZWlzdCcsIC1hcHBsZS1zeXN0ZW0sICdTb3VyY2UgU2FucyBQcm8nLFxcbiAgICBzYW5zLXNlcmlmO1xcblxcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XFxuICBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub25lO1xcblxcbiAgLyogVE9ETzogUmVtb3ZlIHJlcGxhY2VkIG9uZXMuICovXFxuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XFxuICAtLXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMC4xKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKTtcXG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSxcXG4gICAgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTtcXG4gIC0tc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDAuMSksXFxuICAgIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjI1KTtcXG4gIC0tc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcXG4gIC0tc2hhZG93LW5vbmU6IDAgMCAjMDAwMDtcXG5cXG4gIC0tc2hhZG93LXNtYWxsOiAwcHggMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgLS1zaGFkb3ctbWVudTogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjAyKSxcXG4gICAgMHB4IDRweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMDQpLCAwcHggMTZweCAyNHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcXG5cXG4gIC0tZm9jdXMtY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcXG4gIC0tZm9jdXMtcmluZzogMnB4IHNvbGlkIHZhcigtLWZvY3VzLWNvbG9yKTtcXG5cXG4gIC0tdGltaW5nLXN3aWZ0OiBjdWJpYy1iZXppZXIoMC4yMywgMC44OCwgMC4yNiwgMC45Mik7XFxuICAtLXRpbWluZy1vdmVybGF5OiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjEpO1xcbiAgLyogcHJldHRpZXItaWdub3JlICovXFxuICAtLXRpbWluZy1ib3VuY2U6IGxpbmVhcigwIDAlLCAwLjAwNTg3MSAxJSwgMC4wMjIwNTggMiUsIDAuMDQ2NjEyIDMlLCAwLjA3NzgyMyA0JSwgMC4xMTQxOTkgNSUsIDAuMTU0NDQxIDYlLCAwLjE5NzQzMSA3LjAwMDAwMDAwMDAwMDAwMSUsIDAuMjQyMjA4IDglLCAwLjI4Nzk1OSA5JSwgMC4zMzM5OTUgMTAlLCAwLjM3OTc0MyAxMSUsIDAuNDI0NzMyIDEyJSwgMC40Njg1OCAxMyUsIDAuNTEwOTgyIDE0LjAwMDAwMDAwMDAwMDAwMiUsIDAuNTUxNzAyIDE1JSwgMC41OTA1NjQgMTYlLCAwLjYyNzQ0NSAxNyUsIDAuNjYyMjYxIDE4JSwgMC42OTQ5NzEgMTklLCAwLjcyNTU2MSAyMCUsIDAuNzU0MDQ3IDIxJSwgMC43ODA0NjIgMjIlLCAwLjgwNDg2MSAyMyUsIDAuODI3MzEgMjQlLCAwLjg0Nzg4OCAyNSUsIDAuODY2Njc5IDI2JSwgMC44ODM3NzUgMjclLCAwLjg5OTI3MiAyOC4wMDAwMDAwMDAwMDAwMDQlLCAwLjkxMzI2NyAyOC45OTk5OTk5OTk5OTk5OTYlLCAwLjkyNTg1NiAzMCUsIDAuOTM3MTM3IDMxJSwgMC45NDcyMDUgMzIlLCAwLjk1NjE1MyAzMyUsIDAuOTY0MDcgMzQlLCAwLjk3MTA0MyAzNSUsIDAuOTc3MTUzIDM2JSwgMC45ODI0NzkgMzclLCAwLjk4NzA5NCAzOCUsIDAuOTkxMDY2IDM5JSwgMC45OTQ0NjIgNDAlLCAwLjk5NzMzOSA0MSUsIDAuOTk5NzU1IDQyJSwgMS4wMDE3NjEgNDMlLCAxLjAwMzQwNCA0NCUsIDEuMDA0NzI3IDQ1JSwgMS4wMDU3NyA0NiUsIDEuMDA2NTY5IDQ3JSwgMS4wMDcxNTcgNDglLCAxLjAwNzU2MyA0OSUsIDEuMDA3ODEzIDUwJSwgMS4wMDc5MzEgNTElLCAxLjAwNzkzOSA1MiUsIDEuMDA3ODU1IDUzJSwgMS4wMDc2OTcgNTQlLCAxLjAwNzQ3NyA1NS4wMDAwMDAwMDAwMDAwMSUsIDEuMDA3MjEgNTYuMDAwMDAwMDAwMDAwMDElLCAxLjAwNjkwNyA1Ni45OTk5OTk5OTk5OTk5OSUsIDEuMDA2NTc2IDU3Ljk5OTk5OTk5OTk5OTk5JSwgMS4wMDYyMjggNTklLCAxLjAwNTg2OCA2MCUsIDEuMDA1NTAzIDYxJSwgMS4wMDUxMzcgNjIlLCAxLjAwNDc3NiA2MyUsIDEuMDA0NDIyIDY0JSwgMS4wMDQwNzggNjUlLCAxLjAwMzc0NiA2NiUsIDEuMDAzNDI5IDY3JSwgMS4wMDMxMjcgNjglLCAxLjAwMjg0IDY5JSwgMS4wMDI1NzEgNzAlLCAxLjAwMjMxOCA3MSUsIDEuMDAyMDgyIDcyJSwgMS4wMDE4NjMgNzMlLCAxLjAwMTY2IDc0JSwgMS4wMDE0NzMgNzUlLCAxLjAwMTMwMSA3NiUsIDEuMDAxMTQzIDc3JSwgMS4wMDEgNzglLCAxLjAwMDg2OSA3OSUsIDEuMDAwNzUyIDgwJSwgMS4wMDA2NDUgODElLCAxLjAwMDU1IDgyJSwgMS4wMDA0NjQgODMlLCAxLjAwMDM4OCA4NCUsIDEuMDAwMzIxIDg1JSwgMS4wMDAyNjEgODYlLCAxLjAwMDIwOSA4NyUsIDEuMDAwMTYzIDg4JSwgMS4wMDAxMjMgODklLCAxLjAwMDA4OCA5MCUpO1xcblxcbiAgLS1yb3VuZGVkLW5vbmU6IDBweDtcXG4gIC0tcm91bmRlZC1zbTogMnB4O1xcbiAgLS1yb3VuZGVkLW1kOiA0cHg7XFxuICAtLXJvdW5kZWQtbWQtMjogNnB4O1xcbiAgLS1yb3VuZGVkLWxnOiA4cHg7XFxuICAtLXJvdW5kZWQteGw6IDEycHg7XFxuICAtLXJvdW5kZWQtMnhsOiAxNnB4O1xcbiAgLS1yb3VuZGVkLTN4bDogMjRweDtcXG4gIC0tcm91bmRlZC00eGw6IDMycHg7XFxuICAtLXJvdW5kZWQtZnVsbDogOTk5OXB4O1xcblxcbiAgLyogXFxuICAgIFRoaXMgdmFsdWUgZ2V0cyBzZXQgZnJvbSB0aGUgRGV2IFRvb2xzIHByZWZlcmVuY2VzLFxcbiAgICBhbmQgd2UgdXNlIHRoZSBmb2xsb3dpbmcgLS1zaXplLSogdmFyaWFibGVzIHRvIFxcbiAgICBzY2FsZSB0aGUgcmVsZXZhbnQgZWxlbWVudHMuXFxuXFxuICAgIFRoZSByZWFzb24gd2h5IHdlIGRvbid0IHJlbHkgb24gcmVtIHZhbHVlcyBpcyBiZWNhdXNlXFxuICAgIGlmIGFuIGFwcCBzZXRzIHRoZWlyIHJvb3QgZm9udCBzaXplIHRvIHNvbWV0aGluZyB0aW55LCBcXG4gICAgaXQgZmVlbHMgdW5leHBlY3RlZCB0byBoYXZlIHRoZSBhcHAgcm9vdCBzaXplIGxlYWsgXFxuICAgIGludG8gYSBOZXh0LmpzIHN1cmZhY2UuXFxuXFxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9kaXNjdXNzaW9ucy83NjgxMlxcbiAgKi9cXG4gIC0tbmV4dGpzLWRldi10b29scy1zY2FsZTogMTtcXG4gIC0tc2l6ZS0xOiBjYWxjKDFweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yOiBjYWxjKDJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zOiBjYWxjKDNweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00OiBjYWxjKDRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS01OiBjYWxjKDVweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS02OiBjYWxjKDZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS03OiBjYWxjKDdweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS04OiBjYWxjKDhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS05OiBjYWxjKDlweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xMDogY2FsYygxMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTExOiBjYWxjKDExcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTI6IGNhbGMoMTJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xMzogY2FsYygxM3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTE0OiBjYWxjKDE0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTU6IGNhbGMoMTVweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xNjogY2FsYygxNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTE3OiBjYWxjKDE3cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTg6IGNhbGMoMThweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yMDogY2FsYygyMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTIyOiBjYWxjKDIycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjQ6IGNhbGMoMjRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yNjogY2FsYygyNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTI4OiBjYWxjKDI4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzA6IGNhbGMoMzBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zMjogY2FsYygzMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTM0OiBjYWxjKDM0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzY6IGNhbGMoMzZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zODogY2FsYygzOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQwOiBjYWxjKDQwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDI6IGNhbGMoNDJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00NDogY2FsYyg0NHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQ2OiBjYWxjKDQ2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDg6IGNhbGMoNDhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG5cXG4gIEBtZWRpYSBwcmludCB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbmgxLFxcbmgyLFxcbmgzLFxcbmg0LFxcbmg1LFxcbmg2IHtcXG4gIG1hcmdpbi1ib3R0b206IDhweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbn1cXG5cXG5hIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTkwMCk7XFxuICAmOmhvdmVyIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtOTAwKTtcXG4gIH1cXG4gICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgfVxcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPVwiXCIscj12b2lkIDAhPT10WzVdO3JldHVybiB0WzRdJiYobis9XCJAc3VwcG9ydHMgKFwiLmNvbmNhdCh0WzRdLFwiKSB7XCIpKSx0WzJdJiYobis9XCJAbWVkaWEgXCIuY29uY2F0KHRbMl0sXCIge1wiKSksciYmKG4rPVwiQGxheWVyXCIuY29uY2F0KHRbNV0ubGVuZ3RoPjA/XCIgXCIuY29uY2F0KHRbNV0pOlwiXCIsXCIge1wiKSksbis9ZSh0KSxyJiYobis9XCJ9XCIpLHRbMl0mJihuKz1cIn1cIiksdFs0XSYmKG4rPVwifVwiKSxufSkuam9pbihcIlwiKX0sdC5pPWZ1bmN0aW9uKGUsbixyLG8sYSl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPVtbbnVsbCxlLHZvaWQgMF1dKTt2YXIgaT17fTtpZihyKWZvcih2YXIgbD0wO2w8dGhpcy5sZW5ndGg7bCsrKXt2YXIgcz10aGlzW2xdWzBdO251bGwhPXMmJihpW3NdPSEwKX1mb3IodmFyIGM9MDtjPGUubGVuZ3RoO2MrKyl7dmFyIHU9W10uY29uY2F0KGVbY10pO3ImJmlbdVswXV18fCh2b2lkIDAhPT1hJiYodm9pZCAwPT09dVs1XXx8KHVbMV09XCJAbGF5ZXJcIi5jb25jYXQodVs1XS5sZW5ndGg+MD9cIiBcIi5jb25jYXQodVs1XSk6XCJcIixcIiB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSksdVs1XT1hKSxuJiYodVsyXSYmKHVbMV09XCJAbWVkaWEgXCIuY29uY2F0KHVbMl0sXCIge1wiKS5jb25jYXQodVsxXSxcIn1cIikpLHVbMl09biksbyYmKHVbNF0/KHVbMV09XCJAc3VwcG9ydHMgKFwiLmNvbmNhdCh1WzRdLFwiKSB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSx1WzRdPW8pOnVbNF09XCJcIi5jb25jYXQobykpLHQucHVzaCh1KSl9fSx0fX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMV0sbj1lWzNdO2lmKCFuKXJldHVybiB0O2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGJ0b2Epe3ZhciByPWJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KG4pKSkpO3JldHVyblt0XS5jb25jYXQoW1wiLyojIFwiLmNvbmNhdChcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChyKSxcIiAqL1wiKV0pLmpvaW4oXCJcXG5cIil9cmV0dXJuW3RdLmpvaW4oXCJcXG5cIil9fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO3ZhciB0PVtdO2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciBuPS0xLHI9MDtyPHQubGVuZ3RoO3IrKylpZih0W3JdLmlkZW50aWZpZXI9PT1lKXtuPXI7YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gcihlLHIpe2Zvcih2YXIgbz17fSxhPVtdLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGw9ZVtpXSxzPXIuYmFzZT9sWzBdK3IuYmFzZTpsWzBdLGM9b1tzXXx8MCx1PVwiXCIuY29uY2F0KHMsXCIgXCIpLmNvbmNhdChjKTtvW3NdPWMrMTt2YXIgZD1uKHUpLGY9e2NzczpsWzFdLG1lZGlhOmxbMl0sc291cmNlTWFwOmxbM10sc3VwcG9ydHM6bFs0XSxsYXllcjpsWzVdfTtpZigtMSE9PWQpdFtkXS5yZWZlcmVuY2VzKyssdFtkXS51cGRhdGVyKGYpO2Vsc2V7dmFyIHA9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRvbUFQSSh0KTtyZXR1cm4gbi51cGRhdGUoZSksZnVuY3Rpb24odCl7dD8odC5jc3MhPT1lLmNzc3x8dC5tZWRpYSE9PWUubWVkaWF8fHQuc291cmNlTWFwIT09ZS5zb3VyY2VNYXB8fHQuc3VwcG9ydHMhPT1lLnN1cHBvcnRzfHx0LmxheWVyIT09ZS5sYXllcikmJm4udXBkYXRlKGU9dCk6bi5yZW1vdmUoKX19KGYscik7ci5ieUluZGV4PWksdC5zcGxpY2UoaSwwLHtpZGVudGlmaWVyOnUsdXBkYXRlcjpwLHJlZmVyZW5jZXM6MX0pfWEucHVzaCh1KX1yZXR1cm4gYX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxvKXt2YXIgYT1yKGU9ZXx8W10sbz1vfHx7fSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2U9ZXx8W107Zm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBsPW4oYVtpXSk7dFtsXS5yZWZlcmVuY2VzLS19Zm9yKHZhciBzPXIoZSxvKSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciB1PW4oYVtjXSk7MD09PXRbdV0ucmVmZXJlbmNlcyYmKHRbdV0udXBkYXRlcigpLHQuc3BsaWNlKHUsMSkpfWE9c319fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7cmV0dXJuIGUuc2V0QXR0cmlidXRlcyh0LGUuYXR0cmlidXRlcyksZS5pbnNlcnQodCxlLm9wdGlvbnMpLHR9fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5uYzt0JiZlLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsdCl9fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm57dXBkYXRlOmZ1bmN0aW9uKCl7fSxyZW1vdmU6ZnVuY3Rpb24oKXt9fTt2YXIgdD1lLmluc2VydFN0eWxlRWxlbWVudChlKTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uKG4pe3ZhciByLG8sYTtyPVwiXCIsbi5zdXBwb3J0cyYmKHIrPVwiQHN1cHBvcnRzIChcIi5jb25jYXQobi5zdXBwb3J0cyxcIikge1wiKSksbi5tZWRpYSYmKHIrPVwiQG1lZGlhIFwiLmNvbmNhdChuLm1lZGlhLFwiIHtcIikpLChvPXZvaWQgMCE9PW4ubGF5ZXIpJiYocis9XCJAbGF5ZXJcIi5jb25jYXQobi5sYXllci5sZW5ndGg+MD9cIiBcIi5jb25jYXQobi5sYXllcik6XCJcIixcIiB7XCIpKSxyKz1uLmNzcyxvJiYocis9XCJ9XCIpLG4ubWVkaWEmJihyKz1cIn1cIiksbi5zdXBwb3J0cyYmKHIrPVwifVwiKSwoYT1uLnNvdXJjZU1hcCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBidG9hJiYocis9XCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShhKSkpKSxcIiAqL1wiKSksZS5zdHlsZVRhZ1RyYW5zZm9ybShyLHQsZS5vcHRpb25zKX0scmVtb3ZlOmZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2lmKG51bGwhPT1lLnBhcmVudE5vZGUpZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSh0KX19fX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1lO2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKX19fSxcIi4vZGlzdC9jb21waWxlZC9hbnNlci9pbmRleC5qc1wiOmZ1bmN0aW9uKGUpeygoKT0+e1widXNlIHN0cmljdFwiO3ZhciB0PXsyMTE6ZT0+e3ZhciB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbj1bW3tjb2xvcjpcIjAsIDAsIDBcIixjbGFzczpcImFuc2ktYmxhY2tcIn0se2NvbG9yOlwiMTg3LCAwLCAwXCIsY2xhc3M6XCJhbnNpLXJlZFwifSx7Y29sb3I6XCIwLCAxODcsIDBcIixjbGFzczpcImFuc2ktZ3JlZW5cIn0se2NvbG9yOlwiMTg3LCAxODcsIDBcIixjbGFzczpcImFuc2kteWVsbG93XCJ9LHtjb2xvcjpcIjAsIDAsIDE4N1wiLGNsYXNzOlwiYW5zaS1ibHVlXCJ9LHtjb2xvcjpcIjE4NywgMCwgMTg3XCIsY2xhc3M6XCJhbnNpLW1hZ2VudGFcIn0se2NvbG9yOlwiMCwgMTg3LCAxODdcIixjbGFzczpcImFuc2ktY3lhblwifSx7Y29sb3I6XCIyNTUsMjU1LDI1NVwiLGNsYXNzOlwiYW5zaS13aGl0ZVwifV0sW3tjb2xvcjpcIjg1LCA4NSwgODVcIixjbGFzczpcImFuc2ktYnJpZ2h0LWJsYWNrXCJ9LHtjb2xvcjpcIjI1NSwgODUsIDg1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC1yZWRcIn0se2NvbG9yOlwiMCwgMjU1LCAwXCIsY2xhc3M6XCJhbnNpLWJyaWdodC1ncmVlblwifSx7Y29sb3I6XCIyNTUsIDI1NSwgODVcIixjbGFzczpcImFuc2ktYnJpZ2h0LXllbGxvd1wifSx7Y29sb3I6XCI4NSwgODUsIDI1NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtYmx1ZVwifSx7Y29sb3I6XCIyNTUsIDg1LCAyNTVcIixjbGFzczpcImFuc2ktYnJpZ2h0LW1hZ2VudGFcIn0se2NvbG9yOlwiODUsIDI1NSwgMjU1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC1jeWFuXCJ9LHtjb2xvcjpcIjI1NSwgMjU1LCAyNTVcIixjbGFzczpcImFuc2ktYnJpZ2h0LXdoaXRlXCJ9XV07ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTt0aGlzLmZnPXRoaXMuYmc9dGhpcy5mZ190cnVlY29sb3I9dGhpcy5iZ190cnVlY29sb3I9bnVsbCx0aGlzLmJyaWdodD0wfXJldHVybiB0KGUsbnVsbCxbe2tleTpcImVzY2FwZUZvckh0bWxcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4obmV3IGUpLmVzY2FwZUZvckh0bWwodCl9fSx7a2V5OlwibGlua2lmeVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybihuZXcgZSkubGlua2lmeSh0KX19LHtrZXk6XCJhbnNpVG9IdG1sXCIsdmFsdWU6ZnVuY3Rpb24odCxuKXtyZXR1cm4obmV3IGUpLmFuc2lUb0h0bWwodCxuKX19LHtrZXk6XCJhbnNpVG9Kc29uXCIsdmFsdWU6ZnVuY3Rpb24odCxuKXtyZXR1cm4obmV3IGUpLmFuc2lUb0pzb24odCxuKX19LHtrZXk6XCJhbnNpVG9UZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKG5ldyBlKS5hbnNpVG9UZXh0KHQpfX1dKSx0KGUsW3trZXk6XCJzZXR1cFBhbGV0dGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuUEFMRVRURV9DT0xPUlM9W107Zm9yKHZhciBlPTA7ZTwyOysrZSlmb3IodmFyIHQ9MDt0PDg7Kyt0KXRoaXMuUEFMRVRURV9DT0xPUlMucHVzaChuW2VdW3RdLmNvbG9yKTtmb3IodmFyIHI9WzAsOTUsMTM1LDE3NSwyMTUsMjU1XSxvPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcltlXStcIiwgXCIrclt0XStcIiwgXCIrcltuXX0sYT0wO2E8NjsrK2EpZm9yKHZhciBpPTA7aTw2OysraSlmb3IodmFyIGw9MDtsPDY7KytsKXRoaXMuUEFMRVRURV9DT0xPUlMucHVzaChvKGEsaSxsKSk7Zm9yKHZhciBzPTgsYz0wO2M8MjQ7KytjLHMrPTEwKXRoaXMuUEFMRVRURV9DT0xPUlMucHVzaChvKHMscyxzKSl9fSx7a2V5OlwiZXNjYXBlRm9ySHRtbFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1smPD5dL2dtLGZ1bmN0aW9uKGUpe3JldHVyblwiJlwiPT1lP1wiJmFtcDtcIjpcIjxcIj09ZT9cIiZsdDtcIjpcIj5cIj09ZT9cIiZndDtcIjpcIlwifSl9fSx7a2V5OlwibGlua2lmeVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhodHRwcz86XFwvXFwvW15cXHNdKykvZ20sZnVuY3Rpb24oZSl7cmV0dXJuJzxhIGhyZWY9XCInK2UrJ1wiPicrZStcIjwvYT5cIn0pfX0se2tleTpcImFuc2lUb0h0bWxcIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnByb2Nlc3MoZSx0LCEwKX19LHtrZXk6XCJhbnNpVG9Kc29uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4odD10fHx7fSkuanNvbj0hMCx0LmNsZWFyTGluZT0hMSx0aGlzLnByb2Nlc3MoZSx0LCEwKX19LHtrZXk6XCJhbnNpVG9UZXh0XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvY2VzcyhlLHt9LCExKX19LHtrZXk6XCJwcm9jZXNzXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1lLnNwbGl0KC9cXDAzM1xcWy8pLGE9by5zaGlmdCgpO251bGw9PXQmJih0PXt9KSx0LmNsZWFyTGluZT0vXFxyLy50ZXN0KGUpO3ZhciBpPW8ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiByLnByb2Nlc3NDaHVuayhlLHQsbil9KTtpZih0JiZ0Lmpzb24pe3ZhciBsPXRoaXMucHJvY2Vzc0NodW5rSnNvbihcIlwiKTtyZXR1cm4gbC5jb250ZW50PWEsbC5jbGVhckxpbmU9dC5jbGVhckxpbmUsaS51bnNoaWZ0KGwpLHQucmVtb3ZlX2VtcHR5JiYoaT1pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5pc0VtcHR5KCl9KSksaX1yZXR1cm4gaS51bnNoaWZ0KGEpLGkuam9pbihcIlwiKX19LHtrZXk6XCJwcm9jZXNzQ2h1bmtKc29uXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPSh0PXZvaWQgMD09PXQ/e306dCkudXNlX2NsYXNzZXM9dm9pZCAwIT09dC51c2VfY2xhc3NlcyYmdC51c2VfY2xhc3NlcyxhPXQua2V5PW8/XCJjbGFzc1wiOlwiY29sb3JcIixpPXtjb250ZW50OmUsZmc6bnVsbCxiZzpudWxsLGZnX3RydWVjb2xvcjpudWxsLGJnX3RydWVjb2xvcjpudWxsLGNsZWFyTGluZTp0LmNsZWFyTGluZSxkZWNvcmF0aW9uOm51bGwsd2FzX3Byb2Nlc3NlZDohMSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIWkuY29udGVudH19LGw9ZS5tYXRjaCgvXihbIVxceDNjLVxceDNmXSopKFtcXGQ7XSopKFtcXHgyMC1cXHgyY10qW1xceDQwLVxceDdlXSkoW1xcc1xcU10qKS9tKTtpZighbClyZXR1cm4gaTtpLmNvbnRlbnQ9bFs0XTt2YXIgcz1sWzJdLnNwbGl0KFwiO1wiKTtpZihcIlwiIT09bFsxXXx8XCJtXCIhPT1sWzNdfHwhcilyZXR1cm4gaTtmb3IodGhpcy5kZWNvcmF0aW9uPW51bGw7cy5sZW5ndGg+MDspe3ZhciBjPXBhcnNlSW50KHMuc2hpZnQoKSk7aWYoaXNOYU4oYyl8fDA9PT1jKXRoaXMuZmc9dGhpcy5iZz10aGlzLmRlY29yYXRpb249bnVsbDtlbHNlIGlmKDE9PT1jKXRoaXMuZGVjb3JhdGlvbj1cImJvbGRcIjtlbHNlIGlmKDI9PT1jKXRoaXMuZGVjb3JhdGlvbj1cImRpbVwiO2Vsc2UgaWYoMz09Yyl0aGlzLmRlY29yYXRpb249XCJpdGFsaWNcIjtlbHNlIGlmKDQ9PWMpdGhpcy5kZWNvcmF0aW9uPVwidW5kZXJsaW5lXCI7ZWxzZSBpZig1PT1jKXRoaXMuZGVjb3JhdGlvbj1cImJsaW5rXCI7ZWxzZSBpZig3PT09Yyl0aGlzLmRlY29yYXRpb249XCJyZXZlcnNlXCI7ZWxzZSBpZig4PT09Yyl0aGlzLmRlY29yYXRpb249XCJoaWRkZW5cIjtlbHNlIGlmKDk9PT1jKXRoaXMuZGVjb3JhdGlvbj1cInN0cmlrZXRocm91Z2hcIjtlbHNlIGlmKDM5PT1jKXRoaXMuZmc9bnVsbDtlbHNlIGlmKDQ5PT1jKXRoaXMuYmc9bnVsbDtlbHNlIGlmKGM+PTMwJiZjPDM4KXRoaXMuZmc9blswXVtjJTEwXVthXTtlbHNlIGlmKGM+PTkwJiZjPDk4KXRoaXMuZmc9blsxXVtjJTEwXVthXTtlbHNlIGlmKGM+PTQwJiZjPDQ4KXRoaXMuYmc9blswXVtjJTEwXVthXTtlbHNlIGlmKGM+PTEwMCYmYzwxMDgpdGhpcy5iZz1uWzFdW2MlMTBdW2FdO2Vsc2UgaWYoMzg9PT1jfHw0OD09PWMpe3ZhciB1PTM4PT09YztpZihzLmxlbmd0aD49MSl7dmFyIGQ9cy5zaGlmdCgpO2lmKFwiNVwiPT09ZCYmcy5sZW5ndGg+PTEpe3ZhciBmPXBhcnNlSW50KHMuc2hpZnQoKSk7aWYoZj49MCYmZjw9MjU1KWlmKG8pe3ZhciBwPWY+PTE2P1wiYW5zaS1wYWxldHRlLVwiK2Y6blsrKGY+NyldW2YlOF0uY2xhc3M7dT90aGlzLmZnPXA6dGhpcy5iZz1wfWVsc2UgdGhpcy5QQUxFVFRFX0NPTE9SU3x8dGhpcy5zZXR1cFBhbGV0dGUoKSx1P3RoaXMuZmc9dGhpcy5QQUxFVFRFX0NPTE9SU1tmXTp0aGlzLmJnPXRoaXMuUEFMRVRURV9DT0xPUlNbZl19ZWxzZSBpZihcIjJcIj09PWQmJnMubGVuZ3RoPj0zKXt2YXIgaD1wYXJzZUludChzLnNoaWZ0KCkpLG09cGFyc2VJbnQocy5zaGlmdCgpKSxnPXBhcnNlSW50KHMuc2hpZnQoKSk7aWYoaD49MCYmaDw9MjU1JiZtPj0wJiZtPD0yNTUmJmc+PTAmJmc8PTI1NSl7dmFyIHk9aCtcIiwgXCIrbStcIiwgXCIrZztvP3U/KHRoaXMuZmc9XCJhbnNpLXRydWVjb2xvclwiLHRoaXMuZmdfdHJ1ZWNvbG9yPXkpOih0aGlzLmJnPVwiYW5zaS10cnVlY29sb3JcIix0aGlzLmJnX3RydWVjb2xvcj15KTp1P3RoaXMuZmc9eTp0aGlzLmJnPXl9fX19fXJldHVybiBudWxsPT09dGhpcy5mZyYmbnVsbD09PXRoaXMuYmcmJm51bGw9PT10aGlzLmRlY29yYXRpb258fChpLmZnPXRoaXMuZmcsaS5iZz10aGlzLmJnLGkuZmdfdHJ1ZWNvbG9yPXRoaXMuZmdfdHJ1ZWNvbG9yLGkuYmdfdHJ1ZWNvbG9yPXRoaXMuYmdfdHJ1ZWNvbG9yLGkuZGVjb3JhdGlvbj10aGlzLmRlY29yYXRpb24saS53YXNfcHJvY2Vzc2VkPSEwKSxpfX0se2tleTpcInByb2Nlc3NDaHVua1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO3Q9dHx8e307dmFyIG89dGhpcy5wcm9jZXNzQ2h1bmtKc29uKGUsdCxuKTtpZih0Lmpzb24pcmV0dXJuIG87aWYoby5pc0VtcHR5KCkpcmV0dXJuXCJcIjtpZighby53YXNfcHJvY2Vzc2VkKXJldHVybiBvLmNvbnRlbnQ7dmFyIGE9dC51c2VfY2xhc3NlcyxpPVtdLGw9W10scz17fSxjPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49dm9pZCAwO2ZvcihuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdC5wdXNoKFwiZGF0YS1cIituKyc9XCInK3IuZXNjYXBlRm9ySHRtbChlW25dKSsnXCInKTtyZXR1cm4gdC5sZW5ndGg+MD9cIiBcIit0LmpvaW4oXCIgXCIpOlwiXCJ9O3JldHVybihvLmZnJiYoYT8obC5wdXNoKG8uZmcrXCItZmdcIiksbnVsbCE9PW8uZmdfdHJ1ZWNvbG9yJiYoc1tcImFuc2ktdHJ1ZWNvbG9yLWZnXCJdPW8uZmdfdHJ1ZWNvbG9yLG8uZmdfdHJ1ZWNvbG9yPW51bGwpKTppLnB1c2goXCJjb2xvcjpyZ2IoXCIrby5mZytcIilcIikpLG8uYmcmJihhPyhsLnB1c2goby5iZytcIi1iZ1wiKSxudWxsIT09by5iZ190cnVlY29sb3ImJihzW1wiYW5zaS10cnVlY29sb3ItYmdcIl09by5iZ190cnVlY29sb3Isby5iZ190cnVlY29sb3I9bnVsbCkpOmkucHVzaChcImJhY2tncm91bmQtY29sb3I6cmdiKFwiK28uYmcrXCIpXCIpKSxvLmRlY29yYXRpb24mJihhP2wucHVzaChcImFuc2ktXCIrby5kZWNvcmF0aW9uKTpcImJvbGRcIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJmb250LXdlaWdodDpib2xkXCIpOlwiZGltXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwib3BhY2l0eTowLjVcIik6XCJpdGFsaWNcIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJmb250LXN0eWxlOml0YWxpY1wiKTpcInJldmVyc2VcIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJmaWx0ZXI6aW52ZXJ0KDEwMCUpXCIpOlwiaGlkZGVuXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwidmlzaWJpbGl0eTpoaWRkZW5cIik6XCJzdHJpa2V0aHJvdWdoXCI9PT1vLmRlY29yYXRpb24/aS5wdXNoKFwidGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaFwiKTppLnB1c2goXCJ0ZXh0LWRlY29yYXRpb246XCIrby5kZWNvcmF0aW9uKSksYSk/JzxzcGFuIGNsYXNzPVwiJytsLmpvaW4oXCIgXCIpKydcIicrYyhzKStcIj5cIitvLmNvbnRlbnQrXCI8L3NwYW4+XCI6JzxzcGFuIHN0eWxlPVwiJytpLmpvaW4oXCI7XCIpKydcIicrYyhzKStcIj5cIitvLmNvbnRlbnQrXCI8L3NwYW4+XCJ9fV0pLGV9KCl9fSxuPXt9O2Z1bmN0aW9uIHIoZSl7dmFyIG89bltlXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGE9bltlXT17ZXhwb3J0czp7fX0saT0hMDt0cnl7dFtlXShhLGEuZXhwb3J0cyxyKSxpPSExfWZpbmFsbHl7aSYmZGVsZXRlIG5bZV19cmV0dXJuIGEuZXhwb3J0c31yLmFiPVwiLy9cIixlLmV4cG9ydHM9cigyMTEpfSkoKX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tY2xpZW50LnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbz1uKFwiLi9kaXN0L2NvbXBpbGVkL3NjaGVkdWxlci9pbmRleC5qc1wiKSxhPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvaW5kZXguanNcIiksaT1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9pbmRleC5qc1wiKTtmdW5jdGlvbiBsKGUpe3ZhciB0PVwiaHR0cHM6Ly9yZWFjdC5kZXYvZXJyb3JzL1wiK2U7aWYoMTxhcmd1bWVudHMubGVuZ3RoKXt0Kz1cIj9hcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7Zm9yKHZhciBuPTI7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSl9cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgXCIrdCtcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLG49ZTtpZihlLmFsdGVybmF0ZSlmb3IoO3QucmV0dXJuOyl0PXQucmV0dXJuO2Vsc2V7ZT10O2RvIDAhPSg0MDk4Jih0PWUpLmZsYWdzKSYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm47d2hpbGUoZSl9cmV0dXJuIDM9PT10LnRhZz9uOm51bGx9ZnVuY3Rpb24gYyhlKXtpZigxMz09PWUudGFnKXt2YXIgdD1lLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PXQmJm51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJih0PWUubWVtb2l6ZWRTdGF0ZSksbnVsbCE9PXQpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiB1KGUpe2lmKDMxPT09ZS50YWcpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09dCYmbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKHQ9ZS5tZW1vaXplZFN0YXRlKSxudWxsIT09dClyZXR1cm4gdC5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIGQoZSl7aWYocyhlKSE9PWUpdGhyb3cgRXJyb3IobCgxODgpKX12YXIgZj1PYmplY3QuYXNzaWduLHA9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksaD1TeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIiksbT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLGc9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHk9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHY9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLGI9U3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLEE9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIikseD1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksQz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxfPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik7U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpO3ZhciBFPVN5bWJvbC5mb3IoXCJyZWFjdC5hY3Rpdml0eVwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKSxTeW1ib2wuZm9yKFwicmVhY3QudHJhY2luZ19tYXJrZXJcIik7dmFyIGo9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik7U3ltYm9sLmZvcihcInJlYWN0LnZpZXdfdHJhbnNpdGlvblwiKTt2YXIgUz1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gTyhlKXtyZXR1cm4gbnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlP251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YoZT1TJiZlW1NdfHxlW1wiQEBpdGVyYXRvclwiXSk/ZTpudWxsfXZhciBCPVN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFA9QXJyYXkuaXNBcnJheSxJPWEuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLHo9aS5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsVD17cGVuZGluZzohMSxkYXRhOm51bGwsbWV0aG9kOm51bGwsYWN0aW9uOm51bGx9LEQ9W10sTD0tMTtmdW5jdGlvbiBOKGUpe3JldHVybntjdXJyZW50OmV9fWZ1bmN0aW9uIFIoZSl7MD5MfHwoZS5jdXJyZW50PURbTF0sRFtMXT1udWxsLEwtLSl9ZnVuY3Rpb24gTShlLHQpe0RbKytMXT1lLmN1cnJlbnQsZS5jdXJyZW50PXR9dmFyIFo9TihudWxsKSxVPU4obnVsbCksRj1OKG51bGwpLHE9TihudWxsKTtmdW5jdGlvbiBIKGUsdCl7c3dpdGNoKE0oRix0KSxNKFUsZSksTShaLG51bGwpLHQubm9kZVR5cGUpe2Nhc2UgOTpjYXNlIDExOmU9KGU9dC5kb2N1bWVudEVsZW1lbnQpJiYoZT1lLm5hbWVzcGFjZVVSSSk/Y2goZSk6MDticmVhaztkZWZhdWx0OmlmKGU9dC50YWdOYW1lLHQ9dC5uYW1lc3BhY2VVUkkpZT1jbSh0PWNoKHQpLGUpO2Vsc2Ugc3dpdGNoKGUpe2Nhc2VcInN2Z1wiOmU9MTticmVhaztjYXNlXCJtYXRoXCI6ZT0yO2JyZWFrO2RlZmF1bHQ6ZT0wfX1SKFopLE0oWixlKX1mdW5jdGlvbiBWKCl7UihaKSxSKFUpLFIoRil9ZnVuY3Rpb24gJChlKXtudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZNKHEsZSk7dmFyIHQ9Wi5jdXJyZW50LG49Y20odCxlLnR5cGUpO3QhPT1uJiYoTShVLGUpLE0oWixuKSl9ZnVuY3Rpb24gVyhlKXtVLmN1cnJlbnQ9PT1lJiYoUihaKSxSKFUpKSxxLmN1cnJlbnQ9PT1lJiYoUihxKSxjOS5fY3VycmVudFZhbHVlPVQpfWZ1bmN0aW9uIFkoZSl7aWYodm9pZCAwPT09dEwpdHJ5e3Rocm93IEVycm9yKCl9Y2F0Y2goZSl7dmFyIHQ9ZS5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTt0TD10JiZ0WzFdfHxcIlwiLHROPS0xPGUuc3RhY2suaW5kZXhPZihcIlxcbiAgICBhdFwiKT9cIiAoPGFub255bW91cz4pXCI6LTE8ZS5zdGFjay5pbmRleE9mKFwiQFwiKT9cIkB1bmtub3duOjA6MFwiOlwiXCJ9cmV0dXJuXCJcXG5cIit0TCtlK3ROfXZhciBLPSExO2Z1bmN0aW9uIFgoZSx0KXtpZighZXx8SylyZXR1cm5cIlwiO0s9ITA7dmFyIG49RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXt2YXIgcj17RGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OmZ1bmN0aW9uKCl7dHJ5e2lmKHQpe3ZhciBuPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX07aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLFwicHJvcHNcIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX19KSxcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChuLFtdKX1jYXRjaChlKXt2YXIgcj1lfVJlZmxlY3QuY29uc3RydWN0KGUsW10sbil9ZWxzZXt0cnl7bi5jYWxsKCl9Y2F0Y2goZSl7cj1lfWUuY2FsbChuLnByb3RvdHlwZSl9fWVsc2V7dHJ5e3Rocm93IEVycm9yKCl9Y2F0Y2goZSl7cj1lfShuPWUoKSkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4uY2F0Y2gmJm4uY2F0Y2goZnVuY3Rpb24oKXt9KX19Y2F0Y2goZSl7aWYoZSYmciYmXCJzdHJpbmdcIj09dHlwZW9mIGUuc3RhY2spcmV0dXJuW2Uuc3RhY2ssci5zdGFja119cmV0dXJuW251bGwsbnVsbF19fTtyLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdC5kaXNwbGF5TmFtZT1cIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXCJuYW1lXCIpO28mJm8uY29uZmlndXJhYmxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXCJuYW1lXCIse3ZhbHVlOlwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCJ9KTt2YXIgYT1yLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCgpLGk9YVswXSxsPWFbMV07aWYoaSYmbCl7dmFyIHM9aS5zcGxpdChcIlxcblwiKSxjPWwuc3BsaXQoXCJcXG5cIik7Zm9yKG89cj0wO3I8cy5sZW5ndGgmJiFzW3JdLmluY2x1ZGVzKFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCIpOylyKys7Zm9yKDtvPGMubGVuZ3RoJiYhY1tvXS5pbmNsdWRlcyhcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiKTspbysrO2lmKHI9PT1zLmxlbmd0aHx8bz09PWMubGVuZ3RoKWZvcihyPXMubGVuZ3RoLTEsbz1jLmxlbmd0aC0xOzE8PXImJjA8PW8mJnNbcl0hPT1jW29dOylvLS07Zm9yKDsxPD1yJiYwPD1vO3ItLSxvLS0paWYoc1tyXSE9PWNbb10pe2lmKDEhPT1yfHwxIT09bylkbyBpZihyLS0sby0tLDA+b3x8c1tyXSE9PWNbb10pe3ZhciB1PVwiXFxuXCIrc1tyXS5yZXBsYWNlKFwiIGF0IG5ldyBcIixcIiBhdCBcIik7cmV0dXJuIGUuZGlzcGxheU5hbWUmJnUuaW5jbHVkZXMoXCI8YW5vbnltb3VzPlwiKSYmKHU9dS5yZXBsYWNlKFwiPGFub255bW91cz5cIixlLmRpc3BsYXlOYW1lKSksdX13aGlsZSgxPD1yJiYwPD1vKTticmVha319fWZpbmFsbHl7Sz0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1ufXJldHVybihuPWU/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lOlwiXCIpP1kobik6XCJcIn1mdW5jdGlvbiBHKGUpe3RyeXt2YXIgdD1cIlwiLG49bnVsbDtkbyB0Kz1mdW5jdGlvbihlLHQpe3N3aXRjaChlLnRhZyl7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpyZXR1cm4gWShlLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIFkoXCJMYXp5XCIpO2Nhc2UgMTM6cmV0dXJuIGUuY2hpbGQhPT10JiZudWxsIT09dD9ZKFwiU3VzcGVuc2UgRmFsbGJhY2tcIik6WShcIlN1c3BlbnNlXCIpO2Nhc2UgMTk6cmV0dXJuIFkoXCJTdXNwZW5zZUxpc3RcIik7Y2FzZSAwOmNhc2UgMTU6cmV0dXJuIFgoZS50eXBlLCExKTtjYXNlIDExOnJldHVybiBYKGUudHlwZS5yZW5kZXIsITEpO2Nhc2UgMTpyZXR1cm4gWChlLnR5cGUsITApO2Nhc2UgMzE6cmV0dXJuIFkoXCJBY3Rpdml0eVwiKTtkZWZhdWx0OnJldHVyblwiXCJ9fShlLG4pLG49ZSxlPWUucmV0dXJuO3doaWxlKGUpO3JldHVybiB0fWNhdGNoKGUpe3JldHVyblwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZS5tZXNzYWdlK1wiXFxuXCIrZS5zdGFja319dmFyIFE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxKPW8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxlZT1vLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLGV0PW8udW5zdGFibGVfc2hvdWxkWWllbGQsZW49by51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsZXI9by51bnN0YWJsZV9ub3csZW89by51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxlYT1vLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGVpPW8udW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksZWw9by51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxlcz1vLnVuc3RhYmxlX0xvd1ByaW9yaXR5LGVjPW8udW5zdGFibGVfSWRsZVByaW9yaXR5LGV1PW8ubG9nLGVkPW8udW5zdGFibGVfc2V0RGlzYWJsZVlpZWxkVmFsdWUsZWY9bnVsbCxlcD1udWxsO2Z1bmN0aW9uIGVoKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGV1JiZlZChlKSxlcCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZXAuc2V0U3RyaWN0TW9kZSl0cnl7ZXAuc2V0U3RyaWN0TW9kZShlZixlKX1jYXRjaChlKXt9fXZhciBlbT1NYXRoLmNsejMyP01hdGguY2x6MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPj4+PTApPzMyOjMxLShlZyhlKS9leXwwKXwwfSxlZz1NYXRoLmxvZyxleT1NYXRoLkxOMixldj0yNTYsZWI9NDE5NDMwNDtmdW5jdGlvbiBlQShlKXt2YXIgdD00MiZlO2lmKDAhPT10KXJldHVybiB0O3N3aXRjaChlJi1lKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpyZXR1cm4gNjQ7Y2FzZSAxMjg6cmV0dXJuIDEyODtjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gNDE5NDA0OCZlO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAweDEwMDAwMDA6Y2FzZSAweDIwMDAwMDA6cmV0dXJuIDB4M2MwMDAwMCZlO2Nhc2UgMHg0MDAwMDAwOnJldHVybiAweDQwMDAwMDA7Y2FzZSAweDgwMDAwMDA6cmV0dXJuIDB4ODAwMDAwMDtjYXNlIDB4MTAwMDAwMDA6cmV0dXJuIDB4MTAwMDAwMDA7Y2FzZSAweDIwMDAwMDAwOnJldHVybiAweDIwMDAwMDAwO2Nhc2UgMHg0MDAwMDAwMDpyZXR1cm4gMDtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBleChlLHQsbil7dmFyIHI9ZS5wZW5kaW5nTGFuZXM7aWYoMD09PXIpcmV0dXJuIDA7dmFyIG89MCxhPWUuc3VzcGVuZGVkTGFuZXMsaT1lLnBpbmdlZExhbmVzO2U9ZS53YXJtTGFuZXM7dmFyIGw9MHg3ZmZmZmZmJnI7cmV0dXJuIDAhPT1sPzAhPShyPWwmfmEpP289ZUEocik6MCE9KGkmPWwpP289ZUEoaSk6bnx8MCE9KG49bCZ+ZSkmJihvPWVBKG4pKTowIT0obD1yJn5hKT9vPWVBKGwpOjAhPT1pP289ZUEoaSk6bnx8MCE9KG49ciZ+ZSkmJihvPWVBKG4pKSwwPT09bz8wOjAhPT10JiZ0IT09byYmMD09KHQmYSkmJigoYT1vJi1vKT49KG49dCYtdCl8fDMyPT09YSYmMCE9KDQxOTQwNDgmbikpP3Q6b31mdW5jdGlvbiBldyhlLHQpe3JldHVybiAwPT0oZS5wZW5kaW5nTGFuZXMmfihlLnN1c3BlbmRlZExhbmVzJn5lLnBpbmdlZExhbmVzKSZ0KX1mdW5jdGlvbiBlQygpe3ZhciBlPWV2O3JldHVybiAwPT0oNDE5NDA0OCYoZXY8PD0xKSkmJihldj0yNTYpLGV9ZnVuY3Rpb24gZV8oKXt2YXIgZT1lYjtyZXR1cm4gMD09KDB4M2MwMDAwMCYoZWI8PD0xKSkmJihlYj00MTk0MzA0KSxlfWZ1bmN0aW9uIGVrKGUpe2Zvcih2YXIgdD1bXSxuPTA7MzE+bjtuKyspdC5wdXNoKGUpO3JldHVybiB0fWZ1bmN0aW9uIGVFKGUsdCl7ZS5wZW5kaW5nTGFuZXN8PXQsMHgxMDAwMDAwMCE9PXQmJihlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUud2FybUxhbmVzPTApfWZ1bmN0aW9uIGVqKGUsdCxuKXtlLnBlbmRpbmdMYW5lc3w9dCxlLnN1c3BlbmRlZExhbmVzJj1+dDt2YXIgcj0zMS1lbSh0KTtlLmVudGFuZ2xlZExhbmVzfD10LGUuZW50YW5nbGVtZW50c1tyXT0weDQwMDAwMDAwfGUuZW50YW5nbGVtZW50c1tyXXw0MTk0MDkwJm59ZnVuY3Rpb24gZVMoZSx0KXt2YXIgbj1lLmVudGFuZ2xlZExhbmVzfD10O2ZvcihlPWUuZW50YW5nbGVtZW50cztuOyl7dmFyIHI9MzEtZW0obiksbz0xPDxyO28mdHxlW3JdJnQmJihlW3JdfD10KSxuJj1+b319ZnVuY3Rpb24gZU8oZSx0KXt2YXIgbj10Ji10O3JldHVybiAwIT0oKG49MCE9KDQyJm4pPzE6ZUIobikpJihlLnN1c3BlbmRlZExhbmVzfHQpKT8wOm59ZnVuY3Rpb24gZUIoZSl7c3dpdGNoKGUpe2Nhc2UgMjplPTE7YnJlYWs7Y2FzZSA4OmU9NDticmVhaztjYXNlIDMyOmU9MTY7YnJlYWs7Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDB4MTAwMDAwMDpjYXNlIDB4MjAwMDAwMDplPTEyODticmVhaztjYXNlIDB4MTAwMDAwMDA6ZT0weDgwMDAwMDA7YnJlYWs7ZGVmYXVsdDplPTB9cmV0dXJuIGV9ZnVuY3Rpb24gZVAoZSl7cmV0dXJuIDI8KGUmPS1lKT84PGU/MCE9KDB4N2ZmZmZmZiZlKT8zMjoweDEwMDAwMDAwOjg6Mn1mdW5jdGlvbiBlSSgpe3ZhciBlPXoucDtyZXR1cm4gMCE9PWU/ZTp2b2lkIDA9PT0oZT13aW5kb3cuZXZlbnQpPzMyOnVkKGUudHlwZSl9ZnVuY3Rpb24gZXooZSx0KXt2YXIgbj16LnA7dHJ5e3JldHVybiB6LnA9ZSx0KCl9ZmluYWxseXt6LnA9bn19dmFyIGVUPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGVEPVwiX19yZWFjdEZpYmVyJFwiK2VULGVMPVwiX19yZWFjdFByb3BzJFwiK2VULGVOPVwiX19yZWFjdENvbnRhaW5lciRcIitlVCxlUj1cIl9fcmVhY3RFdmVudHMkXCIrZVQsZU09XCJfX3JlYWN0TGlzdGVuZXJzJFwiK2VULGVaPVwiX19yZWFjdEhhbmRsZXMkXCIrZVQsZVU9XCJfX3JlYWN0UmVzb3VyY2VzJFwiK2VULGVGPVwiX19yZWFjdE1hcmtlciRcIitlVDtmdW5jdGlvbiBlcShlKXtkZWxldGUgZVtlRF0sZGVsZXRlIGVbZUxdLGRlbGV0ZSBlW2VSXSxkZWxldGUgZVtlTV0sZGVsZXRlIGVbZVpdfWZ1bmN0aW9uIGVIKGUpe3ZhciB0PWVbZURdO2lmKHQpcmV0dXJuIHQ7Zm9yKHZhciBuPWUucGFyZW50Tm9kZTtuOyl7aWYodD1uW2VOXXx8bltlRF0pe2lmKG49dC5hbHRlcm5hdGUsbnVsbCE9PXQuY2hpbGR8fG51bGwhPT1uJiZudWxsIT09bi5jaGlsZClmb3IoZT1jeihlKTtudWxsIT09ZTspe2lmKG49ZVtlRF0pcmV0dXJuIG47ZT1jeihlKX1yZXR1cm4gdH1uPShlPW4pLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZVYoZSl7aWYoZT1lW2VEXXx8ZVtlTl0pe3ZhciB0PWUudGFnO2lmKDU9PT10fHw2PT09dHx8MTM9PT10fHwzMT09PXR8fDI2PT09dHx8Mjc9PT10fHwzPT09dClyZXR1cm4gZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBlJChlKXt2YXIgdD1lLnRhZztpZig1PT09dHx8MjY9PT10fHwyNz09PXR8fDY9PT10KXJldHVybiBlLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihsKDMzKSl9ZnVuY3Rpb24gZVcoZSl7dmFyIHQ9ZVtlVV07cmV0dXJuIHR8fCh0PWVbZVVdPXtob2lzdGFibGVTdHlsZXM6bmV3IE1hcCxob2lzdGFibGVTY3JpcHRzOm5ldyBNYXB9KSx0fWZ1bmN0aW9uIGVZKGUpe2VbZUZdPSEwfXZhciBlSz1uZXcgU2V0LGVYPXt9O2Z1bmN0aW9uIGVHKGUsdCl7ZVEoZSx0KSxlUShlK1wiQ2FwdHVyZVwiLHQpfWZ1bmN0aW9uIGVRKGUsdCl7Zm9yKGVYW2VdPXQsZT0wO2U8dC5sZW5ndGg7ZSsrKWVLLmFkZCh0W2VdKX12YXIgZUo9UmVnRXhwKFwiXls6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEXVs6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBdKiRcIiksZTA9e30sZTE9e307ZnVuY3Rpb24gZTIoZSx0LG4pe2lmKFEuY2FsbChlMSx0KXx8IVEuY2FsbChlMCx0KSYmKGVKLnRlc3QodCk/ZTFbdF09ITA6KGUwW3RdPSEwLCExKSkpaWYobnVsbD09PW4pZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtzd2l0Y2godHlwZW9mIG4pe2Nhc2VcInVuZGVmaW5lZFwiOmNhc2VcImZ1bmN0aW9uXCI6Y2FzZVwic3ltYm9sXCI6ZS5yZW1vdmVBdHRyaWJ1dGUodCk7cmV0dXJuO2Nhc2VcImJvb2xlYW5cIjp2YXIgcj10LnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtpZihcImRhdGEtXCIhPT1yJiZcImFyaWEtXCIhPT1yKXJldHVybiB2b2lkIGUucmVtb3ZlQXR0cmlidXRlKHQpfWUuc2V0QXR0cmlidXRlKHQsXCJcIituKX19ZnVuY3Rpb24gZTQoZSx0LG4pe2lmKG51bGw9PT1uKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7c3dpdGNoKHR5cGVvZiBuKXtjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJmdW5jdGlvblwiOmNhc2VcInN5bWJvbFwiOmNhc2VcImJvb2xlYW5cIjplLnJlbW92ZUF0dHJpYnV0ZSh0KTtyZXR1cm59ZS5zZXRBdHRyaWJ1dGUodCxcIlwiK24pfX1mdW5jdGlvbiBlNShlLHQsbixyKXtpZihudWxsPT09cillLnJlbW92ZUF0dHJpYnV0ZShuKTtlbHNle3N3aXRjaCh0eXBlb2Ygcil7Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJzeW1ib2xcIjpjYXNlXCJib29sZWFuXCI6ZS5yZW1vdmVBdHRyaWJ1dGUobik7cmV0dXJufWUuc2V0QXR0cmlidXRlTlModCxuLFwiXCIrcil9fWZ1bmN0aW9uIGUzKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZVwiYmlnaW50XCI6Y2FzZVwiYm9vbGVhblwiOmNhc2VcIm51bWJlclwiOmNhc2VcInN0cmluZ1wiOmNhc2VcInVuZGVmaW5lZFwiOmNhc2VcIm9iamVjdFwiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuXCJcIn19ZnVuY3Rpb24gZTYoZSl7dmFyIHQ9ZS50eXBlO3JldHVybihlPWUubm9kZU5hbWUpJiZcImlucHV0XCI9PT1lLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT10fHxcInJhZGlvXCI9PT10KX1mdW5jdGlvbiBlOShlKXtpZighZS5fdmFsdWVUcmFja2VyKXt2YXIgdD1lNihlKT9cImNoZWNrZWRcIjpcInZhbHVlXCI7ZS5fdmFsdWVUcmFja2VyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLHQpO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ2b2lkIDAhPT1yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmdldCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5zZXQpe3ZhciBvPXIuZ2V0LGE9ci5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7bj1cIlwiK2UsYS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpyLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7bj1cIlwiK2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3RdfX19fShlLHQsXCJcIitlW3RdKX19ZnVuY3Rpb24gZTgoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxyPVwiXCI7cmV0dXJuIGUmJihyPWU2KGUpP2UuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6ZS52YWx1ZSksKGU9cikhPT1uJiYodC5zZXRWYWx1ZShlKSwhMCl9ZnVuY3Rpb24gZTcoZSl7aWYodm9pZCAwPT09KGU9ZXx8KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fXZhciB0ZT0vW1xcblwiXFxcXF0vZztmdW5jdGlvbiB0dChlKXtyZXR1cm4gZS5yZXBsYWNlKHRlLGZ1bmN0aW9uKGUpe3JldHVyblwiXFxcXFwiK2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrXCIgXCJ9KX1mdW5jdGlvbiB0bihlLHQsbixyLG8sYSxpLGwpe2UubmFtZT1cIlwiLG51bGwhPWkmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkmJlwic3ltYm9sXCIhPXR5cGVvZiBpJiZcImJvb2xlYW5cIiE9dHlwZW9mIGk/ZS50eXBlPWk6ZS5yZW1vdmVBdHRyaWJ1dGUoXCJ0eXBlXCIpLG51bGwhPXQ/XCJudW1iZXJcIj09PWk/KDA9PT10JiZcIlwiPT09ZS52YWx1ZXx8ZS52YWx1ZSE9dCkmJihlLnZhbHVlPVwiXCIrZTModCkpOmUudmFsdWUhPT1cIlwiK2UzKHQpJiYoZS52YWx1ZT1cIlwiK2UzKHQpKTpcInN1Ym1pdFwiIT09aSYmXCJyZXNldFwiIT09aXx8ZS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSxudWxsIT10P3RvKGUsaSxlMyh0KSk6bnVsbCE9bj90byhlLGksZTMobikpOm51bGwhPXImJmUucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIiksbnVsbD09byYmbnVsbCE9YSYmKGUuZGVmYXVsdENoZWNrZWQ9ISFhKSxudWxsIT1vJiYoZS5jaGVja2VkPW8mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG8mJlwic3ltYm9sXCIhPXR5cGVvZiBvKSxudWxsIT1sJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsJiZcInN5bWJvbFwiIT10eXBlb2YgbCYmXCJib29sZWFuXCIhPXR5cGVvZiBsP2UubmFtZT1cIlwiK2UzKGwpOmUucmVtb3ZlQXR0cmlidXRlKFwibmFtZVwiKX1mdW5jdGlvbiB0cihlLHQsbixyLG8sYSxpLGwpe2lmKG51bGwhPWEmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEmJlwic3ltYm9sXCIhPXR5cGVvZiBhJiZcImJvb2xlYW5cIiE9dHlwZW9mIGEmJihlLnR5cGU9YSksbnVsbCE9dHx8bnVsbCE9bil7aWYoKFwic3VibWl0XCI9PT1hfHxcInJlc2V0XCI9PT1hKSYmbnVsbD09dClyZXR1cm4gdm9pZCBlOShlKTtuPW51bGwhPW4/XCJcIitlMyhuKTpcIlwiLHQ9bnVsbCE9dD9cIlwiK2UzKHQpOm4sbHx8dD09PWUudmFsdWV8fChlLnZhbHVlPXQpLGUuZGVmYXVsdFZhbHVlPXR9cj1cImZ1bmN0aW9uXCIhPXR5cGVvZihyPW51bGwhPXI/cjpvKSYmXCJzeW1ib2xcIiE9dHlwZW9mIHImJiEhcixlLmNoZWNrZWQ9bD9lLmNoZWNrZWQ6ISFyLGUuZGVmYXVsdENoZWNrZWQ9ISFyLG51bGwhPWkmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkmJlwic3ltYm9sXCIhPXR5cGVvZiBpJiZcImJvb2xlYW5cIiE9dHlwZW9mIGkmJihlLm5hbWU9aSksZTkoZSl9ZnVuY3Rpb24gdG8oZSx0LG4pe1wibnVtYmVyXCI9PT10JiZlNyhlLm93bmVyRG9jdW1lbnQpPT09ZXx8ZS5kZWZhdWx0VmFsdWU9PT1cIlwiK258fChlLmRlZmF1bHRWYWx1ZT1cIlwiK24pfWZ1bmN0aW9uIHRhKGUsdCxuLHIpe2lmKGU9ZS5vcHRpb25zLHQpe3Q9e307Zm9yKHZhciBvPTA7bzxuLmxlbmd0aDtvKyspdFtcIiRcIituW29dXT0hMDtmb3Iobj0wO248ZS5sZW5ndGg7bisrKW89dC5oYXNPd25Qcm9wZXJ0eShcIiRcIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09byYmKGVbbl0uc2VsZWN0ZWQ9byksbyYmciYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihvPTAsbj1cIlwiK2UzKG4pLHQ9bnVsbDtvPGUubGVuZ3RoO28rKyl7aWYoZVtvXS52YWx1ZT09PW4pe2Vbb10uc2VsZWN0ZWQ9ITAsciYmKGVbb10uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PXR8fGVbb10uZGlzYWJsZWR8fCh0PWVbb10pfW51bGwhPT10JiYodC5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIHRpKGUsdCxuKXtpZihudWxsIT10JiYoKHQ9XCJcIitlMyh0KSkhPT1lLnZhbHVlJiYoZS52YWx1ZT10KSxudWxsPT1uKSl7ZS5kZWZhdWx0VmFsdWUhPT10JiYoZS5kZWZhdWx0VmFsdWU9dCk7cmV0dXJufWUuZGVmYXVsdFZhbHVlPW51bGwhPW4/XCJcIitlMyhuKTpcIlwifWZ1bmN0aW9uIHRsKGUsdCxuLHIpe2lmKG51bGw9PXQpe2lmKG51bGwhPXIpe2lmKG51bGwhPW4pdGhyb3cgRXJyb3IobCg5MikpO2lmKFAocikpe2lmKDE8ci5sZW5ndGgpdGhyb3cgRXJyb3IobCg5MykpO3I9clswXX1uPXJ9bnVsbD09biYmKG49XCJcIiksdD1ufWUuZGVmYXVsdFZhbHVlPW49ZTModCksKHI9ZS50ZXh0Q29udGVudCk9PT1uJiZcIlwiIT09ciYmbnVsbCE9PXImJihlLnZhbHVlPXIpLGU5KGUpfWZ1bmN0aW9uIHRzKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpe24ubm9kZVZhbHVlPXQ7cmV0dXJufX1lLnRleHRDb250ZW50PXR9dmFyIHRjPW5ldyBTZXQoXCJhbmltYXRpb25JdGVyYXRpb25Db3VudCBhc3BlY3RSYXRpbyBib3JkZXJJbWFnZU91dHNldCBib3JkZXJJbWFnZVNsaWNlIGJvcmRlckltYWdlV2lkdGggYm94RmxleCBib3hGbGV4R3JvdXAgYm94T3JkaW5hbEdyb3VwIGNvbHVtbkNvdW50IGNvbHVtbnMgZmxleCBmbGV4R3JvdyBmbGV4UG9zaXRpdmUgZmxleFNocmluayBmbGV4TmVnYXRpdmUgZmxleE9yZGVyIGdyaWRBcmVhIGdyaWRSb3cgZ3JpZFJvd0VuZCBncmlkUm93U3BhbiBncmlkUm93U3RhcnQgZ3JpZENvbHVtbiBncmlkQ29sdW1uRW5kIGdyaWRDb2x1bW5TcGFuIGdyaWRDb2x1bW5TdGFydCBmb250V2VpZ2h0IGxpbmVDbGFtcCBsaW5lSGVpZ2h0IG9wYWNpdHkgb3JkZXIgb3JwaGFucyBzY2FsZSB0YWJTaXplIHdpZG93cyB6SW5kZXggem9vbSBmaWxsT3BhY2l0eSBmbG9vZE9wYWNpdHkgc3RvcE9wYWNpdHkgc3Ryb2tlRGFzaGFycmF5IHN0cm9rZURhc2hvZmZzZXQgc3Ryb2tlTWl0ZXJsaW1pdCBzdHJva2VPcGFjaXR5IHN0cm9rZVdpZHRoIE1vekFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IE1vekJveEZsZXggTW96Qm94RmxleEdyb3VwIE1vekxpbmVDbGFtcCBtc0FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IG1zRmxleCBtc1pvb20gbXNGbGV4R3JvdyBtc0ZsZXhOZWdhdGl2ZSBtc0ZsZXhPcmRlciBtc0ZsZXhQb3NpdGl2ZSBtc0ZsZXhTaHJpbmsgbXNHcmlkQ29sdW1uIG1zR3JpZENvbHVtblNwYW4gbXNHcmlkUm93IG1zR3JpZFJvd1NwYW4gV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgV2Via2l0Qm94RmxleCBXZWJLaXRCb3hGbGV4R3JvdXAgV2Via2l0Qm94T3JkaW5hbEdyb3VwIFdlYmtpdENvbHVtbkNvdW50IFdlYmtpdENvbHVtbnMgV2Via2l0RmxleCBXZWJraXRGbGV4R3JvdyBXZWJraXRGbGV4UG9zaXRpdmUgV2Via2l0RmxleFNocmluayBXZWJraXRMaW5lQ2xhbXBcIi5zcGxpdChcIiBcIikpO2Z1bmN0aW9uIHR1KGUsdCxuKXt2YXIgcj0wPT09dC5pbmRleE9mKFwiLS1cIik7bnVsbD09bnx8XCJib29sZWFuXCI9PXR5cGVvZiBufHxcIlwiPT09bj9yP2Uuc2V0UHJvcGVydHkodCxcIlwiKTpcImZsb2F0XCI9PT10P2UuY3NzRmxvYXQ9XCJcIjplW3RdPVwiXCI6cj9lLnNldFByb3BlcnR5KHQsbik6XCJudW1iZXJcIiE9dHlwZW9mIG58fDA9PT1ufHx0Yy5oYXModCk/XCJmbG9hdFwiPT09dD9lLmNzc0Zsb2F0PW46ZVt0XT0oXCJcIituKS50cmltKCk6ZVt0XT1uK1wicHhcIn1mdW5jdGlvbiB0ZChlLHQsbil7aWYobnVsbCE9dCYmXCJvYmplY3RcIiE9dHlwZW9mIHQpdGhyb3cgRXJyb3IobCg2MikpO2lmKGU9ZS5zdHlsZSxudWxsIT1uKXtmb3IodmFyIHIgaW4gbikhbi5oYXNPd25Qcm9wZXJ0eShyKXx8bnVsbCE9dCYmdC5oYXNPd25Qcm9wZXJ0eShyKXx8KDA9PT1yLmluZGV4T2YoXCItLVwiKT9lLnNldFByb3BlcnR5KHIsXCJcIik6XCJmbG9hdFwiPT09cj9lLmNzc0Zsb2F0PVwiXCI6ZVtyXT1cIlwiKTtmb3IodmFyIG8gaW4gdClyPXRbb10sdC5oYXNPd25Qcm9wZXJ0eShvKSYmbltvXSE9PXImJnR1KGUsbyxyKX1lbHNlIGZvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJnR1KGUsYSx0W2FdKX1mdW5jdGlvbiB0ZihlKXtpZigtMT09PWUuaW5kZXhPZihcIi1cIikpcmV0dXJuITE7c3dpdGNoKGUpe2Nhc2VcImFubm90YXRpb24teG1sXCI6Y2FzZVwiY29sb3ItcHJvZmlsZVwiOmNhc2VcImZvbnQtZmFjZVwiOmNhc2VcImZvbnQtZmFjZS1zcmNcIjpjYXNlXCJmb250LWZhY2UtdXJpXCI6Y2FzZVwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2VcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZVwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB0cD1uZXcgTWFwKFtbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdLFtcImNyb3NzT3JpZ2luXCIsXCJjcm9zc29yaWdpblwiXSxbXCJhY2NlbnRIZWlnaHRcIixcImFjY2VudC1oZWlnaHRcIl0sW1wiYWxpZ25tZW50QmFzZWxpbmVcIixcImFsaWdubWVudC1iYXNlbGluZVwiXSxbXCJhcmFiaWNGb3JtXCIsXCJhcmFiaWMtZm9ybVwiXSxbXCJiYXNlbGluZVNoaWZ0XCIsXCJiYXNlbGluZS1zaGlmdFwiXSxbXCJjYXBIZWlnaHRcIixcImNhcC1oZWlnaHRcIl0sW1wiY2xpcFBhdGhcIixcImNsaXAtcGF0aFwiXSxbXCJjbGlwUnVsZVwiLFwiY2xpcC1ydWxlXCJdLFtcImNvbG9ySW50ZXJwb2xhdGlvblwiLFwiY29sb3ItaW50ZXJwb2xhdGlvblwiXSxbXCJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzXCIsXCJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnNcIl0sW1wiY29sb3JQcm9maWxlXCIsXCJjb2xvci1wcm9maWxlXCJdLFtcImNvbG9yUmVuZGVyaW5nXCIsXCJjb2xvci1yZW5kZXJpbmdcIl0sW1wiZG9taW5hbnRCYXNlbGluZVwiLFwiZG9taW5hbnQtYmFzZWxpbmVcIl0sW1wiZW5hYmxlQmFja2dyb3VuZFwiLFwiZW5hYmxlLWJhY2tncm91bmRcIl0sW1wiZmlsbE9wYWNpdHlcIixcImZpbGwtb3BhY2l0eVwiXSxbXCJmaWxsUnVsZVwiLFwiZmlsbC1ydWxlXCJdLFtcImZsb29kQ29sb3JcIixcImZsb29kLWNvbG9yXCJdLFtcImZsb29kT3BhY2l0eVwiLFwiZmxvb2Qtb3BhY2l0eVwiXSxbXCJmb250RmFtaWx5XCIsXCJmb250LWZhbWlseVwiXSxbXCJmb250U2l6ZVwiLFwiZm9udC1zaXplXCJdLFtcImZvbnRTaXplQWRqdXN0XCIsXCJmb250LXNpemUtYWRqdXN0XCJdLFtcImZvbnRTdHJldGNoXCIsXCJmb250LXN0cmV0Y2hcIl0sW1wiZm9udFN0eWxlXCIsXCJmb250LXN0eWxlXCJdLFtcImZvbnRWYXJpYW50XCIsXCJmb250LXZhcmlhbnRcIl0sW1wiZm9udFdlaWdodFwiLFwiZm9udC13ZWlnaHRcIl0sW1wiZ2x5cGhOYW1lXCIsXCJnbHlwaC1uYW1lXCJdLFtcImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsXCIsXCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsXCJdLFtcImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbFwiLFwiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWxcIl0sW1wiaG9yaXpBZHZYXCIsXCJob3Jpei1hZHYteFwiXSxbXCJob3Jpek9yaWdpblhcIixcImhvcml6LW9yaWdpbi14XCJdLFtcImltYWdlUmVuZGVyaW5nXCIsXCJpbWFnZS1yZW5kZXJpbmdcIl0sW1wibGV0dGVyU3BhY2luZ1wiLFwibGV0dGVyLXNwYWNpbmdcIl0sW1wibGlnaHRpbmdDb2xvclwiLFwibGlnaHRpbmctY29sb3JcIl0sW1wibWFya2VyRW5kXCIsXCJtYXJrZXItZW5kXCJdLFtcIm1hcmtlck1pZFwiLFwibWFya2VyLW1pZFwiXSxbXCJtYXJrZXJTdGFydFwiLFwibWFya2VyLXN0YXJ0XCJdLFtcIm92ZXJsaW5lUG9zaXRpb25cIixcIm92ZXJsaW5lLXBvc2l0aW9uXCJdLFtcIm92ZXJsaW5lVGhpY2tuZXNzXCIsXCJvdmVybGluZS10aGlja25lc3NcIl0sW1wicGFpbnRPcmRlclwiLFwicGFpbnQtb3JkZXJcIl0sW1wicGFub3NlLTFcIixcInBhbm9zZS0xXCJdLFtcInBvaW50ZXJFdmVudHNcIixcInBvaW50ZXItZXZlbnRzXCJdLFtcInJlbmRlcmluZ0ludGVudFwiLFwicmVuZGVyaW5nLWludGVudFwiXSxbXCJzaGFwZVJlbmRlcmluZ1wiLFwic2hhcGUtcmVuZGVyaW5nXCJdLFtcInN0b3BDb2xvclwiLFwic3RvcC1jb2xvclwiXSxbXCJzdG9wT3BhY2l0eVwiLFwic3RvcC1vcGFjaXR5XCJdLFtcInN0cmlrZXRocm91Z2hQb3NpdGlvblwiLFwic3RyaWtldGhyb3VnaC1wb3NpdGlvblwiXSxbXCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzXCIsXCJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzc1wiXSxbXCJzdHJva2VEYXNoYXJyYXlcIixcInN0cm9rZS1kYXNoYXJyYXlcIl0sW1wic3Ryb2tlRGFzaG9mZnNldFwiLFwic3Ryb2tlLWRhc2hvZmZzZXRcIl0sW1wic3Ryb2tlTGluZWNhcFwiLFwic3Ryb2tlLWxpbmVjYXBcIl0sW1wic3Ryb2tlTGluZWpvaW5cIixcInN0cm9rZS1saW5lam9pblwiXSxbXCJzdHJva2VNaXRlcmxpbWl0XCIsXCJzdHJva2UtbWl0ZXJsaW1pdFwiXSxbXCJzdHJva2VPcGFjaXR5XCIsXCJzdHJva2Utb3BhY2l0eVwiXSxbXCJzdHJva2VXaWR0aFwiLFwic3Ryb2tlLXdpZHRoXCJdLFtcInRleHRBbmNob3JcIixcInRleHQtYW5jaG9yXCJdLFtcInRleHREZWNvcmF0aW9uXCIsXCJ0ZXh0LWRlY29yYXRpb25cIl0sW1widGV4dFJlbmRlcmluZ1wiLFwidGV4dC1yZW5kZXJpbmdcIl0sW1widHJhbnNmb3JtT3JpZ2luXCIsXCJ0cmFuc2Zvcm0tb3JpZ2luXCJdLFtcInVuZGVybGluZVBvc2l0aW9uXCIsXCJ1bmRlcmxpbmUtcG9zaXRpb25cIl0sW1widW5kZXJsaW5lVGhpY2tuZXNzXCIsXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJdLFtcInVuaWNvZGVCaWRpXCIsXCJ1bmljb2RlLWJpZGlcIl0sW1widW5pY29kZVJhbmdlXCIsXCJ1bmljb2RlLXJhbmdlXCJdLFtcInVuaXRzUGVyRW1cIixcInVuaXRzLXBlci1lbVwiXSxbXCJ2QWxwaGFiZXRpY1wiLFwidi1hbHBoYWJldGljXCJdLFtcInZIYW5naW5nXCIsXCJ2LWhhbmdpbmdcIl0sW1widklkZW9ncmFwaGljXCIsXCJ2LWlkZW9ncmFwaGljXCJdLFtcInZNYXRoZW1hdGljYWxcIixcInYtbWF0aGVtYXRpY2FsXCJdLFtcInZlY3RvckVmZmVjdFwiLFwidmVjdG9yLWVmZmVjdFwiXSxbXCJ2ZXJ0QWR2WVwiLFwidmVydC1hZHYteVwiXSxbXCJ2ZXJ0T3JpZ2luWFwiLFwidmVydC1vcmlnaW4teFwiXSxbXCJ2ZXJ0T3JpZ2luWVwiLFwidmVydC1vcmlnaW4teVwiXSxbXCJ3b3JkU3BhY2luZ1wiLFwid29yZC1zcGFjaW5nXCJdLFtcIndyaXRpbmdNb2RlXCIsXCJ3cml0aW5nLW1vZGVcIl0sW1wieG1sbnNYbGlua1wiLFwieG1sbnM6eGxpbmtcIl0sW1wieEhlaWdodFwiLFwieC1oZWlnaHRcIl1dKSx0aD0vXltcXHUwMDAwLVxcdTAwMUYgXSpqW1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnZbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qc1tcXHJcXG5cXHRdKmNbXFxyXFxuXFx0XSpyW1xcclxcblxcdF0qaVtcXHJcXG5cXHRdKnBbXFxyXFxuXFx0XSp0W1xcclxcblxcdF0qOi9pO2Z1bmN0aW9uIHRtKGUpe3JldHVybiB0aC50ZXN0KFwiXCIrZSk/XCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignUmVhY3QgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLicpXCI6ZX1mdW5jdGlvbiB0Zygpe312YXIgdHk9bnVsbDtmdW5jdGlvbiB0dihlKXtyZXR1cm4oZT1lLnRhcmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3cpLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoZT1lLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSwzPT09ZS5ub2RlVHlwZT9lLnBhcmVudE5vZGU6ZX12YXIgdGI9bnVsbCx0QT1udWxsO2Z1bmN0aW9uIHR4KGUpe3ZhciB0PWVWKGUpO2lmKHQmJihlPXQuc3RhdGVOb2RlKSl7dmFyIG49ZVtlTF18fG51bGw7c3dpdGNoKGU9dC5zdGF0ZU5vZGUsdC50eXBlKXtjYXNlXCJpbnB1dFwiOmlmKHRuKGUsbi52YWx1ZSxuLmRlZmF1bHRWYWx1ZSxuLmRlZmF1bHRWYWx1ZSxuLmNoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZCxuLnR5cGUsbi5uYW1lKSx0PW4ubmFtZSxcInJhZGlvXCI9PT1uLnR5cGUmJm51bGwhPXQpe2ZvcihuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTtmb3Iobj1uLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9XCInK3R0KFwiXCIrdCkrJ1wiXVt0eXBlPVwicmFkaW9cIl0nKSx0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYociE9PWUmJnIuZm9ybT09PWUuZm9ybSl7dmFyIG89cltlTF18fG51bGw7aWYoIW8pdGhyb3cgRXJyb3IobCg5MCkpO3RuKHIsby52YWx1ZSxvLmRlZmF1bHRWYWx1ZSxvLmRlZmF1bHRWYWx1ZSxvLmNoZWNrZWQsby5kZWZhdWx0Q2hlY2tlZCxvLnR5cGUsby5uYW1lKX19Zm9yKHQ9MDt0PG4ubGVuZ3RoO3QrKykocj1uW3RdKS5mb3JtPT09ZS5mb3JtJiZlOChyKX1icmVhaztjYXNlXCJ0ZXh0YXJlYVwiOnRpKGUsbi52YWx1ZSxuLmRlZmF1bHRWYWx1ZSk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6bnVsbCE9KHQ9bi52YWx1ZSkmJnRhKGUsISFuLm11bHRpcGxlLHQsITEpfX19dmFyIHR3PSExO2Z1bmN0aW9uIHRDKGUsdCxuKXtpZih0dylyZXR1cm4gZSh0LG4pO3R3PSEwO3RyeXtyZXR1cm4gZSh0KX1maW5hbGx5e2lmKHR3PSExLChudWxsIT09dGJ8fG51bGwhPT10QSkmJihzYygpLHRiJiYodD10YixlPXRBLHRBPXRiPW51bGwsdHgodCksZSkpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspdHgoZVt0XSl9fWZ1bmN0aW9uIHRfKGUsdCl7dmFyIG49ZS5zdGF0ZU5vZGU7aWYobnVsbD09PW4pcmV0dXJuIG51bGw7dmFyIHI9bltlTF18fG51bGw7aWYobnVsbD09PXIpcmV0dXJuIG51bGw7c3dpdGNoKG49clt0XSx0KXtjYXNlXCJvbkNsaWNrXCI6Y2FzZVwib25DbGlja0NhcHR1cmVcIjpjYXNlXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZVwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlXCJvbk1vdXNlRG93blwiOmNhc2VcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VNb3ZlXCI6Y2FzZVwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZVwib25Nb3VzZVVwXCI6Y2FzZVwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VFbnRlclwiOihyPSFyLmRpc2FibGVkKXx8KHI9XCJidXR0b25cIiE9PShlPWUudHlwZSkmJlwiaW5wdXRcIiE9PWUmJlwic2VsZWN0XCIhPT1lJiZcInRleHRhcmVhXCIhPT1lKSxlPSFyO2JyZWFrO2RlZmF1bHQ6ZT0hMX1pZihlKXJldHVybiBudWxsO2lmKG4mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pdGhyb3cgRXJyb3IobCgyMzEsdCx0eXBlb2YgbikpO3JldHVybiBufXZhciB0az1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnQmJnZvaWQgMCE9PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50LHRFPSExO2lmKHRrKXRyeXt2YXIgdGo9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHRqLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXt0RT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIix0aix0aiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsdGosdGopfWNhdGNoKGUpe3RFPSExfXZhciB0Uz1udWxsLHRPPW51bGwsdEI9bnVsbDtmdW5jdGlvbiB0UCgpe2lmKHRCKXJldHVybiB0Qjt2YXIgZSx0LG49dE8scj1uLmxlbmd0aCxvPVwidmFsdWVcImluIHRTP3RTLnZhbHVlOnRTLnRleHRDb250ZW50LGE9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2VdO2UrKyk7dmFyIGk9ci1lO2Zvcih0PTE7dDw9aSYmbltyLXRdPT09b1thLXRdO3QrKyk7cmV0dXJuIHRCPW8uc2xpY2UoZSwxPHQ/MS10OnZvaWQgMCl9ZnVuY3Rpb24gdEkoZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVyblwiY2hhckNvZGVcImluIGU/MD09PShlPWUuY2hhckNvZGUpJiYxMz09PXQmJihlPTEzKTplPXQsMTA9PT1lJiYoZT0xMyksMzI8PWV8fDEzPT09ZT9lOjB9ZnVuY3Rpb24gdHooKXtyZXR1cm4hMH1mdW5jdGlvbiB0VCgpe3JldHVybiExfWZ1bmN0aW9uIHREKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtmb3IodmFyIGkgaW4gdGhpcy5fcmVhY3ROYW1lPXQsdGhpcy5fdGFyZ2V0SW5zdD1yLHRoaXMudHlwZT1uLHRoaXMubmF0aXZlRXZlbnQ9byx0aGlzLnRhcmdldD1hLHRoaXMuY3VycmVudFRhcmdldD1udWxsLGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKHQ9ZVtpXSx0aGlzW2ldPXQ/dChvKTpvW2ldKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPW8uZGVmYXVsdFByZXZlbnRlZD9vLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1vLnJldHVyblZhbHVlKT90ejp0VCx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRULHRoaXN9cmV0dXJuIGYodC5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXR6KX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dHopfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6dHp9KSx0fXZhciB0TCx0Tix0Uix0TSx0Wix0VT17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSx0Rj10RCh0VSksdHE9Zih7fSx0VSx7dmlldzowLGRldGFpbDowfSksdEg9dEQodHEpLHRWPWYoe30sdHEse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLHBhZ2VZOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLGdldE1vZGlmaWVyU3RhdGU6dDIsYnV0dG9uOjAsYnV0dG9uczowLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUucmVsYXRlZFRhcmdldD9lLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQ6ZS5yZWxhdGVkVGFyZ2V0fSxtb3ZlbWVudFg6ZnVuY3Rpb24oZSl7cmV0dXJuXCJtb3ZlbWVudFhcImluIGU/ZS5tb3ZlbWVudFg6KGUhPT10WiYmKHRaJiZcIm1vdXNlbW92ZVwiPT09ZS50eXBlPyh0Uj1lLnNjcmVlblgtdFouc2NyZWVuWCx0TT1lLnNjcmVlblktdFouc2NyZWVuWSk6dE09dFI9MCx0Wj1lKSx0Uil9LG1vdmVtZW50WTpmdW5jdGlvbihlKXtyZXR1cm5cIm1vdmVtZW50WVwiaW4gZT9lLm1vdmVtZW50WTp0TX19KSx0JD10RCh0ViksdFc9dEQoZih7fSx0Vix7ZGF0YVRyYW5zZmVyOjB9KSksdFk9dEQoZih7fSx0cSx7cmVsYXRlZFRhcmdldDowfSkpLHRLPXREKGYoe30sdFUse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pKSx0WD10RChmKHt9LHRVLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSkpLHRHPXREKGYoe30sdFUse2RhdGE6MH0pKSx0UT17RXNjOlwiRXNjYXBlXCIsU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0sdEo9ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSx0MD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gdDEoZSl7dmFyIHQ9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gdC5nZXRNb2RpZmllclN0YXRlP3QuZ2V0TW9kaWZpZXJTdGF0ZShlKTohIShlPXQwW2VdKSYmISF0W2VdfWZ1bmN0aW9uIHQyKCl7cmV0dXJuIHQxfXZhciB0ND10RChmKHt9LHRxLHtrZXk6ZnVuY3Rpb24oZSl7aWYoZS5rZXkpe3ZhciB0PXRRW2Uua2V5XXx8ZS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PXQpcmV0dXJuIHR9cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlPzEzPT09KGU9dEkoZSkpP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOlwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/dEpbZS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTp0MixjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/dEkoZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm5cImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/dEkoZSk6XCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT9lLmtleUNvZGU6MH19KSksdDU9dEQoZih7fSx0Vix7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSksdDM9dEQoZih7fSx0cSx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnQyfSkpLHQ2PXREKGYoe30sdFUse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLHQ5PXREKGYoe30sdFYse2RlbHRhWDpmdW5jdGlvbihlKXtyZXR1cm5cImRlbHRhWFwiaW4gZT9lLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm5cImRlbHRhWVwiaW4gZT9lLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBlPy1lLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSkpLHQ4PXREKGYoe30sdFUse25ld1N0YXRlOjAsb2xkU3RhdGU6MH0pKSx0Nz1bOSwxMywyNywzMl0sbmU9dGsmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LG50PW51bGw7dGsmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKG50PWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIG5uPXRrJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhbnQsbnI9dGsmJighbmV8fG50JiY4PG50JiYxMT49bnQpLG5vPSExO2Z1bmN0aW9uIG5hKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImtleXVwXCI6cmV0dXJuIC0xIT09dDcuaW5kZXhPZih0LmtleUNvZGUpO2Nhc2VcImtleWRvd25cIjpyZXR1cm4gMjI5IT09dC5rZXlDb2RlO2Nhc2VcImtleXByZXNzXCI6Y2FzZVwibW91c2Vkb3duXCI6Y2FzZVwiZm9jdXNvdXRcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBuaShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YoZT1lLmRldGFpbCkmJlwiZGF0YVwiaW4gZT9lLmRhdGE6bnVsbH12YXIgbmw9ITEsbnM9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbmMoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PXQ/ISFuc1tlLnR5cGVdOlwidGV4dGFyZWFcIj09PXR9ZnVuY3Rpb24gbnUoZSx0LG4scil7dGI/dEE/dEEucHVzaChyKTp0QT1bcl06dGI9ciwwPCh0PWN0KHQsXCJvbkNoYW5nZVwiKSkubGVuZ3RoJiYobj1uZXcgdEYoXCJvbkNoYW5nZVwiLFwiY2hhbmdlXCIsbnVsbCxuLHIpLGUucHVzaCh7ZXZlbnQ6bixsaXN0ZW5lcnM6dH0pKX12YXIgbmQ9bnVsbCxuZj1udWxsO2Z1bmN0aW9uIG5wKGUpe3M0KGUsMCl9ZnVuY3Rpb24gbmgoZSl7aWYoZTgoZSQoZSkpKXJldHVybiBlfWZ1bmN0aW9uIG5tKGUsdCl7aWYoXCJjaGFuZ2VcIj09PWUpcmV0dXJuIHR9dmFyIG5nPSExO2lmKHRrKXtpZih0ayl7dmFyIG55PVwib25pbnB1dFwiaW4gZG9jdW1lbnQ7aWYoIW55KXt2YXIgbnY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtudi5zZXRBdHRyaWJ1dGUoXCJvbmlucHV0XCIsXCJyZXR1cm47XCIpLG55PVwiZnVuY3Rpb25cIj09dHlwZW9mIG52Lm9uaW5wdXR9cj1ueX1lbHNlIHI9ITE7bmc9ciYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBuYigpe25kJiYobmQuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsbkEpLG5mPW5kPW51bGwpfWZ1bmN0aW9uIG5BKGUpe2lmKFwidmFsdWVcIj09PWUucHJvcGVydHlOYW1lJiZuaChuZikpe3ZhciB0PVtdO251KHQsbmYsZSx0dihlKSksdEMobnAsdCl9fWZ1bmN0aW9uIG54KGUsdCxuKXtcImZvY3VzaW5cIj09PWU/KG5iKCksbmQ9dCxuZj1uLG5kLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLG5BKSk6XCJmb2N1c291dFwiPT09ZSYmbmIoKX1mdW5jdGlvbiBudyhlKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09ZXx8XCJrZXl1cFwiPT09ZXx8XCJrZXlkb3duXCI9PT1lKXJldHVybiBuaChuZil9ZnVuY3Rpb24gbkMoZSx0KXtpZihcImNsaWNrXCI9PT1lKXJldHVybiBuaCh0KX1mdW5jdGlvbiBuXyhlLHQpe2lmKFwiaW5wdXRcIj09PWV8fFwiY2hhbmdlXCI9PT1lKXJldHVybiBuaCh0KX12YXIgbms9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpmdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKDAhPT1lfHwxL2U9PTEvdCl8fGUhPWUmJnQhPXR9O2Z1bmN0aW9uIG5FKGUsdCl7aWYobmsoZSx0KSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiB0fHxudWxsPT09dClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtpZighUS5jYWxsKHQsbyl8fCFuayhlW29dLHRbb10pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIG5qKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiBuUyhlLHQpe3ZhciBuLHI9bmooZSk7Zm9yKGU9MDtyOyl7aWYoMz09PXIubm9kZVR5cGUpe2lmKG49ZStyLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZuPj10KXJldHVybntub2RlOnIsb2Zmc2V0OnQtZX07ZT1ufWU6e2Zvcig7cjspe2lmKHIubmV4dFNpYmxpbmcpe3I9ci5uZXh0U2libGluZzticmVhayBlfXI9ci5wYXJlbnROb2RlfXI9dm9pZCAwfXI9bmoocil9fWZ1bmN0aW9uIG5PKGUpe2U9bnVsbCE9ZSYmbnVsbCE9ZS5vd25lckRvY3VtZW50JiZudWxsIT1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3OndpbmRvdztmb3IodmFyIHQ9ZTcoZS5kb2N1bWVudCk7dCBpbnN0YW5jZW9mIGUuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIG49XCJzdHJpbmdcIj09dHlwZW9mIHQuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGUpe249ITF9aWYobillPXQuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO3Q9ZTcoZS5kb2N1bWVudCl9cmV0dXJuIHR9ZnVuY3Rpb24gbkIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoXCJpbnB1dFwiPT09dCYmKFwidGV4dFwiPT09ZS50eXBlfHxcInNlYXJjaFwiPT09ZS50eXBlfHxcInRlbFwiPT09ZS50eXBlfHxcInVybFwiPT09ZS50eXBlfHxcInBhc3N3b3JkXCI9PT1lLnR5cGUpfHxcInRleHRhcmVhXCI9PT10fHxcInRydWVcIj09PWUuY29udGVudEVkaXRhYmxlKX12YXIgblA9dGsmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxuST1udWxsLG56PW51bGwsblQ9bnVsbCxuRD0hMTtmdW5jdGlvbiBuTChlLHQsbil7dmFyIHI9bi53aW5kb3c9PT1uP24uZG9jdW1lbnQ6OT09PW4ubm9kZVR5cGU/bjpuLm93bmVyRG9jdW1lbnQ7bkR8fG51bGw9PW5JfHxuSSE9PWU3KHIpfHwocj1cInNlbGVjdGlvblN0YXJ0XCJpbihyPW5JKSYmbkIocik/e3N0YXJ0OnIuc2VsZWN0aW9uU3RhcnQsZW5kOnIuc2VsZWN0aW9uRW5kfTp7YW5jaG9yTm9kZToocj0oci5vd25lckRvY3VtZW50JiZyLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCkpLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnIuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpyLmZvY3VzTm9kZSxmb2N1c09mZnNldDpyLmZvY3VzT2Zmc2V0fSxuVCYmbkUoblQscil8fChuVD1yLDA8KHI9Y3QobnosXCJvblNlbGVjdFwiKSkubGVuZ3RoJiYodD1uZXcgdEYoXCJvblNlbGVjdFwiLFwic2VsZWN0XCIsbnVsbCx0LG4pLGUucHVzaCh7ZXZlbnQ6dCxsaXN0ZW5lcnM6cn0pLHQudGFyZ2V0PW5JKSkpfWZ1bmN0aW9uIG5OKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksbltcIldlYmtpdFwiK2VdPVwid2Via2l0XCIrdCxuW1wiTW96XCIrZV09XCJtb3pcIit0LG59dmFyIG5SPXthbmltYXRpb25lbmQ6bk4oXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246bk4oXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpuTihcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbnJ1bjpuTihcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25SdW5cIiksdHJhbnNpdGlvbnN0YXJ0Om5OKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25jYW5jZWw6bk4oXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uQ2FuY2VsXCIpLHRyYW5zaXRpb25lbmQ6bk4oXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxuTT17fSxuWj17fTtmdW5jdGlvbiBuVShlKXtpZihuTVtlXSlyZXR1cm4gbk1bZV07aWYoIW5SW2VdKXJldHVybiBlO3ZhciB0LG49blJbZV07Zm9yKHQgaW4gbilpZihuLmhhc093blByb3BlcnR5KHQpJiZ0IGluIG5aKXJldHVybiBuTVtlXT1uW3RdO3JldHVybiBlfXRrJiYoblo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgblIuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgblIuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgblIuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgblIudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTt2YXIgbkY9blUoXCJhbmltYXRpb25lbmRcIiksbnE9blUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksbkg9blUoXCJhbmltYXRpb25zdGFydFwiKSxuVj1uVShcInRyYW5zaXRpb25ydW5cIiksbiQ9blUoXCJ0cmFuc2l0aW9uc3RhcnRcIiksblc9blUoXCJ0cmFuc2l0aW9uY2FuY2VsXCIpLG5ZPW5VKFwidHJhbnNpdGlvbmVuZFwiKSxuSz1uZXcgTWFwLG5YPVwiYWJvcnQgYXV4Q2xpY2sgYmVmb3JlVG9nZ2xlIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsXCIuc3BsaXQoXCIgXCIpO2Z1bmN0aW9uIG5HKGUsdCl7bksuc2V0KGUsdCksZUcodCxbZV0pfW5YLnB1c2goXCJzY3JvbGxFbmRcIik7dmFyIG5RPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50KXt2YXIgdD1uZXcgd2luZG93LkVycm9yRXZlbnQoXCJlcnJvclwiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsbWVzc2FnZTpcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLm1lc3NhZ2U/U3RyaW5nKGUubWVzc2FnZSk6U3RyaW5nKGUpLGVycm9yOmV9KTtpZighd2luZG93LmRpc3BhdGNoRXZlbnQodCkpcmV0dXJufWVsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHByb2Nlc3MmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHByb2Nlc3MuZW1pdClyZXR1cm4gdm9pZCBwcm9jZXNzLmVtaXQoXCJ1bmNhdWdodEV4Y2VwdGlvblwiLGUpO2NvbnNvbGUuZXJyb3IoZSl9LG5KPVtdLG4wPTAsbjE9MDtmdW5jdGlvbiBuMigpe2Zvcih2YXIgZT1uMCx0PW4xPW4wPTA7dDxlOyl7dmFyIG49bkpbdF07bkpbdCsrXT1udWxsO3ZhciByPW5KW3RdO25KW3QrK109bnVsbDt2YXIgbz1uSlt0XTtuSlt0KytdPW51bGw7dmFyIGE9bkpbdF07aWYobkpbdCsrXT1udWxsLG51bGwhPT1yJiZudWxsIT09byl7dmFyIGk9ci5wZW5kaW5nO251bGw9PT1pP28ubmV4dD1vOihvLm5leHQ9aS5uZXh0LGkubmV4dD1vKSxyLnBlbmRpbmc9b30wIT09YSYmbjYobixvLGEpfX1mdW5jdGlvbiBuNChlLHQsbixyKXtuSltuMCsrXT1lLG5KW24wKytdPXQsbkpbbjArK109bixuSltuMCsrXT1yLG4xfD1yLGUubGFuZXN8PXIsbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKGUubGFuZXN8PXIpfWZ1bmN0aW9uIG41KGUsdCxuLHIpe3JldHVybiBuNChlLHQsbixyKSxuOShlKX1mdW5jdGlvbiBuMyhlLHQpe3JldHVybiBuNChlLG51bGwsbnVsbCx0KSxuOShlKX1mdW5jdGlvbiBuNihlLHQsbil7ZS5sYW5lc3w9bjt2YXIgcj1lLmFsdGVybmF0ZTtudWxsIT09ciYmKHIubGFuZXN8PW4pO2Zvcih2YXIgbz0hMSxhPWUucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PW4sbnVsbCE9PShyPWEuYWx0ZXJuYXRlKSYmKHIuY2hpbGRMYW5lc3w9biksMjI9PT1hLnRhZyYmKG51bGw9PT0oZT1hLnN0YXRlTm9kZSl8fDEmZS5fdmlzaWJpbGl0eXx8KG89ITApKSxlPWEsYT1hLnJldHVybjtyZXR1cm4gMz09PWUudGFnPyhhPWUuc3RhdGVOb2RlLG8mJm51bGwhPT10JiYobz0zMS1lbShuKSxudWxsPT09KHI9KGU9YS5oaWRkZW5VcGRhdGVzKVtvXSk/ZVtvXT1bdF06ci5wdXNoKHQpLHQubGFuZT0weDIwMDAwMDAwfG4pLGEpOm51bGx9ZnVuY3Rpb24gbjkoZSl7aWYoNTA8c3QpdGhyb3cgc3Q9MCxzbj1udWxsLEVycm9yKGwoMTg1KSk7Zm9yKHZhciB0PWUucmV0dXJuO251bGwhPT10Oyl0PShlPXQpLnJldHVybjtyZXR1cm4gMz09PWUudGFnP2Uuc3RhdGVOb2RlOm51bGx9dmFyIG44PXt9O2Z1bmN0aW9uIG43KGUsdCxuLHIpe3RoaXMudGFnPWUsdGhpcy5rZXk9bix0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsLHRoaXMuaW5kZXg9MCx0aGlzLnJlZkNsZWFudXA9dGhpcy5yZWY9bnVsbCx0aGlzLnBlbmRpbmdQcm9wcz10LHRoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MCx0aGlzLmRlbGV0aW9ucz1udWxsLHRoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTAsdGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiByZShlLHQsbixyKXtyZXR1cm4gbmV3IG43KGUsdCxuLHIpfWZ1bmN0aW9uIHJ0KGUpe3JldHVybiEoIShlPWUucHJvdG90eXBlKXx8IWUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gcm4oZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbD09PW4/KChuPXJlKGUudGFnLHQsZS5rZXksZS5tb2RlKSkuZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSxuLnR5cGU9ZS50eXBlLG4uc3RhdGVOb2RlPWUuc3RhdGVOb2RlLG4uYWx0ZXJuYXRlPWUsZS5hbHRlcm5hdGU9bik6KG4ucGVuZGluZ1Byb3BzPXQsbi50eXBlPWUudHlwZSxuLmZsYWdzPTAsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSxuLmZsYWdzPTB4M2UwMDAwMCZlLmZsYWdzLG4uY2hpbGRMYW5lcz1lLmNoaWxkTGFuZXMsbi5sYW5lcz1lLmxhbmVzLG4uY2hpbGQ9ZS5jaGlsZCxuLm1lbW9pemVkUHJvcHM9ZS5tZW1vaXplZFByb3BzLG4ubWVtb2l6ZWRTdGF0ZT1lLm1lbW9pemVkU3RhdGUsbi51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQ9ZS5kZXBlbmRlbmNpZXMsbi5kZXBlbmRlbmNpZXM9bnVsbD09PXQ/bnVsbDp7bGFuZXM6dC5sYW5lcyxmaXJzdENvbnRleHQ6dC5maXJzdENvbnRleHR9LG4uc2libGluZz1lLnNpYmxpbmcsbi5pbmRleD1lLmluZGV4LG4ucmVmPWUucmVmLG4ucmVmQ2xlYW51cD1lLnJlZkNsZWFudXAsbn1mdW5jdGlvbiBycihlLHQpe2UuZmxhZ3MmPTB4M2UwMDAwMjt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbnVsbD09PW4/KGUuY2hpbGRMYW5lcz0wLGUubGFuZXM9dCxlLmNoaWxkPW51bGwsZS5zdWJ0cmVlRmxhZ3M9MCxlLm1lbW9pemVkUHJvcHM9bnVsbCxlLm1lbW9pemVkU3RhdGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGwsZS5kZXBlbmRlbmNpZXM9bnVsbCxlLnN0YXRlTm9kZT1udWxsKTooZS5jaGlsZExhbmVzPW4uY2hpbGRMYW5lcyxlLmxhbmVzPW4ubGFuZXMsZS5jaGlsZD1uLmNoaWxkLGUuc3VidHJlZUZsYWdzPTAsZS5kZWxldGlvbnM9bnVsbCxlLm1lbW9pemVkUHJvcHM9bi5tZW1vaXplZFByb3BzLGUubWVtb2l6ZWRTdGF0ZT1uLm1lbW9pemVkU3RhdGUsZS51cGRhdGVRdWV1ZT1uLnVwZGF0ZVF1ZXVlLGUudHlwZT1uLnR5cGUsZS5kZXBlbmRlbmNpZXM9bnVsbD09PSh0PW4uZGVwZW5kZW5jaWVzKT9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0pLGV9ZnVuY3Rpb24gcm8oZSx0LG4scixvLGEpe3ZhciBpPTA7aWYocj1lLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcnQoZSkmJihpPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpaT0hZnVuY3Rpb24oZSx0LG4pe2lmKDE9PT1ufHxudWxsIT10Lml0ZW1Qcm9wKXJldHVybiExO3N3aXRjaChlKXtjYXNlXCJtZXRhXCI6Y2FzZVwidGl0bGVcIjpyZXR1cm4hMDtjYXNlXCJzdHlsZVwiOmlmKFwic3RyaW5nXCIhPXR5cGVvZiB0LnByZWNlZGVuY2V8fFwic3RyaW5nXCIhPXR5cGVvZiB0LmhyZWZ8fFwiXCI9PT10LmhyZWYpYnJlYWs7cmV0dXJuITA7Y2FzZVwibGlua1wiOmlmKFwic3RyaW5nXCIhPXR5cGVvZiB0LnJlbHx8XCJzdHJpbmdcIiE9dHlwZW9mIHQuaHJlZnx8XCJcIj09PXQuaHJlZnx8dC5vbkxvYWR8fHQub25FcnJvcilicmVhaztpZihcInN0eWxlc2hlZXRcIj09PXQucmVsKXJldHVybiBlPXQuZGlzYWJsZWQsXCJzdHJpbmdcIj09dHlwZW9mIHQucHJlY2VkZW5jZSYmbnVsbD09ZTtyZXR1cm4hMDtjYXNlXCJzY3JpcHRcIjppZih0LmFzeW5jJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LmFzeW5jJiZcInN5bWJvbFwiIT10eXBlb2YgdC5hc3luYyYmIXQub25Mb2FkJiYhdC5vbkVycm9yJiZ0LnNyYyYmXCJzdHJpbmdcIj09dHlwZW9mIHQuc3JjKXJldHVybiEwfXJldHVybiExfShlLG4sWi5jdXJyZW50KT9cImh0bWxcIj09PWV8fFwiaGVhZFwiPT09ZXx8XCJib2R5XCI9PT1lPzI3OjU6MjY7ZWxzZSBlOnN3aXRjaChlKXtjYXNlIEU6cmV0dXJuKGU9cmUoMzEsbix0LG8pKS5lbGVtZW50VHlwZT1FLGUubGFuZXM9YSxlO2Nhc2UgZzpyZXR1cm4gcmEobi5jaGlsZHJlbixvLGEsdCk7Y2FzZSB5Omk9OCxvfD0yNDticmVhaztjYXNlIHY6cmV0dXJuKGU9cmUoMTIsbix0LDJ8bykpLmVsZW1lbnRUeXBlPXYsZS5sYW5lcz1hLGU7Y2FzZSB3OnJldHVybihlPXJlKDEzLG4sdCxvKSkuZWxlbWVudFR5cGU9dyxlLmxhbmVzPWEsZTtjYXNlIEM6cmV0dXJuKGU9cmUoMTksbix0LG8pKS5lbGVtZW50VHlwZT1DLGUubGFuZXM9YSxlO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIEE6aT0xMDticmVhayBlO2Nhc2UgYjppPTk7YnJlYWsgZTtjYXNlIHg6aT0xMTticmVhayBlO2Nhc2UgXzppPTE0O2JyZWFrIGU7Y2FzZSBrOmk9MTYscj1udWxsO2JyZWFrIGV9aT0yOSxuPUVycm9yKGwoMTMwLG51bGw9PT1lP1wibnVsbFwiOnR5cGVvZiBlLFwiXCIpKSxyPW51bGx9cmV0dXJuKHQ9cmUoaSxuLHQsbykpLmVsZW1lbnRUeXBlPWUsdC50eXBlPXIsdC5sYW5lcz1hLHR9ZnVuY3Rpb24gcmEoZSx0LG4scil7cmV0dXJuKGU9cmUoNyxlLHIsdCkpLmxhbmVzPW4sZX1mdW5jdGlvbiByaShlLHQsbil7cmV0dXJuKGU9cmUoNixlLG51bGwsdCkpLmxhbmVzPW4sZX1mdW5jdGlvbiBybChlKXt2YXIgdD1yZSgxOCxudWxsLG51bGwsMCk7cmV0dXJuIHQuc3RhdGVOb2RlPWUsdH1mdW5jdGlvbiBycyhlLHQsbil7cmV0dXJuKHQ9cmUoNCxudWxsIT09ZS5jaGlsZHJlbj9lLmNoaWxkcmVuOltdLGUua2V5LHQpKS5sYW5lcz1uLHQuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmUuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjplLmltcGxlbWVudGF0aW9ufSx0fXZhciByYz1uZXcgV2Vha01hcDtmdW5jdGlvbiBydShlLHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIG49cmMuZ2V0KGUpO3JldHVybiB2b2lkIDAhPT1uP246KHQ9e3ZhbHVlOmUsc291cmNlOnQsc3RhY2s6Ryh0KX0scmMuc2V0KGUsdCksdCl9cmV0dXJue3ZhbHVlOmUsc291cmNlOnQsc3RhY2s6Ryh0KX19dmFyIHJkPVtdLHJmPTAscnA9bnVsbCxyaD0wLHJtPVtdLHJnPTAscnk9bnVsbCxydj0xLHJiPVwiXCI7ZnVuY3Rpb24gckEoZSx0KXtyZFtyZisrXT1yaCxyZFtyZisrXT1ycCxycD1lLHJoPXR9ZnVuY3Rpb24gcngoZSx0LG4pe3JtW3JnKytdPXJ2LHJtW3JnKytdPXJiLHJtW3JnKytdPXJ5LHJ5PWU7dmFyIHI9cnY7ZT1yYjt2YXIgbz0zMi1lbShyKS0xO3ImPX4oMTw8byksbis9MTt2YXIgYT0zMi1lbSh0KStvO2lmKDMwPGEpe3ZhciBpPW8tbyU1O2E9KHImKDE8PGkpLTEpLnRvU3RyaW5nKDMyKSxyPj49aSxvLT1pLHJ2PTE8PDMyLWVtKHQpK298bjw8b3xyLHJiPWErZX1lbHNlIHJ2PTE8PGF8bjw8b3xyLHJiPWV9ZnVuY3Rpb24gcncoZSl7bnVsbCE9PWUucmV0dXJuJiYockEoZSwxKSxyeChlLDEsMCkpfWZ1bmN0aW9uIHJDKGUpe2Zvcig7ZT09PXJwOylycD1yZFstLXJmXSxyZFtyZl09bnVsbCxyaD1yZFstLXJmXSxyZFtyZl09bnVsbDtmb3IoO2U9PT1yeTspcnk9cm1bLS1yZ10scm1bcmddPW51bGwscmI9cm1bLS1yZ10scm1bcmddPW51bGwscnY9cm1bLS1yZ10scm1bcmddPW51bGx9ZnVuY3Rpb24gcl8oZSx0KXtybVtyZysrXT1ydixybVtyZysrXT1yYixybVtyZysrXT1yeSxydj10LmlkLHJiPXQub3ZlcmZsb3cscnk9ZX12YXIgcms9bnVsbCxyRT1udWxsLHJqPSExLHJTPW51bGwsck89ITEsckI9RXJyb3IobCg1MTkpKTtmdW5jdGlvbiByUChlKXt2YXIgdD1FcnJvcihsKDQxOCwxPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdP1widGV4dFwiOlwiSFRNTFwiLFwiXCIpKTt0aHJvdyByTihydSh0LGUpKSxyQn1mdW5jdGlvbiBySShlKXt2YXIgdD1lLnN0YXRlTm9kZSxuPWUudHlwZSxyPWUubWVtb2l6ZWRQcm9wcztzd2l0Y2godFtlRF09ZSx0W2VMXT1yLG4pe2Nhc2VcImRpYWxvZ1wiOnM1KFwiY2FuY2VsXCIsdCksczUoXCJjbG9zZVwiLHQpO2JyZWFrO2Nhc2VcImlmcmFtZVwiOmNhc2VcIm9iamVjdFwiOmNhc2VcImVtYmVkXCI6czUoXCJsb2FkXCIsdCk7YnJlYWs7Y2FzZVwidmlkZW9cIjpjYXNlXCJhdWRpb1wiOmZvcihuPTA7bjxzMS5sZW5ndGg7bisrKXM1KHMxW25dLHQpO2JyZWFrO2Nhc2VcInNvdXJjZVwiOnM1KFwiZXJyb3JcIix0KTticmVhaztjYXNlXCJpbWdcIjpjYXNlXCJpbWFnZVwiOmNhc2VcImxpbmtcIjpzNShcImVycm9yXCIsdCksczUoXCJsb2FkXCIsdCk7YnJlYWs7Y2FzZVwiZGV0YWlsc1wiOnM1KFwidG9nZ2xlXCIsdCk7YnJlYWs7Y2FzZVwiaW5wdXRcIjpzNShcImludmFsaWRcIix0KSx0cih0LHIudmFsdWUsci5kZWZhdWx0VmFsdWUsci5jaGVja2VkLHIuZGVmYXVsdENoZWNrZWQsci50eXBlLHIubmFtZSwhMCk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6czUoXCJpbnZhbGlkXCIsdCk7YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpzNShcImludmFsaWRcIix0KSx0bCh0LHIudmFsdWUsci5kZWZhdWx0VmFsdWUsci5jaGlsZHJlbil9XCJzdHJpbmdcIiE9dHlwZW9mKG49ci5jaGlsZHJlbikmJlwibnVtYmVyXCIhPXR5cGVvZiBuJiZcImJpZ2ludFwiIT10eXBlb2Ygbnx8dC50ZXh0Q29udGVudD09PVwiXCIrbnx8ITA9PT1yLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x8Y2wodC50ZXh0Q29udGVudCxuKT8obnVsbCE9ci5wb3BvdmVyJiYoczUoXCJiZWZvcmV0b2dnbGVcIix0KSxzNShcInRvZ2dsZVwiLHQpKSxudWxsIT1yLm9uU2Nyb2xsJiZzNShcInNjcm9sbFwiLHQpLG51bGwhPXIub25TY3JvbGxFbmQmJnM1KFwic2Nyb2xsZW5kXCIsdCksbnVsbCE9ci5vbkNsaWNrJiYodC5vbmNsaWNrPXRnKSx0PSEwKTp0PSExLHR8fHJQKGUsITApfWZ1bmN0aW9uIHJ6KGUpe2Zvcihyaz1lLnJldHVybjtyazspc3dpdGNoKHJrLnRhZyl7Y2FzZSA1OmNhc2UgMzE6Y2FzZSAxMzpyTz0hMTtyZXR1cm47Y2FzZSAyNzpjYXNlIDM6ck89ITA7cmV0dXJuO2RlZmF1bHQ6cms9cmsucmV0dXJufX1mdW5jdGlvbiByVChlKXtpZihlIT09cmspcmV0dXJuITE7aWYoIXJqKXJldHVybiByeihlKSxyaj0hMCwhMTt2YXIgdCxuPWUudGFnO2lmKCh0PTMhPT1uJiYyNyE9PW4pJiYoKHQ9NT09PW4pJiYodD1cImZvcm1cIj09PSh0PWUudHlwZSl8fFwiYnV0dG9uXCI9PT10fHxjZyhlLnR5cGUsZS5tZW1vaXplZFByb3BzKSksdD0hdCksdCYmckUmJnJQKGUpLHJ6KGUpLDEzPT09bil7aWYoIShlPW51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpP2UuZGVoeWRyYXRlZDpudWxsKSl0aHJvdyBFcnJvcihsKDMxNykpO3JFPWNJKGUpfWVsc2UgaWYoMzE9PT1uKXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGwoMzE3KSk7ckU9Y0koZSl9ZWxzZSAyNz09PW4/KG49ckUsY0MoZS50eXBlKT8oZT1jUCxjUD1udWxsLHJFPWUpOnJFPW4pOnJFPXJrP2NCKGUuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIHJEKCl7ckU9cms9bnVsbCxyaj0hMX1mdW5jdGlvbiByTCgpe3ZhciBlPXJTO3JldHVybiBudWxsIT09ZSYmKG51bGw9PT1sUT9sUT1lOmxRLnB1c2guYXBwbHkobFEsZSksclM9bnVsbCksZX1mdW5jdGlvbiByTihlKXtudWxsPT09clM/clM9W2VdOnJTLnB1c2goZSl9dmFyIHJSPU4obnVsbCksck09bnVsbCxyWj1udWxsO2Z1bmN0aW9uIHJVKGUsdCxuKXtNKHJSLHQuX2N1cnJlbnRWYWx1ZSksdC5fY3VycmVudFZhbHVlPW59ZnVuY3Rpb24gckYoZSl7ZS5fY3VycmVudFZhbHVlPXJSLmN1cnJlbnQsUihyUil9ZnVuY3Rpb24gcnEoZSx0LG4pe2Zvcig7bnVsbCE9PWU7KXt2YXIgcj1lLmFsdGVybmF0ZTtpZigoZS5jaGlsZExhbmVzJnQpIT09dD8oZS5jaGlsZExhbmVzfD10LG51bGwhPT1yJiYoci5jaGlsZExhbmVzfD10KSk6bnVsbCE9PXImJihyLmNoaWxkTGFuZXMmdCkhPT10JiYoci5jaGlsZExhbmVzfD10KSxlPT09bilicmVhaztlPWUucmV0dXJufX1mdW5jdGlvbiBySChlLHQsbixyKXt2YXIgbz1lLmNoaWxkO2ZvcihudWxsIT09byYmKG8ucmV0dXJuPWUpO251bGwhPT1vOyl7dmFyIGE9by5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWEpe3ZhciBpPW8uY2hpbGQ7YT1hLmZpcnN0Q29udGV4dDtlOmZvcig7bnVsbCE9PWE7KXt2YXIgcz1hO2E9bztmb3IodmFyIGM9MDtjPHQubGVuZ3RoO2MrKylpZihzLmNvbnRleHQ9PT10W2NdKXthLmxhbmVzfD1uLG51bGwhPT0ocz1hLmFsdGVybmF0ZSkmJihzLmxhbmVzfD1uKSxycShhLnJldHVybixuLGUpLHJ8fChpPW51bGwpO2JyZWFrIGV9YT1zLm5leHR9fWVsc2UgaWYoMTg9PT1vLnRhZyl7aWYobnVsbD09PShpPW8ucmV0dXJuKSl0aHJvdyBFcnJvcihsKDM0MSkpO2kubGFuZXN8PW4sbnVsbCE9PShhPWkuYWx0ZXJuYXRlKSYmKGEubGFuZXN8PW4pLHJxKGksbixlKSxpPW51bGx9ZWxzZSBpPW8uY2hpbGQ7aWYobnVsbCE9PWkpaS5yZXR1cm49bztlbHNlIGZvcihpPW87bnVsbCE9PWk7KXtpZihpPT09ZSl7aT1udWxsO2JyZWFrfWlmKG51bGwhPT0obz1pLnNpYmxpbmcpKXtvLnJldHVybj1pLnJldHVybixpPW87YnJlYWt9aT1pLnJldHVybn1vPWl9fWZ1bmN0aW9uIHJWKGUsdCxuLHIpe2U9bnVsbDtmb3IodmFyIG89dCxhPSExO251bGwhPT1vOyl7aWYoIWEpe2lmKDAhPSg1MjQyODgmby5mbGFncykpYT0hMDtlbHNlIGlmKDAhPSgyNjIxNDQmby5mbGFncykpYnJlYWt9aWYoMTA9PT1vLnRhZyl7dmFyIGk9by5hbHRlcm5hdGU7aWYobnVsbD09PWkpdGhyb3cgRXJyb3IobCgzODcpKTtpZihudWxsIT09KGk9aS5tZW1vaXplZFByb3BzKSl7dmFyIHM9by50eXBlO25rKG8ucGVuZGluZ1Byb3BzLnZhbHVlLGkudmFsdWUpfHwobnVsbCE9PWU/ZS5wdXNoKHMpOmU9W3NdKX19ZWxzZSBpZihvPT09cS5jdXJyZW50KXtpZihudWxsPT09KGk9by5hbHRlcm5hdGUpKXRocm93IEVycm9yKGwoMzg3KSk7aS5tZW1vaXplZFN0YXRlLm1lbW9pemVkU3RhdGUhPT1vLm1lbW9pemVkU3RhdGUubWVtb2l6ZWRTdGF0ZSYmKG51bGwhPT1lP2UucHVzaChjOSk6ZT1bYzldKX1vPW8ucmV0dXJufW51bGwhPT1lJiZySCh0LGUsbixyKSx0LmZsYWdzfD0yNjIxNDR9ZnVuY3Rpb24gciQoZSl7Zm9yKGU9ZS5maXJzdENvbnRleHQ7bnVsbCE9PWU7KXtpZighbmsoZS5jb250ZXh0Ll9jdXJyZW50VmFsdWUsZS5tZW1vaXplZFZhbHVlKSlyZXR1cm4hMDtlPWUubmV4dH1yZXR1cm4hMX1mdW5jdGlvbiByVyhlKXtyTT1lLHJaPW51bGwsbnVsbCE9PShlPWUuZGVwZW5kZW5jaWVzKSYmKGUuZmlyc3RDb250ZXh0PW51bGwpfWZ1bmN0aW9uIHJZKGUpe3JldHVybiByWChyTSxlKX1mdW5jdGlvbiBySyhlLHQpe3JldHVybiBudWxsPT09ck0mJnJXKGUpLHJYKGUsdCl9ZnVuY3Rpb24gclgoZSx0KXt2YXIgbj10Ll9jdXJyZW50VmFsdWU7aWYodD17Y29udGV4dDp0LG1lbW9pemVkVmFsdWU6bixuZXh0Om51bGx9LG51bGw9PT1yWil7aWYobnVsbD09PWUpdGhyb3cgRXJyb3IobCgzMDgpKTtyWj10LGUuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDp0fSxlLmZsYWdzfD01MjQyODh9ZWxzZSByWj1yWi5uZXh0PXQ7cmV0dXJuIG59dmFyIHJHPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBBYm9ydENvbnRyb2xsZXI/QWJvcnRDb250cm9sbGVyOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLnNpZ25hbD17YWJvcnRlZDohMSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsbil7ZS5wdXNoKG4pfX07dGhpcy5hYm9ydD1mdW5jdGlvbigpe3QuYWJvcnRlZD0hMCxlLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pfX0sclE9by51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLHJKPW8udW5zdGFibGVfTm9ybWFsUHJpb3JpdHkscjA9eyQkdHlwZW9mOkEsQ29uc3VtZXI6bnVsbCxQcm92aWRlcjpudWxsLF9jdXJyZW50VmFsdWU6bnVsbCxfY3VycmVudFZhbHVlMjpudWxsLF90aHJlYWRDb3VudDowfTtmdW5jdGlvbiByMSgpe3JldHVybntjb250cm9sbGVyOm5ldyByRyxkYXRhOm5ldyBNYXAscmVmQ291bnQ6MH19ZnVuY3Rpb24gcjIoZSl7ZS5yZWZDb3VudC0tLDA9PT1lLnJlZkNvdW50JiZyUShySixmdW5jdGlvbigpe2UuY29udHJvbGxlci5hYm9ydCgpfSl9dmFyIHI0PW51bGwscjU9MCxyMz0wLHI2PW51bGw7ZnVuY3Rpb24gcjkoKXtpZigwPT0tLXI1JiZudWxsIT09cjQpe251bGwhPT1yNiYmKHI2LnN0YXR1cz1cImZ1bGZpbGxlZFwiKTt2YXIgZT1yNDtyND1udWxsLHIzPTAscjY9bnVsbDtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKykoMCxlW3RdKSgpfX12YXIgcjg9SS5TO0kuUz1mdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuJiZmdW5jdGlvbihlLHQpe2lmKG51bGw9PT1yNCl7dmFyIG49cjQ9W107cjU9MCxyMz1zWCgpLHI2PXtzdGF0dXM6XCJwZW5kaW5nXCIsdmFsdWU6dm9pZCAwLHRoZW46ZnVuY3Rpb24oZSl7bi5wdXNoKGUpfX19cjUrKyx0LnRoZW4ocjkscjkpfSgwLHQpLG51bGwhPT1yOCYmcjgoZSx0KX07dmFyIHI3PU4obnVsbCk7ZnVuY3Rpb24gb2UoKXt2YXIgZT1yNy5jdXJyZW50O3JldHVybiBudWxsIT09ZT9lOmxMLnBvb2xlZENhY2hlfWZ1bmN0aW9uIG90KGUsdCl7bnVsbD09PXQ/TShyNyxyNy5jdXJyZW50KTpNKHI3LHQucG9vbCl9ZnVuY3Rpb24gb24oKXt2YXIgZT1vZSgpO3JldHVybiBudWxsPT09ZT9udWxsOntwYXJlbnQ6cjAuX2N1cnJlbnRWYWx1ZSxwb29sOmV9fXZhciBvcj1FcnJvcihsKDQ2MCkpLG9vPUVycm9yKGwoNDc0KSksb2E9RXJyb3IobCg1NDIpKSxvaT17dGhlbjpmdW5jdGlvbigpe319O2Z1bmN0aW9uIG9sKGUpe3JldHVyblwiZnVsZmlsbGVkXCI9PT0oZT1lLnN0YXR1cyl8fFwicmVqZWN0ZWRcIj09PWV9ZnVuY3Rpb24gb3MoZSx0LG4pe3N3aXRjaCh2b2lkIDA9PT0obj1lW25dKT9lLnB1c2godCk6biE9PXQmJih0LnRoZW4odGcsdGcpLHQ9biksdC5zdGF0dXMpe2Nhc2VcImZ1bGZpbGxlZFwiOnJldHVybiB0LnZhbHVlO2Nhc2VcInJlamVjdGVkXCI6dGhyb3cgb2YoZT10LnJlYXNvbiksZTtkZWZhdWx0OmlmKFwic3RyaW5nXCI9PXR5cGVvZiB0LnN0YXR1cyl0LnRoZW4odGcsdGcpO2Vsc2V7aWYobnVsbCE9PShlPWxMKSYmMTAwPGUuc2hlbGxTdXNwZW5kQ291bnRlcil0aHJvdyBFcnJvcihsKDQ4MikpOyhlPXQpLnN0YXR1cz1cInBlbmRpbmdcIixlLnRoZW4oZnVuY3Rpb24oZSl7aWYoXCJwZW5kaW5nXCI9PT10LnN0YXR1cyl7dmFyIG49dDtuLnN0YXR1cz1cImZ1bGZpbGxlZFwiLG4udmFsdWU9ZX19LGZ1bmN0aW9uKGUpe2lmKFwicGVuZGluZ1wiPT09dC5zdGF0dXMpe3ZhciBuPXQ7bi5zdGF0dXM9XCJyZWplY3RlZFwiLG4ucmVhc29uPWV9fSl9c3dpdGNoKHQuc3RhdHVzKXtjYXNlXCJmdWxmaWxsZWRcIjpyZXR1cm4gdC52YWx1ZTtjYXNlXCJyZWplY3RlZFwiOnRocm93IG9mKGU9dC5yZWFzb24pLGV9dGhyb3cgb3U9dCxvcn19ZnVuY3Rpb24gb2MoZSl7dHJ5e3JldHVybigwLGUuX2luaXQpKGUuX3BheWxvYWQpfWNhdGNoKGUpe2lmKG51bGwhPT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuKXRocm93IG91PWUsb3I7dGhyb3cgZX19dmFyIG91PW51bGw7ZnVuY3Rpb24gb2QoKXtpZihudWxsPT09b3UpdGhyb3cgRXJyb3IobCg0NTkpKTt2YXIgZT1vdTtyZXR1cm4gb3U9bnVsbCxlfWZ1bmN0aW9uIG9mKGUpe2lmKGU9PT1vcnx8ZT09PW9hKXRocm93IEVycm9yKGwoNDgzKSl9dmFyIG9wPW51bGwsb2g9MDtmdW5jdGlvbiBvbShlKXt2YXIgdD1vaDtyZXR1cm4gb2grPTEsbnVsbD09PW9wJiYob3A9W10pLG9zKG9wLGUsdCl9ZnVuY3Rpb24gb2coZSx0KXtlLnJlZj12b2lkIDAhPT0odD10LnByb3BzLnJlZik/dDpudWxsfWZ1bmN0aW9uIG95KGUsdCl7aWYodC4kJHR5cGVvZj09PXApdGhyb3cgRXJyb3IobCg1MjUpKTt0aHJvdyBFcnJvcihsKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT0oZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXModCkuam9pbihcIiwgXCIpK1wifVwiOmUpKX1mdW5jdGlvbiBvdihlKXtmdW5jdGlvbiB0KHQsbil7aWYoZSl7dmFyIHI9dC5kZWxldGlvbnM7bnVsbD09PXI/KHQuZGVsZXRpb25zPVtuXSx0LmZsYWdzfD0xNik6ci5wdXNoKG4pfX1mdW5jdGlvbiBuKG4scil7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09cjspdChuLHIpLHI9ci5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PW5ldyBNYXA7bnVsbCE9PWU7KW51bGwhPT1lLmtleT90LnNldChlLmtleSxlKTp0LnNldChlLmluZGV4LGUpLGU9ZS5zaWJsaW5nO3JldHVybiB0fWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4oZT1ybihlLHQpKS5pbmRleD0wLGUuc2libGluZz1udWxsLGV9ZnVuY3Rpb24gYSh0LG4scil7cmV0dXJuKHQuaW5kZXg9cixlKT9udWxsIT09KHI9dC5hbHRlcm5hdGUpPyhyPXIuaW5kZXgpPG4/KHQuZmxhZ3N8PTB4NDAwMDAwMixuKTpyOih0LmZsYWdzfD0weDQwMDAwMDIsbik6KHQuZmxhZ3N8PTEwNDg1NzYsbil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZSYmbnVsbD09PXQuYWx0ZXJuYXRlJiYodC5mbGFnc3w9MHg0MDAwMDAyKSx0fWZ1bmN0aW9uIHMoZSx0LG4scil7cmV0dXJuIG51bGw9PT10fHw2IT09dC50YWc/KHQ9cmkobixlLm1vZGUscikpLnJldHVybj1lOih0PW8odCxuKSkucmV0dXJuPWUsdH1mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBhPW4udHlwZTtyZXR1cm4gYT09PWc/ZChlLHQsbi5wcm9wcy5jaGlsZHJlbixyLG4ua2V5KToobnVsbCE9PXQmJih0LmVsZW1lbnRUeXBlPT09YXx8XCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09ayYmb2MoYSk9PT10LnR5cGUpP29nKHQ9byh0LG4ucHJvcHMpLG4pOm9nKHQ9cm8obi50eXBlLG4ua2V5LG4ucHJvcHMsbnVsbCxlLm1vZGUsciksbiksdC5yZXR1cm49ZSx0KX1mdW5jdGlvbiB1KGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NCE9PXQudGFnfHx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09bi5jb250YWluZXJJbmZvfHx0LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PW4uaW1wbGVtZW50YXRpb24/KHQ9cnMobixlLm1vZGUscikpLnJldHVybj1lOih0PW8odCxuLmNoaWxkcmVufHxbXSkpLnJldHVybj1lLHR9ZnVuY3Rpb24gZChlLHQsbixyLGEpe3JldHVybiBudWxsPT09dHx8NyE9PXQudGFnPyh0PXJhKG4sZS5tb2RlLHIsYSkpLnJldHVybj1lOih0PW8odCxuKSkucmV0dXJuPWUsdH1mdW5jdGlvbiBmKGUsdCxuKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCYmXCJcIiE9PXR8fFwibnVtYmVyXCI9PXR5cGVvZiB0fHxcImJpZ2ludFwiPT10eXBlb2YgdClyZXR1cm4odD1yaShcIlwiK3QsZS5tb2RlLG4pKS5yZXR1cm49ZSx0O2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCl7c3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgaDpyZXR1cm4gb2cobj1ybyh0LnR5cGUsdC5rZXksdC5wcm9wcyxudWxsLGUubW9kZSxuKSx0KSxuLnJldHVybj1lLG47Y2FzZSBtOnJldHVybih0PXJzKHQsZS5tb2RlLG4pKS5yZXR1cm49ZSx0O2Nhc2UgazpyZXR1cm4gZihlLHQ9b2ModCksbil9aWYoUCh0KXx8Tyh0KSlyZXR1cm4odD1yYSh0LGUubW9kZSxuLG51bGwpKS5yZXR1cm49ZSx0O2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbilyZXR1cm4gZihlLG9tKHQpLG4pO2lmKHQuJCR0eXBlb2Y9PT1BKXJldHVybiBmKGUscksoZSx0KSxuKTtveShlLHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSx0LG4scil7dmFyIG89bnVsbCE9PXQ/dC5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT10eXBlb2YgbiYmXCJcIiE9PW58fFwibnVtYmVyXCI9PXR5cGVvZiBufHxcImJpZ2ludFwiPT10eXBlb2YgbilyZXR1cm4gbnVsbCE9PW8/bnVsbDpzKGUsdCxcIlwiK24scik7aWYoXCJvYmplY3RcIj09dHlwZW9mIG4mJm51bGwhPT1uKXtzd2l0Y2gobi4kJHR5cGVvZil7Y2FzZSBoOnJldHVybiBuLmtleT09PW8/YyhlLHQsbixyKTpudWxsO2Nhc2UgbTpyZXR1cm4gbi5rZXk9PT1vP3UoZSx0LG4scik6bnVsbDtjYXNlIGs6cmV0dXJuIHAoZSx0LG49b2Mobikscil9aWYoUChuKXx8TyhuKSlyZXR1cm4gbnVsbCE9PW8/bnVsbDpkKGUsdCxuLHIsbnVsbCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50aGVuKXJldHVybiBwKGUsdCxvbShuKSxyKTtpZihuLiQkdHlwZW9mPT09QSlyZXR1cm4gcChlLHQscksoZSxuKSxyKTtveShlLG4pfXJldHVybiBudWxsfWZ1bmN0aW9uIHkoZSx0LG4scixvKXtpZihcInN0cmluZ1wiPT10eXBlb2YgciYmXCJcIiE9PXJ8fFwibnVtYmVyXCI9PXR5cGVvZiByfHxcImJpZ2ludFwiPT10eXBlb2YgcilyZXR1cm4gcyh0LGU9ZS5nZXQobil8fG51bGwsXCJcIityLG8pO2lmKFwib2JqZWN0XCI9PXR5cGVvZiByJiZudWxsIT09cil7c3dpdGNoKHIuJCR0eXBlb2Ype2Nhc2UgaDpyZXR1cm4gYyh0LGU9ZS5nZXQobnVsbD09PXIua2V5P246ci5rZXkpfHxudWxsLHIsbyk7Y2FzZSBtOnJldHVybiB1KHQsZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwscixvKTtjYXNlIGs6cmV0dXJuIHkoZSx0LG4scj1vYyhyKSxvKX1pZihQKHIpfHxPKHIpKXJldHVybiBkKHQsZT1lLmdldChuKXx8bnVsbCxyLG8sbnVsbCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygci50aGVuKXJldHVybiB5KGUsdCxuLG9tKHIpLG8pO2lmKHIuJCR0eXBlb2Y9PT1BKXJldHVybiB5KGUsdCxuLHJLKHQsciksbyk7b3kodCxyKX1yZXR1cm4gbnVsbH1yZXR1cm4gZnVuY3Rpb24ocyxjLHUsZCl7dHJ5e29oPTA7dmFyIHY9ZnVuY3Rpb24gcyhjLHUsZCx2KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZCYmbnVsbCE9PWQmJmQudHlwZT09PWcmJm51bGw9PT1kLmtleSYmKGQ9ZC5wcm9wcy5jaGlsZHJlbiksXCJvYmplY3RcIj09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSBoOmU6e2Zvcih2YXIgYj1kLmtleTtudWxsIT09dTspe2lmKHUua2V5PT09Yil7aWYoKGI9ZC50eXBlKT09PWcpe2lmKDc9PT11LnRhZyl7bihjLHUuc2libGluZyksKHY9byh1LGQucHJvcHMuY2hpbGRyZW4pKS5yZXR1cm49YyxjPXY7YnJlYWsgZX19ZWxzZSBpZih1LmVsZW1lbnRUeXBlPT09Ynx8XCJvYmplY3RcIj09dHlwZW9mIGImJm51bGwhPT1iJiZiLiQkdHlwZW9mPT09ayYmb2MoYik9PT11LnR5cGUpe24oYyx1LnNpYmxpbmcpLG9nKHY9byh1LGQucHJvcHMpLGQpLHYucmV0dXJuPWMsYz12O2JyZWFrIGV9bihjLHUpO2JyZWFrfXQoYyx1KSx1PXUuc2libGluZ31kLnR5cGU9PT1nPyh2PXJhKGQucHJvcHMuY2hpbGRyZW4sYy5tb2RlLHYsZC5rZXkpKS5yZXR1cm49Yzoob2codj1ybyhkLnR5cGUsZC5rZXksZC5wcm9wcyxudWxsLGMubW9kZSx2KSxkKSx2LnJldHVybj1jKSxjPXZ9cmV0dXJuIGkoYyk7Y2FzZSBtOmU6e2ZvcihiPWQua2V5O251bGwhPT11Oyl7aWYodS5rZXk9PT1iKWlmKDQ9PT11LnRhZyYmdS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWQuY29udGFpbmVySW5mbyYmdS5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1kLmltcGxlbWVudGF0aW9uKXtuKGMsdS5zaWJsaW5nKSwodj1vKHUsZC5jaGlsZHJlbnx8W10pKS5yZXR1cm49YyxjPXY7YnJlYWsgZX1lbHNle24oYyx1KTticmVha310KGMsdSksdT11LnNpYmxpbmd9KHY9cnMoZCxjLm1vZGUsdikpLnJldHVybj1jLGM9dn1yZXR1cm4gaShjKTtjYXNlIGs6cmV0dXJuIHMoYyx1LGQ9b2MoZCksdil9aWYoUChkKSlyZXR1cm4gZnVuY3Rpb24obyxpLGwscyl7Zm9yKHZhciBjPW51bGwsdT1udWxsLGQ9aSxoPWk9MCxtPW51bGw7bnVsbCE9PWQmJmg8bC5sZW5ndGg7aCsrKXtkLmluZGV4Pmg/KG09ZCxkPW51bGwpOm09ZC5zaWJsaW5nO3ZhciBnPXAobyxkLGxbaF0scyk7aWYobnVsbD09PWcpe251bGw9PT1kJiYoZD1tKTticmVha31lJiZkJiZudWxsPT09Zy5hbHRlcm5hdGUmJnQobyxkKSxpPWEoZyxpLGgpLG51bGw9PT11P2M9Zzp1LnNpYmxpbmc9Zyx1PWcsZD1tfWlmKGg9PT1sLmxlbmd0aClyZXR1cm4gbihvLGQpLHJqJiZyQShvLGgpLGM7aWYobnVsbD09PWQpe2Zvcig7aDxsLmxlbmd0aDtoKyspbnVsbCE9PShkPWYobyxsW2hdLHMpKSYmKGk9YShkLGksaCksbnVsbD09PXU/Yz1kOnUuc2libGluZz1kLHU9ZCk7cmV0dXJuIHJqJiZyQShvLGgpLGN9Zm9yKGQ9cihkKTtoPGwubGVuZ3RoO2grKyludWxsIT09KG09eShkLG8saCxsW2hdLHMpKSYmKGUmJm51bGwhPT1tLmFsdGVybmF0ZSYmZC5kZWxldGUobnVsbD09PW0ua2V5P2g6bS5rZXkpLGk9YShtLGksaCksbnVsbD09PXU/Yz1tOnUuc2libGluZz1tLHU9bSk7cmV0dXJuIGUmJmQuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdChvLGUpfSkscmomJnJBKG8saCksY30oYyx1LGQsdik7aWYoTyhkKSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YoYj1PKGQpKSl0aHJvdyBFcnJvcihsKDE1MCkpO3JldHVybiBmdW5jdGlvbihvLGkscyxjKXtpZihudWxsPT1zKXRocm93IEVycm9yKGwoMTUxKSk7Zm9yKHZhciB1PW51bGwsZD1udWxsLGg9aSxtPWk9MCxnPW51bGwsdj1zLm5leHQoKTtudWxsIT09aCYmIXYuZG9uZTttKyssdj1zLm5leHQoKSl7aC5pbmRleD5tPyhnPWgsaD1udWxsKTpnPWguc2libGluZzt2YXIgYj1wKG8saCx2LnZhbHVlLGMpO2lmKG51bGw9PT1iKXtudWxsPT09aCYmKGg9Zyk7YnJlYWt9ZSYmaCYmbnVsbD09PWIuYWx0ZXJuYXRlJiZ0KG8saCksaT1hKGIsaSxtKSxudWxsPT09ZD91PWI6ZC5zaWJsaW5nPWIsZD1iLGg9Z31pZih2LmRvbmUpcmV0dXJuIG4obyxoKSxyaiYmckEobyxtKSx1O2lmKG51bGw9PT1oKXtmb3IoOyF2LmRvbmU7bSsrLHY9cy5uZXh0KCkpbnVsbCE9PSh2PWYobyx2LnZhbHVlLGMpKSYmKGk9YSh2LGksbSksbnVsbD09PWQ/dT12OmQuc2libGluZz12LGQ9dik7cmV0dXJuIHJqJiZyQShvLG0pLHV9Zm9yKGg9cihoKTshdi5kb25lO20rKyx2PXMubmV4dCgpKW51bGwhPT0odj15KGgsbyxtLHYudmFsdWUsYykpJiYoZSYmbnVsbCE9PXYuYWx0ZXJuYXRlJiZoLmRlbGV0ZShudWxsPT09di5rZXk/bTp2LmtleSksaT1hKHYsaSxtKSxudWxsPT09ZD91PXY6ZC5zaWJsaW5nPXYsZD12KTtyZXR1cm4gZSYmaC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0KG8sZSl9KSxyaiYmckEobyxtKSx1fShjLHUsZD1iLmNhbGwoZCksdil9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZC50aGVuKXJldHVybiBzKGMsdSxvbShkKSx2KTtpZihkLiQkdHlwZW9mPT09QSlyZXR1cm4gcyhjLHUscksoYyxkKSx2KTtveShjLGQpfXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09dHlwZW9mIGR8fFwiYmlnaW50XCI9PXR5cGVvZiBkPyhkPVwiXCIrZCxudWxsIT09dSYmNj09PXUudGFnPyhuKGMsdS5zaWJsaW5nKSwodj1vKHUsZCkpLnJldHVybj1jKToobihjLHUpLCh2PXJpKGQsYy5tb2RlLHYpKS5yZXR1cm49YyksaShjPXYpKTpuKGMsdSl9KHMsYyx1LGQpO3JldHVybiBvcD1udWxsLHZ9Y2F0Y2goZSl7aWYoZT09PW9yfHxlPT09b2EpdGhyb3cgZTt2YXIgYj1yZSgyOSxlLG51bGwscy5tb2RlKTtyZXR1cm4gYi5sYW5lcz1kLGIucmV0dXJuPXMsYn1maW5hbGx5e319fXZhciBvYj1vdighMCksb0E9b3YoITEpLG94PSExO2Z1bmN0aW9uIG93KGUpe2UudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxsYW5lczowLGhpZGRlbkNhbGxiYWNrczpudWxsfSxjYWxsYmFja3M6bnVsbH19ZnVuY3Rpb24gb0MoZSx0KXtlPWUudXBkYXRlUXVldWUsdC51cGRhdGVRdWV1ZT09PWUmJih0LnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmUuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmUubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmUuc2hhcmVkLGNhbGxiYWNrczpudWxsfSl9ZnVuY3Rpb24gb18oZSl7cmV0dXJue2xhbmU6ZSx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIG9rKGUsdCxuKXt2YXIgcj1lLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHI9ci5zaGFyZWQsMCE9KDImbEQpKXt2YXIgbz1yLnBlbmRpbmc7cmV0dXJuIG51bGw9PT1vP3QubmV4dD10Oih0Lm5leHQ9by5uZXh0LG8ubmV4dD10KSxyLnBlbmRpbmc9dCx0PW45KGUpLG42KGUsbnVsbCxuKSx0fXJldHVybiBuNChlLHIsdCxuKSxuOShlKX1mdW5jdGlvbiBvRShlLHQsbil7aWYobnVsbCE9PSh0PXQudXBkYXRlUXVldWUpJiYodD10LnNoYXJlZCwwIT0oNDE5NDA0OCZuKSkpe3ZhciByPXQubGFuZXM7ciY9ZS5wZW5kaW5nTGFuZXMsbnw9cix0LmxhbmVzPW4sZVMoZSxuKX19ZnVuY3Rpb24gb2ooZSx0KXt2YXIgbj1lLnVwZGF0ZVF1ZXVlLHI9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PXImJm49PT0ocj1yLnVwZGF0ZVF1ZXVlKSl7dmFyIG89bnVsbCxhPW51bGw7aWYobnVsbCE9PShuPW4uZmlyc3RCYXNlVXBkYXRlKSl7ZG97dmFyIGk9e2xhbmU6bi5sYW5lLHRhZzpuLnRhZyxwYXlsb2FkOm4ucGF5bG9hZCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH07bnVsbD09PWE/bz1hPWk6YT1hLm5leHQ9aSxuPW4ubmV4dH13aGlsZShudWxsIT09bik7bnVsbD09PWE/bz1hPXQ6YT1hLm5leHQ9dH1lbHNlIG89YT10O249e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6byxsYXN0QmFzZVVwZGF0ZTphLHNoYXJlZDpyLnNoYXJlZCxjYWxsYmFja3M6ci5jYWxsYmFja3N9LGUudXBkYXRlUXVldWU9bjtyZXR1cm59bnVsbD09PShlPW4ubGFzdEJhc2VVcGRhdGUpP24uZmlyc3RCYXNlVXBkYXRlPXQ6ZS5uZXh0PXQsbi5sYXN0QmFzZVVwZGF0ZT10fXZhciBvUz0hMTtmdW5jdGlvbiBvTygpe2lmKG9TKXt2YXIgZT1yNjtpZihudWxsIT09ZSl0aHJvdyBlfX1mdW5jdGlvbiBvQihlLHQsbixyKXtvUz0hMTt2YXIgbz1lLnVwZGF0ZVF1ZXVlO294PSExO3ZhciBhPW8uZmlyc3RCYXNlVXBkYXRlLGk9by5sYXN0QmFzZVVwZGF0ZSxsPW8uc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PWwpe28uc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgcz1sLGM9cy5uZXh0O3MubmV4dD1udWxsLG51bGw9PT1pP2E9YzppLm5leHQ9YyxpPXM7dmFyIHU9ZS5hbHRlcm5hdGU7bnVsbCE9PXUmJihsPSh1PXUudXBkYXRlUXVldWUpLmxhc3RCYXNlVXBkYXRlKSE9PWkmJihudWxsPT09bD91LmZpcnN0QmFzZVVwZGF0ZT1jOmwubmV4dD1jLHUubGFzdEJhc2VVcGRhdGU9cyl9aWYobnVsbCE9PWEpe3ZhciBkPW8uYmFzZVN0YXRlO2ZvcihpPTAsdT1jPXM9bnVsbCxsPWE7Oyl7dmFyIHA9LTB4MjAwMDAwMDEmbC5sYW5lLGg9cCE9PWwubGFuZTtpZihoPyhsUiZwKT09PXA6KHImcCk9PT1wKXswIT09cCYmcD09PXIzJiYob1M9ITApLG51bGwhPT11JiYodT11Lm5leHQ9e2xhbmU6MCx0YWc6bC50YWcscGF5bG9hZDpsLnBheWxvYWQsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9KTtlOnt2YXIgbT1lLGc9bDtzd2l0Y2gocD10LGcudGFnKXtjYXNlIDE6aWYoXCJmdW5jdGlvblwiPT10eXBlb2YobT1nLnBheWxvYWQpKXtkPW0uY2FsbChuLGQscCk7YnJlYWsgZX1kPW07YnJlYWsgZTtjYXNlIDM6bS5mbGFncz0tNjU1MzcmbS5mbGFnc3wxMjg7Y2FzZSAwOmlmKG51bGw9PShwPVwiZnVuY3Rpb25cIj09dHlwZW9mKG09Zy5wYXlsb2FkKT9tLmNhbGwobixkLHApOm0pKWJyZWFrIGU7ZD1mKHt9LGQscCk7YnJlYWsgZTtjYXNlIDI6b3g9ITB9fW51bGwhPT0ocD1sLmNhbGxiYWNrKSYmKGUuZmxhZ3N8PTY0LGgmJihlLmZsYWdzfD04MTkyKSxudWxsPT09KGg9by5jYWxsYmFja3MpP28uY2FsbGJhY2tzPVtwXTpoLnB1c2gocCkpfWVsc2UgaD17bGFuZTpwLHRhZzpsLnRhZyxwYXlsb2FkOmwucGF5bG9hZCxjYWxsYmFjazpsLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PXU/KGM9dT1oLHM9ZCk6dT11Lm5leHQ9aCxpfD1wO2lmKG51bGw9PT0obD1sLm5leHQpKWlmKG51bGw9PT0obD1vLnNoYXJlZC5wZW5kaW5nKSlicmVhaztlbHNlIGw9KGg9bCkubmV4dCxoLm5leHQ9bnVsbCxvLmxhc3RCYXNlVXBkYXRlPWgsby5zaGFyZWQucGVuZGluZz1udWxsfW51bGw9PT11JiYocz1kKSxvLmJhc2VTdGF0ZT1zLG8uZmlyc3RCYXNlVXBkYXRlPWMsby5sYXN0QmFzZVVwZGF0ZT11LG51bGw9PT1hJiYoby5zaGFyZWQubGFuZXM9MCksbCR8PWksZS5sYW5lcz1pLGUubWVtb2l6ZWRTdGF0ZT1kfX1mdW5jdGlvbiBvUChlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgRXJyb3IobCgxOTEsZSkpO2UuY2FsbCh0KX1mdW5jdGlvbiBvSShlLHQpe3ZhciBuPWUuY2FsbGJhY2tzO2lmKG51bGwhPT1uKWZvcihlLmNhbGxiYWNrcz1udWxsLGU9MDtlPG4ubGVuZ3RoO2UrKylvUChuW2VdLHQpfXZhciBvej1OKG51bGwpLG9UPU4oMCk7ZnVuY3Rpb24gb0QoZSx0KXtNKG9ULGU9bEgpLE0ob3osdCksbEg9ZXx0LmJhc2VMYW5lc31mdW5jdGlvbiBvTCgpe00ob1QsbEgpLE0ob3osb3ouY3VycmVudCl9ZnVuY3Rpb24gb04oKXtsSD1vVC5jdXJyZW50LFIob3opLFIob1QpfXZhciBvUj1OKG51bGwpLG9NPW51bGw7ZnVuY3Rpb24gb1ooZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7TShvViwxJm9WLmN1cnJlbnQpLE0ob1IsZSksbnVsbD09PW9NJiYobnVsbD09PXR8fG51bGwhPT1vei5jdXJyZW50P29NPWU6bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSYmKG9NPWUpKX1mdW5jdGlvbiBvVShlKXtNKG9WLG9WLmN1cnJlbnQpLE0ob1IsZSksbnVsbD09PW9NJiYob009ZSl9ZnVuY3Rpb24gb0YoZSl7MjI9PT1lLnRhZz8oTShvVixvVi5jdXJyZW50KSxNKG9SLGUpLG51bGw9PT1vTSYmKG9NPWUpKTpvcShlKX1mdW5jdGlvbiBvcSgpe00ob1Ysb1YuY3VycmVudCksTShvUixvUi5jdXJyZW50KX1mdW5jdGlvbiBvSChlKXtSKG9SKSxvTT09PWUmJihvTT1udWxsKSxSKG9WKX12YXIgb1Y9TigwKTtmdW5jdGlvbiBvJChlKXtmb3IodmFyIHQ9ZTtudWxsIT09dDspe2lmKDEzPT09dC50YWcpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09biYmKG51bGw9PT0obj1uLmRlaHlkcmF0ZWQpfHxjUyhuKXx8Y08obikpKXJldHVybiB0fWVsc2UgaWYoMTk9PT10LnRhZyYmKFwiZm9yd2FyZHNcIj09PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcnx8XCJiYWNrd2FyZHNcIj09PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcnx8XCJ1bnN0YWJsZV9sZWdhY3ktYmFja3dhcmRzXCI9PT10Lm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXJ8fFwidG9nZXRoZXJcIj09PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcikpe2lmKDAhPSgxMjgmdC5mbGFncykpcmV0dXJuIHR9ZWxzZSBpZihudWxsIT09dC5jaGlsZCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDtudWxsPT09dC5zaWJsaW5nOyl7aWYobnVsbD09PXQucmV0dXJufHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfXJldHVybiBudWxsfXZhciBvVz0wLG9ZPW51bGwsb0s9bnVsbCxvWD1udWxsLG9HPSExLG9RPSExLG9KPSExLG8wPTAsbzE9MCxvMj1udWxsLG80PTA7ZnVuY3Rpb24gbzUoKXt0aHJvdyBFcnJvcihsKDMyMSkpfWZ1bmN0aW9uIG8zKGUsdCl7aWYobnVsbD09PXQpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmbjxlLmxlbmd0aDtuKyspaWYoIW5rKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbzYoZSx0LG4scixvLGEpe3JldHVybiBvVz1hLG9ZPXQsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHQubGFuZXM9MCxJLkg9bnVsbD09PWV8fG51bGw9PT1lLm1lbW9pemVkU3RhdGU/aXQ6aXIsb0o9ITEsYT1uKHIsbyksb0o9ITEsb1EmJihhPW84KHQsbixyLG8pKSxvOShlKSxhfWZ1bmN0aW9uIG85KGUpe0kuSD1pZTt2YXIgdD1udWxsIT09b0smJm51bGwhPT1vSy5uZXh0O2lmKG9XPTAsb1g9b0s9b1k9bnVsbCxvRz0hMSxvMT0wLG8yPW51bGwsdCl0aHJvdyBFcnJvcihsKDMwMCkpO251bGw9PT1lfHxpQXx8bnVsbCE9PShlPWUuZGVwZW5kZW5jaWVzKSYmciQoZSkmJihpQT0hMCl9ZnVuY3Rpb24gbzgoZSx0LG4scil7b1k9ZTt2YXIgbz0wO2Rve2lmKG9RJiYobzI9bnVsbCksbzE9MCxvUT0hMSwyNTw9byl0aHJvdyBFcnJvcihsKDMwMSkpO2lmKG8rPTEsb1g9b0s9bnVsbCxudWxsIT1lLnVwZGF0ZVF1ZXVlKXt2YXIgYT1lLnVwZGF0ZVF1ZXVlO2EubGFzdEVmZmVjdD1udWxsLGEuZXZlbnRzPW51bGwsYS5zdG9yZXM9bnVsbCxudWxsIT1hLm1lbW9DYWNoZSYmKGEubWVtb0NhY2hlLmluZGV4PTApfUkuSD1pbyxhPXQobixyKX13aGlsZShvUSk7cmV0dXJuIGF9ZnVuY3Rpb24gbzcoKXt2YXIgZT1JLkgsdD1lLnVzZVN0YXRlKClbMF07cmV0dXJuIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuP2FpKHQpOnQsZT1lLnVzZVN0YXRlKClbMF0sKG51bGwhPT1vSz9vSy5tZW1vaXplZFN0YXRlOm51bGwpIT09ZSYmKG9ZLmZsYWdzfD0xMDI0KSx0fWZ1bmN0aW9uIGFlKCl7dmFyIGU9MCE9PW8wO3JldHVybiBvMD0wLGV9ZnVuY3Rpb24gYXQoZSx0LG4pe3QudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmZsYWdzJj0tMjA1MyxlLmxhbmVzJj1+bn1mdW5jdGlvbiBhbihlKXtpZihvRyl7Zm9yKGU9ZS5tZW1vaXplZFN0YXRlO251bGwhPT1lOyl7dmFyIHQ9ZS5xdWV1ZTtudWxsIT09dCYmKHQucGVuZGluZz1udWxsKSxlPWUubmV4dH1vRz0hMX1vVz0wLG9YPW9LPW9ZPW51bGwsb1E9ITEsbzE9bzA9MCxvMj1udWxsfWZ1bmN0aW9uIGFyKCl7dmFyIGU9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07cmV0dXJuIG51bGw9PT1vWD9vWS5tZW1vaXplZFN0YXRlPW9YPWU6b1g9b1gubmV4dD1lLG9YfWZ1bmN0aW9uIGFvKCl7aWYobnVsbD09PW9LKXt2YXIgZT1vWS5hbHRlcm5hdGU7ZT1udWxsIT09ZT9lLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGU9b0submV4dDt2YXIgdD1udWxsPT09b1g/b1kubWVtb2l6ZWRTdGF0ZTpvWC5uZXh0O2lmKG51bGwhPT10KW9YPXQsb0s9ZTtlbHNle2lmKG51bGw9PT1lKXtpZihudWxsPT09b1kuYWx0ZXJuYXRlKXRocm93IEVycm9yKGwoNDY3KSk7dGhyb3cgRXJyb3IobCgzMTApKX1lPXttZW1vaXplZFN0YXRlOihvSz1lKS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpvSy5iYXNlU3RhdGUsYmFzZVF1ZXVlOm9LLmJhc2VRdWV1ZSxxdWV1ZTpvSy5xdWV1ZSxuZXh0Om51bGx9LG51bGw9PT1vWD9vWS5tZW1vaXplZFN0YXRlPW9YPWU6b1g9b1gubmV4dD1lfXJldHVybiBvWH1mdW5jdGlvbiBhYSgpe3JldHVybntsYXN0RWZmZWN0Om51bGwsZXZlbnRzOm51bGwsc3RvcmVzOm51bGwsbWVtb0NhY2hlOm51bGx9fWZ1bmN0aW9uIGFpKGUpe3ZhciB0PW8xO3JldHVybiBvMSs9MSxudWxsPT09bzImJihvMj1bXSksZT1vcyhvMixlLHQpLHQ9b1ksbnVsbD09PShudWxsPT09b1g/dC5tZW1vaXplZFN0YXRlOm9YLm5leHQpJiYoSS5IPW51bGw9PT0odD10LmFsdGVybmF0ZSl8fG51bGw9PT10Lm1lbW9pemVkU3RhdGU/aXQ6aXIpLGV9ZnVuY3Rpb24gYWwoZSl7aWYobnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnRoZW4pcmV0dXJuIGFpKGUpO2lmKGUuJCR0eXBlb2Y9PT1BKXJldHVybiByWShlKX10aHJvdyBFcnJvcihsKDQzOCxTdHJpbmcoZSkpKX1mdW5jdGlvbiBhcyhlKXt2YXIgdD1udWxsLG49b1kudXBkYXRlUXVldWU7aWYobnVsbCE9PW4mJih0PW4ubWVtb0NhY2hlKSxudWxsPT10KXt2YXIgcj1vWS5hbHRlcm5hdGU7bnVsbCE9PXImJm51bGwhPT0ocj1yLnVwZGF0ZVF1ZXVlKSYmbnVsbCE9KHI9ci5tZW1vQ2FjaGUpJiYodD17ZGF0YTpyLmRhdGEubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKCl9KSxpbmRleDowfSl9aWYobnVsbD09dCYmKHQ9e2RhdGE6W10saW5kZXg6MH0pLG51bGw9PT1uJiYobj1hYSgpLG9ZLnVwZGF0ZVF1ZXVlPW4pLG4ubWVtb0NhY2hlPXQsdm9pZCAwPT09KG49dC5kYXRhW3QuaW5kZXhdKSlmb3Iobj10LmRhdGFbdC5pbmRleF09QXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT1qO3JldHVybiB0LmluZGV4Kyssbn1mdW5jdGlvbiBhYyhlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0fWZ1bmN0aW9uIGF1KGUpe3JldHVybiBhZChhbygpLG9LLGUpfWZ1bmN0aW9uIGFkKGUsdCxuKXt2YXIgcj1lLnF1ZXVlO2lmKG51bGw9PT1yKXRocm93IEVycm9yKGwoMzExKSk7ci5sYXN0UmVuZGVyZWRSZWR1Y2VyPW47dmFyIG89ZS5iYXNlUXVldWUsYT1yLnBlbmRpbmc7aWYobnVsbCE9PWEpe2lmKG51bGwhPT1vKXt2YXIgaT1vLm5leHQ7by5uZXh0PWEubmV4dCxhLm5leHQ9aX10LmJhc2VRdWV1ZT1vPWEsci5wZW5kaW5nPW51bGx9aWYoYT1lLmJhc2VTdGF0ZSxudWxsPT09byllLm1lbW9pemVkU3RhdGU9YTtlbHNle3Q9by5uZXh0O3ZhciBzPWk9bnVsbCxjPW51bGwsdT10LGQ9ITE7ZG97dmFyIGY9LTB4MjAwMDAwMDEmdS5sYW5lO2lmKGYhPT11LmxhbmU/KGxSJmYpPT09Zjoob1cmZik9PT1mKXt2YXIgcD11LnJldmVydExhbmU7aWYoMD09PXApbnVsbCE9PWMmJihjPWMubmV4dD17bGFuZTowLHJldmVydExhbmU6MCxnZXN0dXJlOm51bGwsYWN0aW9uOnUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6dS5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6dS5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGY9PT1yMyYmKGQ9ITApO2Vsc2UgaWYoKG9XJnApPT09cCl7dT11Lm5leHQscD09PXIzJiYoZD0hMCk7Y29udGludWV9ZWxzZSBmPXtsYW5lOjAscmV2ZXJ0TGFuZTp1LnJldmVydExhbmUsZ2VzdHVyZTpudWxsLGFjdGlvbjp1LmFjdGlvbixoYXNFYWdlclN0YXRlOnUuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOnUuZWFnZXJTdGF0ZSxuZXh0Om51bGx9LG51bGw9PT1jPyhzPWM9ZixpPWEpOmM9Yy5uZXh0PWYsb1kubGFuZXN8PXAsbCR8PXA7Zj11LmFjdGlvbixvSiYmbihhLGYpLGE9dS5oYXNFYWdlclN0YXRlP3UuZWFnZXJTdGF0ZTpuKGEsZil9ZWxzZSBwPXtsYW5lOmYscmV2ZXJ0TGFuZTp1LnJldmVydExhbmUsZ2VzdHVyZTp1Lmdlc3R1cmUsYWN0aW9uOnUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6dS5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6dS5lYWdlclN0YXRlLG5leHQ6bnVsbH0sbnVsbD09PWM/KHM9Yz1wLGk9YSk6Yz1jLm5leHQ9cCxvWS5sYW5lc3w9ZixsJHw9Zjt1PXUubmV4dH13aGlsZShudWxsIT09dSYmdSE9PXQpO2lmKG51bGw9PT1jP2k9YTpjLm5leHQ9cywhbmsoYSxlLm1lbW9pemVkU3RhdGUpJiYoaUE9ITAsZCYmbnVsbCE9PShuPXI2KSkpdGhyb3cgbjtlLm1lbW9pemVkU3RhdGU9YSxlLmJhc2VTdGF0ZT1pLGUuYmFzZVF1ZXVlPWMsci5sYXN0UmVuZGVyZWRTdGF0ZT1hfXJldHVybiBudWxsPT09byYmKHIubGFuZXM9MCksW2UubWVtb2l6ZWRTdGF0ZSxyLmRpc3BhdGNoXX1mdW5jdGlvbiBhZihlKXt2YXIgdD1hbygpLG49dC5xdWV1ZTtpZihudWxsPT09bil0aHJvdyBFcnJvcihsKDMxMSkpO24ubGFzdFJlbmRlcmVkUmVkdWNlcj1lO3ZhciByPW4uZGlzcGF0Y2gsbz1uLnBlbmRpbmcsYT10Lm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW8pe24ucGVuZGluZz1udWxsO3ZhciBpPW89by5uZXh0O2RvIGE9ZShhLGkuYWN0aW9uKSxpPWkubmV4dDt3aGlsZShpIT09byk7bmsoYSx0Lm1lbW9pemVkU3RhdGUpfHwoaUE9ITApLHQubWVtb2l6ZWRTdGF0ZT1hLG51bGw9PT10LmJhc2VRdWV1ZSYmKHQuYmFzZVN0YXRlPWEpLG4ubGFzdFJlbmRlcmVkU3RhdGU9YX1yZXR1cm5bYSxyXX1mdW5jdGlvbiBhcChlLHQsbil7dmFyIHI9b1ksbz1hbygpLGE9cmo7aWYoYSl7aWYodm9pZCAwPT09bil0aHJvdyBFcnJvcihsKDQwNykpO249bigpfWVsc2Ugbj10KCk7dmFyIGk9IW5rKChvS3x8bykubWVtb2l6ZWRTdGF0ZSxuKTtpZihpJiYoby5tZW1vaXplZFN0YXRlPW4saUE9ITApLG89by5xdWV1ZSxhUihhZy5iaW5kKG51bGwscixvLGUpLFtlXSksby5nZXRTbmFwc2hvdCE9PXR8fGl8fG51bGwhPT1vWCYmMSZvWC5tZW1vaXplZFN0YXRlLnRhZyl7aWYoci5mbGFnc3w9MjA0OCxheig5LHtkZXN0cm95OnZvaWQgMH0sYW0uYmluZChudWxsLHIsbyxuLHQpLG51bGwpLG51bGw9PT1sTCl0aHJvdyBFcnJvcihsKDM0OSkpO2F8fDAhPSgxMjQmb1cpfHxhaChyLHQsbil9cmV0dXJuIG59ZnVuY3Rpb24gYWgoZSx0LG4pe2UuZmxhZ3N8PTE2Mzg0LGU9e2dldFNuYXBzaG90OnQsdmFsdWU6bn0sbnVsbD09PSh0PW9ZLnVwZGF0ZVF1ZXVlKT8odD1hYSgpLG9ZLnVwZGF0ZVF1ZXVlPXQsdC5zdG9yZXM9W2VdKTpudWxsPT09KG49dC5zdG9yZXMpP3Quc3RvcmVzPVtlXTpuLnB1c2goZSl9ZnVuY3Rpb24gYW0oZSx0LG4scil7dC52YWx1ZT1uLHQuZ2V0U25hcHNob3Q9cixheSh0KSYmYXYoZSl9ZnVuY3Rpb24gYWcoZSx0LG4pe3JldHVybiBuKGZ1bmN0aW9uKCl7YXkodCkmJmF2KGUpfSl9ZnVuY3Rpb24gYXkoZSl7dmFyIHQ9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e3ZhciBuPXQoKTtyZXR1cm4hbmsoZSxuKX1jYXRjaChlKXtyZXR1cm4hMH19ZnVuY3Rpb24gYXYoZSl7dmFyIHQ9bjMoZSwyKTtudWxsIT09dCYmc2EodCxlLDIpfWZ1bmN0aW9uIGFiKGUpe3ZhciB0PWFyKCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSl7dmFyIG49ZTtpZihlPW4oKSxvSil7ZWgoITApO3RyeXtuKCl9ZmluYWxseXtlaCghMSl9fX1yZXR1cm4gdC5tZW1vaXplZFN0YXRlPXQuYmFzZVN0YXRlPWUsdC5xdWV1ZT17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFjLGxhc3RSZW5kZXJlZFN0YXRlOmV9LHR9ZnVuY3Rpb24gYUEoZSx0LG4scil7cmV0dXJuIGUuYmFzZVN0YXRlPW4sYWQoZSxvSyxcImZ1bmN0aW9uXCI9PXR5cGVvZiByP3I6YWMpfWZ1bmN0aW9uIGF4KGUsdCxuLHIsbyl7aWYoYTkoZSkpdGhyb3cgRXJyb3IobCg0ODUpKTtpZihudWxsIT09KGU9dC5hY3Rpb24pKXt2YXIgYT17cGF5bG9hZDpvLGFjdGlvbjplLG5leHQ6bnVsbCxpc1RyYW5zaXRpb246ITAsc3RhdHVzOlwicGVuZGluZ1wiLHZhbHVlOm51bGwscmVhc29uOm51bGwsbGlzdGVuZXJzOltdLHRoZW46ZnVuY3Rpb24oZSl7YS5saXN0ZW5lcnMucHVzaChlKX19O251bGwhPT1JLlQ/bighMCk6YS5pc1RyYW5zaXRpb249ITEscihhKSxudWxsPT09KG49dC5wZW5kaW5nKT8oYS5uZXh0PXQucGVuZGluZz1hLGF3KHQsYSkpOihhLm5leHQ9bi5uZXh0LHQucGVuZGluZz1uLm5leHQ9YSl9fWZ1bmN0aW9uIGF3KGUsdCl7dmFyIG49dC5hY3Rpb24scj10LnBheWxvYWQsbz1lLnN0YXRlO2lmKHQuaXNUcmFuc2l0aW9uKXt2YXIgYT1JLlQsaT17fTtJLlQ9aTt0cnl7dmFyIGw9bihvLHIpLHM9SS5TO251bGwhPT1zJiZzKGksbCksYUMoZSx0LGwpfWNhdGNoKG4pe2FrKGUsdCxuKX1maW5hbGx5e251bGwhPT1hJiZudWxsIT09aS50eXBlcyYmKGEudHlwZXM9aS50eXBlcyksSS5UPWF9fWVsc2UgdHJ5e2E9bihvLHIpLGFDKGUsdCxhKX1jYXRjaChuKXthayhlLHQsbil9fWZ1bmN0aW9uIGFDKGUsdCxuKXtudWxsIT09biYmXCJvYmplY3RcIj09dHlwZW9mIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4udGhlbj9uLnRoZW4oZnVuY3Rpb24obil7YV8oZSx0LG4pfSxmdW5jdGlvbihuKXtyZXR1cm4gYWsoZSx0LG4pfSk6YV8oZSx0LG4pfWZ1bmN0aW9uIGFfKGUsdCxuKXt0LnN0YXR1cz1cImZ1bGZpbGxlZFwiLHQudmFsdWU9bixhRSh0KSxlLnN0YXRlPW4sbnVsbCE9PSh0PWUucGVuZGluZykmJigobj10Lm5leHQpPT09dD9lLnBlbmRpbmc9bnVsbDoobj1uLm5leHQsdC5uZXh0PW4sYXcoZSxuKSkpfWZ1bmN0aW9uIGFrKGUsdCxuKXt2YXIgcj1lLnBlbmRpbmc7aWYoZS5wZW5kaW5nPW51bGwsbnVsbCE9PXIpe3I9ci5uZXh0O2RvIHQuc3RhdHVzPVwicmVqZWN0ZWRcIix0LnJlYXNvbj1uLGFFKHQpLHQ9dC5uZXh0O3doaWxlKHQhPT1yKX1lLmFjdGlvbj1udWxsfWZ1bmN0aW9uIGFFKGUpe2U9ZS5saXN0ZW5lcnM7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspKDAsZVt0XSkoKX1mdW5jdGlvbiBhaihlLHQpe3JldHVybiB0fWZ1bmN0aW9uIGFTKGUsdCl7aWYocmope3ZhciBuPWxMLmZvcm1TdGF0ZTtpZihudWxsIT09bil7ZTp7dmFyIHI9b1k7aWYocmope2lmKHJFKXt0Ontmb3IodmFyIG89ckUsYT1yTzs4IT09by5ub2RlVHlwZTspaWYoIWF8fG51bGw9PT0obz1jQihvLm5leHRTaWJsaW5nKSkpe289bnVsbDticmVhayB0fW89XCJGIVwiPT09KGE9by5kYXRhKXx8XCJGXCI9PT1hP286bnVsbH1pZihvKXtyRT1jQihvLm5leHRTaWJsaW5nKSxyPVwiRiFcIj09PW8uZGF0YTticmVhayBlfX1yUChyKX1yPSExfXImJih0PW5bMF0pfX1yZXR1cm4obj1hcigpKS5tZW1vaXplZFN0YXRlPW4uYmFzZVN0YXRlPXQscj17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFqLGxhc3RSZW5kZXJlZFN0YXRlOnR9LG4ucXVldWU9cixuPWE1LmJpbmQobnVsbCxvWSxyKSxyLmRpc3BhdGNoPW4scj1hYighMSksYT1hNi5iaW5kKG51bGwsb1ksITEsci5xdWV1ZSkscj1hcigpLG89e3N0YXRlOnQsZGlzcGF0Y2g6bnVsbCxhY3Rpb246ZSxwZW5kaW5nOm51bGx9LHIucXVldWU9byxuPWF4LmJpbmQobnVsbCxvWSxvLGEsbiksby5kaXNwYXRjaD1uLHIubWVtb2l6ZWRTdGF0ZT1lLFt0LG4sITFdfWZ1bmN0aW9uIGFPKGUpe3JldHVybiBhQihhbygpLG9LLGUpfWZ1bmN0aW9uIGFCKGUsdCxuKXtpZih0PWFkKGUsdCxhailbMF0sZT1hdShhYylbMF0sXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4pdHJ5e3ZhciByPWFpKHQpfWNhdGNoKGUpe2lmKGU9PT1vcil0aHJvdyBvYTt0aHJvdyBlfWVsc2Ugcj10O3ZhciBvPSh0PWFvKCkpLnF1ZXVlLGE9by5kaXNwYXRjaDtyZXR1cm4gbiE9PXQubWVtb2l6ZWRTdGF0ZSYmKG9ZLmZsYWdzfD0yMDQ4LGF6KDkse2Rlc3Ryb3k6dm9pZCAwfSxhUC5iaW5kKG51bGwsbyxuKSxudWxsKSksW3IsYSxlXX1mdW5jdGlvbiBhUChlLHQpe2UuYWN0aW9uPXR9ZnVuY3Rpb24gYUkoZSl7dmFyIHQ9YW8oKSxuPW9LO2lmKG51bGwhPT1uKXJldHVybiBhQih0LG4sZSk7YW8oKSx0PXQubWVtb2l6ZWRTdGF0ZTt2YXIgcj0obj1hbygpKS5xdWV1ZS5kaXNwYXRjaDtyZXR1cm4gbi5tZW1vaXplZFN0YXRlPWUsW3QsciwhMV19ZnVuY3Rpb24gYXooZSx0LG4scil7cmV0dXJuIGU9e3RhZzplLGNyZWF0ZTpuLGRlcHM6cixpbnN0OnQsbmV4dDpudWxsfSxudWxsPT09KHQ9b1kudXBkYXRlUXVldWUpJiYodD1hYSgpLG9ZLnVwZGF0ZVF1ZXVlPXQpLG51bGw9PT0obj10Lmxhc3RFZmZlY3QpP3QubGFzdEVmZmVjdD1lLm5leHQ9ZToocj1uLm5leHQsbi5uZXh0PWUsZS5uZXh0PXIsdC5sYXN0RWZmZWN0PWUpLGV9ZnVuY3Rpb24gYVQoKXtyZXR1cm4gYW8oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGFEKGUsdCxuLHIpe3ZhciBvPWFyKCk7b1kuZmxhZ3N8PWUsby5tZW1vaXplZFN0YXRlPWF6KDF8dCx7ZGVzdHJveTp2b2lkIDB9LG4sdm9pZCAwPT09cj9udWxsOnIpfWZ1bmN0aW9uIGFMKGUsdCxuLHIpe3ZhciBvPWFvKCk7cj12b2lkIDA9PT1yP251bGw6cjt2YXIgYT1vLm1lbW9pemVkU3RhdGUuaW5zdDtudWxsIT09b0smJm51bGwhPT1yJiZvMyhyLG9LLm1lbW9pemVkU3RhdGUuZGVwcyk/by5tZW1vaXplZFN0YXRlPWF6KHQsYSxuLHIpOihvWS5mbGFnc3w9ZSxvLm1lbW9pemVkU3RhdGU9YXooMXx0LGEsbixyKSl9ZnVuY3Rpb24gYU4oZSx0KXthRCg4MzkwNjU2LDgsZSx0KX1mdW5jdGlvbiBhUihlLHQpe2FMKDIwNDgsOCxlLHQpfWZ1bmN0aW9uIGFNKGUsdCl7cmV0dXJuIGFMKDQsMixlLHQpfWZ1bmN0aW9uIGFaKGUsdCl7cmV0dXJuIGFMKDQsNCxlLHQpfWZ1bmN0aW9uIGFVKGUsdCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl7dmFyIG49dChlPWUoKSk7cmV0dXJuIGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKCk6dChudWxsKX19aWYobnVsbCE9dClyZXR1cm4gdC5jdXJyZW50PWU9ZSgpLGZ1bmN0aW9uKCl7dC5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIGFGKGUsdCxuKXtuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLGFMKDQsNCxhVS5iaW5kKG51bGwsdCxlKSxuKX1mdW5jdGlvbiBhcSgpe31mdW5jdGlvbiBhSChlLHQpe3ZhciBuPWFvKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGwhPT10JiZvMyh0LHJbMV0pP3JbMF06KG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX1mdW5jdGlvbiBhVihlLHQpe3ZhciBuPWFvKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1uLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXQmJm8zKHQsclsxXSkpcmV0dXJuIHJbMF07aWYocj1lKCksb0ope2VoKCEwKTt0cnl7ZSgpfWZpbmFsbHl7ZWgoITEpfX1yZXR1cm4gbi5tZW1vaXplZFN0YXRlPVtyLHRdLHJ9ZnVuY3Rpb24gYSQoZSx0LG4pe3JldHVybiB2b2lkIDA9PT1ufHwwIT0oMHg0MDAwMDAwMCZvVyk/ZS5tZW1vaXplZFN0YXRlPXQ6KGUubWVtb2l6ZWRTdGF0ZT1uLGU9c28oKSxvWS5sYW5lc3w9ZSxsJHw9ZSxuKX1mdW5jdGlvbiBhVyhlLHQsbixyKXtyZXR1cm4gbmsobix0KT9uOm51bGwhPT1vei5jdXJyZW50PyhuayhlPWEkKGUsbixyKSx0KXx8KGlBPSEwKSxlKTowPT0oNDImb1cpfHwwIT0oMHg0MDAwMDAwMCZvVyk/KGlBPSEwLGUubWVtb2l6ZWRTdGF0ZT1uKTooZT1zbygpLG9ZLmxhbmVzfD1lLGwkfD1lLHQpfWZ1bmN0aW9uIGFZKGUsdCxuLHIsbyl7dmFyIGE9ei5wO3oucD0wIT09YSYmOD5hP2E6ODt2YXIgaT1JLlQsbD17fTtJLlQ9bCxhNihlLCExLHQsbik7dHJ5e3ZhciBzPW8oKSxjPUkuUztpZihudWxsIT09YyYmYyhsLHMpLG51bGwhPT1zJiZcIm9iamVjdFwiPT10eXBlb2YgcyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygcy50aGVuKXt2YXIgdSxkLGY9KHU9W10sZD17c3RhdHVzOlwicGVuZGluZ1wiLHZhbHVlOm51bGwscmVhc29uOm51bGwsdGhlbjpmdW5jdGlvbihlKXt1LnB1c2goZSl9fSxzLnRoZW4oZnVuY3Rpb24oKXtkLnN0YXR1cz1cImZ1bGZpbGxlZFwiLGQudmFsdWU9cjtmb3IodmFyIGU9MDtlPHUubGVuZ3RoO2UrKykoMCx1W2VdKShyKX0sZnVuY3Rpb24oZSl7Zm9yKGQuc3RhdHVzPVwicmVqZWN0ZWRcIixkLnJlYXNvbj1lLGU9MDtlPHUubGVuZ3RoO2UrKykoMCx1W2VdKSh2b2lkIDApfSksZCk7YTMoZSx0LGYsc3IoZSkpfWVsc2UgYTMoZSx0LHIsc3IoZSkpfWNhdGNoKG4pe2EzKGUsdCx7dGhlbjpmdW5jdGlvbigpe30sc3RhdHVzOlwicmVqZWN0ZWRcIixyZWFzb246bn0sc3IoKSl9ZmluYWxseXt6LnA9YSxudWxsIT09aSYmbnVsbCE9PWwudHlwZXMmJihpLnR5cGVzPWwudHlwZXMpLEkuVD1pfX1mdW5jdGlvbiBhSygpe31mdW5jdGlvbiBhWChlLHQsbixyKXtpZig1IT09ZS50YWcpdGhyb3cgRXJyb3IobCg0NzYpKTt2YXIgbz1hRyhlKS5xdWV1ZTthWShlLG8sdCxULG51bGw9PT1uP2FLOmZ1bmN0aW9uKCl7cmV0dXJuIGFRKGUpLG4ocil9KX1mdW5jdGlvbiBhRyhlKXt2YXIgdD1lLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXQpcmV0dXJuIHQ7dmFyIG49e307cmV0dXJuKHQ9e21lbW9pemVkU3RhdGU6VCxiYXNlU3RhdGU6VCxiYXNlUXVldWU6bnVsbCxxdWV1ZTp7cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFjLGxhc3RSZW5kZXJlZFN0YXRlOlR9LG5leHQ6bnVsbH0pLm5leHQ9e21lbW9pemVkU3RhdGU6bixiYXNlU3RhdGU6bixiYXNlUXVldWU6bnVsbCxxdWV1ZTp7cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFjLGxhc3RSZW5kZXJlZFN0YXRlOm59LG5leHQ6bnVsbH0sZS5tZW1vaXplZFN0YXRlPXQsbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKGUubWVtb2l6ZWRTdGF0ZT10KSx0fWZ1bmN0aW9uIGFRKGUpe3ZhciB0PWFHKGUpO251bGw9PT10Lm5leHQmJih0PWUuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUpLGEzKGUsdC5uZXh0LnF1ZXVlLHt9LHNyKCkpfWZ1bmN0aW9uIGFKKCl7cmV0dXJuIHJZKGM5KX1mdW5jdGlvbiBhMCgpe3JldHVybiBhbygpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gYTEoKXtyZXR1cm4gYW8oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGEyKGUpe2Zvcih2YXIgdD1lLnJldHVybjtudWxsIT09dDspe3N3aXRjaCh0LnRhZyl7Y2FzZSAyNDpjYXNlIDM6dmFyIG49c3IoKSxyPW9rKHQsZT1vXyhuKSxuKTtudWxsIT09ciYmKHNhKHIsdCxuKSxvRShyLHQsbikpLHQ9e2NhY2hlOnIxKCl9LGUucGF5bG9hZD10O3JldHVybn10PXQucmV0dXJufX1mdW5jdGlvbiBhNChlLHQsbil7dmFyIHI9c3IoKTtuPXtsYW5lOnIscmV2ZXJ0TGFuZTowLGdlc3R1cmU6bnVsbCxhY3Rpb246bixoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LGE5KGUpP2E4KHQsbik6bnVsbCE9PShuPW41KGUsdCxuLHIpKSYmKHNhKG4sZSxyKSxhNyhuLHQscikpfWZ1bmN0aW9uIGE1KGUsdCxuKXthMyhlLHQsbixzcigpKX1mdW5jdGlvbiBhMyhlLHQsbixyKXt2YXIgbz17bGFuZTpyLHJldmVydExhbmU6MCxnZXN0dXJlOm51bGwsYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihhOShlKSlhOCh0LG8pO2Vsc2V7dmFyIGE9ZS5hbHRlcm5hdGU7aWYoMD09PWUubGFuZXMmJihudWxsPT09YXx8MD09PWEubGFuZXMpJiZudWxsIT09KGE9dC5sYXN0UmVuZGVyZWRSZWR1Y2VyKSl0cnl7dmFyIGk9dC5sYXN0UmVuZGVyZWRTdGF0ZSxsPWEoaSxuKTtpZihvLmhhc0VhZ2VyU3RhdGU9ITAsby5lYWdlclN0YXRlPWwsbmsobCxpKSlyZXR1cm4gbjQoZSx0LG8sMCksbnVsbD09PWxMJiZuMigpLCExfWNhdGNoKGUpe31maW5hbGx5e31pZihudWxsIT09KG49bjUoZSx0LG8scikpKXJldHVybiBzYShuLGUsciksYTcobix0LHIpLCEwfXJldHVybiExfWZ1bmN0aW9uIGE2KGUsdCxuLHIpe2lmKHI9e2xhbmU6MixyZXZlcnRMYW5lOnNYKCksZ2VzdHVyZTpudWxsLGFjdGlvbjpyLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sYTkoZSkpe2lmKHQpdGhyb3cgRXJyb3IobCg0NzkpKX1lbHNlIG51bGwhPT0odD1uNShlLG4sciwyKSkmJnNhKHQsZSwyKX1mdW5jdGlvbiBhOShlKXt2YXIgdD1lLmFsdGVybmF0ZTtyZXR1cm4gZT09PW9ZfHxudWxsIT09dCYmdD09PW9ZfWZ1bmN0aW9uIGE4KGUsdCl7b1E9b0c9ITA7dmFyIG49ZS5wZW5kaW5nO251bGw9PT1uP3QubmV4dD10Oih0Lm5leHQ9bi5uZXh0LG4ubmV4dD10KSxlLnBlbmRpbmc9dH1mdW5jdGlvbiBhNyhlLHQsbil7aWYoMCE9KDQxOTQwNDgmbikpe3ZhciByPXQubGFuZXM7ciY9ZS5wZW5kaW5nTGFuZXMsdC5sYW5lcz1ufD1yLGVTKGUsbil9fXZhciBpZT17cmVhZENvbnRleHQ6clksdXNlOmFsLHVzZUNhbGxiYWNrOm81LHVzZUNvbnRleHQ6bzUsdXNlRWZmZWN0Om81LHVzZUltcGVyYXRpdmVIYW5kbGU6bzUsdXNlTGF5b3V0RWZmZWN0Om81LHVzZUluc2VydGlvbkVmZmVjdDpvNSx1c2VNZW1vOm81LHVzZVJlZHVjZXI6bzUsdXNlUmVmOm81LHVzZVN0YXRlOm81LHVzZURlYnVnVmFsdWU6bzUsdXNlRGVmZXJyZWRWYWx1ZTpvNSx1c2VUcmFuc2l0aW9uOm81LHVzZVN5bmNFeHRlcm5hbFN0b3JlOm81LHVzZUlkOm81LHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOm81LHVzZUZvcm1TdGF0ZTpvNSx1c2VBY3Rpb25TdGF0ZTpvNSx1c2VPcHRpbWlzdGljOm81LHVzZU1lbW9DYWNoZTpvNSx1c2VDYWNoZVJlZnJlc2g6bzV9LGl0PXtyZWFkQ29udGV4dDpyWSx1c2U6YWwsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXIoKS5tZW1vaXplZFN0YXRlPVtlLHZvaWQgMD09PXQ/bnVsbDp0XSxlfSx1c2VDb250ZXh0OnJZLHVzZUVmZmVjdDphTix1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsdCxuKXtuPW51bGwhPW4/bi5jb25jYXQoW2VdKTpudWxsLGFEKDQxOTQzMDgsNCxhVS5iaW5kKG51bGwsdCxlKSxuKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFEKDQxOTQzMDgsNCxlLHQpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oZSx0KXthRCg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPWFyKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1lKCk7aWYob0ope2VoKCEwKTt0cnl7ZSgpfWZpbmFsbHl7ZWgoITEpfX1yZXR1cm4gbi5tZW1vaXplZFN0YXRlPVtyLHRdLHJ9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWFyKCk7aWYodm9pZCAwIT09bil7dmFyIG89bih0KTtpZihvSil7ZWgoITApO3RyeXtuKHQpfWZpbmFsbHl7ZWgoITEpfX19ZWxzZSBvPXQ7cmV0dXJuIHIubWVtb2l6ZWRTdGF0ZT1yLmJhc2VTdGF0ZT1vLHIucXVldWU9ZT17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmUsbGFzdFJlbmRlcmVkU3RhdGU6b30sZT1lLmRpc3BhdGNoPWE0LmJpbmQobnVsbCxvWSxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIGFyKCkubWVtb2l6ZWRTdGF0ZT1lPXtjdXJyZW50OmV9fSx1c2VTdGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0oZT1hYihlKSkucXVldWUsbj1hNS5iaW5kKG51bGwsb1ksdCk7cmV0dXJuIHQuZGlzcGF0Y2g9bixbZS5tZW1vaXplZFN0YXRlLG5dfSx1c2VEZWJ1Z1ZhbHVlOmFxLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSQoYXIoKSxlLHQpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9YWIoITEpO3JldHVybiBlPWFZLmJpbmQobnVsbCxvWSxlLnF1ZXVlLCEwLCExKSxhcigpLm1lbW9pemVkU3RhdGU9ZSxbITEsZV19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1vWSxvPWFyKCk7aWYocmope2lmKHZvaWQgMD09PW4pdGhyb3cgRXJyb3IobCg0MDcpKTtuPW4oKX1lbHNle2lmKG49dCgpLG51bGw9PT1sTCl0aHJvdyBFcnJvcihsKDM0OSkpOzAhPSgxMjQmbFIpfHxhaChyLHQsbil9by5tZW1vaXplZFN0YXRlPW47dmFyIGE9e3ZhbHVlOm4sZ2V0U25hcHNob3Q6dH07cmV0dXJuIG8ucXVldWU9YSxhTihhZy5iaW5kKG51bGwscixhLGUpLFtlXSksci5mbGFnc3w9MjA0OCxheig5LHtkZXN0cm95OnZvaWQgMH0sYW0uYmluZChudWxsLHIsYSxuLHQpLG51bGwpLG59LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9YXIoKSx0PWxMLmlkZW50aWZpZXJQcmVmaXg7aWYocmope3ZhciBuPXJiLHI9cnY7dD1cIl9cIit0K1wiUl9cIisobj0ociZ+KDE8PDMyLWVtKHIpLTEpKS50b1N0cmluZygzMikrbiksMDwobj1vMCsrKSYmKHQrPVwiSFwiK24udG9TdHJpbmcoMzIpKSx0Kz1cIl9cIn1lbHNlIHQ9XCJfXCIrdCtcInJfXCIrKG49bzQrKykudG9TdHJpbmcoMzIpK1wiX1wiO3JldHVybiBlLm1lbW9pemVkU3RhdGU9dH0sdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6YUosdXNlRm9ybVN0YXRlOmFTLHVzZUFjdGlvblN0YXRlOmFTLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oZSl7dmFyIHQ9YXIoKTt0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZTt2YXIgbj17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOm51bGwsbGFzdFJlbmRlcmVkU3RhdGU6bnVsbH07cmV0dXJuIHQucXVldWU9bix0PWE2LmJpbmQobnVsbCxvWSwhMCxuKSxuLmRpc3BhdGNoPXQsW2UsdF19LHVzZU1lbW9DYWNoZTphcyx1c2VDYWNoZVJlZnJlc2g6ZnVuY3Rpb24oKXtyZXR1cm4gYXIoKS5tZW1vaXplZFN0YXRlPWEyLmJpbmQobnVsbCxvWSl9fSxpcj17cmVhZENvbnRleHQ6clksdXNlOmFsLHVzZUNhbGxiYWNrOmFILHVzZUNvbnRleHQ6clksdXNlRWZmZWN0OmFSLHVzZUltcGVyYXRpdmVIYW5kbGU6YUYsdXNlSW5zZXJ0aW9uRWZmZWN0OmFNLHVzZUxheW91dEVmZmVjdDphWix1c2VNZW1vOmFWLHVzZVJlZHVjZXI6YXUsdXNlUmVmOmFULHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGF1KGFjKX0sdXNlRGVidWdWYWx1ZTphcSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFXKGFvKCksb0subWVtb2l6ZWRTdGF0ZSxlLHQpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9YXUoYWMpWzBdLHQ9YW8oKS5tZW1vaXplZFN0YXRlO3JldHVybltcImJvb2xlYW5cIj09dHlwZW9mIGU/ZTphaShlKSx0XX0sdXNlU3luY0V4dGVybmFsU3RvcmU6YXAsdXNlSWQ6YTAsdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6YUosdXNlRm9ybVN0YXRlOmFPLHVzZUFjdGlvblN0YXRlOmFPLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYUEoYW8oKSxvSyxlLHQpfSx1c2VNZW1vQ2FjaGU6YXMsdXNlQ2FjaGVSZWZyZXNoOmExfSxpbz17cmVhZENvbnRleHQ6clksdXNlOmFsLHVzZUNhbGxiYWNrOmFILHVzZUNvbnRleHQ6clksdXNlRWZmZWN0OmFSLHVzZUltcGVyYXRpdmVIYW5kbGU6YUYsdXNlSW5zZXJ0aW9uRWZmZWN0OmFNLHVzZUxheW91dEVmZmVjdDphWix1c2VNZW1vOmFWLHVzZVJlZHVjZXI6YWYsdXNlUmVmOmFULHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGFmKGFjKX0sdXNlRGVidWdWYWx1ZTphcSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49YW8oKTtyZXR1cm4gbnVsbD09PW9LP2EkKG4sZSx0KTphVyhuLG9LLm1lbW9pemVkU3RhdGUsZSx0KX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWFmKGFjKVswXSx0PWFvKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bXCJib29sZWFuXCI9PXR5cGVvZiBlP2U6YWkoZSksdF19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmFwLHVzZUlkOmEwLHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOmFKLHVzZUZvcm1TdGF0ZTphSSx1c2VBY3Rpb25TdGF0ZTphSSx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKGUsdCl7dmFyIG49YW8oKTtyZXR1cm4gbnVsbCE9PW9LP2FBKG4sb0ssZSx0KToobi5iYXNlU3RhdGU9ZSxbZSxuLnF1ZXVlLmRpc3BhdGNoXSl9LHVzZU1lbW9DYWNoZTphcyx1c2VDYWNoZVJlZnJlc2g6YTF9O2Z1bmN0aW9uIGlhKGUsdCxuLHIpe249bnVsbD09KG49bihyLHQ9ZS5tZW1vaXplZFN0YXRlKSk/dDpmKHt9LHQsbiksZS5tZW1vaXplZFN0YXRlPW4sMD09PWUubGFuZXMmJihlLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1uKX12YXIgaWk9e2VucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgcj1zcigpLG89b18ocik7by5wYXlsb2FkPXQsbnVsbCE9biYmKG8uY2FsbGJhY2s9biksbnVsbCE9PSh0PW9rKGUsbyxyKSkmJihzYSh0LGUsciksb0UodCxlLHIpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgcj1zcigpLG89b18ocik7by50YWc9MSxvLnBheWxvYWQ9dCxudWxsIT1uJiYoby5jYWxsYmFjaz1uKSxudWxsIT09KHQ9b2soZSxvLHIpKSYmKHNhKHQsZSxyKSxvRSh0LGUscikpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSx0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciBuPXNyKCkscj1vXyhuKTtyLnRhZz0yLG51bGwhPXQmJihyLmNhbGxiYWNrPXQpLG51bGwhPT0odD1vayhlLHIsbikpJiYoc2EodCxlLG4pLG9FKHQsZSxuKSl9fTtmdW5jdGlvbiBpbChlLHQsbixyLG8sYSxpKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZihlPWUuc3RhdGVOb2RlKS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocixhLGkpOiF0LnByb3RvdHlwZXx8IXQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50fHwhbkUobixyKXx8IW5FKG8sYSl9ZnVuY3Rpb24gaXMoZSx0LG4scil7ZT10LnN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmdC5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLHIpLHQuc3RhdGUhPT1lJiZpaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKHQsdC5zdGF0ZSxudWxsKX1mdW5jdGlvbiBpYyhlLHQpe3ZhciBuPXQ7aWYoXCJyZWZcImluIHQpZm9yKHZhciByIGluIG49e30sdClcInJlZlwiIT09ciYmKG5bcl09dFtyXSk7aWYoZT1lLmRlZmF1bHRQcm9wcylmb3IodmFyIG8gaW4gbj09PXQmJihuPWYoe30sbikpLGUpdm9pZCAwPT09bltvXSYmKG5bb109ZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gaXUoZSl7blEoZSl9ZnVuY3Rpb24gaWQoZSl7Y29uc29sZS5lcnJvcihlKX1mdW5jdGlvbiBpcChlKXtuUShlKX1mdW5jdGlvbiBpaChlLHQpe3RyeXsoMCxlLm9uVW5jYXVnaHRFcnJvcikodC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6dC5zdGFja30pfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9fWZ1bmN0aW9uIGltKGUsdCxuKXt0cnl7KDAsZS5vbkNhdWdodEVycm9yKShuLnZhbHVlLHtjb21wb25lbnRTdGFjazpuLnN0YWNrLGVycm9yQm91bmRhcnk6MT09PXQudGFnP3Quc3RhdGVOb2RlOm51bGx9KX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfX1mdW5jdGlvbiBpZyhlLHQsbil7cmV0dXJuKG49b18obikpLnRhZz0zLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfSxuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7aWgoZSx0KX0sbn1mdW5jdGlvbiBpeShlKXtyZXR1cm4oZT1vXyhlKSkudGFnPTMsZX1mdW5jdGlvbiBpdihlLHQsbixyKXt2YXIgbz1uLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG8pe3ZhciBhPXIudmFsdWU7ZS5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIG8oYSl9LGUuY2FsbGJhY2s9ZnVuY3Rpb24oKXtpbSh0LG4scil9fXZhciBpPW4uc3RhdGVOb2RlO251bGwhPT1pJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbXBvbmVudERpZENhdGNoJiYoZS5jYWxsYmFjaz1mdW5jdGlvbigpe2ltKHQsbixyKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBvJiYobnVsbD09PWw0P2w0PW5ldyBTZXQoW3RoaXNdKTpsNC5hZGQodGhpcykpO3ZhciBlPXIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChyLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09ZT9lOlwiXCJ9KX0pfXZhciBpYj1FcnJvcihsKDQ2MSkpLGlBPSExO2Z1bmN0aW9uIGl4KGUsdCxuLHIpe3QuY2hpbGQ9bnVsbD09PWU/b0EodCxudWxsLG4scik6b2IodCxlLmNoaWxkLG4scil9ZnVuY3Rpb24gaXcoZSx0LG4scixvKXtuPW4ucmVuZGVyO3ZhciBhPXQucmVmO2lmKFwicmVmXCJpbiByKXt2YXIgaT17fTtmb3IodmFyIGwgaW4gcilcInJlZlwiIT09bCYmKGlbbF09cltsXSl9ZWxzZSBpPXI7cmV0dXJuKHJXKHQpLHI9bzYoZSx0LG4saSxhLG8pLGw9YWUoKSxudWxsPT09ZXx8aUEpPyhyaiYmbCYmcncodCksdC5mbGFnc3w9MSxpeChlLHQscixvKSx0LmNoaWxkKTooYXQoZSx0LG8pLGlWKGUsdCxvKSl9ZnVuY3Rpb24gaUMoZSx0LG4scixvKXtpZihudWxsPT09ZSl7dmFyIGE9bi50eXBlO3JldHVyblwiZnVuY3Rpb25cIiE9dHlwZW9mIGF8fHJ0KGEpfHx2b2lkIDAhPT1hLmRlZmF1bHRQcm9wc3x8bnVsbCE9PW4uY29tcGFyZT8oKGU9cm8obi50eXBlLG51bGwscix0LHQubW9kZSxvKSkucmVmPXQucmVmLGUucmV0dXJuPXQsdC5jaGlsZD1lKToodC50YWc9MTUsdC50eXBlPWEsaV8oZSx0LGEscixvKSl9aWYoYT1lLmNoaWxkLCFpJChlLG8pKXt2YXIgaT1hLm1lbW9pemVkUHJvcHM7aWYoKG49bnVsbCE9PShuPW4uY29tcGFyZSk/bjpuRSkoaSxyKSYmZS5yZWY9PT10LnJlZilyZXR1cm4gaVYoZSx0LG8pfXJldHVybiB0LmZsYWdzfD0xLChlPXJuKGEscikpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZX1mdW5jdGlvbiBpXyhlLHQsbixyLG8pe2lmKG51bGwhPT1lKXt2YXIgYT1lLm1lbW9pemVkUHJvcHM7aWYobkUoYSxyKSYmZS5yZWY9PT10LnJlZilpZihpQT0hMSx0LnBlbmRpbmdQcm9wcz1yPWEsIWkkKGUsbykpcmV0dXJuIHQubGFuZXM9ZS5sYW5lcyxpVihlLHQsbyk7ZWxzZSAwIT0oMTMxMDcyJmUuZmxhZ3MpJiYoaUE9ITApfXJldHVybiBpUChlLHQsbixyLG8pfWZ1bmN0aW9uIGlrKGUsdCxuLHIpe3ZhciBvPXIuY2hpbGRyZW4sYT1udWxsIT09ZT9lLm1lbW9pemVkU3RhdGU6bnVsbDtpZihudWxsPT09ZSYmbnVsbD09PXQuc3RhdGVOb2RlJiYodC5zdGF0ZU5vZGU9e192aXNpYmlsaXR5OjEsX3BlbmRpbmdNYXJrZXJzOm51bGwsX3JldHJ5Q2FjaGU6bnVsbCxfdHJhbnNpdGlvbnM6bnVsbH0pLFwiaGlkZGVuXCI9PT1yLm1vZGUpe2lmKDAhPSgxMjgmdC5mbGFncykpe2lmKHI9bnVsbCE9PWE/YS5iYXNlTGFuZXN8bjpuLG51bGwhPT1lKXtmb3IoYT0wLG89dC5jaGlsZD1lLmNoaWxkO251bGwhPT1vOylhPWF8by5sYW5lc3xvLmNoaWxkTGFuZXMsbz1vLnNpYmxpbmc7dC5jaGlsZExhbmVzPWEmfnJ9ZWxzZSB0LmNoaWxkTGFuZXM9MCx0LmNoaWxkPW51bGw7cmV0dXJuIGlqKGUsdCxyLG4pfWlmKDA9PSgweDIwMDAwMDAwJm4pKXJldHVybiB0LmxhbmVzPXQuY2hpbGRMYW5lcz0weDIwMDAwMDAwLGlqKGUsdCxudWxsIT09YT9hLmJhc2VMYW5lc3xuOm4sbik7dC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbH0sbnVsbCE9PWUmJm90KHQsbnVsbCE9PWE/YS5jYWNoZVBvb2w6bnVsbCksbnVsbCE9PWE/b0QodCxhKTpvTCgpLG9GKHQpfWVsc2UgbnVsbCE9PWE/KG90KHQsYS5jYWNoZVBvb2wpLG9EKHQsYSksb3EodCksdC5tZW1vaXplZFN0YXRlPW51bGwpOihudWxsIT09ZSYmb3QodCxudWxsKSxvTCgpLG9xKHQpKTtyZXR1cm4gaXgoZSx0LG8sbiksdC5jaGlsZH1mdW5jdGlvbiBpRShlLHQpe3JldHVybiBudWxsIT09ZSYmMjI9PT1lLnRhZ3x8bnVsbCE9PXQuc3RhdGVOb2RlfHwodC5zdGF0ZU5vZGU9e192aXNpYmlsaXR5OjEsX3BlbmRpbmdNYXJrZXJzOm51bGwsX3JldHJ5Q2FjaGU6bnVsbCxfdHJhbnNpdGlvbnM6bnVsbH0pLHQuc2libGluZ31mdW5jdGlvbiBpaihlLHQsbixyKXt2YXIgbz1vZSgpO3JldHVybiB0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczpuLGNhY2hlUG9vbDpvPW51bGw9PT1vP251bGw6e3BhcmVudDpyMC5fY3VycmVudFZhbHVlLHBvb2w6b319LG51bGwhPT1lJiZvdCh0LG51bGwpLG9MKCksb0YodCksbnVsbCE9PWUmJnJWKGUsdCxyLCEwKSxudWxsfWZ1bmN0aW9uIGlTKGUsdCl7cmV0dXJuKHQ9aVooe21vZGU6dC5tb2RlLGNoaWxkcmVuOnQuY2hpbGRyZW59LGUubW9kZSkpLnJlZj1lLnJlZixlLmNoaWxkPXQsdC5yZXR1cm49ZSx0fWZ1bmN0aW9uIGlPKGUsdCxuKXtyZXR1cm4gb2IodCxlLmNoaWxkLG51bGwsbiksZT1pUyh0LHQucGVuZGluZ1Byb3BzKSxlLmZsYWdzfD0yLG9IKHQpLHQubWVtb2l6ZWRTdGF0ZT1udWxsLGV9ZnVuY3Rpb24gaUIoZSx0KXt2YXIgbj10LnJlZjtpZihudWxsPT09biludWxsIT09ZSYmbnVsbCE9PWUucmVmJiYodC5mbGFnc3w9NDE5NDgxNik7ZWxzZXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiZcIm9iamVjdFwiIT10eXBlb2Ygbil0aHJvdyBFcnJvcihsKDI4NCkpOyhudWxsPT09ZXx8ZS5yZWYhPT1uKSYmKHQuZmxhZ3N8PTQxOTQ4MTYpfX1mdW5jdGlvbiBpUChlLHQsbixyLG8pe3JldHVybihyVyh0KSxuPW82KGUsdCxuLHIsdm9pZCAwLG8pLHI9YWUoKSxudWxsPT09ZXx8aUEpPyhyaiYmciYmcncodCksdC5mbGFnc3w9MSxpeChlLHQsbixvKSx0LmNoaWxkKTooYXQoZSx0LG8pLGlWKGUsdCxvKSl9ZnVuY3Rpb24gaUkoZSx0LG4scixvLGEpe3JldHVybihyVyh0KSx0LnVwZGF0ZVF1ZXVlPW51bGwsbj1vOCh0LHIsbixvKSxvOShlKSxyPWFlKCksbnVsbD09PWV8fGlBKT8ocmomJnImJnJ3KHQpLHQuZmxhZ3N8PTEsaXgoZSx0LG4sYSksdC5jaGlsZCk6KGF0KGUsdCxhKSxpVihlLHQsYSkpfWZ1bmN0aW9uIGl6KGUsdCxuLHIsbyl7aWYoclcodCksbnVsbD09PXQuc3RhdGVOb2RlKXt2YXIgYT1uOCxpPW4uY29udGV4dFR5cGU7XCJvYmplY3RcIj09dHlwZW9mIGkmJm51bGwhPT1pJiYoYT1yWShpKSksdC5tZW1vaXplZFN0YXRlPW51bGwhPT0oYT1uZXcgbihyLGEpKS5zdGF0ZSYmdm9pZCAwIT09YS5zdGF0ZT9hLnN0YXRlOm51bGwsYS51cGRhdGVyPWlpLHQuc3RhdGVOb2RlPWEsYS5fcmVhY3RJbnRlcm5hbHM9dCwoYT10LnN0YXRlTm9kZSkucHJvcHM9cixhLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSxhLnJlZnM9e30sb3codCksaT1uLmNvbnRleHRUeXBlLGEuY29udGV4dD1cIm9iamVjdFwiPT10eXBlb2YgaSYmbnVsbCE9PWk/clkoaSk6bjgsYS5zdGF0ZT10Lm1lbW9pemVkU3RhdGUsXCJmdW5jdGlvblwiPT10eXBlb2YoaT1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcykmJihpYSh0LG4saSxyKSxhLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnR8fChpPWEuc3RhdGUsXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnQmJmEuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxpIT09YS5zdGF0ZSYmaWkuZW5xdWV1ZVJlcGxhY2VTdGF0ZShhLGEuc3RhdGUsbnVsbCksb0IodCxyLGEsbyksb08oKSxhLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpLHI9ITB9ZWxzZSBpZihudWxsPT09ZSl7YT10LnN0YXRlTm9kZTt2YXIgbD10Lm1lbW9pemVkUHJvcHMscz1pYyhuLGwpO2EucHJvcHM9czt2YXIgYz1hLmNvbnRleHQsdT1uLmNvbnRleHRUeXBlO2k9bjgsXCJvYmplY3RcIj09dHlwZW9mIHUmJm51bGwhPT11JiYoaT1yWSh1KSk7dmFyIGQ9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7dT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBkfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlLGw9dC5wZW5kaW5nUHJvcHMhPT1sLHV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGx8fGMhPT1pKSYmaXModCxhLHIsaSksb3g9ITE7dmFyIGY9dC5tZW1vaXplZFN0YXRlO2Euc3RhdGU9ZixvQih0LHIsYSxvKSxvTygpLGM9dC5tZW1vaXplZFN0YXRlLGx8fGYhPT1jfHxveD8oXCJmdW5jdGlvblwiPT10eXBlb2YgZCYmKGlhKHQsbixkLHIpLGM9dC5tZW1vaXplZFN0YXRlKSwocz1veHx8aWwodCxuLHMscixmLGMsaSkpPyh1fHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnQmJmEuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpKTooXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1jKSxhLnByb3BzPXIsYS5zdGF0ZT1jLGEuY29udGV4dD1pLHI9cyk6KFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkTW91bnQmJih0LmZsYWdzfD00MTk0MzA4KSxyPSExKX1lbHNle2E9dC5zdGF0ZU5vZGUsb0MoZSx0KSx1PWljKG4saT10Lm1lbW9pemVkUHJvcHMpLGEucHJvcHM9dSxkPXQucGVuZGluZ1Byb3BzLGY9YS5jb250ZXh0LGM9bi5jb250ZXh0VHlwZSxzPW44LFwib2JqZWN0XCI9PXR5cGVvZiBjJiZudWxsIT09YyYmKHM9clkoYykpLChjPVwiZnVuY3Rpb25cIj09dHlwZW9mKGw9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaSE9PWR8fGYhPT1zKSYmaXModCxhLHIscyksb3g9ITEsZj10Lm1lbW9pemVkU3RhdGUsYS5zdGF0ZT1mLG9CKHQscixhLG8pLG9PKCk7dmFyIHA9dC5tZW1vaXplZFN0YXRlO2khPT1kfHxmIT09cHx8b3h8fG51bGwhPT1lJiZudWxsIT09ZS5kZXBlbmRlbmNpZXMmJnIkKGUuZGVwZW5kZW5jaWVzKT8oXCJmdW5jdGlvblwiPT10eXBlb2YgbCYmKGlhKHQsbixsLHIpLHA9dC5tZW1vaXplZFN0YXRlKSwodT1veHx8aWwodCxuLHUscixmLHAscyl8fG51bGwhPT1lJiZudWxsIT09ZS5kZXBlbmRlbmNpZXMmJnIkKGUuZGVwZW5kZW5jaWVzKSk/KGN8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50V2lsbFVwZGF0ZSYmYS5jb21wb25lbnRXaWxsVXBkYXRlKHIscCxzKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZhLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKHIscCxzKSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGUmJih0LmZsYWdzfD00KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYodC5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudERpZFVwZGF0ZXx8aT09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGk9PT1lLm1lbW9pemVkUHJvcHMmJmY9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD0xMDI0KSx0Lm1lbW9pemVkUHJvcHM9cix0Lm1lbW9pemVkU3RhdGU9cCksYS5wcm9wcz1yLGEuc3RhdGU9cCxhLmNvbnRleHQ9cyxyPXUpOihcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudERpZFVwZGF0ZXx8aT09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGk9PT1lLm1lbW9pemVkUHJvcHMmJmY9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD0xMDI0KSxyPSExKX1yZXR1cm4gYT1yLGlCKGUsdCkscj0wIT0oMTI4JnQuZmxhZ3MpLGF8fHI/KGE9dC5zdGF0ZU5vZGUsbj1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBuLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmEucmVuZGVyKCksdC5mbGFnc3w9MSxudWxsIT09ZSYmcj8odC5jaGlsZD1vYih0LGUuY2hpbGQsbnVsbCxvKSx0LmNoaWxkPW9iKHQsbnVsbCxuLG8pKTppeChlLHQsbixvKSx0Lm1lbW9pemVkU3RhdGU9YS5zdGF0ZSxlPXQuY2hpbGQpOmU9aVYoZSx0LG8pLGV9ZnVuY3Rpb24gaVQoZSx0LG4scil7cmV0dXJuIHJEKCksdC5mbGFnc3w9MjU2LGl4KGUsdCxuLHIpLHQuY2hpbGR9dmFyIGlEPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MCxoeWRyYXRpb25FcnJvcnM6bnVsbH07ZnVuY3Rpb24gaUwoZSl7cmV0dXJue2Jhc2VMYW5lczplLGNhY2hlUG9vbDpvbigpfX1mdW5jdGlvbiBpTihlLHQsbil7cmV0dXJuIGU9bnVsbCE9PWU/ZS5jaGlsZExhbmVzJn5uOjAsdCYmKGV8PWxLKSxlfWZ1bmN0aW9uIGlSKGUsdCxuKXt2YXIgcixvPXQucGVuZGluZ1Byb3BzLGE9ITEsaT0wIT0oMTI4JnQuZmxhZ3MpO2lmKChyPWkpfHwocj0obnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUpJiYwIT0oMiZvVi5jdXJyZW50KSksciYmKGE9ITAsdC5mbGFncyY9LTEyOSkscj0wIT0oMzImdC5mbGFncyksdC5mbGFncyY9LTMzLG51bGw9PT1lKXtpZihyail7aWYoYT9vWih0KTpvcSh0KSwoZT1yRSk/bnVsbCE9PShlPW51bGwhPT0oZT1jaihlLHJPKSkmJlwiJlwiIT09ZS5kYXRhP2U6bnVsbCkmJih0Lm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6ZSx0cmVlQ29udGV4dDpudWxsIT09cnk/e2lkOnJ2LG92ZXJmbG93OnJifTpudWxsLHJldHJ5TGFuZToweDIwMDAwMDAwLGh5ZHJhdGlvbkVycm9yczpudWxsfSwobj1ybChlKSkucmV0dXJuPXQsdC5jaGlsZD1uLHJrPXQsckU9bnVsbCk6ZT1udWxsLG51bGw9PT1lKXRocm93IHJQKHQpO3JldHVybiBjTyhlKT90LmxhbmVzPTMyOnQubGFuZXM9MHgyMDAwMDAwMCxudWxsfXZhciBzPW8uY2hpbGRyZW47cmV0dXJuKG89by5mYWxsYmFjayxhKT8ob3EodCkscz1pWih7bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOnN9LGE9dC5tb2RlKSxvPXJhKG8sYSxuLG51bGwpLHMucmV0dXJuPXQsby5yZXR1cm49dCxzLnNpYmxpbmc9byx0LmNoaWxkPXMsKG89dC5jaGlsZCkubWVtb2l6ZWRTdGF0ZT1pTChuKSxvLmNoaWxkTGFuZXM9aU4oZSxyLG4pLHQubWVtb2l6ZWRTdGF0ZT1pRCxpRShudWxsLG8pKToob1oodCksaU0odCxzKSl9dmFyIGM9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiZudWxsIT09KHM9Yy5kZWh5ZHJhdGVkKSl7aWYoaSkyNTYmdC5mbGFncz8ob1oodCksdC5mbGFncyY9LTI1Nyx0PWlVKGUsdCxuKSk6bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT8ob3EodCksdC5jaGlsZD1lLmNoaWxkLHQuZmxhZ3N8PTEyOCx0PW51bGwpOihvcSh0KSxzPW8uZmFsbGJhY2ssYT10Lm1vZGUsbz1pWih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpvLmNoaWxkcmVufSxhKSxzPXJhKHMsYSxuLG51bGwpLHMuZmxhZ3N8PTIsby5yZXR1cm49dCxzLnJldHVybj10LG8uc2libGluZz1zLHQuY2hpbGQ9byxvYih0LGUuY2hpbGQsbnVsbCxuKSwobz10LmNoaWxkKS5tZW1vaXplZFN0YXRlPWlMKG4pLG8uY2hpbGRMYW5lcz1pTihlLHIsbiksdC5tZW1vaXplZFN0YXRlPWlELHQ9aUUobnVsbCxvKSk7ZWxzZSBpZihvWih0KSxjTyhzKSl7aWYocj1zLm5leHRTaWJsaW5nJiZzLm5leHRTaWJsaW5nLmRhdGFzZXQpdmFyIHU9ci5kZ3N0O3I9dSwobz1FcnJvcihsKDQxOSkpKS5zdGFjaz1cIlwiLG8uZGlnZXN0PXIsck4oe3ZhbHVlOm8sc291cmNlOm51bGwsc3RhY2s6bnVsbH0pLHQ9aVUoZSx0LG4pfWVsc2UgaWYoaUF8fHJWKGUsdCxuLCExKSxyPTAhPShuJmUuY2hpbGRMYW5lcyksaUF8fHIpe2lmKG51bGwhPT0ocj1sTCkmJjAhPT0obz1lTyhyLG4pKSYmbyE9PWMucmV0cnlMYW5lKXRocm93IGMucmV0cnlMYW5lPW8sbjMoZSxvKSxzYShyLGUsbyksaWI7Y1Mocyl8fHNnKCksdD1pVShlLHQsbil9ZWxzZSBjUyhzKT8odC5mbGFnc3w9MTkyLHQuY2hpbGQ9ZS5jaGlsZCx0PW51bGwpOihlPWMudHJlZUNvbnRleHQsckU9Y0Iocy5uZXh0U2libGluZykscms9dCxyaj0hMCxyUz1udWxsLHJPPSExLG51bGwhPT1lJiZyXyh0LGUpLHQ9aU0odCxvLmNoaWxkcmVuKSx0LmZsYWdzfD00MDk2KTtyZXR1cm4gdH1yZXR1cm4gYT8ob3EodCkscz1vLmZhbGxiYWNrLGE9dC5tb2RlLHU9KGM9ZS5jaGlsZCkuc2libGluZywobz1ybihjLHttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46by5jaGlsZHJlbn0pKS5zdWJ0cmVlRmxhZ3M9MHgzZTAwMDAwJmMuc3VidHJlZUZsYWdzLG51bGwhPT11P3M9cm4odSxzKToocz1yYShzLGEsbixudWxsKSxzLmZsYWdzfD0yKSxzLnJldHVybj10LG8ucmV0dXJuPXQsby5zaWJsaW5nPXMsdC5jaGlsZD1vLGlFKG51bGwsbyksbz10LmNoaWxkLG51bGw9PT0ocz1lLmNoaWxkLm1lbW9pemVkU3RhdGUpP3M9aUwobik6KG51bGwhPT0oYT1zLmNhY2hlUG9vbCk/KGM9cjAuX2N1cnJlbnRWYWx1ZSxhPWEucGFyZW50IT09Yz97cGFyZW50OmMscG9vbDpjfTphKTphPW9uKCkscz17YmFzZUxhbmVzOnMuYmFzZUxhbmVzfG4sY2FjaGVQb29sOmF9KSxvLm1lbW9pemVkU3RhdGU9cyxvLmNoaWxkTGFuZXM9aU4oZSxyLG4pLHQubWVtb2l6ZWRTdGF0ZT1pRCxpRShlLmNoaWxkLG8pKToob1oodCksZT0obj1lLmNoaWxkKS5zaWJsaW5nLChuPXJuKG4se21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46by5jaGlsZHJlbn0pKS5yZXR1cm49dCxuLnNpYmxpbmc9bnVsbCxudWxsIT09ZSYmKG51bGw9PT0ocj10LmRlbGV0aW9ucyk/KHQuZGVsZXRpb25zPVtlXSx0LmZsYWdzfD0xNik6ci5wdXNoKGUpKSx0LmNoaWxkPW4sdC5tZW1vaXplZFN0YXRlPW51bGwsbil9ZnVuY3Rpb24gaU0oZSx0KXtyZXR1cm4odD1pWih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjp0fSxlLm1vZGUpKS5yZXR1cm49ZSxlLmNoaWxkPXR9ZnVuY3Rpb24gaVooZSx0KXtyZXR1cm4oZT1yZSgyMixlLG51bGwsdCkpLmxhbmVzPTAsZX1mdW5jdGlvbiBpVShlLHQsbil7cmV0dXJuIG9iKHQsZS5jaGlsZCxudWxsLG4pLGU9aU0odCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbiksZS5mbGFnc3w9Mix0Lm1lbW9pemVkU3RhdGU9bnVsbCxlfWZ1bmN0aW9uIGlGKGUsdCxuKXtlLmxhbmVzfD10O3ZhciByPWUuYWx0ZXJuYXRlO251bGwhPT1yJiYoci5sYW5lc3w9dCkscnEoZS5yZXR1cm4sdCxuKX1mdW5jdGlvbiBpcShlLHQsbixyLG8sYSl7dmFyIGk9ZS5tZW1vaXplZFN0YXRlO251bGw9PT1pP2UubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6dCxyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OnIsdGFpbDpuLHRhaWxNb2RlOm8sdHJlZUZvcmtDb3VudDphfTooaS5pc0JhY2t3YXJkcz10LGkucmVuZGVyaW5nPW51bGwsaS5yZW5kZXJpbmdTdGFydFRpbWU9MCxpLmxhc3Q9cixpLnRhaWw9bixpLnRhaWxNb2RlPW8saS50cmVlRm9ya0NvdW50PWEpfWZ1bmN0aW9uIGlIKGUsdCxuKXt2YXIgcj10LnBlbmRpbmdQcm9wcyxvPXIucmV2ZWFsT3JkZXIsYT1yLnRhaWw7cj1yLmNoaWxkcmVuO3ZhciBpPW9WLmN1cnJlbnQsbD0wIT0oMiZpKTtpZihsPyhpPTEmaXwyLHQuZmxhZ3N8PTEyOCk6aSY9MSxNKG9WLGkpLGl4KGUsdCxyLG4pLHI9cmo/cmg6MCwhbCYmbnVsbCE9PWUmJjAhPSgxMjgmZS5mbGFncykpZTpmb3IoZT10LmNoaWxkO251bGwhPT1lOyl7aWYoMTM9PT1lLnRhZyludWxsIT09ZS5tZW1vaXplZFN0YXRlJiZpRihlLG4sdCk7ZWxzZSBpZigxOT09PWUudGFnKWlGKGUsbix0KTtlbHNlIGlmKG51bGwhPT1lLmNoaWxkKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhaztmb3IoO251bGw9PT1lLnNpYmxpbmc7KXtpZihudWxsPT09ZS5yZXR1cm58fGUucmV0dXJuPT09dClicmVhayBlO2U9ZS5yZXR1cm59ZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZ31zd2l0Y2gobyl7Y2FzZVwiZm9yd2FyZHNcIjpmb3Iobz1udWxsLG49dC5jaGlsZDtudWxsIT09bjspbnVsbCE9PShlPW4uYWx0ZXJuYXRlKSYmbnVsbD09PW8kKGUpJiYobz1uKSxuPW4uc2libGluZztudWxsPT09KG49byk/KG89dC5jaGlsZCx0LmNoaWxkPW51bGwpOihvPW4uc2libGluZyxuLnNpYmxpbmc9bnVsbCksaXEodCwhMSxvLG4sYSxyKTticmVhaztjYXNlXCJiYWNrd2FyZHNcIjpjYXNlXCJ1bnN0YWJsZV9sZWdhY3ktYmFja3dhcmRzXCI6Zm9yKG49bnVsbCxvPXQuY2hpbGQsdC5jaGlsZD1udWxsO251bGwhPT1vOyl7aWYobnVsbCE9PShlPW8uYWx0ZXJuYXRlKSYmbnVsbD09PW8kKGUpKXt0LmNoaWxkPW87YnJlYWt9ZT1vLnNpYmxpbmcsby5zaWJsaW5nPW4sbj1vLG89ZX1pcSh0LCEwLG4sbnVsbCxhLHIpO2JyZWFrO2Nhc2VcInRvZ2V0aGVyXCI6aXEodCwhMSxudWxsLG51bGwsdm9pZCAwLHIpO2JyZWFrO2RlZmF1bHQ6dC5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIHQuY2hpbGR9ZnVuY3Rpb24gaVYoZSx0LG4pe2lmKG51bGwhPT1lJiYodC5kZXBlbmRlbmNpZXM9ZS5kZXBlbmRlbmNpZXMpLGwkfD10LmxhbmVzLDA9PShuJnQuY2hpbGRMYW5lcykpe2lmKG51bGw9PT1lKXJldHVybiBudWxsO2Vsc2UgaWYoclYoZSx0LG4sITEpLDA9PShuJnQuY2hpbGRMYW5lcykpcmV0dXJuIG51bGx9aWYobnVsbCE9PWUmJnQuY2hpbGQhPT1lLmNoaWxkKXRocm93IEVycm9yKGwoMTUzKSk7aWYobnVsbCE9PXQuY2hpbGQpe2ZvcihuPXJuKGU9dC5jaGlsZCxlLnBlbmRpbmdQcm9wcyksdC5jaGlsZD1uLG4ucmV0dXJuPXQ7bnVsbCE9PWUuc2libGluZzspZT1lLnNpYmxpbmcsKG49bi5zaWJsaW5nPXJuKGUsZS5wZW5kaW5nUHJvcHMpKS5yZXR1cm49dDtuLnNpYmxpbmc9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBpJChlLHQpe3JldHVybiAwIT0oZS5sYW5lcyZ0KXx8ISEobnVsbCE9PShlPWUuZGVwZW5kZW5jaWVzKSYmciQoZSkpfWZ1bmN0aW9uIGlXKGUsdCxuKXtpZihudWxsIT09ZSlpZihlLm1lbW9pemVkUHJvcHMhPT10LnBlbmRpbmdQcm9wcylpQT0hMDtlbHNle2lmKCFpJChlLG4pJiYwPT0oMTI4JnQuZmxhZ3MpKXJldHVybiBpQT0hMSxmdW5jdGlvbihlLHQsbil7c3dpdGNoKHQudGFnKXtjYXNlIDM6SCh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHJVKHQscjAsZS5tZW1vaXplZFN0YXRlLmNhY2hlKSxyRCgpO2JyZWFrO2Nhc2UgMjc6Y2FzZSA1OiQodCk7YnJlYWs7Y2FzZSA0OkgodCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOnJVKHQsdC50eXBlLHQubWVtb2l6ZWRQcm9wcy52YWx1ZSk7YnJlYWs7Y2FzZSAzMTppZihudWxsIT09dC5tZW1vaXplZFN0YXRlKXJldHVybiB0LmZsYWdzfD0xMjgsb1UodCksbnVsbDticmVhaztjYXNlIDEzOnZhciByPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09cil7aWYobnVsbCE9PXIuZGVoeWRyYXRlZClyZXR1cm4gb1oodCksdC5mbGFnc3w9MTI4LG51bGw7aWYoMCE9KG4mdC5jaGlsZC5jaGlsZExhbmVzKSlyZXR1cm4gaVIoZSx0LG4pO3JldHVybiBvWih0KSxudWxsIT09KGU9aVYoZSx0LG4pKT9lLnNpYmxpbmc6bnVsbH1vWih0KTticmVhaztjYXNlIDE5OnZhciBvPTAhPSgxMjgmZS5mbGFncyk7aWYoKHI9MCE9KG4mdC5jaGlsZExhbmVzKSl8fChyVihlLHQsbiwhMSkscj0wIT0obiZ0LmNoaWxkTGFuZXMpKSxvKXtpZihyKXJldHVybiBpSChlLHQsbik7dC5mbGFnc3w9MTI4fWlmKG51bGwhPT0obz10Lm1lbW9pemVkU3RhdGUpJiYoby5yZW5kZXJpbmc9bnVsbCxvLnRhaWw9bnVsbCxvLmxhc3RFZmZlY3Q9bnVsbCksTShvVixvVi5jdXJyZW50KSwhcilyZXR1cm4gbnVsbDticmVhaztjYXNlIDIyOnJldHVybiB0LmxhbmVzPTAsaWsoZSx0LG4sdC5wZW5kaW5nUHJvcHMpO2Nhc2UgMjQ6clUodCxyMCxlLm1lbW9pemVkU3RhdGUuY2FjaGUpfXJldHVybiBpVihlLHQsbil9KGUsdCxuKTtpQT0wIT0oMTMxMDcyJmUuZmxhZ3MpfWVsc2UgaUE9ITEscmomJjAhPSgxMDQ4NTc2JnQuZmxhZ3MpJiZyeCh0LHJoLHQuaW5kZXgpO3N3aXRjaCh0LmxhbmVzPTAsdC50YWcpe2Nhc2UgMTY6ZTp7dmFyIHI9dC5wZW5kaW5nUHJvcHM7aWYoZT1vYyh0LmVsZW1lbnRUeXBlKSx0LnR5cGU9ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJ0KGUpPyhyPWljKGUsciksdC50YWc9MSx0PWl6KG51bGwsdCxlLHIsbikpOih0LnRhZz0wLHQ9aVAobnVsbCx0LGUscixuKSk7ZWxzZXtpZihudWxsIT1lKXt2YXIgbz1lLiQkdHlwZW9mO2lmKG89PT14KXt0LnRhZz0xMSx0PWl3KG51bGwsdCxlLHIsbik7YnJlYWsgZX1pZihvPT09Xyl7dC50YWc9MTQsdD1pQyhudWxsLHQsZSxyLG4pO2JyZWFrIGV9fXRocm93IEVycm9yKGwoMzA2LHQ9ZnVuY3Rpb24gZSh0KXtpZihudWxsPT10KXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpcmV0dXJuIHQuJCR0eXBlb2Y9PT1CP251bGw6dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiB0O3N3aXRjaCh0KXtjYXNlIGc6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgdjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB5OnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgdzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBDOnJldHVyblwiU3VzcGVuc2VMaXN0XCI7Y2FzZSBFOnJldHVyblwiQWN0aXZpdHlcIn1pZihcIm9iamVjdFwiPT10eXBlb2YgdClzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBtOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBOnJldHVybiB0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIjtjYXNlIGI6cmV0dXJuKHQuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgeDp2YXIgbj10LnJlbmRlcjtyZXR1cm4odD10LmRpc3BsYXlOYW1lKXx8KHQ9XCJcIiE9PSh0PW4uZGlzcGxheU5hbWV8fG4ubmFtZXx8XCJcIik/XCJGb3J3YXJkUmVmKFwiK3QrXCIpXCI6XCJGb3J3YXJkUmVmXCIpLHQ7Y2FzZSBfOnJldHVybiBudWxsIT09KG49dC5kaXNwbGF5TmFtZXx8bnVsbCk/bjplKHQudHlwZSl8fFwiTWVtb1wiO2Nhc2UgazpuPXQuX3BheWxvYWQsdD10Ll9pbml0O3RyeXtyZXR1cm4gZSh0KG4pKX1jYXRjaChlKXt9fXJldHVybiBudWxsfShlKXx8ZSxcIlwiKSl9fXJldHVybiB0O2Nhc2UgMDpyZXR1cm4gaVAoZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxuKTtjYXNlIDE6cmV0dXJuIG89aWMocj10LnR5cGUsdC5wZW5kaW5nUHJvcHMpLGl6KGUsdCxyLG8sbik7Y2FzZSAzOmU6e2lmKEgodCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxudWxsPT09ZSl0aHJvdyBFcnJvcihsKDM4NykpO3I9dC5wZW5kaW5nUHJvcHM7dmFyIGE9dC5tZW1vaXplZFN0YXRlO289YS5lbGVtZW50LG9DKGUsdCksb0IodCxyLG51bGwsbik7dmFyIGk9dC5tZW1vaXplZFN0YXRlO2lmKHJVKHQscjAscj1pLmNhY2hlKSxyIT09YS5jYWNoZSYmckgodCxbcjBdLG4sITApLG9PKCkscj1pLmVsZW1lbnQsYS5pc0RlaHlkcmF0ZWQpaWYoYT17ZWxlbWVudDpyLGlzRGVoeWRyYXRlZDohMSxjYWNoZTppLmNhY2hlfSx0LnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1hLHQubWVtb2l6ZWRTdGF0ZT1hLDI1NiZ0LmZsYWdzKXt0PWlUKGUsdCxyLG4pO2JyZWFrIGV9ZWxzZSBpZihyIT09byl7ck4obz1ydShFcnJvcihsKDQyNCkpLHQpKSx0PWlUKGUsdCxyLG4pO2JyZWFrIGV9ZWxzZSBmb3IockU9Y0IoKGU9OT09PShlPXQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLm5vZGVUeXBlP2UuYm9keTpcIkhUTUxcIj09PWUubm9kZU5hbWU/ZS5vd25lckRvY3VtZW50LmJvZHk6ZSkuZmlyc3RDaGlsZCkscms9dCxyaj0hMCxyUz1udWxsLHJPPSEwLG49b0EodCxudWxsLHIsbiksdC5jaGlsZD1uO247KW4uZmxhZ3M9LTMmbi5mbGFnc3w0MDk2LG49bi5zaWJsaW5nO2Vsc2V7aWYockQoKSxyPT09byl7dD1pVihlLHQsbik7YnJlYWsgZX1peChlLHQscixuKX10PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSAyNjpyZXR1cm4gaUIoZSx0KSxudWxsPT09ZT8obj1jRih0LnR5cGUsbnVsbCx0LnBlbmRpbmdQcm9wcyxudWxsKSk/dC5tZW1vaXplZFN0YXRlPW46cmp8fChuPXQudHlwZSxlPXQucGVuZGluZ1Byb3BzLChyPWNwKEYuY3VycmVudCkuY3JlYXRlRWxlbWVudChuKSlbZURdPXQscltlTF09ZSxjdShyLG4sZSksZVkociksdC5zdGF0ZU5vZGU9cik6dC5tZW1vaXplZFN0YXRlPWNGKHQudHlwZSxlLm1lbW9pemVkUHJvcHMsdC5wZW5kaW5nUHJvcHMsZS5tZW1vaXplZFN0YXRlKSxudWxsO2Nhc2UgMjc6cmV0dXJuICQodCksbnVsbD09PWUmJnJqJiYocj10LnN0YXRlTm9kZT1jVCh0LnR5cGUsdC5wZW5kaW5nUHJvcHMsRi5jdXJyZW50KSxyaz10LHJPPSEwLG89ckUsY0ModC50eXBlKT8oY1A9byxyRT1jQihyLmZpcnN0Q2hpbGQpKTpyRT1vKSxpeChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksaUIoZSx0KSxudWxsPT09ZSYmKHQuZmxhZ3N8PTQxOTQzMDQpLHQuY2hpbGQ7Y2FzZSA1OnJldHVybiBudWxsPT09ZSYmcmomJigobz1yPXJFKSYmKG51bGwhPT0ocj1mdW5jdGlvbihlLHQsbixyKXtmb3IoOzE9PT1lLm5vZGVUeXBlOyl7aWYoZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKXtpZighciYmKFwiSU5QVVRcIiE9PWUubm9kZU5hbWV8fFwiaGlkZGVuXCIhPT1lLnR5cGUpKWJyZWFrfWVsc2UgaWYocil7aWYoIWVbZUZdKXN3aXRjaCh0KXtjYXNlXCJtZXRhXCI6aWYoIWUuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIikpYnJlYWs7cmV0dXJuIGU7Y2FzZVwibGlua1wiOmlmKFwic3R5bGVzaGVldFwiPT09KG89ZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIikpJiZlLmhhc0F0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKXx8byE9PW4ucmVsfHxlLmdldEF0dHJpYnV0ZShcImhyZWZcIikhPT0obnVsbD09bi5ocmVmfHxcIlwiPT09bi5ocmVmP251bGw6bi5ocmVmKXx8ZS5nZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiKSE9PShudWxsPT1uLmNyb3NzT3JpZ2luP251bGw6bi5jcm9zc09yaWdpbil8fGUuZ2V0QXR0cmlidXRlKFwidGl0bGVcIikhPT0obnVsbD09bi50aXRsZT9udWxsOm4udGl0bGUpKWJyZWFrO3JldHVybiBlO2Nhc2VcInN0eWxlXCI6aWYoZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXByZWNlZGVuY2VcIikpYnJlYWs7cmV0dXJuIGU7Y2FzZVwic2NyaXB0XCI6aWYoKChvPWUuZ2V0QXR0cmlidXRlKFwic3JjXCIpKSE9PShudWxsPT1uLnNyYz9udWxsOm4uc3JjKXx8ZS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpIT09KG51bGw9PW4udHlwZT9udWxsOm4udHlwZSl8fGUuZ2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIikhPT0obnVsbD09bi5jcm9zc09yaWdpbj9udWxsOm4uY3Jvc3NPcmlnaW4pKSYmbyYmZS5oYXNBdHRyaWJ1dGUoXCJhc3luY1wiKSYmIWUuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIikpYnJlYWs7cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4gZX19ZWxzZXtpZihcImlucHV0XCIhPT10fHxcImhpZGRlblwiIT09ZS50eXBlKXJldHVybiBlO3ZhciBvPW51bGw9PW4ubmFtZT9udWxsOlwiXCIrbi5uYW1lO2lmKFwiaGlkZGVuXCI9PT1uLnR5cGUmJmUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKT09PW8pcmV0dXJuIGV9aWYobnVsbD09PShlPWNCKGUubmV4dFNpYmxpbmcpKSlicmVha31yZXR1cm4gbnVsbH0ocix0LnR5cGUsdC5wZW5kaW5nUHJvcHMsck8pKT8odC5zdGF0ZU5vZGU9cixyaz10LHJFPWNCKHIuZmlyc3RDaGlsZCksck89ITEsbz0hMCk6bz0hMSksb3x8clAodCkpLCQodCksbz10LnR5cGUsYT10LnBlbmRpbmdQcm9wcyxpPW51bGwhPT1lP2UubWVtb2l6ZWRQcm9wczpudWxsLHI9YS5jaGlsZHJlbixjZyhvLGEpP3I9bnVsbDpudWxsIT09aSYmY2cobyxpKSYmKHQuZmxhZ3N8PTMyKSxudWxsIT09dC5tZW1vaXplZFN0YXRlJiYoYzkuX2N1cnJlbnRWYWx1ZT1vPW82KGUsdCxvNyxudWxsLG51bGwsbikpLGlCKGUsdCksaXgoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1lJiZyaiYmKChlPW49ckUpJiYobnVsbCE9PShuPWZ1bmN0aW9uKGUsdCxuKXtpZihcIlwiPT09dClyZXR1cm4gbnVsbDtmb3IoOzMhPT1lLm5vZGVUeXBlOylpZigoMSE9PWUubm9kZVR5cGV8fFwiSU5QVVRcIiE9PWUubm9kZU5hbWV8fFwiaGlkZGVuXCIhPT1lLnR5cGUpJiYhbnx8bnVsbD09PShlPWNCKGUubmV4dFNpYmxpbmcpKSlyZXR1cm4gbnVsbDtyZXR1cm4gZX0obix0LnBlbmRpbmdQcm9wcyxyTykpPyh0LnN0YXRlTm9kZT1uLHJrPXQsckU9bnVsbCxlPSEwKTplPSExKSxlfHxyUCh0KSksbnVsbDtjYXNlIDEzOnJldHVybiBpUihlLHQsbik7Y2FzZSA0OnJldHVybiBIKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykscj10LnBlbmRpbmdQcm9wcyxudWxsPT09ZT90LmNoaWxkPW9iKHQsbnVsbCxyLG4pOml4KGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gaXcoZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxuKTtjYXNlIDc6cmV0dXJuIGl4KGUsdCx0LnBlbmRpbmdQcm9wcyxuKSx0LmNoaWxkO2Nhc2UgODpjYXNlIDEyOnJldHVybiBpeChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEwOnJldHVybiByPXQucGVuZGluZ1Byb3BzLHJVKHQsdC50eXBlLHIudmFsdWUpLGl4KGUsdCxyLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSA5OnJldHVybiBvPXQudHlwZS5fY29udGV4dCxyPXQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLHJXKHQpLHI9cihvPXJZKG8pKSx0LmZsYWdzfD0xLGl4KGUsdCxyLG4pLHQuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gaUMoZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxuKTtjYXNlIDE1OnJldHVybiBpXyhlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLG4pO2Nhc2UgMTk6cmV0dXJuIGlIKGUsdCxuKTtjYXNlIDMxOnZhciBzPWUsYz10LHU9bixkPWMucGVuZGluZ1Byb3BzLGY9MCE9KDEyOCZjLmZsYWdzKTtpZihjLmZsYWdzJj0tMTI5LG51bGw9PT1zKXtpZihyail7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlyZXR1cm4gcz1pUyhjLGQpLGMubGFuZXM9MHgyMDAwMDAwMCxpRShudWxsLHMpO2lmKG9VKGMpLChzPXJFKT9udWxsIT09KHM9bnVsbCE9PShzPWNqKHMsck8pKSYmXCImXCI9PT1zLmRhdGE/czpudWxsKSYmKGMubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpzLHRyZWVDb250ZXh0Om51bGwhPT1yeT97aWQ6cnYsb3ZlcmZsb3c6cmJ9Om51bGwscmV0cnlMYW5lOjB4MjAwMDAwMDAsaHlkcmF0aW9uRXJyb3JzOm51bGx9LCh1PXJsKHMpKS5yZXR1cm49YyxjLmNoaWxkPXUscms9YyxyRT1udWxsKTpzPW51bGwsbnVsbD09PXMpdGhyb3cgclAoYyk7cmV0dXJuIGMubGFuZXM9MHgyMDAwMDAwMCxudWxsfXJldHVybiBpUyhjLGQpfXZhciBwPXMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09cCl7dmFyIGg9cC5kZWh5ZHJhdGVkO2lmKG9VKGMpLGYpaWYoMjU2JmMuZmxhZ3MpYy5mbGFncyY9LTI1NyxjPWlPKHMsYyx1KTtlbHNlIGlmKG51bGwhPT1jLm1lbW9pemVkU3RhdGUpYy5jaGlsZD1zLmNoaWxkLGMuZmxhZ3N8PTEyOCxjPW51bGw7ZWxzZSB0aHJvdyBFcnJvcihsKDU1OCkpO2Vsc2UgaWYoaUF8fHJWKHMsYyx1LCExKSxmPTAhPSh1JnMuY2hpbGRMYW5lcyksaUF8fGYpe2lmKG51bGwhPT0oZD1sTCkmJjAhPT0oaD1lTyhkLHUpKSYmaCE9PXAucmV0cnlMYW5lKXRocm93IHAucmV0cnlMYW5lPWgsbjMocyxoKSxzYShkLHMsaCksaWI7c2coKSxjPWlPKHMsYyx1KX1lbHNlIHM9cC50cmVlQ29udGV4dCxyRT1jQihoLm5leHRTaWJsaW5nKSxyaz1jLHJqPSEwLHJTPW51bGwsck89ITEsbnVsbCE9PXMmJnJfKGMscyksYz1pUyhjLGQpLGMuZmxhZ3N8PTQwOTY7cmV0dXJuIGN9cmV0dXJuKHM9cm4ocy5jaGlsZCx7bW9kZTpkLm1vZGUsY2hpbGRyZW46ZC5jaGlsZHJlbn0pKS5yZWY9Yy5yZWYsYy5jaGlsZD1zLHMucmV0dXJuPWMscztjYXNlIDIyOnJldHVybiBpayhlLHQsbix0LnBlbmRpbmdQcm9wcyk7Y2FzZSAyNDpyZXR1cm4gclcodCkscj1yWShyMCksbnVsbD09PWU/KG51bGw9PT0obz1vZSgpKSYmKG89bEwsYT1yMSgpLG8ucG9vbGVkQ2FjaGU9YSxhLnJlZkNvdW50KyssbnVsbCE9PWEmJihvLnBvb2xlZENhY2hlTGFuZXN8PW4pLG89YSksdC5tZW1vaXplZFN0YXRlPXtwYXJlbnQ6cixjYWNoZTpvfSxvdyh0KSxyVSh0LHIwLG8pKTooMCE9KGUubGFuZXMmbikmJihvQyhlLHQpLG9CKHQsbnVsbCxudWxsLG4pLG9PKCkpLG89ZS5tZW1vaXplZFN0YXRlLGE9dC5tZW1vaXplZFN0YXRlLG8ucGFyZW50IT09cj8obz17cGFyZW50OnIsY2FjaGU6cn0sdC5tZW1vaXplZFN0YXRlPW8sMD09PXQubGFuZXMmJih0Lm1lbW9pemVkU3RhdGU9dC51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9byksclUodCxyMCxyKSk6KHJVKHQscjAscj1hLmNhY2hlKSxyIT09by5jYWNoZSYmckgodCxbcjBdLG4sITApKSksaXgoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAyOTp0aHJvdyB0LnBlbmRpbmdQcm9wc310aHJvdyBFcnJvcihsKDE1Nix0LnRhZykpfWZ1bmN0aW9uIGlZKGUpe2UuZmxhZ3N8PTR9ZnVuY3Rpb24gaUsoZSx0LG4scixvKXtpZigodD0wIT0oMzImZS5tb2RlKSkmJih0PSExKSx0KXtpZihlLmZsYWdzfD0weDEwMDAwMDAsKDB4MTNmZmZmNDAmbyk9PT1vKWlmKGUuc3RhdGVOb2RlLmNvbXBsZXRlKWUuZmxhZ3N8PTgxOTI7ZWxzZSBpZihzcCgpKWUuZmxhZ3N8PTgxOTI7ZWxzZSB0aHJvdyBvdT1vaSxvb31lbHNlIGUuZmxhZ3MmPS0weDEwMDAwMDF9ZnVuY3Rpb24gaVgoZSx0KXtpZihcInN0eWxlc2hlZXRcIiE9PXQudHlwZXx8MCE9KDQmdC5zdGF0ZS5sb2FkaW5nKSllLmZsYWdzJj0tMHgxMDAwMDAxO2Vsc2UgaWYoZS5mbGFnc3w9MHgxMDAwMDAwLCFjMSh0KSlpZihzcCgpKWUuZmxhZ3N8PTgxOTI7ZWxzZSB0aHJvdyBvdT1vaSxvb31mdW5jdGlvbiBpRyhlLHQpe251bGwhPT10JiYoZS5mbGFnc3w9NCksMTYzODQmZS5mbGFncyYmKHQ9MjIhPT1lLnRhZz9lXygpOjB4MjAwMDAwMDAsZS5sYW5lc3w9dCxsWHw9dCl9ZnVuY3Rpb24gaVEoZSx0KXtpZighcmopc3dpdGNoKGUudGFpbE1vZGUpe2Nhc2VcImhpZGRlblwiOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihuPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1uP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2VcImNvbGxhcHNlZFwiOm49ZS50YWlsO2Zvcih2YXIgcj1udWxsO251bGwhPT1uOyludWxsIT09bi5hbHRlcm5hdGUmJihyPW4pLG49bi5zaWJsaW5nO251bGw9PT1yP3R8fG51bGw9PT1lLnRhaWw/ZS50YWlsPW51bGw6ZS50YWlsLnNpYmxpbmc9bnVsbDpyLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gaUooZSl7dmFyIHQ9bnVsbCE9PWUuYWx0ZXJuYXRlJiZlLmFsdGVybmF0ZS5jaGlsZD09PWUuY2hpbGQsbj0wLHI9MDtpZih0KWZvcih2YXIgbz1lLmNoaWxkO251bGwhPT1vOylufD1vLmxhbmVzfG8uY2hpbGRMYW5lcyxyfD0weDNlMDAwMDAmby5zdWJ0cmVlRmxhZ3Mscnw9MHgzZTAwMDAwJm8uZmxhZ3Msby5yZXR1cm49ZSxvPW8uc2libGluZztlbHNlIGZvcihvPWUuY2hpbGQ7bnVsbCE9PW87KW58PW8ubGFuZXN8by5jaGlsZExhbmVzLHJ8PW8uc3VidHJlZUZsYWdzLHJ8PW8uZmxhZ3Msby5yZXR1cm49ZSxvPW8uc2libGluZztyZXR1cm4gZS5zdWJ0cmVlRmxhZ3N8PXIsZS5jaGlsZExhbmVzPW4sdH1mdW5jdGlvbiBpMChlLHQpe3N3aXRjaChyQyh0KSx0LnRhZyl7Y2FzZSAzOnJGKHIwKSxWKCk7YnJlYWs7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpXKHQpO2JyZWFrO2Nhc2UgNDpWKCk7YnJlYWs7Y2FzZSAzMTpudWxsIT09dC5tZW1vaXplZFN0YXRlJiZvSCh0KTticmVhaztjYXNlIDEzOm9IKHQpO2JyZWFrO2Nhc2UgMTk6UihvVik7YnJlYWs7Y2FzZSAxMDpyRih0LnR5cGUpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpvSCh0KSxvTigpLG51bGwhPT1lJiZSKHI3KTticmVhaztjYXNlIDI0OnJGKHIwKX19ZnVuY3Rpb24gaTEoZSx0KXt0cnl7dmFyIG49dC51cGRhdGVRdWV1ZSxyPW51bGwhPT1uP24ubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1yKXt2YXIgbz1yLm5leHQ7bj1vO2Rve2lmKChuLnRhZyZlKT09PWUpe3I9dm9pZCAwO3ZhciBhPW4uY3JlYXRlO24uaW5zdC5kZXN0cm95PXI9YSgpfW49bi5uZXh0fXdoaWxlKG4hPT1vKX19Y2F0Y2goZSl7c1AodCx0LnJldHVybixlKX19ZnVuY3Rpb24gaTIoZSx0LG4pe3RyeXt2YXIgcj10LnVwZGF0ZVF1ZXVlLG89bnVsbCE9PXI/ci5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PW8pe3ZhciBhPW8ubmV4dDtyPWE7ZG97aWYoKHIudGFnJmUpPT09ZSl7dmFyIGk9ci5pbnN0LGw9aS5kZXN0cm95O2lmKHZvaWQgMCE9PWwpe2kuZGVzdHJveT12b2lkIDAsbz10O3RyeXtsKCl9Y2F0Y2goZSl7c1AobyxuLGUpfX19cj1yLm5leHR9d2hpbGUociE9PWEpfX1jYXRjaChlKXtzUCh0LHQucmV0dXJuLGUpfX1mdW5jdGlvbiBpNChlKXt2YXIgdD1lLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT10KXt2YXIgbj1lLnN0YXRlTm9kZTt0cnl7b0kodCxuKX1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX19ZnVuY3Rpb24gaTUoZSx0LG4pe24ucHJvcHM9aWMoZS50eXBlLGUubWVtb2l6ZWRQcm9wcyksbi5zdGF0ZT1lLm1lbW9pemVkU3RhdGU7dHJ5e24uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChuKXtzUChlLHQsbil9fWZ1bmN0aW9uIGkzKGUsdCl7dHJ5e3ZhciBuPWUucmVmO2lmKG51bGwhPT1uKXtzd2l0Y2goZS50YWcpe2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6dmFyIHI9ZS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDpyPWUuc3RhdGVOb2RlfVwiZnVuY3Rpb25cIj09dHlwZW9mIG4/ZS5yZWZDbGVhbnVwPW4ocik6bi5jdXJyZW50PXJ9fWNhdGNoKG4pe3NQKGUsdCxuKX19ZnVuY3Rpb24gaTYoZSx0KXt2YXIgbj1lLnJlZixyPWUucmVmQ2xlYW51cDtpZihudWxsIT09bilpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXRyeXtyKCl9Y2F0Y2gobil7c1AoZSx0LG4pfWZpbmFsbHl7ZS5yZWZDbGVhbnVwPW51bGwsbnVsbCE9KGU9ZS5hbHRlcm5hdGUpJiYoZS5yZWZDbGVhbnVwPW51bGwpfWVsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbil0cnl7bihudWxsKX1jYXRjaChuKXtzUChlLHQsbil9ZWxzZSBuLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBpOShlKXt2YXIgdD1lLnR5cGUsbj1lLm1lbW9pemVkUHJvcHMscj1lLnN0YXRlTm9kZTt0cnl7c3dpdGNoKHQpe2Nhc2VcImJ1dHRvblwiOmNhc2VcImlucHV0XCI6Y2FzZVwic2VsZWN0XCI6Y2FzZVwidGV4dGFyZWFcIjpuLmF1dG9Gb2N1cyYmci5mb2N1cygpO2JyZWFrO2Nhc2VcImltZ1wiOm4uc3JjP3Iuc3JjPW4uc3JjOm4uc3JjU2V0JiYoci5zcmNzZXQ9bi5zcmNTZXQpfX1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX1mdW5jdGlvbiBpOChlLHQsbil7dHJ5e3ZhciByPWUuc3RhdGVOb2RlOyhmdW5jdGlvbihlLHQsbixyKXtzd2l0Y2godCl7Y2FzZVwiZGl2XCI6Y2FzZVwic3BhblwiOmNhc2VcInN2Z1wiOmNhc2VcInBhdGhcIjpjYXNlXCJhXCI6Y2FzZVwiZ1wiOmNhc2VcInBcIjpjYXNlXCJsaVwiOmJyZWFrO2Nhc2VcImlucHV0XCI6dmFyIG89bnVsbCxhPW51bGwsaT1udWxsLHM9bnVsbCxjPW51bGwsdT1udWxsLGQ9bnVsbDtmb3IoaCBpbiBuKXt2YXIgZj1uW2hdO2lmKG4uaGFzT3duUHJvcGVydHkoaCkmJm51bGwhPWYpc3dpdGNoKGgpe2Nhc2VcImNoZWNrZWRcIjpjYXNlXCJ2YWx1ZVwiOmJyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOmM9ZjtkZWZhdWx0OnIuaGFzT3duUHJvcGVydHkoaCl8fGNzKGUsdCxoLG51bGwscixmKX19Zm9yKHZhciBwIGluIHIpe3ZhciBoPXJbcF07aWYoZj1uW3BdLHIuaGFzT3duUHJvcGVydHkocCkmJihudWxsIT1ofHxudWxsIT1mKSlzd2l0Y2gocCl7Y2FzZVwidHlwZVwiOmE9aDticmVhaztjYXNlXCJuYW1lXCI6bz1oO2JyZWFrO2Nhc2VcImNoZWNrZWRcIjp1PWg7YnJlYWs7Y2FzZVwiZGVmYXVsdENoZWNrZWRcIjpkPWg7YnJlYWs7Y2FzZVwidmFsdWVcIjppPWg7YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6cz1oO2JyZWFrO2Nhc2VcImNoaWxkcmVuXCI6Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1oKXRocm93IEVycm9yKGwoMTM3LHQpKTticmVhaztkZWZhdWx0OmghPT1mJiZjcyhlLHQscCxoLHIsZil9fXRuKGUsaSxzLGMsdSxkLGEsbyk7cmV0dXJuO2Nhc2VcInNlbGVjdFwiOmZvcihhIGluIGg9aT1zPXA9bnVsbCxuKWlmKGM9blthXSxuLmhhc093blByb3BlcnR5KGEpJiZudWxsIT1jKXN3aXRjaChhKXtjYXNlXCJ2YWx1ZVwiOmJyZWFrO2Nhc2VcIm11bHRpcGxlXCI6aD1jO2RlZmF1bHQ6ci5oYXNPd25Qcm9wZXJ0eShhKXx8Y3MoZSx0LGEsbnVsbCxyLGMpfWZvcihvIGluIHIpaWYoYT1yW29dLGM9bltvXSxyLmhhc093blByb3BlcnR5KG8pJiYobnVsbCE9YXx8bnVsbCE9Yykpc3dpdGNoKG8pe2Nhc2VcInZhbHVlXCI6cD1hO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOnM9YTticmVhaztjYXNlXCJtdWx0aXBsZVwiOmk9YTtkZWZhdWx0OmEhPT1jJiZjcyhlLHQsbyxhLHIsYyl9dD1zLG49aSxyPWgsbnVsbCE9cD90YShlLCEhbixwLCExKTohIXIhPSEhbiYmKG51bGwhPXQ/dGEoZSwhIW4sdCwhMCk6dGEoZSwhIW4sbj9bXTpcIlwiLCExKSk7cmV0dXJuO2Nhc2VcInRleHRhcmVhXCI6Zm9yKHMgaW4gaD1wPW51bGwsbilpZihvPW5bc10sbi5oYXNPd25Qcm9wZXJ0eShzKSYmbnVsbCE9byYmIXIuaGFzT3duUHJvcGVydHkocykpc3dpdGNoKHMpe2Nhc2VcInZhbHVlXCI6Y2FzZVwiY2hpbGRyZW5cIjpicmVhaztkZWZhdWx0OmNzKGUsdCxzLG51bGwscixvKX1mb3IoaSBpbiByKWlmKG89cltpXSxhPW5baV0sci5oYXNPd25Qcm9wZXJ0eShpKSYmKG51bGwhPW98fG51bGwhPWEpKXN3aXRjaChpKXtjYXNlXCJ2YWx1ZVwiOnA9bzticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjpoPW87YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpicmVhaztjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPW8pdGhyb3cgRXJyb3IobCg5MSkpO2JyZWFrO2RlZmF1bHQ6byE9PWEmJmNzKGUsdCxpLG8scixhKX10aShlLHAsaCk7cmV0dXJuO2Nhc2VcIm9wdGlvblwiOmZvcih2YXIgbSBpbiBuKXA9blttXSxuLmhhc093blByb3BlcnR5KG0pJiZudWxsIT1wJiYhci5oYXNPd25Qcm9wZXJ0eShtKSYmKFwic2VsZWN0ZWRcIj09PW0/ZS5zZWxlY3RlZD0hMTpjcyhlLHQsbSxudWxsLHIscCkpO2ZvcihjIGluIHIpcD1yW2NdLGg9bltjXSxyLmhhc093blByb3BlcnR5KGMpJiZwIT09aCYmKG51bGwhPXB8fG51bGwhPWgpJiYoXCJzZWxlY3RlZFwiPT09Yz9lLnNlbGVjdGVkPXAmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHAmJlwic3ltYm9sXCIhPXR5cGVvZiBwOmNzKGUsdCxjLHAscixoKSk7cmV0dXJuO2Nhc2VcImltZ1wiOmNhc2VcImxpbmtcIjpjYXNlXCJhcmVhXCI6Y2FzZVwiYmFzZVwiOmNhc2VcImJyXCI6Y2FzZVwiY29sXCI6Y2FzZVwiZW1iZWRcIjpjYXNlXCJoclwiOmNhc2VcImtleWdlblwiOmNhc2VcIm1ldGFcIjpjYXNlXCJwYXJhbVwiOmNhc2VcInNvdXJjZVwiOmNhc2VcInRyYWNrXCI6Y2FzZVwid2JyXCI6Y2FzZVwibWVudWl0ZW1cIjpmb3IodmFyIGcgaW4gbilwPW5bZ10sbi5oYXNPd25Qcm9wZXJ0eShnKSYmbnVsbCE9cCYmIXIuaGFzT3duUHJvcGVydHkoZykmJmNzKGUsdCxnLG51bGwscixwKTtmb3IodSBpbiByKWlmKHA9clt1XSxoPW5bdV0sci5oYXNPd25Qcm9wZXJ0eSh1KSYmcCE9PWgmJihudWxsIT1wfHxudWxsIT1oKSlzd2l0Y2godSl7Y2FzZVwiY2hpbGRyZW5cIjpjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPXApdGhyb3cgRXJyb3IobCgxMzcsdCkpO2JyZWFrO2RlZmF1bHQ6Y3MoZSx0LHUscCxyLGgpfXJldHVybjtkZWZhdWx0OmlmKHRmKHQpKXtmb3IodmFyIHkgaW4gbilwPW5beV0sbi5oYXNPd25Qcm9wZXJ0eSh5KSYmdm9pZCAwIT09cCYmIXIuaGFzT3duUHJvcGVydHkoeSkmJmNjKGUsdCx5LHZvaWQgMCxyLHApO2ZvcihkIGluIHIpcD1yW2RdLGg9bltkXSxyLmhhc093blByb3BlcnR5KGQpJiZwIT09aCYmKHZvaWQgMCE9PXB8fHZvaWQgMCE9PWgpJiZjYyhlLHQsZCxwLHIsaCk7cmV0dXJufX1mb3IodmFyIHYgaW4gbilwPW5bdl0sbi5oYXNPd25Qcm9wZXJ0eSh2KSYmbnVsbCE9cCYmIXIuaGFzT3duUHJvcGVydHkodikmJmNzKGUsdCx2LG51bGwscixwKTtmb3IoZiBpbiByKXA9cltmXSxoPW5bZl0sci5oYXNPd25Qcm9wZXJ0eShmKSYmcCE9PWgmJihudWxsIT1wfHxudWxsIT1oKSYmY3MoZSx0LGYscCxyLGgpfSkocixlLnR5cGUsbix0KSxyW2VMXT10fWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fWZ1bmN0aW9uIGk3KGUpe3JldHVybiA1PT09ZS50YWd8fDM9PT1lLnRhZ3x8MjY9PT1lLnRhZ3x8Mjc9PT1lLnRhZyYmY0MoZS50eXBlKXx8ND09PWUudGFnfWZ1bmN0aW9uIGxlKGUpe2U6Zm9yKDs7KXtmb3IoO251bGw9PT1lLnNpYmxpbmc7KXtpZihudWxsPT09ZS5yZXR1cm58fGk3KGUucmV0dXJuKSlyZXR1cm4gbnVsbDtlPWUucmV0dXJufWZvcihlLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nOzUhPT1lLnRhZyYmNiE9PWUudGFnJiYxOCE9PWUudGFnOyl7aWYoMjc9PT1lLnRhZyYmY0MoZS50eXBlKXx8MiZlLmZsYWdzfHxudWxsPT09ZS5jaGlsZHx8ND09PWUudGFnKWNvbnRpbnVlIGU7ZS5jaGlsZC5yZXR1cm49ZSxlPWUuY2hpbGR9aWYoISgyJmUuZmxhZ3MpKXJldHVybiBlLnN0YXRlTm9kZX19ZnVuY3Rpb24gbHQoZSx0LG4pe3ZhciByPWUudGFnO2lmKDU9PT1yfHw2PT09cillPWUuc3RhdGVOb2RlLHQ/bi5pbnNlcnRCZWZvcmUoZSx0KTpuLmFwcGVuZENoaWxkKGUpO2Vsc2UgaWYoNCE9PXImJigyNz09PXImJmNDKGUudHlwZSkmJihuPWUuc3RhdGVOb2RlKSxudWxsIT09KGU9ZS5jaGlsZCkpKWZvcihsdChlLHQsbiksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KWx0KGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiBsbihlKXt2YXIgdD1lLnN0YXRlTm9kZSxuPWUubWVtb2l6ZWRQcm9wczt0cnl7Zm9yKHZhciByPWUudHlwZSxvPXQuYXR0cmlidXRlcztvLmxlbmd0aDspdC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG9bMF0pO2N1KHQscixuKSx0W2VEXT1lLHRbZUxdPW59Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19dmFyIGxyPSExLGxvPSExLGxhPSExLGxpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsbGw9bnVsbDtmdW5jdGlvbiBscyhlLHQsbil7dmFyIHI9bi5mbGFncztzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bEEoZSxuKSw0JnImJmkxKDUsbik7YnJlYWs7Y2FzZSAxOmlmKGxBKGUsbiksNCZyKWlmKGU9bi5zdGF0ZU5vZGUsbnVsbD09PXQpdHJ5e2UuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChlKXtzUChuLG4ucmV0dXJuLGUpfWVsc2V7dmFyIG89aWMobi50eXBlLHQubWVtb2l6ZWRQcm9wcyk7dD10Lm1lbW9pemVkU3RhdGU7dHJ5e2UuY29tcG9uZW50RGlkVXBkYXRlKG8sdCxlLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX1jYXRjaChlKXtzUChuLG4ucmV0dXJuLGUpfX02NCZyJiZpNChuKSw1MTImciYmaTMobixuLnJldHVybik7YnJlYWs7Y2FzZSAzOmlmKGxBKGUsbiksNjQmciYmbnVsbCE9PShlPW4udXBkYXRlUXVldWUpKXtpZih0PW51bGwsbnVsbCE9PW4uY2hpbGQpc3dpdGNoKG4uY2hpbGQudGFnKXtjYXNlIDI3OmNhc2UgNTpjYXNlIDE6dD1uLmNoaWxkLnN0YXRlTm9kZX10cnl7b0koZSx0KX1jYXRjaChlKXtzUChuLG4ucmV0dXJuLGUpfX1icmVhaztjYXNlIDI3Om51bGw9PT10JiY0JnImJmxuKG4pO2Nhc2UgMjY6Y2FzZSA1OmxBKGUsbiksbnVsbD09PXQmJjQmciYmaTkobiksNTEyJnImJmkzKG4sbi5yZXR1cm4pO2JyZWFrO2Nhc2UgMTI6ZGVmYXVsdDpsQShlLG4pO2JyZWFrO2Nhc2UgMzE6bEEoZSxuKSw0JnImJmxwKGUsbik7YnJlYWs7Y2FzZSAxMzpsQShlLG4pLDQmciYmbGgoZSxuKSw2NCZyJiZudWxsIT09KGU9bi5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PShlPWUuZGVoeWRyYXRlZCkmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5vd25lckRvY3VtZW50O2lmKFwiJH5cIj09PWUuZGF0YSllLl9yZWFjdFJldHJ5PXQ7ZWxzZSBpZihcIiQ/XCIhPT1lLmRhdGF8fFwibG9hZGluZ1wiIT09bi5yZWFkeVN0YXRlKXQoKTtlbHNle3ZhciByPWZ1bmN0aW9uKCl7dCgpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixyKX07bi5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLHIpLGUuX3JlYWN0UmV0cnk9cn19KGUsbj1zRC5iaW5kKG51bGwsbikpO2JyZWFrO2Nhc2UgMjI6aWYoIShyPW51bGwhPT1uLm1lbW9pemVkU3RhdGV8fGxyKSl7dD1udWxsIT09dCYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZXx8bG8sbz1scjt2YXIgYT1sbztscj1yLChsbz10KSYmIWE/ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHI9ciYmMCE9KDg3NzImbi5zdWJ0cmVlRmxhZ3MpLG49bi5jaGlsZDtudWxsIT09bjspe3ZhciBvPW4uYWx0ZXJuYXRlLGE9dCxpPW4sbD1pLmZsYWdzO3N3aXRjaChpLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTplKGEsaSxyKSxpMSg0LGkpO2JyZWFrO2Nhc2UgMTppZihlKGEsaSxyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZihhPShvPWkpLnN0YXRlTm9kZSkuY29tcG9uZW50RGlkTW91bnQpdHJ5e2EuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChlKXtzUChvLG8ucmV0dXJuLGUpfWlmKG51bGwhPT0oYT0obz1pKS51cGRhdGVRdWV1ZSkpe3ZhciBzPW8uc3RhdGVOb2RlO3RyeXt2YXIgYz1hLnNoYXJlZC5oaWRkZW5DYWxsYmFja3M7aWYobnVsbCE9PWMpZm9yKGEuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcz1udWxsLGE9MDthPGMubGVuZ3RoO2ErKylvUChjW2FdLHMpfWNhdGNoKGUpe3NQKG8sby5yZXR1cm4sZSl9fXImJjY0JmwmJmk0KGkpLGkzKGksaS5yZXR1cm4pO2JyZWFrO2Nhc2UgMjc6bG4oaSk7Y2FzZSAyNjpjYXNlIDU6ZShhLGksciksciYmbnVsbD09PW8mJjQmbCYmaTkoaSksaTMoaSxpLnJldHVybik7YnJlYWs7Y2FzZSAxMjpkZWZhdWx0OmUoYSxpLHIpO2JyZWFrO2Nhc2UgMzE6ZShhLGksciksciYmNCZsJiZscChhLGkpO2JyZWFrO2Nhc2UgMTM6ZShhLGksciksciYmNCZsJiZsaChhLGkpO2JyZWFrO2Nhc2UgMjI6bnVsbD09PWkubWVtb2l6ZWRTdGF0ZSYmZShhLGksciksaTMoaSxpLnJldHVybik7Y2FzZSAzMDp9bj1uLnNpYmxpbmd9fShlLG4sMCE9KDg3NzImbi5zdWJ0cmVlRmxhZ3MpKTpsQShlLG4pLGxyPW8sbG89YX1jYXNlIDMwOn19dmFyIGxjPW51bGwsbHU9ITE7ZnVuY3Rpb24gbGQoZSx0LG4pe2ZvcihuPW4uY2hpbGQ7bnVsbCE9PW47KWxmKGUsdCxuKSxuPW4uc2libGluZ31mdW5jdGlvbiBsZihlLHQsbil7aWYoZXAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGVwLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtlcC5vbkNvbW1pdEZpYmVyVW5tb3VudChlZixuKX1jYXRjaChlKXt9c3dpdGNoKG4udGFnKXtjYXNlIDI2OmxvfHxpNihuLHQpLGxkKGUsdCxuKSxuLm1lbW9pemVkU3RhdGU/bi5tZW1vaXplZFN0YXRlLmNvdW50LS06bi5zdGF0ZU5vZGUmJihuPW4uc3RhdGVOb2RlKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pO2JyZWFrO2Nhc2UgMjc6bG98fGk2KG4sdCk7dmFyIHI9bGMsbz1sdTtjQyhuLnR5cGUpJiYobGM9bi5zdGF0ZU5vZGUsbHU9ITEpLGxkKGUsdCxuKSxjRChuLnN0YXRlTm9kZSksbGM9cixsdT1vO2JyZWFrO2Nhc2UgNTpsb3x8aTYobix0KTtjYXNlIDY6aWYocj1sYyxvPWx1LGxjPW51bGwsbGQoZSx0LG4pLGxjPXIsbHU9byxudWxsIT09bGMpaWYobHUpdHJ5eyg5PT09bGMubm9kZVR5cGU/bGMuYm9keTpcIkhUTUxcIj09PWxjLm5vZGVOYW1lP2xjLm93bmVyRG9jdW1lbnQuYm9keTpsYykucmVtb3ZlQ2hpbGQobi5zdGF0ZU5vZGUpfWNhdGNoKGUpe3NQKG4sdCxlKX1lbHNlIHRyeXtsYy5yZW1vdmVDaGlsZChuLnN0YXRlTm9kZSl9Y2F0Y2goZSl7c1Aobix0LGUpfWJyZWFrO2Nhc2UgMTg6bnVsbCE9PWxjJiYobHU/KGNfKDk9PT0oZT1sYykubm9kZVR5cGU/ZS5ib2R5OlwiSFRNTFwiPT09ZS5ub2RlTmFtZT9lLm93bmVyRG9jdW1lbnQuYm9keTplLG4uc3RhdGVOb2RlKSx1TyhlKSk6Y18obGMsbi5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6cj1sYyxvPWx1LGxjPW4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sbHU9ITAsbGQoZSx0LG4pLGxjPXIsbHU9bzticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6bG98fGkyKDIsbix0KSxsb3x8aTIoNCxuLHQpLGxkKGUsdCxuKTticmVhaztjYXNlIDE6bG98fChpNihuLHQpLFwiZnVuY3Rpb25cIj09dHlwZW9mKHI9bi5zdGF0ZU5vZGUpLmNvbXBvbmVudFdpbGxVbm1vdW50JiZpNShuLHQscikpLGxkKGUsdCxuKTticmVhaztjYXNlIDIxOmRlZmF1bHQ6bGQoZSx0LG4pO2JyZWFrO2Nhc2UgMjI6bG89KHI9bG8pfHxudWxsIT09bi5tZW1vaXplZFN0YXRlLGxkKGUsdCxuKSxsbz1yfX1mdW5jdGlvbiBscChlLHQpe2lmKG51bGw9PT10Lm1lbW9pemVkU3RhdGUmJm51bGwhPT0oZT10LmFsdGVybmF0ZSkmJm51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpKXtlPWUuZGVoeWRyYXRlZDt0cnl7dU8oZSl9Y2F0Y2goZSl7c1AodCx0LnJldHVybixlKX19fWZ1bmN0aW9uIGxoKGUsdCl7aWYobnVsbD09PXQubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PShlPXQuYWx0ZXJuYXRlKSYmbnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT0oZT1lLmRlaHlkcmF0ZWQpKXRyeXt1TyhlKX1jYXRjaChlKXtzUCh0LHQucmV0dXJuLGUpfX1mdW5jdGlvbiBsbShlLHQpe3ZhciBuPWZ1bmN0aW9uKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAzMTpjYXNlIDEzOmNhc2UgMTk6dmFyIHQ9ZS5zdGF0ZU5vZGU7cmV0dXJuIG51bGw9PT10JiYodD1lLnN0YXRlTm9kZT1uZXcgbGkpLHQ7Y2FzZSAyMjpyZXR1cm4gbnVsbD09PSh0PShlPWUuc3RhdGVOb2RlKS5fcmV0cnlDYWNoZSkmJih0PWUuX3JldHJ5Q2FjaGU9bmV3IGxpKSx0O2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0MzUsZS50YWcpKX19KGUpO3QuZm9yRWFjaChmdW5jdGlvbih0KXtpZighbi5oYXModCkpe24uYWRkKHQpO3ZhciByPXNMLmJpbmQobnVsbCxlLHQpO3QudGhlbihyLHIpfX0pfWZ1bmN0aW9uIGxnKGUsdCl7dmFyIG49dC5kZWxldGlvbnM7aWYobnVsbCE9PW4pZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0sYT1lLGk9dCxzPWk7ZTpmb3IoO251bGwhPT1zOyl7c3dpdGNoKHMudGFnKXtjYXNlIDI3OmlmKGNDKHMudHlwZSkpe2xjPXMuc3RhdGVOb2RlLGx1PSExO2JyZWFrIGV9YnJlYWs7Y2FzZSA1OmxjPXMuc3RhdGVOb2RlLGx1PSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDpsYz1zLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGx1PSEwO2JyZWFrIGV9cz1zLnJldHVybn1pZihudWxsPT09bGMpdGhyb3cgRXJyb3IobCgxNjApKTtsZihhLGksbyksbGM9bnVsbCxsdT0hMSxudWxsIT09KGE9by5hbHRlcm5hdGUpJiYoYS5yZXR1cm49bnVsbCksby5yZXR1cm49bnVsbH1pZigxMzg3OCZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10Oylsdih0LGUpLHQ9dC5zaWJsaW5nfXZhciBseT1udWxsO2Z1bmN0aW9uIGx2KGUsdCl7dmFyIG49ZS5hbHRlcm5hdGUscj1lLmZsYWdzO3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmxnKHQsZSksbGIoZSksNCZyJiYoaTIoMyxlLGUucmV0dXJuKSxpMSgzLGUpLGkyKDUsZSxlLnJldHVybikpO2JyZWFrO2Nhc2UgMTpsZyh0LGUpLGxiKGUpLDUxMiZyJiYobG98fG51bGw9PT1ufHxpNihuLG4ucmV0dXJuKSksNjQmciYmbHImJm51bGwhPT0oZT1lLnVwZGF0ZVF1ZXVlKSYmbnVsbCE9PShyPWUuY2FsbGJhY2tzKSYmKG49ZS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzLGUuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcz1udWxsPT09bj9yOm4uY29uY2F0KHIpKTticmVhaztjYXNlIDI2OnZhciBvPWx5O2lmKGxnKHQsZSksbGIoZSksNTEyJnImJihsb3x8bnVsbD09PW58fGk2KG4sbi5yZXR1cm4pKSw0JnIpe3ZhciBhPW51bGwhPT1uP24ubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKHI9ZS5tZW1vaXplZFN0YXRlLG51bGw9PT1uKWlmKG51bGw9PT1yKWlmKG51bGw9PT1lLnN0YXRlTm9kZSl7ZTp7cj1lLnR5cGUsbj1lLm1lbW9pemVkUHJvcHMsbz1vLm93bmVyRG9jdW1lbnR8fG87dDpzd2l0Y2gocil7Y2FzZVwidGl0bGVcIjooIShhPW8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aXRsZVwiKVswXSl8fGFbZUZdfHxhW2VEXXx8XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YS5uYW1lc3BhY2VVUkl8fGEuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIikpJiYoYT1vLmNyZWF0ZUVsZW1lbnQociksby5oZWFkLmluc2VydEJlZm9yZShhLG8ucXVlcnlTZWxlY3RvcihcImhlYWQgPiB0aXRsZVwiKSkpLGN1KGEscixuKSxhW2VEXT1lLGVZKGEpLHI9YTticmVhayBlO2Nhc2VcImxpbmtcIjp2YXIgaT1jSihcImxpbmtcIixcImhyZWZcIixvKS5nZXQocisobi5ocmVmfHxcIlwiKSk7aWYoaSl7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspaWYoKGE9aVtzXSkuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKT09PShudWxsPT1uLmhyZWZ8fFwiXCI9PT1uLmhyZWY/bnVsbDpuLmhyZWYpJiZhLmdldEF0dHJpYnV0ZShcInJlbFwiKT09PShudWxsPT1uLnJlbD9udWxsOm4ucmVsKSYmYS5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKT09PShudWxsPT1uLnRpdGxlP251bGw6bi50aXRsZSkmJmEuZ2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIik9PT0obnVsbD09bi5jcm9zc09yaWdpbj9udWxsOm4uY3Jvc3NPcmlnaW4pKXtpLnNwbGljZShzLDEpO2JyZWFrIHR9fWN1KGE9by5jcmVhdGVFbGVtZW50KHIpLHIsbiksby5oZWFkLmFwcGVuZENoaWxkKGEpO2JyZWFrO2Nhc2VcIm1ldGFcIjppZihpPWNKKFwibWV0YVwiLFwiY29udGVudFwiLG8pLmdldChyKyhuLmNvbnRlbnR8fFwiXCIpKSl7Zm9yKHM9MDtzPGkubGVuZ3RoO3MrKylpZigoYT1pW3NdKS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpPT09KG51bGw9PW4uY29udGVudD9udWxsOlwiXCIrbi5jb250ZW50KSYmYS5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpPT09KG51bGw9PW4ubmFtZT9udWxsOm4ubmFtZSkmJmEuZ2V0QXR0cmlidXRlKFwicHJvcGVydHlcIik9PT0obnVsbD09bi5wcm9wZXJ0eT9udWxsOm4ucHJvcGVydHkpJiZhLmdldEF0dHJpYnV0ZShcImh0dHAtZXF1aXZcIik9PT0obnVsbD09bi5odHRwRXF1aXY/bnVsbDpuLmh0dHBFcXVpdikmJmEuZ2V0QXR0cmlidXRlKFwiY2hhcnNldFwiKT09PShudWxsPT1uLmNoYXJTZXQ/bnVsbDpuLmNoYXJTZXQpKXtpLnNwbGljZShzLDEpO2JyZWFrIHR9fWN1KGE9by5jcmVhdGVFbGVtZW50KHIpLHIsbiksby5oZWFkLmFwcGVuZENoaWxkKGEpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0NjgscikpfWFbZURdPWUsZVkoYSkscj1hfWUuc3RhdGVOb2RlPXJ9ZWxzZSBjMChvLGUudHlwZSxlLnN0YXRlTm9kZSk7ZWxzZSBlLnN0YXRlTm9kZT1jWShvLHIsZS5tZW1vaXplZFByb3BzKTtlbHNlIGEhPT1yPyhudWxsPT09YT9udWxsIT09bi5zdGF0ZU5vZGUmJihuPW4uc3RhdGVOb2RlKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pOmEuY291bnQtLSxudWxsPT09cj9jMChvLGUudHlwZSxlLnN0YXRlTm9kZSk6Y1kobyxyLGUubWVtb2l6ZWRQcm9wcykpOm51bGw9PT1yJiZudWxsIT09ZS5zdGF0ZU5vZGUmJmk4KGUsZS5tZW1vaXplZFByb3BzLG4ubWVtb2l6ZWRQcm9wcyl9YnJlYWs7Y2FzZSAyNzpsZyh0LGUpLGxiKGUpLDUxMiZyJiYobG98fG51bGw9PT1ufHxpNihuLG4ucmV0dXJuKSksbnVsbCE9PW4mJjQmciYmaTgoZSxlLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6aWYobGcodCxlKSxsYihlKSw1MTImciYmKGxvfHxudWxsPT09bnx8aTYobixuLnJldHVybikpLDMyJmUuZmxhZ3Mpe289ZS5zdGF0ZU5vZGU7dHJ5e3RzKG8sXCJcIil9Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19NCZyJiZudWxsIT1lLnN0YXRlTm9kZSYmKG89ZS5tZW1vaXplZFByb3BzLGk4KGUsbyxudWxsIT09bj9uLm1lbW9pemVkUHJvcHM6bykpLDEwMjQmciYmKGxhPSEwKTticmVhaztjYXNlIDY6aWYobGcodCxlKSxsYihlKSw0JnIpe2lmKG51bGw9PT1lLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihsKDE2MikpO3I9ZS5tZW1vaXplZFByb3BzLG49ZS5zdGF0ZU5vZGU7dHJ5e24ubm9kZVZhbHVlPXJ9Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmlmKGNRPW51bGwsbz1seSxseT1jUih0LmNvbnRhaW5lckluZm8pLGxnKHQsZSksbHk9byxsYihlKSw0JnImJm51bGwhPT1uJiZuLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXRyeXt1Tyh0LmNvbnRhaW5lckluZm8pfWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9bGEmJihsYT0hMSxmdW5jdGlvbiBlKHQpe2lmKDEwMjQmdC5zdWJ0cmVlRmxhZ3MpZm9yKHQ9dC5jaGlsZDtudWxsIT09dDspe3ZhciBuPXQ7ZShuKSw1PT09bi50YWcmJjEwMjQmbi5mbGFncyYmbi5zdGF0ZU5vZGUucmVzZXQoKSx0PXQuc2libGluZ319KGUpKTticmVhaztjYXNlIDQ6cj1seSxseT1jUihlLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxsZyh0LGUpLGxiKGUpLGx5PXI7YnJlYWs7Y2FzZSAxMjpkZWZhdWx0OmxnKHQsZSksbGIoZSk7YnJlYWs7Y2FzZSAzMTpjYXNlIDE5OmxnKHQsZSksbGIoZSksNCZyJiZudWxsIT09KHI9ZS51cGRhdGVRdWV1ZSkmJihlLnVwZGF0ZVF1ZXVlPW51bGwsbG0oZSxyKSk7YnJlYWs7Y2FzZSAxMzpsZyh0LGUpLGxiKGUpLDgxOTImZS5jaGlsZC5mbGFncyYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSE9KG51bGwhPT1uJiZudWxsIT09bi5tZW1vaXplZFN0YXRlKSYmKGwwPWVyKCkpLDQmciYmbnVsbCE9PShyPWUudXBkYXRlUXVldWUpJiYoZS51cGRhdGVRdWV1ZT1udWxsLGxtKGUscikpO2JyZWFrO2Nhc2UgMjI6bz1udWxsIT09ZS5tZW1vaXplZFN0YXRlO3ZhciBjPW51bGwhPT1uJiZudWxsIT09bi5tZW1vaXplZFN0YXRlLHU9bHIsZD1sbztpZihscj11fHxvLGxvPWR8fGMsbGcodCxlKSxsbz1kLGxyPXUsbGIoZSksODE5MiZyKWU6Zm9yKCh0PWUuc3RhdGVOb2RlKS5fdmlzaWJpbGl0eT1vPy0yJnQuX3Zpc2liaWxpdHk6MXx0Ll92aXNpYmlsaXR5LG8mJihudWxsPT09bnx8Y3x8bHJ8fGxvfHxmdW5jdGlvbiBlKHQpe2Zvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXt2YXIgbj10O3N3aXRjaChuLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmkyKDQsbixuLnJldHVybiksZShuKTticmVhaztjYXNlIDE6aTYobixuLnJldHVybik7dmFyIHI9bi5zdGF0ZU5vZGU7XCJmdW5jdGlvblwiPT10eXBlb2Ygci5jb21wb25lbnRXaWxsVW5tb3VudCYmaTUobixuLnJldHVybixyKSxlKG4pO2JyZWFrO2Nhc2UgMjc6Y0Qobi5zdGF0ZU5vZGUpO2Nhc2UgMjY6Y2FzZSA1Omk2KG4sbi5yZXR1cm4pLGUobik7YnJlYWs7Y2FzZSAyMjpudWxsPT09bi5tZW1vaXplZFN0YXRlJiZlKG4pO2JyZWFrO2RlZmF1bHQ6ZShuKX10PXQuc2libGluZ319KGUpKSxuPW51bGwsdD1lOzspe2lmKDU9PT10LnRhZ3x8MjY9PT10LnRhZyl7aWYobnVsbD09PW4pe2M9bj10O3RyeXtpZihhPWMuc3RhdGVOb2RlLG8paT1hLnN0eWxlLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuc2V0UHJvcGVydHk/aS5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTppLmRpc3BsYXk9XCJub25lXCI7ZWxzZXtzPWMuc3RhdGVOb2RlO3ZhciBmPWMubWVtb2l6ZWRQcm9wcy5zdHlsZSxwPW51bGwhPWYmJmYuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2YuZGlzcGxheTpudWxsO3Muc3R5bGUuZGlzcGxheT1udWxsPT1wfHxcImJvb2xlYW5cIj09dHlwZW9mIHA/XCJcIjooXCJcIitwKS50cmltKCl9fWNhdGNoKGUpe3NQKGMsYy5yZXR1cm4sZSl9fX1lbHNlIGlmKDY9PT10LnRhZyl7aWYobnVsbD09PW4pe2M9dDt0cnl7Yy5zdGF0ZU5vZGUubm9kZVZhbHVlPW8/XCJcIjpjLm1lbW9pemVkUHJvcHN9Y2F0Y2goZSl7c1AoYyxjLnJldHVybixlKX19fWVsc2UgaWYoMTg9PT10LnRhZyl7aWYobnVsbD09PW4pe2M9dDt0cnl7dmFyIGg9Yy5zdGF0ZU5vZGU7bz9jayhoLCEwKTpjayhjLnN0YXRlTm9kZSwhMSl9Y2F0Y2goZSl7c1AoYyxjLnJldHVybixlKX19fWVsc2UgaWYoKDIyIT09dC50YWcmJjIzIT09dC50YWd8fG51bGw9PT10Lm1lbW9pemVkU3RhdGV8fHQ9PT1lKSYmbnVsbCE9PXQuY2hpbGQpe3QuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2NvbnRpbnVlfWlmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKWJyZWFrIGU7bj09PXQmJihuPW51bGwpLHQ9dC5yZXR1cm59bj09PXQmJihuPW51bGwpLHQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9NCZyJiZudWxsIT09KHI9ZS51cGRhdGVRdWV1ZSkmJm51bGwhPT0obj1yLnJldHJ5UXVldWUpJiYoci5yZXRyeVF1ZXVlPW51bGwsbG0oZSxuKSk7Y2FzZSAzMDpjYXNlIDIxOn19ZnVuY3Rpb24gbGIoZSl7dmFyIHQ9ZS5mbGFncztpZigyJnQpe3RyeXtmb3IodmFyIG4scj1lLnJldHVybjtudWxsIT09cjspe2lmKGk3KHIpKXtuPXI7YnJlYWt9cj1yLnJldHVybn1pZihudWxsPT1uKXRocm93IEVycm9yKGwoMTYwKSk7c3dpdGNoKG4udGFnKXtjYXNlIDI3OnZhciBvPW4uc3RhdGVOb2RlLGE9bGUoZSk7bHQoZSxhLG8pO2JyZWFrO2Nhc2UgNTp2YXIgaT1uLnN0YXRlTm9kZTszMiZuLmZsYWdzJiYodHMoaSxcIlwiKSxuLmZsYWdzJj0tMzMpO3ZhciBzPWxlKGUpO2x0KGUscyxpKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBjPW4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sdT1sZShlKTshZnVuY3Rpb24gZSh0LG4scil7dmFyIG89dC50YWc7aWYoNT09PW98fDY9PT1vKXQ9dC5zdGF0ZU5vZGUsbj8oOT09PXIubm9kZVR5cGU/ci5ib2R5OlwiSFRNTFwiPT09ci5ub2RlTmFtZT9yLm93bmVyRG9jdW1lbnQuYm9keTpyKS5pbnNlcnRCZWZvcmUodCxuKTooKG49OT09PXIubm9kZVR5cGU/ci5ib2R5OlwiSFRNTFwiPT09ci5ub2RlTmFtZT9yLm93bmVyRG9jdW1lbnQuYm9keTpyKS5hcHBlbmRDaGlsZCh0KSxudWxsIT0ocj1yLl9yZWFjdFJvb3RDb250YWluZXIpfHxudWxsIT09bi5vbmNsaWNrfHwobi5vbmNsaWNrPXRnKSk7ZWxzZSBpZig0IT09byYmKDI3PT09byYmY0ModC50eXBlKSYmKHI9dC5zdGF0ZU5vZGUsbj1udWxsKSxudWxsIT09KHQ9dC5jaGlsZCkpKWZvcihlKHQsbixyKSx0PXQuc2libGluZztudWxsIT09dDspZSh0LG4sciksdD10LnNpYmxpbmd9KGUsdSxjKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYxKSl9fWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9ZS5mbGFncyY9LTN9NDA5NiZ0JiYoZS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIGxBKGUsdCl7aWYoODc3MiZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10OylscyhlLHQuYWx0ZXJuYXRlLHQpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIGx4KGUsdCl7dmFyIG49bnVsbDtudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihuPWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksZT1udWxsLG51bGwhPT10Lm1lbW9pemVkU3RhdGUmJm51bGwhPT10Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYoZT10Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGUhPT1uJiYobnVsbCE9ZSYmZS5yZWZDb3VudCsrLG51bGwhPW4mJnIyKG4pKX1mdW5jdGlvbiBsdyhlLHQpe2U9bnVsbCxudWxsIT09dC5hbHRlcm5hdGUmJihlPXQuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGUpLCh0PXQubWVtb2l6ZWRTdGF0ZS5jYWNoZSkhPT1lJiYodC5yZWZDb3VudCsrLG51bGwhPWUmJnIyKGUpKX1mdW5jdGlvbiBsQyhlLHQsbixyKXtpZigxMDI1NiZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10OylsXyhlLHQsbixyKSx0PXQuc2libGluZ31mdW5jdGlvbiBsXyhlLHQsbixyKXt2YXIgbz10LmZsYWdzO3N3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpsQyhlLHQsbixyKSwyMDQ4Jm8mJmkxKDksdCk7YnJlYWs7Y2FzZSAxOmNhc2UgMzE6Y2FzZSAxMzpkZWZhdWx0OmxDKGUsdCxuLHIpO2JyZWFrO2Nhc2UgMzpsQyhlLHQsbixyKSwyMDQ4Jm8mJihlPW51bGwsbnVsbCE9PXQuYWx0ZXJuYXRlJiYoZT10LmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSwodD10Lm1lbW9pemVkU3RhdGUuY2FjaGUpIT09ZSYmKHQucmVmQ291bnQrKyxudWxsIT1lJiZyMihlKSkpO2JyZWFrO2Nhc2UgMTI6aWYoMjA0OCZvKXtsQyhlLHQsbixyKSxlPXQuc3RhdGVOb2RlO3RyeXt2YXIgYT10Lm1lbW9pemVkUHJvcHMsaT1hLmlkLGw9YS5vblBvc3RDb21taXQ7XCJmdW5jdGlvblwiPT10eXBlb2YgbCYmbChpLG51bGw9PT10LmFsdGVybmF0ZT9cIm1vdW50XCI6XCJ1cGRhdGVcIixlLnBhc3NpdmVFZmZlY3REdXJhdGlvbiwtMCl9Y2F0Y2goZSl7c1AodCx0LnJldHVybixlKX19ZWxzZSBsQyhlLHQsbixyKTticmVhaztjYXNlIDIzOmJyZWFrO2Nhc2UgMjI6YT10LnN0YXRlTm9kZSxpPXQuYWx0ZXJuYXRlLG51bGwhPT10Lm1lbW9pemVkU3RhdGU/MiZhLl92aXNpYmlsaXR5P2xDKGUsdCxuLHIpOmxrKGUsdCk6MiZhLl92aXNpYmlsaXR5P2xDKGUsdCxuLHIpOihhLl92aXNpYmlsaXR5fD0yLGZ1bmN0aW9uIGUodCxuLHIsbyxhKXtmb3IoYT1hJiYwIT0oMTAyNTYmbi5zdWJ0cmVlRmxhZ3MpLG49bi5jaGlsZDtudWxsIT09bjspe3ZhciBpPW4sbD1pLmZsYWdzO3N3aXRjaChpLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTplKHQsaSxyLG8sYSksaTEoOCxpKTticmVhaztjYXNlIDIzOmJyZWFrO2Nhc2UgMjI6dmFyIHM9aS5zdGF0ZU5vZGU7bnVsbCE9PWkubWVtb2l6ZWRTdGF0ZT8yJnMuX3Zpc2liaWxpdHk/ZSh0LGkscixvLGEpOmxrKHQsaSk6KHMuX3Zpc2liaWxpdHl8PTIsZSh0LGkscixvLGEpKSxhJiYyMDQ4JmwmJmx4KGkuYWx0ZXJuYXRlLGkpO2JyZWFrO2Nhc2UgMjQ6ZSh0LGkscixvLGEpLGEmJjIwNDgmbCYmbHcoaS5hbHRlcm5hdGUsaSk7YnJlYWs7ZGVmYXVsdDplKHQsaSxyLG8sYSl9bj1uLnNpYmxpbmd9fShlLHQsbixyLDAhPSgxMDI1NiZ0LnN1YnRyZWVGbGFncykpKSwyMDQ4Jm8mJmx4KGksdCk7YnJlYWs7Y2FzZSAyNDpsQyhlLHQsbixyKSwyMDQ4Jm8mJmx3KHQuYWx0ZXJuYXRlLHQpfX1mdW5jdGlvbiBsayhlLHQpe2lmKDEwMjU2JnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXt2YXIgbj10LHI9bi5mbGFncztzd2l0Y2gobi50YWcpe2Nhc2UgMjI6bGsoZSxuKSwyMDQ4JnImJmx4KG4uYWx0ZXJuYXRlLG4pO2JyZWFrO2Nhc2UgMjQ6bGsoZSxuKSwyMDQ4JnImJmx3KG4uYWx0ZXJuYXRlLG4pO2JyZWFrO2RlZmF1bHQ6bGsoZSxuKX10PXQuc2libGluZ319dmFyIGxFPTgxOTI7ZnVuY3Rpb24gbGooZSl7aWYoZS5zdWJ0cmVlRmxhZ3MmbEUpZm9yKGU9ZS5jaGlsZDtudWxsIT09ZTspbFMoZSksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gbFMoZSl7c3dpdGNoKGUudGFnKXtjYXNlIDI2OmxqKGUpLGUuZmxhZ3MmbEUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJmZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT09YzIpdGhyb3cgRXJyb3IobCg0NzUpKTt2YXIgcj1jMjtpZihcInN0eWxlc2hlZXRcIj09PXQudHlwZSYmKFwic3RyaW5nXCIhPXR5cGVvZiBuLm1lZGlhfHwhMSE9PW1hdGNoTWVkaWEobi5tZWRpYSkubWF0Y2hlcykmJjA9PSg0JnQuc3RhdGUubG9hZGluZykpe2lmKG51bGw9PT10Lmluc3RhbmNlKXt2YXIgbz1jcShuLmhyZWYpLGE9ZS5xdWVyeVNlbGVjdG9yKGNIKG8pKTtpZihhKXtudWxsIT09KGU9YS5fcCkmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnRoZW4mJihyLmNvdW50Kysscj1jNC5iaW5kKHIpLGUudGhlbihyLHIpKSx0LnN0YXRlLmxvYWRpbmd8PTQsdC5pbnN0YW5jZT1hLGVZKGEpO3JldHVybn1hPWUub3duZXJEb2N1bWVudHx8ZSxuPWNWKG4pLChvPWNMLmdldChvKSkmJmNYKG4sbyksZVkoYT1hLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpKTt2YXIgaT1hO2kuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpLm9ubG9hZD1lLGkub25lcnJvcj10fSksY3UoYSxcImxpbmtcIixuKSx0Lmluc3RhbmNlPWF9bnVsbD09PXIuc3R5bGVzaGVldHMmJihyLnN0eWxlc2hlZXRzPW5ldyBNYXApLHIuc3R5bGVzaGVldHMuc2V0KHQsZSksKGU9dC5zdGF0ZS5wcmVsb2FkKSYmMD09KDMmdC5zdGF0ZS5sb2FkaW5nKSYmKHIuY291bnQrKyx0PWM0LmJpbmQociksZS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLHQpLGUuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsdCkpfX0obHksZS5tZW1vaXplZFN0YXRlLGUubWVtb2l6ZWRQcm9wcyk7YnJlYWs7Y2FzZSA1OmRlZmF1bHQ6bGooZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgdD1seTtseT1jUihlLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxsaihlKSxseT10O2JyZWFrO2Nhc2UgMjI6bnVsbD09PWUubWVtb2l6ZWRTdGF0ZSYmKG51bGwhPT0odD1lLmFsdGVybmF0ZSkmJm51bGwhPT10Lm1lbW9pemVkU3RhdGU/KHQ9bEUsbEU9MHgxMDAwMDAwLGxqKGUpLGxFPXQpOmxqKGUpKX19ZnVuY3Rpb24gbE8oZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PXQmJm51bGwhPT0oZT10LmNoaWxkKSl7dC5jaGlsZD1udWxsO2RvIHQ9ZS5zaWJsaW5nLGUuc2libGluZz1udWxsLGU9dDt3aGlsZShudWxsIT09ZSl9fWZ1bmN0aW9uIGxCKGUpe3ZhciB0PWUuZGVsZXRpb25zO2lmKDAhPSgxNiZlLmZsYWdzKSl7aWYobnVsbCE9PXQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07bGw9cixsSShyLGUpfWxPKGUpfWlmKDEwMjU2JmUuc3VidHJlZUZsYWdzKWZvcihlPWUuY2hpbGQ7bnVsbCE9PWU7KWxQKGUpLGU9ZS5zaWJsaW5nfWZ1bmN0aW9uIGxQKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpsQihlKSwyMDQ4JmUuZmxhZ3MmJmkyKDksZSxlLnJldHVybik7YnJlYWs7Y2FzZSAzOmNhc2UgMTI6ZGVmYXVsdDpsQihlKTticmVhaztjYXNlIDIyOnZhciB0PWUuc3RhdGVOb2RlO251bGwhPT1lLm1lbW9pemVkU3RhdGUmJjImdC5fdmlzaWJpbGl0eSYmKG51bGw9PT1lLnJldHVybnx8MTMhPT1lLnJldHVybi50YWcpPyh0Ll92aXNpYmlsaXR5Jj0tMyxmdW5jdGlvbiBlKHQpe3ZhciBuPXQuZGVsZXRpb25zO2lmKDAhPSgxNiZ0LmZsYWdzKSl7aWYobnVsbCE9PW4pZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07bGw9byxsSShvLHQpfWxPKHQpfWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXtzd2l0Y2goKG49dCkudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmkyKDgsbixuLnJldHVybiksZShuKTticmVhaztjYXNlIDIyOjImKHI9bi5zdGF0ZU5vZGUpLl92aXNpYmlsaXR5JiYoci5fdmlzaWJpbGl0eSY9LTMsZShuKSk7YnJlYWs7ZGVmYXVsdDplKG4pfXQ9dC5zaWJsaW5nfX0oZSkpOmxCKGUpfX1mdW5jdGlvbiBsSShlLHQpe2Zvcig7bnVsbCE9PWxsOyl7dmFyIG49bGw7c3dpdGNoKG4udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmkyKDgsbix0KTticmVhaztjYXNlIDIzOmNhc2UgMjI6aWYobnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wpe3ZhciByPW4ubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbDtudWxsIT1yJiZyLnJlZkNvdW50Kyt9YnJlYWs7Y2FzZSAyNDpyMihuLm1lbW9pemVkU3RhdGUuY2FjaGUpfWlmKG51bGwhPT0ocj1uLmNoaWxkKSlyLnJldHVybj1uLGxsPXI7ZWxzZSBmb3Iobj1lO251bGwhPT1sbDspe3ZhciBvPShyPWxsKS5zaWJsaW5nLGE9ci5yZXR1cm47aWYoIWZ1bmN0aW9uIGUodCl7dmFyIG49dC5hbHRlcm5hdGU7bnVsbCE9PW4mJih0LmFsdGVybmF0ZT1udWxsLGUobikpLHQuY2hpbGQ9bnVsbCx0LmRlbGV0aW9ucz1udWxsLHQuc2libGluZz1udWxsLDU9PT10LnRhZyYmbnVsbCE9PShuPXQuc3RhdGVOb2RlKSYmZXEobiksdC5zdGF0ZU5vZGU9bnVsbCx0LnJldHVybj1udWxsLHQuZGVwZW5kZW5jaWVzPW51bGwsdC5tZW1vaXplZFByb3BzPW51bGwsdC5tZW1vaXplZFN0YXRlPW51bGwsdC5wZW5kaW5nUHJvcHM9bnVsbCx0LnN0YXRlTm9kZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbH0ocikscj09PW4pe2xsPW51bGw7YnJlYWt9aWYobnVsbCE9PW8pe28ucmV0dXJuPWEsbGw9bzticmVha31sbD1hfX19dmFyIGx6PXtnZXRDYWNoZUZvclR5cGU6ZnVuY3Rpb24oZSl7dmFyIHQ9clkocjApLG49dC5kYXRhLmdldChlKTtyZXR1cm4gdm9pZCAwPT09biYmKG49ZSgpLHQuZGF0YS5zZXQoZSxuKSksbn0sY2FjaGVTaWduYWw6ZnVuY3Rpb24oKXtyZXR1cm4gclkocjApLmNvbnRyb2xsZXIuc2lnbmFsfX0sbFQ9XCJmdW5jdGlvblwiPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcCxsRD0wLGxMPW51bGwsbE49bnVsbCxsUj0wLGxNPTAsbFo9bnVsbCxsVT0hMSxsRj0hMSxscT0hMSxsSD0wLGxWPTAsbCQ9MCxsVz0wLGxZPTAsbEs9MCxsWD0wLGxHPW51bGwsbFE9bnVsbCxsSj0hMSxsMD0wLGwxPTEvMCxsMj1udWxsLGw0PW51bGwsbDU9MCxsMz1udWxsLGw2PW51bGwsbDk9MCxsOD0wLGw3PW51bGwsc2U9bnVsbCxzdD0wLHNuPW51bGw7ZnVuY3Rpb24gc3IoKXtyZXR1cm4gMCE9KDImbEQpJiYwIT09bFI/bFImLWxSOm51bGwhPT1JLlQ/c1goKTplSSgpfWZ1bmN0aW9uIHNvKCl7MD09PWxLJiYobEs9MD09KDB4MjAwMDAwMDAmbFIpfHxyaj9lQygpOjB4MjAwMDAwMDApO3ZhciBlPW9SLmN1cnJlbnQ7cmV0dXJuIG51bGwhPT1lJiYoZS5mbGFnc3w9MzIpLGxLfWZ1bmN0aW9uIHNhKGUsdCxuKXsoZT09PWxMJiYoMj09PWxNfHw5PT09bE0pfHxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0KSYmKHNkKGUsMCksc3MoZSxsUixsSywhMSkpLGVFKGUsbiksKDA9PSgyJmxEKXx8ZSE9PWxMKSYmKGU9PT1sTCYmKDA9PSgyJmxEKSYmKGxXfD1uKSw0PT09bFYmJnNzKGUsbFIsbEssITEpKSxzcShlKSl9ZnVuY3Rpb24gc2koZSx0LG4pe2lmKDAhPSg2JmxEKSl0aHJvdyBFcnJvcihsKDMyNykpO2Zvcih2YXIgcj0hbiYmMD09KDEyNCZ0KSYmMD09KHQmZS5leHBpcmVkTGFuZXMpfHxldyhlLHQpLG89cj9mdW5jdGlvbihlLHQpe3ZhciBuPWxEO2xEfD0yO3ZhciByPXNoKCksbz1zbSgpO2xMIT09ZXx8bFIhPT10PyhsMj1udWxsLGwxPWVyKCkrNTAwLHNkKGUsdCkpOmxGPWV3KGUsdCk7ZTpmb3IoOzspdHJ5e2lmKDAhPT1sTSYmbnVsbCE9PWxOKXt0PWxOO3ZhciBhPWxaO3Q6c3dpdGNoKGxNKXtjYXNlIDE6bE09MCxsWj1udWxsLHNBKGUsdCxhLDEpO2JyZWFrO2Nhc2UgMjpjYXNlIDk6aWYob2woYSkpe2xNPTAsbFo9bnVsbCxzYih0KTticmVha310PWZ1bmN0aW9uKCl7MiE9PWxNJiY5IT09bE18fGxMIT09ZXx8KGxNPTcpLHNxKGUpfSxhLnRoZW4odCx0KTticmVhayBlO2Nhc2UgMzpsTT03O2JyZWFrIGU7Y2FzZSA0OmxNPTU7YnJlYWsgZTtjYXNlIDc6b2woYSk/KGxNPTAsbFo9bnVsbCxzYih0KSk6KGxNPTAsbFo9bnVsbCxzQShlLHQsYSw3KSk7YnJlYWs7Y2FzZSA1OnZhciBpPW51bGw7c3dpdGNoKGxOLnRhZyl7Y2FzZSAyNjppPWxOLm1lbW9pemVkU3RhdGU7Y2FzZSA1OmNhc2UgMjc6dmFyIHM9bE47aWYoaT9jMShpKTpzLnN0YXRlTm9kZS5jb21wbGV0ZSl7bE09MCxsWj1udWxsO3ZhciBjPXMuc2libGluZztpZihudWxsIT09YylsTj1jO2Vsc2V7dmFyIHU9cy5yZXR1cm47bnVsbCE9PXU/KGxOPXUsc3godSkpOmxOPW51bGx9YnJlYWsgdH19bE09MCxsWj1udWxsLHNBKGUsdCxhLDUpO2JyZWFrO2Nhc2UgNjpsTT0wLGxaPW51bGwsc0EoZSx0LGEsNik7YnJlYWs7Y2FzZSA4OnN1KCksbFY9NjticmVhayBlO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCg0NjIpKX19Zm9yKDtudWxsIT09bE4mJiFldCgpOylzdihsTik7YnJlYWt9Y2F0Y2godCl7c2YoZSx0KX1yZXR1cm4oclo9ck09bnVsbCxJLkg9cixJLkE9byxsRD1uLG51bGwhPT1sTik/MDoobEw9bnVsbCxsUj0wLG4yKCksbFYpfShlLHQpOnN5KGUsdCwhMCksYT1yOzspe2lmKDA9PT1vKWxGJiYhciYmc3MoZSx0LDAsITEpO2Vsc2V7aWYobj1lLmN1cnJlbnQuYWx0ZXJuYXRlLGEmJiFmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZTs7KXt2YXIgbj10LnRhZztpZigoMD09PW58fDExPT09bnx8MTU9PT1uKSYmMTYzODQmdC5mbGFncyYmbnVsbCE9PShuPXQudXBkYXRlUXVldWUpJiZudWxsIT09KG49bi5zdG9yZXMpKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdLGE9by5nZXRTbmFwc2hvdDtvPW8udmFsdWU7dHJ5e2lmKCFuayhhKCksbykpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9fWlmKG49dC5jaGlsZCwxNjM4NCZ0LnN1YnRyZWVGbGFncyYmbnVsbCE9PW4pbi5yZXR1cm49dCx0PW47ZWxzZXtpZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4hMDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9fXJldHVybiEwfShuKSl7bz1zeShlLHQsITEpLGE9ITE7Y29udGludWV9aWYoMj09PW8pe2lmKGE9dCxlLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzJmEpdmFyIGk9MDtlbHNlIGk9MCE9KGk9LTB4MjAwMDAwMDEmZS5wZW5kaW5nTGFuZXMpP2k6MHgyMDAwMDAwMCZpPzB4MjAwMDAwMDA6MDtpZigwIT09aSl7dD1pO2U6e289bEc7dmFyIHM9ZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkO2lmKHMmJihzZChlLGkpLmZsYWdzfD0yNTYpLDIhPT0oaT1zeShlLGksITEpKSl7aWYobHEmJiFzKXtlLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzfD1hLGxXfD1hLG89NDticmVhayBlfWE9bFEsbFE9byxudWxsIT09YSYmKG51bGw9PT1sUT9sUT1hOmxRLnB1c2guYXBwbHkobFEsYSkpfW89aX1pZihhPSExLDIhPT1vKWNvbnRpbnVlfX1pZigxPT09byl7c2QoZSwwKSxzcyhlLHQsMCwhMCk7YnJlYWt9ZTp7c3dpdGNoKHI9ZSxhPW8pe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IobCgzNDUpKTtjYXNlIDQ6aWYoKDQxOTQwNDgmdCkhPT10KWJyZWFrO2Nhc2UgNjpzcyhyLHQsbEssIWxVKTticmVhayBlO2Nhc2UgMjpsUT1udWxsO2JyZWFrO2Nhc2UgMzpjYXNlIDU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDMyOSkpfWlmKCgweDNjMDAwMDAmdCk9PT10JiYxMDwobz1sMCszMDAtZXIoKSkpe2lmKHNzKHIsdCxsSywhbFUpLDAhPT1leChyLDAsITApKWJyZWFrIGU7ci50aW1lb3V0SGFuZGxlPWN2KHNsLmJpbmQobnVsbCxyLG4sbFEsbDIsbEosdCxsSyxsVyxsWCxsVSxhLDIsLTAsMCksbyk7YnJlYWsgZX1zbChyLG4sbFEsbDIsbEosdCxsSyxsVyxsWCxsVSxhLDAsLTAsMCl9fWJyZWFrfXNxKGUpfWZ1bmN0aW9uIHNsKGUsdCxuLHIsbyxhLGkscyxjLHUsZCxmLHAsaCl7aWYoZS50aW1lb3V0SGFuZGxlPS0xLCg4MTkyJihmPXQuc3VidHJlZUZsYWdzKXx8MHgxMDAyMDAwPT0oMHgxMDAyMDAwJmYpKSYmKGMyPXtzdHlsZXNoZWV0czpudWxsLGNvdW50OjAsdW5zdXNwZW5kOnRnfSxsUyh0KSxudWxsIT09KGY9ZnVuY3Rpb24oKXtpZihudWxsPT09YzIpdGhyb3cgRXJyb3IobCg0NzUpKTt2YXIgZT1jMjtyZXR1cm4gZS5zdHlsZXNoZWV0cyYmMD09PWUuY291bnQmJmMzKGUsZS5zdHlsZXNoZWV0cyksMDxlLmNvdW50P2Z1bmN0aW9uKHQpe3ZhciBuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihlLnN0eWxlc2hlZXRzJiZjMyhlLGUuc3R5bGVzaGVldHMpLGUudW5zdXNwZW5kKXt2YXIgdD1lLnVuc3VzcGVuZDtlLnVuc3VzcGVuZD1udWxsLHQoKX19LDZlNCk7cmV0dXJuIGUudW5zdXNwZW5kPXQsZnVuY3Rpb24oKXtlLnVuc3VzcGVuZD1udWxsLGNsZWFyVGltZW91dChuKX19Om51bGx9KCkpKSl7ZS5jYW5jZWxQZW5kaW5nQ29tbWl0PWYoc0MuYmluZChudWxsLGUsdCxhLG4scixvLGkscyxjLGQsMSxwLGgpKSxzcyhlLGEsaSwhdSk7cmV0dXJufXNDKGUsdCxhLG4scixvLGkscyxjKX1mdW5jdGlvbiBzcyhlLHQsbixyKXt0Jj1+bFksdCY9fmxXLGUuc3VzcGVuZGVkTGFuZXN8PXQsZS5waW5nZWRMYW5lcyY9fnQsciYmKGUud2FybUxhbmVzfD10KSxyPWUuZXhwaXJhdGlvblRpbWVzO2Zvcih2YXIgbz10OzA8bzspe3ZhciBhPTMxLWVtKG8pLGk9MTw8YTtyW2FdPS0xLG8mPX5pfTAhPT1uJiZlaihlLG4sdCl9ZnVuY3Rpb24gc2MoKXtyZXR1cm4gMCE9KDYmbEQpfHwoc0goMCwhMSksITEpfWZ1bmN0aW9uIHN1KCl7aWYobnVsbCE9PWxOKXtpZigwPT09bE0pdmFyIGU9bE4ucmV0dXJuO2Vsc2UgZT1sTixyWj1yTT1udWxsLGFuKGUpLG9wPW51bGwsb2g9MCxlPWxOO2Zvcig7bnVsbCE9PWU7KWkwKGUuYWx0ZXJuYXRlLGUpLGU9ZS5yZXR1cm47bE49bnVsbH19ZnVuY3Rpb24gc2QoZSx0KXt2YXIgbj1lLnRpbWVvdXRIYW5kbGU7LTEhPT1uJiYoZS50aW1lb3V0SGFuZGxlPS0xLGNiKG4pKSxudWxsIT09KG49ZS5jYW5jZWxQZW5kaW5nQ29tbWl0KSYmKGUuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsLG4oKSksc3UoKSxsTD1lLGxOPW49cm4oZS5jdXJyZW50LG51bGwpLGxSPXQsbE09MCxsWj1udWxsLGxVPSExLGxGPWV3KGUsdCksbHE9ITEsbFg9bEs9bFk9bFc9bCQ9bFY9MCxsUT1sRz1udWxsLGxKPSExLDAhPSg4JnQpJiYodHw9MzImdCk7dmFyIHI9ZS5lbnRhbmdsZWRMYW5lcztpZigwIT09cilmb3IoZT1lLmVudGFuZ2xlbWVudHMsciY9dDswPHI7KXt2YXIgbz0zMS1lbShyKSxhPTE8PG87dHw9ZVtvXSxyJj1+YX1yZXR1cm4gbEg9dCxuMigpLG59ZnVuY3Rpb24gc2YoZSx0KXtvWT1udWxsLEkuSD1pZSx0PT09b3J8fHQ9PT1vYT8odD1vZCgpLGxNPTMpOnQ9PT1vbz8odD1vZCgpLGxNPTQpOmxNPXQ9PT1pYj84Om51bGwhPT10JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuPzY6MSxsWj10LG51bGw9PT1sTiYmKGxWPTEsaWgoZSxydSh0LGUuY3VycmVudCkpKX1mdW5jdGlvbiBzcCgpe3ZhciBlPW9SLmN1cnJlbnQ7cmV0dXJuIG51bGw9PT1lfHwoKDQxOTQwNDgmbFIpPT09bFI/bnVsbD09PW9NOigoMHgzYzAwMDAwJmxSKT09PWxSfHwwIT0oMHgyMDAwMDAwMCZsUikpJiZlPT09b00pfWZ1bmN0aW9uIHNoKCl7dmFyIGU9SS5IO3JldHVybiBJLkg9aWUsbnVsbD09PWU/aWU6ZX1mdW5jdGlvbiBzbSgpe3ZhciBlPUkuQTtyZXR1cm4gSS5BPWx6LGV9ZnVuY3Rpb24gc2coKXtsVj00LGxVfHwoNDE5NDA0OCZsUikhPT1sUiYmbnVsbCE9PW9SLmN1cnJlbnR8fChsRj0hMCksMD09KDB4N2ZmZmZmZiZsJCkmJjA9PSgweDdmZmZmZmYmbFcpfHxudWxsPT09bEx8fHNzKGxMLGxSLGxLLCExKX1mdW5jdGlvbiBzeShlLHQsbil7dmFyIHI9bEQ7bER8PTI7dmFyIG89c2goKSxhPXNtKCk7KGxMIT09ZXx8bFIhPT10KSYmKGwyPW51bGwsc2QoZSx0KSksdD0hMTt2YXIgaT1sVjtlOmZvcig7Oyl0cnl7aWYoMCE9PWxNJiZudWxsIT09bE4pe3ZhciBsPWxOLHM9bFo7c3dpdGNoKGxNKXtjYXNlIDg6c3UoKSxpPTY7YnJlYWsgZTtjYXNlIDM6Y2FzZSAyOmNhc2UgOTpjYXNlIDY6bnVsbD09PW9SLmN1cnJlbnQmJih0PSEwKTt2YXIgYz1sTTtpZihsTT0wLGxaPW51bGwsc0EoZSxsLHMsYyksbiYmbEYpe2k9MDticmVhayBlfWJyZWFrO2RlZmF1bHQ6Yz1sTSxsTT0wLGxaPW51bGwsc0EoZSxsLHMsYyl9fShmdW5jdGlvbigpe2Zvcig7bnVsbCE9PWxOOylzdihsTil9KSgpLGk9bFY7YnJlYWt9Y2F0Y2godCl7c2YoZSx0KX1yZXR1cm4gdCYmZS5zaGVsbFN1c3BlbmRDb3VudGVyKyssclo9ck09bnVsbCxsRD1yLEkuSD1vLEkuQT1hLG51bGw9PT1sTiYmKGxMPW51bGwsbFI9MCxuMigpKSxpfWZ1bmN0aW9uIHN2KGUpe3ZhciB0PWlXKGUuYWx0ZXJuYXRlLGUsbEgpO2UubWVtb2l6ZWRQcm9wcz1lLnBlbmRpbmdQcm9wcyxudWxsPT09dD9zeChlKTpsTj10fWZ1bmN0aW9uIHNiKGUpe3ZhciB0PWUsbj10LmFsdGVybmF0ZTtzd2l0Y2godC50YWcpe2Nhc2UgMTU6Y2FzZSAwOnQ9aUkobix0LHQucGVuZGluZ1Byb3BzLHQudHlwZSx2b2lkIDAsbFIpO2JyZWFrO2Nhc2UgMTE6dD1pSShuLHQsdC5wZW5kaW5nUHJvcHMsdC50eXBlLnJlbmRlcix0LnJlZixsUik7YnJlYWs7Y2FzZSA1OmFuKHQpO2RlZmF1bHQ6aTAobix0KSx0PWlXKG4sdD1sTj1ycih0LGxIKSxsSCl9ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT10P3N4KGUpOmxOPXR9ZnVuY3Rpb24gc0EoZSx0LG4scil7clo9ck09bnVsbCxhbih0KSxvcD1udWxsLG9oPTA7dmFyIG89dC5yZXR1cm47dHJ5e2lmKGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYobi5mbGFnc3w9MzI3NjgsbnVsbCE9PXImJlwib2JqZWN0XCI9PXR5cGVvZiByJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnRoZW4pe2lmKG51bGwhPT0odD1uLmFsdGVybmF0ZSkmJnJWKHQsbixvLCEwKSxudWxsIT09KG49b1IuY3VycmVudCkpe3N3aXRjaChuLnRhZyl7Y2FzZSAzMTpjYXNlIDEzOnJldHVybiBudWxsPT09b00/c2coKTpudWxsPT09bi5hbHRlcm5hdGUmJjA9PT1sViYmKGxWPTMpLG4uZmxhZ3MmPS0yNTcsbi5mbGFnc3w9NjU1MzYsbi5sYW5lcz1vLHI9PT1vaT9uLmZsYWdzfD0xNjM4NDoobnVsbD09PSh0PW4udXBkYXRlUXVldWUpP24udXBkYXRlUXVldWU9bmV3IFNldChbcl0pOnQuYWRkKHIpLHNJKGUscixvKSksITE7Y2FzZSAyMjpyZXR1cm4gbi5mbGFnc3w9NjU1MzYscj09PW9pP24uZmxhZ3N8PTE2Mzg0OihudWxsPT09KHQ9bi51cGRhdGVRdWV1ZSk/KHQ9e3RyYW5zaXRpb25zOm51bGwsbWFya2VySW5zdGFuY2VzOm51bGwscmV0cnlRdWV1ZTpuZXcgU2V0KFtyXSl9LG4udXBkYXRlUXVldWU9dCk6bnVsbD09PShuPXQucmV0cnlRdWV1ZSk/dC5yZXRyeVF1ZXVlPW5ldyBTZXQoW3JdKTpuLmFkZChyKSxzSShlLHIsbykpLCExfXRocm93IEVycm9yKGwoNDM1LG4udGFnKSl9cmV0dXJuIHNJKGUscixvKSxzZygpLCExfWlmKHJqKXJldHVybiBudWxsIT09KHQ9b1IuY3VycmVudCk/KDA9PSg2NTUzNiZ0LmZsYWdzKSYmKHQuZmxhZ3N8PTI1NiksdC5mbGFnc3w9NjU1MzYsdC5sYW5lcz1vLHIhPT1yQiYmck4ocnUoZT1FcnJvcihsKDQyMikse2NhdXNlOnJ9KSxuKSkpOihyIT09ckImJnJOKHJ1KHQ9RXJyb3IobCg0MjMpLHtjYXVzZTpyfSksbikpLGU9ZS5jdXJyZW50LmFsdGVybmF0ZSxlLmZsYWdzfD02NTUzNixvJj0tbyxlLmxhbmVzfD1vLHI9cnUocixuKSxvPWlnKGUuc3RhdGVOb2RlLHIsbyksb2ooZSxvKSw0IT09bFYmJihsVj0yKSksITE7dmFyIGE9RXJyb3IobCg1MjApLHtjYXVzZTpyfSk7aWYoYT1ydShhLG4pLG51bGw9PT1sRz9sRz1bYV06bEcucHVzaChhKSw0IT09bFYmJihsVj0yKSxudWxsPT09dClyZXR1cm4hMDtyPXJ1KHIsbiksbj10O2Rve3N3aXRjaChuLnRhZyl7Y2FzZSAzOnJldHVybiBuLmZsYWdzfD02NTUzNixlPW8mLW8sbi5sYW5lc3w9ZSxlPWlnKG4uc3RhdGVOb2RlLHIsZSksb2oobixlKSwhMTtjYXNlIDE6aWYodD1uLnR5cGUsYT1uLnN0YXRlTm9kZSwwPT0oMTI4Jm4uZmxhZ3MpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT1hJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PWw0fHwhbDQuaGFzKGEpKSkpcmV0dXJuIG4uZmxhZ3N8PTY1NTM2LG8mPS1vLG4ubGFuZXN8PW8saXYobz1peShvKSxlLG4sciksb2oobixvKSwhMX1uPW4ucmV0dXJufXdoaWxlKG51bGwhPT1uKTtyZXR1cm4hMX0oZSxvLHQsbixsUikpe2xWPTEsaWgoZSxydShuLGUuY3VycmVudCkpLGxOPW51bGw7cmV0dXJufX1jYXRjaCh0KXtpZihudWxsIT09byl0aHJvdyBsTj1vLHQ7bFY9MSxpaChlLHJ1KG4sZS5jdXJyZW50KSksbE49bnVsbDtyZXR1cm59MzI3NjgmdC5mbGFncz8ocmp8fDE9PT1yP2U9ITA6bEZ8fDAhPSgweDIwMDAwMDAwJmxSKT9lPSExOihsVT1lPSEwLCgyPT09cnx8OT09PXJ8fDM9PT1yfHw2PT09cikmJm51bGwhPT0ocj1vUi5jdXJyZW50KSYmMTM9PT1yLnRhZyYmKHIuZmxhZ3N8PTE2Mzg0KSksc3codCxlKSk6c3godCl9ZnVuY3Rpb24gc3goZSl7dmFyIHQ9ZTtkb3tpZigwIT0oMzI3NjgmdC5mbGFncykpcmV0dXJuIHZvaWQgc3codCxsVSk7ZT10LnJldHVybjt2YXIgbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHM7c3dpdGNoKHJDKHQpLHQudGFnKXtjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OmNhc2UgMTpyZXR1cm4gaUoodCksbnVsbDtjYXNlIDM6cmV0dXJuIG49dC5zdGF0ZU5vZGUscj1udWxsLG51bGwhPT1lJiYocj1lLm1lbW9pemVkU3RhdGUuY2FjaGUpLHQubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PXImJih0LmZsYWdzfD0yMDQ4KSxyRihyMCksVigpLG4ucGVuZGluZ0NvbnRleHQmJihuLmNvbnRleHQ9bi5wZW5kaW5nQ29udGV4dCxuLnBlbmRpbmdDb250ZXh0PW51bGwpLChudWxsPT09ZXx8bnVsbD09PWUuY2hpbGQpJiYoclQodCk/aVkodCk6bnVsbD09PWV8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PSgyNTYmdC5mbGFncyl8fCh0LmZsYWdzfD0xMDI0LHJMKCkpKSxpSih0KSxudWxsO2Nhc2UgMjY6dmFyIG89dC50eXBlLGE9dC5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsPT09ZT8oaVkodCksbnVsbCE9PWE/KGlKKHQpLGlYKHQsYSkpOihpSih0KSxpSyh0LG8sbnVsbCxyLG4pKSk6YT9hIT09ZS5tZW1vaXplZFN0YXRlPyhpWSh0KSxpSih0KSxpWCh0LGEpKTooaUoodCksdC5mbGFncyY9LTB4MTAwMDAwMSk6KChlPWUubWVtb2l6ZWRQcm9wcykhPT1yJiZpWSh0KSxpSih0KSxpSyh0LG8sZSxyLG4pKSxudWxsO2Nhc2UgMjc6aWYoVyh0KSxuPUYuY3VycmVudCxvPXQudHlwZSxudWxsIT09ZSYmbnVsbCE9dC5zdGF0ZU5vZGUpZS5tZW1vaXplZFByb3BzIT09ciYmaVkodCk7ZWxzZXtpZighcil7aWYobnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGwoMTY2KSk7cmV0dXJuIGlKKHQpLG51bGx9ZT1aLmN1cnJlbnQsclQodCk/ckkodCxlKToodC5zdGF0ZU5vZGU9ZT1jVChvLHIsbiksaVkodCkpfXJldHVybiBpSih0KSxudWxsO2Nhc2UgNTppZihXKHQpLG89dC50eXBlLG51bGwhPT1lJiZudWxsIT10LnN0YXRlTm9kZSllLm1lbW9pemVkUHJvcHMhPT1yJiZpWSh0KTtlbHNle2lmKCFyKXtpZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjYpKTtyZXR1cm4gaUoodCksbnVsbH1pZihhPVouY3VycmVudCxyVCh0KSlySSh0LGEpO2Vsc2V7dmFyIGk9Y3AoRi5jdXJyZW50KTtzd2l0Y2goYSl7Y2FzZSAxOmE9aS5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLG8pO2JyZWFrO2Nhc2UgMjphPWkuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLG8pO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKG8pe2Nhc2VcInN2Z1wiOmE9aS5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLG8pO2JyZWFrO2Nhc2VcIm1hdGhcIjphPWkuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLG8pO2JyZWFrO2Nhc2VcInNjcmlwdFwiOihhPWkuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPVwiPHNjcmlwdD48XFwvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2JyZWFrO2Nhc2VcInNlbGVjdFwiOmE9XCJzdHJpbmdcIj09dHlwZW9mIHIuaXM/aS5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIse2lzOnIuaXN9KTppLmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiksci5tdWx0aXBsZT9hLm11bHRpcGxlPSEwOnIuc2l6ZSYmKGEuc2l6ZT1yLnNpemUpO2JyZWFrO2RlZmF1bHQ6YT1cInN0cmluZ1wiPT10eXBlb2Ygci5pcz9pLmNyZWF0ZUVsZW1lbnQobyx7aXM6ci5pc30pOmkuY3JlYXRlRWxlbWVudChvKX19YVtlRF09dCxhW2VMXT1yO2U6Zm9yKGk9dC5jaGlsZDtudWxsIT09aTspe2lmKDU9PT1pLnRhZ3x8Nj09PWkudGFnKWEuYXBwZW5kQ2hpbGQoaS5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PWkudGFnJiYyNyE9PWkudGFnJiZudWxsIT09aS5jaGlsZCl7aS5jaGlsZC5yZXR1cm49aSxpPWkuY2hpbGQ7Y29udGludWV9aWYoaT09PXQpYnJlYWs7Zm9yKDtudWxsPT09aS5zaWJsaW5nOyl7aWYobnVsbD09PWkucmV0dXJufHxpLnJldHVybj09PXQpYnJlYWsgZTtpPWkucmV0dXJufWkuc2libGluZy5yZXR1cm49aS5yZXR1cm4saT1pLnNpYmxpbmd9c3dpdGNoKHQuc3RhdGVOb2RlPWEsY3UoYSxvLHIpLG8pe2Nhc2VcImJ1dHRvblwiOmNhc2VcImlucHV0XCI6Y2FzZVwic2VsZWN0XCI6Y2FzZVwidGV4dGFyZWFcIjpyPSEhci5hdXRvRm9jdXM7YnJlYWs7Y2FzZVwiaW1nXCI6cj0hMDticmVhaztkZWZhdWx0OnI9ITF9ciYmaVkodCl9fXJldHVybiBpSih0KSxpSyh0LHQudHlwZSxudWxsPT09ZT9udWxsOmUubWVtb2l6ZWRQcm9wcyx0LnBlbmRpbmdQcm9wcyxuKSxudWxsO2Nhc2UgNjppZihlJiZudWxsIT10LnN0YXRlTm9kZSllLm1lbW9pemVkUHJvcHMhPT1yJiZpWSh0KTtlbHNle2lmKFwic3RyaW5nXCIhPXR5cGVvZiByJiZudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjYpKTtpZihlPUYuY3VycmVudCxyVCh0KSl7aWYoZT10LnN0YXRlTm9kZSxuPXQubWVtb2l6ZWRQcm9wcyxyPW51bGwsbnVsbCE9PShvPXJrKSlzd2l0Y2goby50YWcpe2Nhc2UgMjc6Y2FzZSA1OnI9by5tZW1vaXplZFByb3BzfWVbZURdPXQsKGU9ISEoZS5ub2RlVmFsdWU9PT1ufHxudWxsIT09ciYmITA9PT1yLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZ3x8Y2woZS5ub2RlVmFsdWUsbikpKXx8clAodCwhMCl9ZWxzZShlPWNwKGUpLmNyZWF0ZVRleHROb2RlKHIpKVtlRF09dCx0LnN0YXRlTm9kZT1lfXJldHVybiBpSih0KSxudWxsO2Nhc2UgMzE6aWYobj10Lm1lbW9pemVkU3RhdGUsbnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUpe2lmKHI9clQodCksbnVsbCE9PW4pe2lmKG51bGw9PT1lKXtpZighcil0aHJvdyBFcnJvcihsKDMxOCkpO2lmKCEoZT1udWxsIT09KGU9dC5tZW1vaXplZFN0YXRlKT9lLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IobCg1NTcpKTtlW2VEXT10fWVsc2UgckQoKSwwPT0oMTI4JnQuZmxhZ3MpJiYodC5tZW1vaXplZFN0YXRlPW51bGwpLHQuZmxhZ3N8PTQ7aUoodCksZT0hMX1lbHNlIG49ckwoKSxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmKGUubWVtb2l6ZWRTdGF0ZS5oeWRyYXRpb25FcnJvcnM9biksZT0hMDtpZighZSl7aWYoMjU2JnQuZmxhZ3MpcmV0dXJuIG9IKHQpLHQ7cmV0dXJuIG9IKHQpLG51bGx9aWYoMCE9KDEyOCZ0LmZsYWdzKSl0aHJvdyBFcnJvcihsKDU1OCkpfXJldHVybiBpSih0KSxudWxsO2Nhc2UgMTM6aWYocj10Lm1lbW9pemVkU3RhdGUsbnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYobz1yVCh0KSxudWxsIT09ciYmbnVsbCE9PXIuZGVoeWRyYXRlZCl7aWYobnVsbD09PWUpe2lmKCFvKXRocm93IEVycm9yKGwoMzE4KSk7aWYoIShvPW51bGwhPT0obz10Lm1lbW9pemVkU3RhdGUpP28uZGVoeWRyYXRlZDpudWxsKSl0aHJvdyBFcnJvcihsKDMxNykpO29bZURdPXR9ZWxzZSByRCgpLDA9PSgxMjgmdC5mbGFncykmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtpSih0KSxvPSExfWVsc2Ugbz1yTCgpLG51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiYoZS5tZW1vaXplZFN0YXRlLmh5ZHJhdGlvbkVycm9ycz1vKSxvPSEwO2lmKCFvKXtpZigyNTYmdC5mbGFncylyZXR1cm4gb0godCksdDtyZXR1cm4gb0godCksbnVsbH19aWYob0godCksMCE9KDEyOCZ0LmZsYWdzKSlyZXR1cm4gdC5sYW5lcz1uLHQ7cmV0dXJuIG49bnVsbCE9PXIsZT1udWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSxuJiYocj10LmNoaWxkLG89bnVsbCxudWxsIT09ci5hbHRlcm5hdGUmJm51bGwhPT1yLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlJiZudWxsIT09ci5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihvPXIuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGE9bnVsbCxudWxsIT09ci5tZW1vaXplZFN0YXRlJiZudWxsIT09ci5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKGE9ci5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxhIT09byYmKHIuZmxhZ3N8PTIwNDgpKSxuIT09ZSYmbiYmKHQuY2hpbGQuZmxhZ3N8PTgxOTIpLGlHKHQsdC51cGRhdGVRdWV1ZSksaUoodCksbnVsbDtjYXNlIDQ6cmV0dXJuIFYoKSxudWxsPT09ZSYmczkodC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksaUoodCksbnVsbDtjYXNlIDEwOnJldHVybiByRih0LnR5cGUpLGlKKHQpLG51bGw7Y2FzZSAxOTppZihSKG9WKSxudWxsPT09KHI9dC5tZW1vaXplZFN0YXRlKSlyZXR1cm4gaUoodCksbnVsbDtpZihvPTAhPSgxMjgmdC5mbGFncyksbnVsbD09PShhPXIucmVuZGVyaW5nKSlpZihvKWlRKHIsITEpO2Vsc2V7aWYoMCE9PWxWfHxudWxsIT09ZSYmMCE9KDEyOCZlLmZsYWdzKSlmb3IoZT10LmNoaWxkO251bGwhPT1lOyl7aWYobnVsbCE9PShhPW8kKGUpKSl7Zm9yKHQuZmxhZ3N8PTEyOCxpUShyLCExKSx0LnVwZGF0ZVF1ZXVlPWU9YS51cGRhdGVRdWV1ZSxpRyh0LGUpLHQuc3VidHJlZUZsYWdzPTAsZT1uLG49dC5jaGlsZDtudWxsIT09bjspcnIobixlKSxuPW4uc2libGluZztyZXR1cm4gTShvViwxJm9WLmN1cnJlbnR8MikscmomJnJBKHQsci50cmVlRm9ya0NvdW50KSx0LmNoaWxkfWU9ZS5zaWJsaW5nfW51bGwhPT1yLnRhaWwmJmVyKCk+bDEmJih0LmZsYWdzfD0xMjgsbz0hMCxpUShyLCExKSx0LmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIW8paWYobnVsbCE9PShlPW8kKGEpKSl7aWYodC5mbGFnc3w9MTI4LG89ITAsdC51cGRhdGVRdWV1ZT1lPWUudXBkYXRlUXVldWUsaUcodCxlKSxpUShyLCEwKSxudWxsPT09ci50YWlsJiZcImhpZGRlblwiPT09ci50YWlsTW9kZSYmIWEuYWx0ZXJuYXRlJiYhcmopcmV0dXJuIGlKKHQpLG51bGx9ZWxzZSAyKmVyKCktci5yZW5kZXJpbmdTdGFydFRpbWU+bDEmJjB4MjAwMDAwMDAhPT1uJiYodC5mbGFnc3w9MTI4LG89ITAsaVEociwhMSksdC5sYW5lcz00MTk0MzA0KTtyLmlzQmFja3dhcmRzPyhhLnNpYmxpbmc9dC5jaGlsZCx0LmNoaWxkPWEpOihudWxsIT09KGU9ci5sYXN0KT9lLnNpYmxpbmc9YTp0LmNoaWxkPWEsci5sYXN0PWEpfWlmKG51bGwhPT1yLnRhaWwpcmV0dXJuIGU9ci50YWlsLHIucmVuZGVyaW5nPWUsci50YWlsPWUuc2libGluZyxyLnJlbmRlcmluZ1N0YXJ0VGltZT1lcigpLGUuc2libGluZz1udWxsLG49b1YuY3VycmVudCxNKG9WLG8/MSZufDI6MSZuKSxyaiYmckEodCxyLnRyZWVGb3JrQ291bnQpLGU7cmV0dXJuIGlKKHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBvSCh0KSxvTigpLHI9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSxudWxsIT09ZT9udWxsIT09ZS5tZW1vaXplZFN0YXRlIT09ciYmKHQuZmxhZ3N8PTgxOTIpOnImJih0LmZsYWdzfD04MTkyKSxyPzAhPSgweDIwMDAwMDAwJm4pJiYwPT0oMTI4JnQuZmxhZ3MpJiYoaUoodCksNiZ0LnN1YnRyZWVGbGFncyYmKHQuZmxhZ3N8PTgxOTIpKTppSih0KSxudWxsIT09KG49dC51cGRhdGVRdWV1ZSkmJmlHKHQsbi5yZXRyeVF1ZXVlKSxuPW51bGwsbnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYobj1lLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLHI9bnVsbCxudWxsIT09dC5tZW1vaXplZFN0YXRlJiZudWxsIT09dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKHI9dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxyIT09biYmKHQuZmxhZ3N8PTIwNDgpLG51bGwhPT1lJiZSKHI3KSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG49bnVsbCxudWxsIT09ZSYmKG49ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSx0Lm1lbW9pemVkU3RhdGUuY2FjaGUhPT1uJiYodC5mbGFnc3w9MjA0OCksckYocjApLGlKKHQpLG51bGw7Y2FzZSAyNTpjYXNlIDMwOnJldHVybiBudWxsfXRocm93IEVycm9yKGwoMTU2LHQudGFnKSl9KHQuYWx0ZXJuYXRlLHQsbEgpO2lmKG51bGwhPT1uKXtsTj1uO3JldHVybn1pZihudWxsIT09KHQ9dC5zaWJsaW5nKSl7bE49dDtyZXR1cm59bE49dD1lfXdoaWxlKG51bGwhPT10KTswPT09bFYmJihsVj01KX1mdW5jdGlvbiBzdyhlLHQpe2Rve3ZhciBuPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHJDKHQpLHQudGFnKXtjYXNlIDE6cmV0dXJuIDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMzpyZXR1cm4gckYocjApLFYoKSwwIT0oNjU1MzYmKGU9dC5mbGFncykpJiYwPT0oMTI4JmUpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6cmV0dXJuIFcodCksbnVsbDtjYXNlIDMxOmlmKG51bGwhPT10Lm1lbW9pemVkU3RhdGUpe2lmKG9IKHQpLG51bGw9PT10LmFsdGVybmF0ZSl0aHJvdyBFcnJvcihsKDM0MCkpO3JEKCl9cmV0dXJuIDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMTM6aWYob0godCksbnVsbCE9PShlPXQubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT1lLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT10LmFsdGVybmF0ZSl0aHJvdyBFcnJvcihsKDM0MCkpO3JEKCl9cmV0dXJuIDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMTk6cmV0dXJuIFIob1YpLG51bGw7Y2FzZSA0OnJldHVybiBWKCksbnVsbDtjYXNlIDEwOnJldHVybiByRih0LnR5cGUpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBvSCh0KSxvTigpLG51bGwhPT1lJiZSKHI3KSw2NTUzNiYoZT10LmZsYWdzKT8odC5mbGFncz0tNjU1MzcmZXwxMjgsdCk6bnVsbDtjYXNlIDI0OnJldHVybiByRihyMCksbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX0oZS5hbHRlcm5hdGUsZSk7aWYobnVsbCE9PW4pe24uZmxhZ3MmPTMyNzY3LGxOPW47cmV0dXJufWlmKG51bGwhPT0obj1lLnJldHVybikmJihuLmZsYWdzfD0zMjc2OCxuLnN1YnRyZWVGbGFncz0wLG4uZGVsZXRpb25zPW51bGwpLCF0JiZudWxsIT09KGU9ZS5zaWJsaW5nKSl7bE49ZTtyZXR1cm59bE49ZT1ufXdoaWxlKG51bGwhPT1lKTtsVj02LGxOPW51bGx9ZnVuY3Rpb24gc0MoZSx0LG4scixvLGEsaSxzLGMpe2UuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsO2RvIHNTKCk7d2hpbGUoMCE9PWw1KTtpZigwIT0oNiZsRCkpdGhyb3cgRXJyb3IobCgzMjcpKTtpZihudWxsIT09dCl7aWYodD09PWUuY3VycmVudCl0aHJvdyBFcnJvcihsKDE3NykpO2lmKCFmdW5jdGlvbihlLHQsbixyLG8sYSl7dmFyIGk9ZS5wZW5kaW5nTGFuZXM7ZS5wZW5kaW5nTGFuZXM9bixlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUud2FybUxhbmVzPTAsZS5leHBpcmVkTGFuZXMmPW4sZS5lbnRhbmdsZWRMYW5lcyY9bixlLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzJj1uLGUuc2hlbGxTdXNwZW5kQ291bnRlcj0wO3ZhciBsPWUuZW50YW5nbGVtZW50cyxzPWUuZXhwaXJhdGlvblRpbWVzLGM9ZS5oaWRkZW5VcGRhdGVzO2ZvcihuPWkmfm47MDxuOyl7dmFyIHU9MzEtZW0obiksZD0xPDx1O2xbdV09MCxzW3VdPS0xO3ZhciBmPWNbdV07aWYobnVsbCE9PWYpZm9yKGNbdV09bnVsbCx1PTA7dTxmLmxlbmd0aDt1Kyspe3ZhciBwPWZbdV07bnVsbCE9PXAmJihwLmxhbmUmPS0weDIwMDAwMDAxKX1uJj1+ZH0wIT09ciYmZWooZSxyLDApLDAhPT1hJiYwPT09byYmMCE9PWUudGFnJiYoZS5zdXNwZW5kZWRMYW5lc3w9YSZ+KGkmfnQpKX0oZSxuLGE9dC5sYW5lc3x0LmNoaWxkTGFuZXN8bjEsaSxzLGMpLGU9PT1sTCYmKGxOPWxMPW51bGwsbFI9MCksbDY9dCxsMz1lLGw5PW4sbDg9YSxsNz1vLHNlPXIsMCE9KDEwMjU2JnQuc3VidHJlZUZsYWdzKXx8MCE9KDEwMjU2JnQuZmxhZ3MpPyhlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wLEooZWwsZnVuY3Rpb24oKXtyZXR1cm4gc08oITApLG51bGx9KSk6KGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTApLHI9MCE9KDEzODc4JnQuZmxhZ3MpLDAhPSgxMzg3OCZ0LnN1YnRyZWVGbGFncyl8fHIpe3I9SS5ULEkuVD1udWxsLG89ei5wLHoucD0yLGk9bEQsbER8PTQ7dHJ5eyFmdW5jdGlvbihlLHQpe2lmKGU9ZS5jb250YWluZXJJbmZvLGNkPXVvLG5CKGU9bk8oZSkpKXtpZihcInNlbGVjdGlvblN0YXJ0XCJpbiBlKXZhciBuPXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBlOnt2YXIgcj0obj0obj1lLm93bmVyRG9jdW1lbnQpJiZuLmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbiYmbi5nZXRTZWxlY3Rpb24oKTtpZihyJiYwIT09ci5yYW5nZUNvdW50KXtuPXIuYW5jaG9yTm9kZTt2YXIgbyxhPXIuYW5jaG9yT2Zmc2V0LGk9ci5mb2N1c05vZGU7cj1yLmZvY3VzT2Zmc2V0O3RyeXtuLm5vZGVUeXBlLGkubm9kZVR5cGV9Y2F0Y2goZSl7bj1udWxsO2JyZWFrIGV9dmFyIHM9MCxjPS0xLHU9LTEsZD0wLGY9MCxwPWUsaD1udWxsO3Q6Zm9yKDs7KXtmb3IoO3AhPT1ufHwwIT09YSYmMyE9PXAubm9kZVR5cGV8fChjPXMrYSkscCE9PWl8fDAhPT1yJiYzIT09cC5ub2RlVHlwZXx8KHU9cytyKSwzPT09cC5ub2RlVHlwZSYmKHMrPXAubm9kZVZhbHVlLmxlbmd0aCksbnVsbCE9PShvPXAuZmlyc3RDaGlsZCk7KWg9cCxwPW87Zm9yKDs7KXtpZihwPT09ZSlicmVhayB0O2lmKGg9PT1uJiYrK2Q9PT1hJiYoYz1zKSxoPT09aSYmKytmPT09ciYmKHU9cyksbnVsbCE9PShvPXAubmV4dFNpYmxpbmcpKWJyZWFrO2g9KHA9aCkucGFyZW50Tm9kZX1wPW99bj0tMT09PWN8fC0xPT09dT9udWxsOntzdGFydDpjLGVuZDp1fX1lbHNlIG49bnVsbH1uPW58fHtzdGFydDowLGVuZDowfX1lbHNlIG49bnVsbDtmb3IoY2Y9e2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6bn0sdW89ITEsbGw9dDtudWxsIT09bGw7KWlmKGU9KHQ9bGwpLmNoaWxkLDAhPSgxMDI0JnQuc3VidHJlZUZsYWdzKSYmbnVsbCE9PWUpZS5yZXR1cm49dCxsbD1lO2Vsc2UgZm9yKDtudWxsIT09bGw7KXtzd2l0Y2goaT0odD1sbCkuYWx0ZXJuYXRlLGU9dC5mbGFncyx0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpjYXNlIDU6Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztjYXNlIDE6aWYoMCE9KDEwMjQmZSkmJm51bGwhPT1pKXtlPXZvaWQgMCxuPXQsYT1pLm1lbW9pemVkUHJvcHMsaT1pLm1lbW9pemVkU3RhdGUscj1uLnN0YXRlTm9kZTt0cnl7dmFyIG09aWMobi50eXBlLGEpO2U9ci5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShtLGkpLHIuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9ZX1jYXRjaChlKXtzUChuLG4ucmV0dXJuLGUpfX1icmVhaztjYXNlIDM6aWYoMCE9KDEwMjQmZSkpe2lmKDk9PT0obj0oZT10LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKS5ub2RlVHlwZSkpY0UoZSk7ZWxzZSBpZigxPT09bilzd2l0Y2goZS5ub2RlTmFtZSl7Y2FzZVwiSEVBRFwiOmNhc2VcIkhUTUxcIjpjYXNlXCJCT0RZXCI6Y0UoZSk7YnJlYWs7ZGVmYXVsdDplLnRleHRDb250ZW50PVwiXCJ9fWJyZWFrO2RlZmF1bHQ6aWYoMCE9KDEwMjQmZSkpdGhyb3cgRXJyb3IobCgxNjMpKX1pZihudWxsIT09KGU9dC5zaWJsaW5nKSl7ZS5yZXR1cm49dC5yZXR1cm4sbGw9ZTticmVha31sbD10LnJldHVybn19KGUsdCxuKX1maW5hbGx5e2xEPWksei5wPW8sSS5UPXJ9fWw1PTEsc18oKSxzaygpLHNFKCl9fWZ1bmN0aW9uIHNfKCl7aWYoMT09PWw1KXtsNT0wO3ZhciBlPWwzLHQ9bDYsbj0wIT0oMTM4NzgmdC5mbGFncyk7aWYoMCE9KDEzODc4JnQuc3VidHJlZUZsYWdzKXx8bil7bj1JLlQsSS5UPW51bGw7dmFyIHI9ei5wO3oucD0yO3ZhciBvPWxEO2xEfD00O3RyeXtsdih0LGUpO3ZhciBhPWNmLGk9bk8oZS5jb250YWluZXJJbmZvKSxsPWEuZm9jdXNlZEVsZW0scz1hLnNlbGVjdGlvblJhbmdlO2lmKGkhPT1sJiZsJiZsLm93bmVyRG9jdW1lbnQmJmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4hIXQmJiEhbiYmKHQ9PT1ufHwoIXR8fDMhPT10Lm5vZGVUeXBlKSYmKG4mJjM9PT1uLm5vZGVUeXBlP2UodCxuLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIHQ/dC5jb250YWlucyhuKTohIXQuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2JnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKSl9KGwub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbCkpe2lmKG51bGwhPT1zJiZuQihsKSl7dmFyIGM9cy5zdGFydCx1PXMuZW5kO2lmKHZvaWQgMD09PXUmJih1PWMpLFwic2VsZWN0aW9uU3RhcnRcImluIGwpbC5zZWxlY3Rpb25TdGFydD1jLGwuc2VsZWN0aW9uRW5kPU1hdGgubWluKHUsbC52YWx1ZS5sZW5ndGgpO2Vsc2V7dmFyIGQ9bC5vd25lckRvY3VtZW50fHxkb2N1bWVudCxmPWQmJmQuZGVmYXVsdFZpZXd8fHdpbmRvdztpZihmLmdldFNlbGVjdGlvbil7dmFyIHA9Zi5nZXRTZWxlY3Rpb24oKSxoPWwudGV4dENvbnRlbnQubGVuZ3RoLG09TWF0aC5taW4ocy5zdGFydCxoKSxnPXZvaWQgMD09PXMuZW5kP206TWF0aC5taW4ocy5lbmQsaCk7IXAuZXh0ZW5kJiZtPmcmJihpPWcsZz1tLG09aSk7dmFyIHk9blMobCxtKSx2PW5TKGwsZyk7aWYoeSYmdiYmKDEhPT1wLnJhbmdlQ291bnR8fHAuYW5jaG9yTm9kZSE9PXkubm9kZXx8cC5hbmNob3JPZmZzZXQhPT15Lm9mZnNldHx8cC5mb2N1c05vZGUhPT12Lm5vZGV8fHAuZm9jdXNPZmZzZXQhPT12Lm9mZnNldCkpe3ZhciBiPWQuY3JlYXRlUmFuZ2UoKTtiLnNldFN0YXJ0KHkubm9kZSx5Lm9mZnNldCkscC5yZW1vdmVBbGxSYW5nZXMoKSxtPmc/KHAuYWRkUmFuZ2UoYikscC5leHRlbmQodi5ub2RlLHYub2Zmc2V0KSk6KGIuc2V0RW5kKHYubm9kZSx2Lm9mZnNldCkscC5hZGRSYW5nZShiKSl9fX19Zm9yKGQ9W10scD1sO3A9cC5wYXJlbnROb2RlOykxPT09cC5ub2RlVHlwZSYmZC5wdXNoKHtlbGVtZW50OnAsbGVmdDpwLnNjcm9sbExlZnQsdG9wOnAuc2Nyb2xsVG9wfSk7Zm9yKFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuZm9jdXMmJmwuZm9jdXMoKSxsPTA7bDxkLmxlbmd0aDtsKyspe3ZhciBBPWRbbF07QS5lbGVtZW50LnNjcm9sbExlZnQ9QS5sZWZ0LEEuZWxlbWVudC5zY3JvbGxUb3A9QS50b3B9fXVvPSEhY2QsY2Y9Y2Q9bnVsbH1maW5hbGx5e2xEPW8sei5wPXIsSS5UPW59fWUuY3VycmVudD10LGw1PTJ9fWZ1bmN0aW9uIHNrKCl7aWYoMj09PWw1KXtsNT0wO3ZhciBlPWwzLHQ9bDYsbj0wIT0oODc3MiZ0LmZsYWdzKTtpZigwIT0oODc3MiZ0LnN1YnRyZWVGbGFncyl8fG4pe249SS5ULEkuVD1udWxsO3ZhciByPXoucDt6LnA9Mjt2YXIgbz1sRDtsRHw9NDt0cnl7bHMoZSx0LmFsdGVybmF0ZSx0KX1maW5hbGx5e2xEPW8sei5wPXIsSS5UPW59fWw1PTN9fWZ1bmN0aW9uIHNFKCl7aWYoND09PWw1fHwzPT09bDUpe2w1PTAsZW4oKTt2YXIgZT1sMyx0PWw2LG49bDkscj1zZTswIT0oMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpfHwwIT0oMTAyNTYmdC5mbGFncyk/bDU9NToobDU9MCxsNj1sMz1udWxsLHNqKGUsZS5wZW5kaW5nTGFuZXMpKTt2YXIgbz1lLnBlbmRpbmdMYW5lcztpZigwPT09byYmKGw0PW51bGwpLGVQKG4pLHQ9dC5zdGF0ZU5vZGUsZXAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGVwLm9uQ29tbWl0RmliZXJSb290KXRyeXtlcC5vbkNvbW1pdEZpYmVyUm9vdChlZix0LHZvaWQgMCwxMjg9PSgxMjgmdC5jdXJyZW50LmZsYWdzKSl9Y2F0Y2goZSl7fWlmKG51bGwhPT1yKXt0PUkuVCxvPXoucCx6LnA9MixJLlQ9bnVsbDt0cnl7Zm9yKHZhciBhPWUub25SZWNvdmVyYWJsZUVycm9yLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGw9cltpXTthKGwudmFsdWUse2NvbXBvbmVudFN0YWNrOmwuc3RhY2t9KX19ZmluYWxseXtJLlQ9dCx6LnA9b319MCE9KDMmbDkpJiZzUygpLHNxKGUpLG89ZS5wZW5kaW5nTGFuZXMsMCE9KDQxOTQwOTAmbikmJjAhPSg0MiZvKT9lPT09c24/c3QrKzooc3Q9MCxzbj1lKTpzdD0wLHNIKDAsITEpfX1mdW5jdGlvbiBzaihlLHQpezA9PShlLnBvb2xlZENhY2hlTGFuZXMmPXQpJiZudWxsIT0odD1lLnBvb2xlZENhY2hlKSYmKGUucG9vbGVkQ2FjaGU9bnVsbCxyMih0KSl9ZnVuY3Rpb24gc1MoZSl7cmV0dXJuIHNfKCksc2soKSxzRSgpLHNPKGUpfWZ1bmN0aW9uIHNPKCl7aWYoNSE9PWw1KXJldHVybiExO3ZhciBlPWwzLHQ9bDg7bDg9MDt2YXIgbj1lUChsOSkscj1JLlQsbz16LnA7dHJ5e3oucD0zMj5uPzMyOm4sSS5UPW51bGwsbj1sNyxsNz1udWxsO3ZhciBhPWwzLGk9bDk7aWYobDU9MCxsNj1sMz1udWxsLGw5PTAsMCE9KDYmbEQpKXRocm93IEVycm9yKGwoMzMxKSk7dmFyIHM9bEQ7aWYobER8PTQsbFAoYS5jdXJyZW50KSxsXyhhLGEuY3VycmVudCxpLG4pLGxEPXMsc0goMCwhMSksZXAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGVwLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7ZXAub25Qb3N0Q29tbWl0RmliZXJSb290KGVmLGEpfWNhdGNoKGUpe31yZXR1cm4hMH1maW5hbGx5e3oucD1vLEkuVD1yLHNqKGUsdCl9fWZ1bmN0aW9uIHNCKGUsdCxuKXt0PXJ1KG4sdCksdD1pZyhlLnN0YXRlTm9kZSx0LDIpLG51bGwhPT0oZT1vayhlLHQsMikpJiYoZUUoZSwyKSxzcShlKSl9ZnVuY3Rpb24gc1AoZSx0LG4pe2lmKDM9PT1lLnRhZylzQihlLGUsbik7ZWxzZSBmb3IoO251bGwhPT10Oyl7aWYoMz09PXQudGFnKXtzQih0LGUsbik7YnJlYWt9aWYoMT09PXQudGFnKXt2YXIgcj10LnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PWw0fHwhbDQuaGFzKHIpKSl7ZT1ydShuLGUpLG51bGwhPT0ocj1vayh0LG49aXkoMiksMikpJiYoaXYobixyLHQsZSksZUUociwyKSxzcShyKSk7YnJlYWt9fXQ9dC5yZXR1cm59fWZ1bmN0aW9uIHNJKGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtpZihudWxsPT09cil7cj1lLnBpbmdDYWNoZT1uZXcgbFQ7dmFyIG89bmV3IFNldDtyLnNldCh0LG8pfWVsc2Ugdm9pZCAwPT09KG89ci5nZXQodCkpJiYobz1uZXcgU2V0LHIuc2V0KHQsbykpO28uaGFzKG4pfHwobHE9ITAsby5hZGQobiksZT1zei5iaW5kKG51bGwsZSx0LG4pLHQudGhlbihlLGUpKX1mdW5jdGlvbiBzeihlLHQsbil7dmFyIHI9ZS5waW5nQ2FjaGU7bnVsbCE9PXImJnIuZGVsZXRlKHQpLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmbixlLndhcm1MYW5lcyY9fm4sbEw9PT1lJiYobFImbik9PT1uJiYoND09PWxWfHwzPT09bFYmJigweDNjMDAwMDAmbFIpPT09bFImJjMwMD5lcigpLWwwPzA9PSgyJmxEKSYmc2QoZSwwKTpsWXw9bixsWD09PWxSJiYobFg9MCkpLHNxKGUpfWZ1bmN0aW9uIHNUKGUsdCl7MD09PXQmJih0PWVfKCkpLG51bGwhPT0oZT1uMyhlLHQpKSYmKGVFKGUsdCksc3EoZSkpfWZ1bmN0aW9uIHNEKGUpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZSxuPTA7bnVsbCE9PXQmJihuPXQucmV0cnlMYW5lKSxzVChlLG4pfWZ1bmN0aW9uIHNMKGUsdCl7dmFyIG49MDtzd2l0Y2goZS50YWcpe2Nhc2UgMzE6Y2FzZSAxMzp2YXIgcj1lLnN0YXRlTm9kZSxvPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09byYmKG49by5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6cj1lLnN0YXRlTm9kZTticmVhaztjYXNlIDIyOnI9ZS5zdGF0ZU5vZGUuX3JldHJ5Q2FjaGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDMxNCkpfW51bGwhPT1yJiZyLmRlbGV0ZSh0KSxzVChlLG4pfXZhciBzTj1udWxsLHNSPW51bGwsc009ITEsc1o9ITEsc1U9ITEsc0Y9MDtmdW5jdGlvbiBzcShlKXtlIT09c1ImJm51bGw9PT1lLm5leHQmJihudWxsPT09c1I/c049c1I9ZTpzUj1zUi5uZXh0PWUpLHNaPSEwLHNNfHwoc009ITAsY3goZnVuY3Rpb24oKXswIT0oNiZsRCk/SihlYSxzVik6cyQoKX0pKX1mdW5jdGlvbiBzSChlLHQpe2lmKCFzVSYmc1ope3NVPSEwO2RvIGZvcih2YXIgbj0hMSxyPXNOO251bGwhPT1yOyl7aWYoIXQpaWYoMCE9PWUpe3ZhciBvPXIucGVuZGluZ0xhbmVzO2lmKDA9PT1vKXZhciBhPTA7ZWxzZXt2YXIgaT1yLnN1c3BlbmRlZExhbmVzLGw9ci5waW5nZWRMYW5lczthPTB4YzAwMDA5NSYoYT0oMTw8MzEtZW0oNDJ8ZSkrMSktMSYobyZ+KGkmfmwpKSk/MHhjMDAwMDk1JmF8MTphPzJ8YTowfTAhPT1hJiYobj0hMCxzSyhyLGEpKX1lbHNlIGE9bFIsMD09KDMmKGE9ZXgocixyPT09bEw/YTowLG51bGwhPT1yLmNhbmNlbFBlbmRpbmdDb21taXR8fC0xIT09ci50aW1lb3V0SGFuZGxlKSkpfHxldyhyLGEpfHwobj0hMCxzSyhyLGEpKTtyPXIubmV4dH13aGlsZShuKTtzVT0hMX19ZnVuY3Rpb24gc1YoKXtzJCgpfWZ1bmN0aW9uIHMkKCl7c1o9c009ITE7dmFyIGUsdD0wOzA9PT1zRnx8KChlPXdpbmRvdy5ldmVudCkmJlwicG9wc3RhdGVcIj09PWUudHlwZT9lPT09Y3l8fChjeT1lLDApOihjeT1udWxsLDEpKXx8KHQ9c0YpO2Zvcih2YXIgbj1lcigpLHI9bnVsbCxvPXNOO251bGwhPT1vOyl7dmFyIGE9by5uZXh0LGk9c1cobyxuKTswPT09aT8oby5uZXh0PW51bGwsbnVsbD09PXI/c049YTpyLm5leHQ9YSxudWxsPT09YSYmKHNSPXIpKToocj1vLCgwIT09dHx8MCE9KDMmaSkpJiYoc1o9ITApKSxvPWF9MCE9PWw1JiY1IT09bDV8fHNIKHQsITEpLDAhPT1zRiYmKHNGPTApfWZ1bmN0aW9uIHNXKGUsdCl7Zm9yKHZhciBuPWUuc3VzcGVuZGVkTGFuZXMscj1lLnBpbmdlZExhbmVzLG89ZS5leHBpcmF0aW9uVGltZXMsYT0tMHgzYzAwMDAxJmUucGVuZGluZ0xhbmVzOzA8YTspe3ZhciBpPTMxLWVtKGEpLGw9MTw8aSxzPW9baV07LTE9PT1zPygwPT0obCZuKXx8MCE9KGwmcikpJiYob1tpXT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDg6Y2FzZSA2NDpyZXR1cm4gdCsyNTA7Y2FzZSAxNjpjYXNlIDMyOmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiB0KzVlMztkZWZhdWx0OnJldHVybiAtMX19KGwsdCkpOnM8PXQmJihlLmV4cGlyZWRMYW5lc3w9bCksYSY9fmx9aWYodD1sTCxuPWxSLG49ZXgoZSxlPT09dD9uOjAsbnVsbCE9PWUuY2FuY2VsUGVuZGluZ0NvbW1pdHx8LTEhPT1lLnRpbWVvdXRIYW5kbGUpLHI9ZS5jYWxsYmFja05vZGUsMD09PW58fGU9PT10JiYoMj09PWxNfHw5PT09bE0pfHxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0KXJldHVybiBudWxsIT09ciYmbnVsbCE9PXImJmVlKHIpLGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTA7aWYoMD09KDMmbil8fGV3KGUsbikpe2lmKCh0PW4mLW4pPT09ZS5jYWxsYmFja1ByaW9yaXR5KXJldHVybiB0O3N3aXRjaChudWxsIT09ciYmZWUociksZVAobikpe2Nhc2UgMjpjYXNlIDg6bj1laTticmVhaztjYXNlIDMyOmRlZmF1bHQ6bj1lbDticmVhaztjYXNlIDB4MTAwMDAwMDA6bj1lY31yZXR1cm4gbj1KKG4scj1zWS5iaW5kKG51bGwsZSkpLGUuY2FsbGJhY2tQcmlvcml0eT10LGUuY2FsbGJhY2tOb2RlPW4sdH1yZXR1cm4gbnVsbCE9PXImJm51bGwhPT1yJiZlZShyKSxlLmNhbGxiYWNrUHJpb3JpdHk9MixlLmNhbGxiYWNrTm9kZT1udWxsLDJ9ZnVuY3Rpb24gc1koZSx0KXtpZigwIT09bDUmJjUhPT1sNSlyZXR1cm4gZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MCxudWxsO3ZhciBuPWUuY2FsbGJhY2tOb2RlO2lmKHNTKCEwKSYmZS5jYWxsYmFja05vZGUhPT1uKXJldHVybiBudWxsO3ZhciByPWxSO3JldHVybiAwPT09KHI9ZXgoZSxlPT09bEw/cjowLG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXR8fC0xIT09ZS50aW1lb3V0SGFuZGxlKSk/bnVsbDooc2koZSxyLHQpLHNXKGUsZXIoKSksbnVsbCE9ZS5jYWxsYmFja05vZGUmJmUuY2FsbGJhY2tOb2RlPT09bj9zWS5iaW5kKG51bGwsZSk6bnVsbCl9ZnVuY3Rpb24gc0soZSx0KXtpZihzUygpKXJldHVybiBudWxsO3NpKGUsdCwhMCl9ZnVuY3Rpb24gc1goKXtpZigwPT09c0Ype3ZhciBlPXIzO3NGPTAhPT1lP2U6ZUMoKX1yZXR1cm4gc0Z9ZnVuY3Rpb24gc0coZSl7cmV0dXJuIG51bGw9PWV8fFwic3ltYm9sXCI9PXR5cGVvZiBlfHxcImJvb2xlYW5cIj09dHlwZW9mIGU/bnVsbDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6dG0oXCJcIitlKX1mdW5jdGlvbiBzUShlLHQpe3ZhciBuPXQub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7cmV0dXJuIG4ubmFtZT10Lm5hbWUsbi52YWx1ZT10LnZhbHVlLGUuaWQmJm4uc2V0QXR0cmlidXRlKFwiZm9ybVwiLGUuaWQpLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobix0KSxlPW5ldyBGb3JtRGF0YShlKSxuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobiksZX1mb3IodmFyIHNKPTA7c0o8blgubGVuZ3RoO3NKKyspe3ZhciBzMD1uWFtzSl07bkcoczAudG9Mb3dlckNhc2UoKSxcIm9uXCIrKHMwWzBdLnRvVXBwZXJDYXNlKCkrczAuc2xpY2UoMSkpKX1uRyhuRixcIm9uQW5pbWF0aW9uRW5kXCIpLG5HKG5xLFwib25BbmltYXRpb25JdGVyYXRpb25cIiksbkcobkgsXCJvbkFuaW1hdGlvblN0YXJ0XCIpLG5HKFwiZGJsY2xpY2tcIixcIm9uRG91YmxlQ2xpY2tcIiksbkcoXCJmb2N1c2luXCIsXCJvbkZvY3VzXCIpLG5HKFwiZm9jdXNvdXRcIixcIm9uQmx1clwiKSxuRyhuVixcIm9uVHJhbnNpdGlvblJ1blwiKSxuRyhuJCxcIm9uVHJhbnNpdGlvblN0YXJ0XCIpLG5HKG5XLFwib25UcmFuc2l0aW9uQ2FuY2VsXCIpLG5HKG5ZLFwib25UcmFuc2l0aW9uRW5kXCIpLGVRKFwib25Nb3VzZUVudGVyXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSksZVEoXCJvbk1vdXNlTGVhdmVcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKSxlUShcIm9uUG9pbnRlckVudGVyXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pLGVRKFwib25Qb2ludGVyTGVhdmVcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSksZUcoXCJvbkNoYW5nZVwiLFwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpLGVHKFwib25TZWxlY3RcIixcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSksZUcoXCJvbkJlZm9yZUlucHV0XCIsW1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdKSxlRyhcIm9uQ29tcG9zaXRpb25FbmRcIixcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKSxlRyhcIm9uQ29tcG9zaXRpb25TdGFydFwiLFwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSksZUcoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIHMxPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksczI9bmV3IFNldChcImJlZm9yZXRvZ2dsZSBjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCBzY3JvbGxlbmQgdG9nZ2xlXCIuc3BsaXQoXCIgXCIpLmNvbmNhdChzMSkpO2Z1bmN0aW9uIHM0KGUsdCl7dD0wIT0oNCZ0KTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXSxvPXIuZXZlbnQ7cj1yLmxpc3RlbmVycztlOnt2YXIgYT12b2lkIDA7aWYodClmb3IodmFyIGk9ci5sZW5ndGgtMTswPD1pO2ktLSl7dmFyIGw9cltpXSxzPWwuaW5zdGFuY2UsYz1sLmN1cnJlbnRUYXJnZXQ7aWYobD1sLmxpc3RlbmVyLHMhPT1hJiZvLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTthPWwsby5jdXJyZW50VGFyZ2V0PWM7dHJ5e2Eobyl9Y2F0Y2goZSl7blEoZSl9by5jdXJyZW50VGFyZ2V0PW51bGwsYT1zfWVsc2UgZm9yKGk9MDtpPHIubGVuZ3RoO2krKyl7aWYocz0obD1yW2ldKS5pbnN0YW5jZSxjPWwuY3VycmVudFRhcmdldCxsPWwubGlzdGVuZXIscyE9PWEmJm8uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO2E9bCxvLmN1cnJlbnRUYXJnZXQ9Yzt0cnl7YShvKX1jYXRjaChlKXtuUShlKX1vLmN1cnJlbnRUYXJnZXQ9bnVsbCxhPXN9fX19ZnVuY3Rpb24gczUoZSx0KXt2YXIgbj10W2VSXTt2b2lkIDA9PT1uJiYobj10W2VSXT1uZXcgU2V0KTt2YXIgcj1lK1wiX19idWJibGVcIjtuLmhhcyhyKXx8KHM4KHQsZSwyLCExKSxuLmFkZChyKSl9ZnVuY3Rpb24gczMoZSx0LG4pe3ZhciByPTA7dCYmKHJ8PTQpLHM4KG4sZSxyLHQpfXZhciBzNj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHM5KGUpe2lmKCFlW3M2XSl7ZVtzNl09ITAsZUsuZm9yRWFjaChmdW5jdGlvbih0KXtcInNlbGVjdGlvbmNoYW5nZVwiIT09dCYmKHMyLmhhcyh0KXx8czModCwhMSxlKSxzMyh0LCEwLGUpKX0pO3ZhciB0PTk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50O251bGw9PT10fHx0W3M2XXx8KHRbczZdPSEwLHMzKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsdCkpfX1mdW5jdGlvbiBzOChlLHQsbixyKXtzd2l0Y2godWQodCkpe2Nhc2UgMjp2YXIgbz11YTticmVhaztjYXNlIDg6bz11aTticmVhaztkZWZhdWx0Om89dWx9bj1vLmJpbmQobnVsbCx0LG4sZSksbz12b2lkIDAsdEUmJihcInRvdWNoc3RhcnRcIj09PXR8fFwidG91Y2htb3ZlXCI9PT10fHxcIndoZWVsXCI9PT10KSYmKG89ITApLHI/dm9pZCAwIT09bz9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHtjYXB0dXJlOiEwLHBhc3NpdmU6b30pOmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITApOnZvaWQgMCE9PW8/ZS5hZGRFdmVudExpc3RlbmVyKHQsbix7cGFzc2l2ZTpvfSk6ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSl9ZnVuY3Rpb24gczcoZSx0LG4scixvKXt2YXIgYT1yO2lmKDA9PSgxJnQpJiYwPT0oMiZ0KSYmbnVsbCE9PXIpZTpmb3IoOzspe2lmKG51bGw9PT1yKXJldHVybjt2YXIgaT1yLnRhZztpZigzPT09aXx8ND09PWkpe3ZhciBsPXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYobD09PW8pYnJlYWs7aWYoND09PWkpZm9yKGk9ci5yZXR1cm47bnVsbCE9PWk7KXt2YXIgYz1pLnRhZztpZigoMz09PWN8fDQ9PT1jKSYmaS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PW8pcmV0dXJuO2k9aS5yZXR1cm59Zm9yKDtudWxsIT09bDspe2lmKG51bGw9PT0oaT1lSChsKSkpcmV0dXJuO2lmKDU9PT0oYz1pLnRhZyl8fDY9PT1jfHwyNj09PWN8fDI3PT09Yyl7cj1hPWk7Y29udGludWUgZX1sPWwucGFyZW50Tm9kZX19cj1yLnJldHVybn10QyhmdW5jdGlvbigpe3ZhciByPWEsbz10dihuKSxpPVtdO2U6e3ZhciBsPW5LLmdldChlKTtpZih2b2lkIDAhPT1sKXt2YXIgYz10Rix1PWU7c3dpdGNoKGUpe2Nhc2VcImtleXByZXNzXCI6aWYoMD09PXRJKG4pKWJyZWFrIGU7Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXVwXCI6Yz10NDticmVhaztjYXNlXCJmb2N1c2luXCI6dT1cImZvY3VzXCIsYz10WTticmVhaztjYXNlXCJmb2N1c291dFwiOnU9XCJibHVyXCIsYz10WTticmVhaztjYXNlXCJiZWZvcmVibHVyXCI6Y2FzZVwiYWZ0ZXJibHVyXCI6Yz10WTticmVhaztjYXNlXCJjbGlja1wiOmlmKDI9PT1uLmJ1dHRvbilicmVhayBlO2Nhc2VcImF1eGNsaWNrXCI6Y2FzZVwiZGJsY2xpY2tcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJtb3VzZW1vdmVcIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwibW91c2VvdXRcIjpjYXNlXCJtb3VzZW92ZXJcIjpjYXNlXCJjb250ZXh0bWVudVwiOmM9dCQ7YnJlYWs7Y2FzZVwiZHJhZ1wiOmNhc2VcImRyYWdlbmRcIjpjYXNlXCJkcmFnZW50ZXJcIjpjYXNlXCJkcmFnZXhpdFwiOmNhc2VcImRyYWdsZWF2ZVwiOmNhc2VcImRyYWdvdmVyXCI6Y2FzZVwiZHJhZ3N0YXJ0XCI6Y2FzZVwiZHJvcFwiOmM9dFc7YnJlYWs7Y2FzZVwidG91Y2hjYW5jZWxcIjpjYXNlXCJ0b3VjaGVuZFwiOmNhc2VcInRvdWNobW92ZVwiOmNhc2VcInRvdWNoc3RhcnRcIjpjPXQzO2JyZWFrO2Nhc2UgbkY6Y2FzZSBucTpjYXNlIG5IOmM9dEs7YnJlYWs7Y2FzZSBuWTpjPXQ2O2JyZWFrO2Nhc2VcInNjcm9sbFwiOmNhc2VcInNjcm9sbGVuZFwiOmM9dEg7YnJlYWs7Y2FzZVwid2hlZWxcIjpjPXQ5O2JyZWFrO2Nhc2VcImNvcHlcIjpjYXNlXCJjdXRcIjpjYXNlXCJwYXN0ZVwiOmM9dFg7YnJlYWs7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJwb2ludGVyY2FuY2VsXCI6Y2FzZVwicG9pbnRlcmRvd25cIjpjYXNlXCJwb2ludGVybW92ZVwiOmNhc2VcInBvaW50ZXJvdXRcIjpjYXNlXCJwb2ludGVyb3ZlclwiOmNhc2VcInBvaW50ZXJ1cFwiOmM9dDU7YnJlYWs7Y2FzZVwidG9nZ2xlXCI6Y2FzZVwiYmVmb3JldG9nZ2xlXCI6Yz10OH12YXIgZD0wIT0oNCZ0KSxmPSFkJiYoXCJzY3JvbGxcIj09PWV8fFwic2Nyb2xsZW5kXCI9PT1lKSxwPWQ/bnVsbCE9PWw/bCtcIkNhcHR1cmVcIjpudWxsOmw7ZD1bXTtmb3IodmFyIGgsbT1yO251bGwhPT1tOyl7dmFyIGc9bTtpZihoPWcuc3RhdGVOb2RlLDUhPT0oZz1nLnRhZykmJjI2IT09ZyYmMjchPT1nfHxudWxsPT09aHx8bnVsbD09PXB8fG51bGwhPShnPXRfKG0scCkpJiZkLnB1c2goY2UobSxnLGgpKSxmKWJyZWFrO209bS5yZXR1cm59MDxkLmxlbmd0aCYmKGw9bmV3IGMobCx1LG51bGwsbixvKSxpLnB1c2goe2V2ZW50OmwsbGlzdGVuZXJzOmR9KSl9fWlmKDA9PSg3JnQpKXtpZigobD1cIm1vdXNlb3ZlclwiPT09ZXx8XCJwb2ludGVyb3ZlclwiPT09ZSxjPVwibW91c2VvdXRcIj09PWV8fFwicG9pbnRlcm91dFwiPT09ZSwhKGwmJm4hPT10eSYmKHU9bi5yZWxhdGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSYmKGVIKHUpfHx1W2VOXSkpKSYmKGN8fGwpJiYobD1vLndpbmRvdz09PW8/bzoobD1vLm93bmVyRG9jdW1lbnQpP2wuZGVmYXVsdFZpZXd8fGwucGFyZW50V2luZG93OndpbmRvdyxjPyh1PW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQsYz1yLG51bGwhPT0odT11P2VIKHUpOm51bGwpJiYoZj1zKHUpLGQ9dS50YWcsdSE9PWZ8fDUhPT1kJiYyNyE9PWQmJjYhPT1kKSYmKHU9bnVsbCkpOihjPW51bGwsdT1yKSxjIT09dSkpe2lmKGQ9dCQsZz1cIm9uTW91c2VMZWF2ZVwiLHA9XCJvbk1vdXNlRW50ZXJcIixtPVwibW91c2VcIiwoXCJwb2ludGVyb3V0XCI9PT1lfHxcInBvaW50ZXJvdmVyXCI9PT1lKSYmKGQ9dDUsZz1cIm9uUG9pbnRlckxlYXZlXCIscD1cIm9uUG9pbnRlckVudGVyXCIsbT1cInBvaW50ZXJcIiksZj1udWxsPT1jP2w6ZSQoYyksaD1udWxsPT11P2w6ZSQodSksKGw9bmV3IGQoZyxtK1wibGVhdmVcIixjLG4sbykpLnRhcmdldD1mLGwucmVsYXRlZFRhcmdldD1oLGc9bnVsbCxlSChvKT09PXImJigoZD1uZXcgZChwLG0rXCJlbnRlclwiLHUsbixvKSkudGFyZ2V0PWgsZC5yZWxhdGVkVGFyZ2V0PWYsZz1kKSxmPWcsYyYmdSl0Ontmb3IoZD1jbixwPWMsbT11LGg9MCxnPXA7ZztnPWQoZykpaCsrO2c9MDtmb3IodmFyIHksdj1tO3Y7dj1kKHYpKWcrKztmb3IoOzA8aC1nOylwPWQocCksaC0tO2Zvcig7MDxnLWg7KW09ZChtKSxnLS07Zm9yKDtoLS07KXtpZihwPT09bXx8bnVsbCE9PW0mJnA9PT1tLmFsdGVybmF0ZSl7ZD1wO2JyZWFrIHR9cD1kKHApLG09ZChtKX1kPW51bGx9ZWxzZSBkPW51bGw7bnVsbCE9PWMmJmNyKGksbCxjLGQsITEpLG51bGwhPT11JiZudWxsIT09ZiYmY3IoaSxmLHUsZCwhMCl9ZTp7aWYoXCJzZWxlY3RcIj09PShjPShsPXI/ZSQocik6d2luZG93KS5ub2RlTmFtZSYmbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXx8XCJpbnB1dFwiPT09YyYmXCJmaWxlXCI9PT1sLnR5cGUpdmFyIGI9bm07ZWxzZSBpZihuYyhsKSlpZihuZyliPW5fO2Vsc2V7Yj1udzt2YXIgQT1ueH1lbHNlKGM9bC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWMudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWwudHlwZXx8XCJyYWRpb1wiPT09bC50eXBlKT9iPW5DOnImJnRmKHIuZWxlbWVudFR5cGUpJiYoYj1ubSk7aWYoYiYmKGI9YihlLHIpKSl7bnUoaSxiLG4sbyk7YnJlYWsgZX1BJiZBKGUsbCxyKSxcImZvY3Vzb3V0XCI9PT1lJiZyJiZcIm51bWJlclwiPT09bC50eXBlJiZudWxsIT1yLm1lbW9pemVkUHJvcHMudmFsdWUmJnRvKGwsXCJudW1iZXJcIixsLnZhbHVlKX1zd2l0Y2goQT1yP2UkKHIpOndpbmRvdyxlKXtjYXNlXCJmb2N1c2luXCI6KG5jKEEpfHxcInRydWVcIj09PUEuY29udGVudEVkaXRhYmxlKSYmKG5JPUEsbno9cixuVD1udWxsKTticmVhaztjYXNlXCJmb2N1c291dFwiOm5UPW56PW5JPW51bGw7YnJlYWs7Y2FzZVwibW91c2Vkb3duXCI6bkQ9ITA7YnJlYWs7Y2FzZVwiY29udGV4dG1lbnVcIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwiZHJhZ2VuZFwiOm5EPSExLG5MKGksbixvKTticmVhaztjYXNlXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihuUClicmVhaztjYXNlXCJrZXlkb3duXCI6Y2FzZVwia2V5dXBcIjpuTChpLG4sbyl9aWYobmUpdDp7c3dpdGNoKGUpe2Nhc2VcImNvbXBvc2l0aW9uc3RhcnRcIjp2YXIgeD1cIm9uQ29tcG9zaXRpb25TdGFydFwiO2JyZWFrIHQ7Y2FzZVwiY29tcG9zaXRpb25lbmRcIjp4PVwib25Db21wb3NpdGlvbkVuZFwiO2JyZWFrIHQ7Y2FzZVwiY29tcG9zaXRpb251cGRhdGVcIjp4PVwib25Db21wb3NpdGlvblVwZGF0ZVwiO2JyZWFrIHR9eD12b2lkIDB9ZWxzZSBubD9uYShlLG4pJiYoeD1cIm9uQ29tcG9zaXRpb25FbmRcIik6XCJrZXlkb3duXCI9PT1lJiYyMjk9PT1uLmtleUNvZGUmJih4PVwib25Db21wb3NpdGlvblN0YXJ0XCIpO3gmJihuciYmXCJrb1wiIT09bi5sb2NhbGUmJihubHx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PXg/XCJvbkNvbXBvc2l0aW9uRW5kXCI9PT14JiZubCYmKHk9dFAoKSk6KHRPPVwidmFsdWVcImluKHRTPW8pP3RTLnZhbHVlOnRTLnRleHRDb250ZW50LG5sPSEwKSksMDwoQT1jdChyLHgpKS5sZW5ndGgmJih4PW5ldyB0Ryh4LGUsbnVsbCxuLG8pLGkucHVzaCh7ZXZlbnQ6eCxsaXN0ZW5lcnM6QX0pLHk/eC5kYXRhPXk6bnVsbCE9PSh5PW5pKG4pKSYmKHguZGF0YT15KSkpLCh5PW5uP2Z1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIG5pKHQpO2Nhc2VcImtleXByZXNzXCI6aWYoMzIhPT10LndoaWNoKXJldHVybiBudWxsO3JldHVybiBubz0hMCxcIiBcIjtjYXNlXCJ0ZXh0SW5wdXRcIjpyZXR1cm5cIiBcIj09PShlPXQuZGF0YSkmJm5vP251bGw6ZTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxuKTpmdW5jdGlvbihlLHQpe2lmKG5sKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWV8fCFuZSYmbmEoZSx0KT8oZT10UCgpLHRCPXRPPXRTPW51bGwsbmw9ITEsZSk6bnVsbDtzd2l0Y2goZSl7Y2FzZVwicGFzdGVcIjpkZWZhdWx0OnJldHVybiBudWxsO2Nhc2VcImtleXByZXNzXCI6aWYoISh0LmN0cmxLZXl8fHQuYWx0S2V5fHx0Lm1ldGFLZXkpfHx0LmN0cmxLZXkmJnQuYWx0S2V5KXtpZih0LmNoYXImJjE8dC5jaGFyLmxlbmd0aClyZXR1cm4gdC5jaGFyO2lmKHQud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodC53aGljaCl9cmV0dXJuIG51bGw7Y2FzZVwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gbnImJlwia29cIiE9PXQubG9jYWxlP251bGw6dC5kYXRhfX0oZSxuKSkmJjA8KHg9Y3QocixcIm9uQmVmb3JlSW5wdXRcIikpLmxlbmd0aCYmKEE9bmV3IHRHKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLG4sbyksaS5wdXNoKHtldmVudDpBLGxpc3RlbmVyczp4fSksQS5kYXRhPXkpO3ZhciB3PWU7aWYoXCJzdWJtaXRcIj09PXcmJnImJnIuc3RhdGVOb2RlPT09byl7dmFyIEM9c0coKG9bZUxdfHxudWxsKS5hY3Rpb24pLF89bi5zdWJtaXR0ZXI7XyYmbnVsbCE9PSh3PSh3PV9bZUxdfHxudWxsKT9zRyh3LmZvcm1BY3Rpb24pOl8uZ2V0QXR0cmlidXRlKFwiZm9ybUFjdGlvblwiKSkmJihDPXcsXz1udWxsKTt2YXIgaz1uZXcgdEYoXCJhY3Rpb25cIixcImFjdGlvblwiLG51bGwsbixvKTtpLnB1c2goe2V2ZW50OmssbGlzdGVuZXJzOlt7aW5zdGFuY2U6bnVsbCxsaXN0ZW5lcjpmdW5jdGlvbigpe2lmKG4uZGVmYXVsdFByZXZlbnRlZCl7aWYoMCE9PXNGKXt2YXIgZT1fP3NRKG8sXyk6bmV3IEZvcm1EYXRhKG8pO2FYKHIse3BlbmRpbmc6ITAsZGF0YTplLG1ldGhvZDpvLm1ldGhvZCxhY3Rpb246Q30sbnVsbCxlKX19ZWxzZVwiZnVuY3Rpb25cIj09dHlwZW9mIEMmJihrLnByZXZlbnREZWZhdWx0KCksYVgocix7cGVuZGluZzohMCxkYXRhOmU9Xz9zUShvLF8pOm5ldyBGb3JtRGF0YShvKSxtZXRob2Q6by5tZXRob2QsYWN0aW9uOkN9LEMsZSkpfSxjdXJyZW50VGFyZ2V0Om99XX0pfX1zNChpLHQpfSl9ZnVuY3Rpb24gY2UoZSx0LG4pe3JldHVybntpbnN0YW5jZTplLGxpc3RlbmVyOnQsY3VycmVudFRhcmdldDpufX1mdW5jdGlvbiBjdChlLHQpe2Zvcih2YXIgbj10K1wiQ2FwdHVyZVwiLHI9W107bnVsbCE9PWU7KXt2YXIgbz1lLGE9by5zdGF0ZU5vZGU7aWYoNSE9PShvPW8udGFnKSYmMjYhPT1vJiYyNyE9PW98fG51bGw9PT1hfHwobnVsbCE9KG89dF8oZSxuKSkmJnIudW5zaGlmdChjZShlLG8sYSkpLG51bGwhPShvPXRfKGUsdCkpJiZyLnB1c2goY2UoZSxvLGEpKSksMz09PWUudGFnKXJldHVybiByO2U9ZS5yZXR1cm59cmV0dXJuW119ZnVuY3Rpb24gY24oZSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7ZG8gZT1lLnJldHVybjt3aGlsZShlJiY1IT09ZS50YWcmJjI3IT09ZS50YWcpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIGNyKGUsdCxuLHIsbyl7Zm9yKHZhciBhPXQuX3JlYWN0TmFtZSxpPVtdO251bGwhPT1uJiZuIT09cjspe3ZhciBsPW4scz1sLmFsdGVybmF0ZSxjPWwuc3RhdGVOb2RlO2lmKGw9bC50YWcsbnVsbCE9PXMmJnM9PT1yKWJyZWFrOzUhPT1sJiYyNiE9PWwmJjI3IT09bHx8bnVsbD09PWN8fChzPWMsbz9udWxsIT0oYz10XyhuLGEpKSYmaS51bnNoaWZ0KGNlKG4sYyxzKSk6b3x8bnVsbCE9KGM9dF8obixhKSkmJmkucHVzaChjZShuLGMscykpKSxuPW4ucmV0dXJufTAhPT1pLmxlbmd0aCYmZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczppfSl9dmFyIGNvPS9cXHJcXG4/L2csY2E9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIGNpKGUpe3JldHVybihcInN0cmluZ1wiPT10eXBlb2YgZT9lOlwiXCIrZSkucmVwbGFjZShjbyxcIlxcblwiKS5yZXBsYWNlKGNhLFwiXCIpfWZ1bmN0aW9uIGNsKGUsdCl7cmV0dXJuIHQ9Y2kodCksY2koZSk9PT10fWZ1bmN0aW9uIGNzKGUsdCxuLHIsbyxhKXtzd2l0Y2gobil7Y2FzZVwiY2hpbGRyZW5cIjpcInN0cmluZ1wiPT10eXBlb2Ygcj9cImJvZHlcIj09PXR8fFwidGV4dGFyZWFcIj09PXQmJlwiXCI9PT1yfHx0cyhlLHIpOihcIm51bWJlclwiPT10eXBlb2Ygcnx8XCJiaWdpbnRcIj09dHlwZW9mIHIpJiZcImJvZHlcIiE9PXQmJnRzKGUsXCJcIityKTticmVhaztjYXNlXCJjbGFzc05hbWVcIjplNChlLFwiY2xhc3NcIixyKTticmVhaztjYXNlXCJ0YWJJbmRleFwiOmU0KGUsXCJ0YWJpbmRleFwiLHIpO2JyZWFrO2Nhc2VcImRpclwiOmNhc2VcInJvbGVcIjpjYXNlXCJ2aWV3Qm94XCI6Y2FzZVwid2lkdGhcIjpjYXNlXCJoZWlnaHRcIjplNChlLG4scik7YnJlYWs7Y2FzZVwic3R5bGVcIjp0ZChlLHIsYSk7YnJlYWs7Y2FzZVwiZGF0YVwiOmlmKFwib2JqZWN0XCIhPT10KXtlNChlLFwiZGF0YVwiLHIpO2JyZWFrfWNhc2VcInNyY1wiOmNhc2VcImhyZWZcIjppZihcIlwiPT09ciYmKFwiYVwiIT09dHx8XCJocmVmXCIhPT1uKXx8bnVsbD09cnx8XCJmdW5jdGlvblwiPT10eXBlb2Ygcnx8XCJzeW1ib2xcIj09dHlwZW9mIHJ8fFwiYm9vbGVhblwiPT10eXBlb2Ygcil7ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWt9cj10bShcIlwiK3IpLGUuc2V0QXR0cmlidXRlKG4scik7YnJlYWs7Y2FzZVwiYWN0aW9uXCI6Y2FzZVwiZm9ybUFjdGlvblwiOmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe2Uuc2V0QXR0cmlidXRlKG4sXCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignQSBSZWFjdCBmb3JtIHdhcyB1bmV4cGVjdGVkbHkgc3VibWl0dGVkLiBJZiB5b3UgY2FsbGVkIGZvcm0uc3VibWl0KCkgbWFudWFsbHksIGNvbnNpZGVyIHVzaW5nIGZvcm0ucmVxdWVzdFN1Ym1pdCgpIGluc3RlYWQuIElmIHlvdVxcXFwncmUgdHJ5aW5nIHRvIHVzZSBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBpbiBhIHN1Ym1pdCBldmVudCBoYW5kbGVyLCBjb25zaWRlciBhbHNvIGNhbGxpbmcgZXZlbnQucHJldmVudERlZmF1bHQoKS4nKVwiKTticmVha31pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiYoXCJmb3JtQWN0aW9uXCI9PT1uPyhcImlucHV0XCIhPT10JiZjcyhlLHQsXCJuYW1lXCIsby5uYW1lLG8sbnVsbCksY3MoZSx0LFwiZm9ybUVuY1R5cGVcIixvLmZvcm1FbmNUeXBlLG8sbnVsbCksY3MoZSx0LFwiZm9ybU1ldGhvZFwiLG8uZm9ybU1ldGhvZCxvLG51bGwpLGNzKGUsdCxcImZvcm1UYXJnZXRcIixvLmZvcm1UYXJnZXQsbyxudWxsKSk6KGNzKGUsdCxcImVuY1R5cGVcIixvLmVuY1R5cGUsbyxudWxsKSxjcyhlLHQsXCJtZXRob2RcIixvLm1ldGhvZCxvLG51bGwpLGNzKGUsdCxcInRhcmdldFwiLG8udGFyZ2V0LG8sbnVsbCkpKSxudWxsPT1yfHxcInN5bWJvbFwiPT10eXBlb2Ygcnx8XCJib29sZWFuXCI9PXR5cGVvZiByKXtlLnJlbW92ZUF0dHJpYnV0ZShuKTticmVha31yPXRtKFwiXCIrciksZS5zZXRBdHRyaWJ1dGUobixyKTticmVhaztjYXNlXCJvbkNsaWNrXCI6bnVsbCE9ciYmKGUub25jbGljaz10Zyk7YnJlYWs7Y2FzZVwib25TY3JvbGxcIjpudWxsIT1yJiZzNShcInNjcm9sbFwiLGUpO2JyZWFrO2Nhc2VcIm9uU2Nyb2xsRW5kXCI6bnVsbCE9ciYmczUoXCJzY3JvbGxlbmRcIixlKTticmVhaztjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPXIpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiByfHwhKFwiX19odG1sXCJpbiByKSl0aHJvdyBFcnJvcihsKDYxKSk7aWYobnVsbCE9KG49ci5fX2h0bWwpKXtpZihudWxsIT1vLmNoaWxkcmVuKXRocm93IEVycm9yKGwoNjApKTtlLmlubmVySFRNTD1ufX1icmVhaztjYXNlXCJtdWx0aXBsZVwiOmUubXVsdGlwbGU9ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHI7YnJlYWs7Y2FzZVwibXV0ZWRcIjplLm11dGVkPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByO2JyZWFrO2Nhc2VcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOmNhc2VcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiOmNhc2VcImRlZmF1bHRWYWx1ZVwiOmNhc2VcImRlZmF1bHRDaGVja2VkXCI6Y2FzZVwiaW5uZXJIVE1MXCI6Y2FzZVwicmVmXCI6Y2FzZVwiYXV0b0ZvY3VzXCI6Y2FzZVwiaW5uZXJUZXh0XCI6Y2FzZVwidGV4dENvbnRlbnRcIjpicmVhaztjYXNlXCJ4bGlua0hyZWZcIjppZihudWxsPT1yfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByfHxcImJvb2xlYW5cIj09dHlwZW9mIHJ8fFwic3ltYm9sXCI9PXR5cGVvZiByKXtlLnJlbW92ZUF0dHJpYnV0ZShcInhsaW5rOmhyZWZcIik7YnJlYWt9bj10bShcIlwiK3IpLGUuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpocmVmXCIsbik7YnJlYWs7Y2FzZVwiY29udGVudEVkaXRhYmxlXCI6Y2FzZVwic3BlbGxDaGVja1wiOmNhc2VcImRyYWdnYWJsZVwiOmNhc2VcInZhbHVlXCI6Y2FzZVwiYXV0b1JldmVyc2VcIjpjYXNlXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCI6Y2FzZVwiZm9jdXNhYmxlXCI6Y2FzZVwicHJlc2VydmVBbHBoYVwiOm51bGwhPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByP2Uuc2V0QXR0cmlidXRlKG4sXCJcIityKTplLnJlbW92ZUF0dHJpYnV0ZShuKTticmVhaztjYXNlXCJpbmVydFwiOmNhc2VcImFsbG93RnVsbFNjcmVlblwiOmNhc2VcImFzeW5jXCI6Y2FzZVwiYXV0b1BsYXlcIjpjYXNlXCJjb250cm9sc1wiOmNhc2VcImRlZmF1bHRcIjpjYXNlXCJkZWZlclwiOmNhc2VcImRpc2FibGVkXCI6Y2FzZVwiZGlzYWJsZVBpY3R1cmVJblBpY3R1cmVcIjpjYXNlXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIjpjYXNlXCJmb3JtTm9WYWxpZGF0ZVwiOmNhc2VcImhpZGRlblwiOmNhc2VcImxvb3BcIjpjYXNlXCJub01vZHVsZVwiOmNhc2VcIm5vVmFsaWRhdGVcIjpjYXNlXCJvcGVuXCI6Y2FzZVwicGxheXNJbmxpbmVcIjpjYXNlXCJyZWFkT25seVwiOmNhc2VcInJlcXVpcmVkXCI6Y2FzZVwicmV2ZXJzZWRcIjpjYXNlXCJzY29wZWRcIjpjYXNlXCJzZWFtbGVzc1wiOmNhc2VcIml0ZW1TY29wZVwiOnImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByP2Uuc2V0QXR0cmlidXRlKG4sXCJcIik6ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWs7Y2FzZVwiY2FwdHVyZVwiOmNhc2VcImRvd25sb2FkXCI6ITA9PT1yP2Uuc2V0QXR0cmlidXRlKG4sXCJcIik6ITEhPT1yJiZudWxsIT1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2Ygcj9lLnNldEF0dHJpYnV0ZShuLHIpOmUucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrO2Nhc2VcImNvbHNcIjpjYXNlXCJyb3dzXCI6Y2FzZVwic2l6ZVwiOmNhc2VcInNwYW5cIjpudWxsIT1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2YgciYmIWlzTmFOKHIpJiYxPD1yP2Uuc2V0QXR0cmlidXRlKG4scik6ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWs7Y2FzZVwicm93U3BhblwiOmNhc2VcInN0YXJ0XCI6bnVsbD09cnx8XCJmdW5jdGlvblwiPT10eXBlb2Ygcnx8XCJzeW1ib2xcIj09dHlwZW9mIHJ8fGlzTmFOKHIpP2UucmVtb3ZlQXR0cmlidXRlKG4pOmUuc2V0QXR0cmlidXRlKG4scik7YnJlYWs7Y2FzZVwicG9wb3ZlclwiOnM1KFwiYmVmb3JldG9nZ2xlXCIsZSksczUoXCJ0b2dnbGVcIixlKSxlMihlLFwicG9wb3ZlclwiLHIpO2JyZWFrO2Nhc2VcInhsaW5rQWN0dWF0ZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazphY3R1YXRlXCIscik7YnJlYWs7Y2FzZVwieGxpbmtBcmNyb2xlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmFyY3JvbGVcIixyKTticmVhaztjYXNlXCJ4bGlua1JvbGVcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6cm9sZVwiLHIpO2JyZWFrO2Nhc2VcInhsaW5rU2hvd1wiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpzaG93XCIscik7YnJlYWs7Y2FzZVwieGxpbmtUaXRsZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazp0aXRsZVwiLHIpO2JyZWFrO2Nhc2VcInhsaW5rVHlwZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazp0eXBlXCIscik7YnJlYWs7Y2FzZVwieG1sQmFzZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcInhtbDpiYXNlXCIscik7YnJlYWs7Y2FzZVwieG1sTGFuZ1wiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcInhtbDpsYW5nXCIscik7YnJlYWs7Y2FzZVwieG1sU3BhY2VcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXCJ4bWw6c3BhY2VcIixyKTticmVhaztjYXNlXCJpc1wiOmUyKGUsXCJpc1wiLHIpO2JyZWFrO2RlZmF1bHQ6MjxuLmxlbmd0aCYmKFwib1wiPT09blswXXx8XCJPXCI9PT1uWzBdKSYmKFwiblwiPT09blsxXXx8XCJOXCI9PT1uWzFdKXx8ZTIoZSxuPXRwLmdldChuKXx8bixyKX19ZnVuY3Rpb24gY2MoZSx0LG4scixvLGEpe3N3aXRjaChuKXtjYXNlXCJzdHlsZVwiOnRkKGUscixhKTticmVhaztjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPXIpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiByfHwhKFwiX19odG1sXCJpbiByKSl0aHJvdyBFcnJvcihsKDYxKSk7aWYobnVsbCE9KG49ci5fX2h0bWwpKXtpZihudWxsIT1vLmNoaWxkcmVuKXRocm93IEVycm9yKGwoNjApKTtlLmlubmVySFRNTD1ufX1icmVhaztjYXNlXCJjaGlsZHJlblwiOlwic3RyaW5nXCI9PXR5cGVvZiByP3RzKGUscik6KFwibnVtYmVyXCI9PXR5cGVvZiByfHxcImJpZ2ludFwiPT10eXBlb2YgcikmJnRzKGUsXCJcIityKTticmVhaztjYXNlXCJvblNjcm9sbFwiOm51bGwhPXImJnM1KFwic2Nyb2xsXCIsZSk7YnJlYWs7Y2FzZVwib25TY3JvbGxFbmRcIjpudWxsIT1yJiZzNShcInNjcm9sbGVuZFwiLGUpO2JyZWFrO2Nhc2VcIm9uQ2xpY2tcIjpudWxsIT1yJiYoZS5vbmNsaWNrPXRnKTticmVhaztjYXNlXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpjYXNlXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpjYXNlXCJpbm5lckhUTUxcIjpjYXNlXCJyZWZcIjpjYXNlXCJpbm5lclRleHRcIjpjYXNlXCJ0ZXh0Q29udGVudFwiOmJyZWFrO2RlZmF1bHQ6aWYoIWVYLmhhc093blByb3BlcnR5KG4pKWU6e2lmKFwib1wiPT09blswXSYmXCJuXCI9PT1uWzFdJiYobz1uLmVuZHNXaXRoKFwiQ2FwdHVyZVwiKSx0PW4uc2xpY2UoMixvP24ubGVuZ3RoLTc6dm9pZCAwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZihhPW51bGwhPShhPWVbZUxdfHxudWxsKT9hW25dOm51bGwpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxhLG8pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBhJiZudWxsIT09YSYmKG4gaW4gZT9lW25dPW51bGw6ZS5oYXNBdHRyaWJ1dGUobikmJmUucmVtb3ZlQXR0cmlidXRlKG4pKSxlLmFkZEV2ZW50TGlzdGVuZXIodCxyLG8pO2JyZWFrIGV9biBpbiBlP2Vbbl09cjohMD09PXI/ZS5zZXRBdHRyaWJ1dGUobixcIlwiKTplMihlLG4scil9fX1mdW5jdGlvbiBjdShlLHQsbil7c3dpdGNoKHQpe2Nhc2VcImRpdlwiOmNhc2VcInNwYW5cIjpjYXNlXCJzdmdcIjpjYXNlXCJwYXRoXCI6Y2FzZVwiYVwiOmNhc2VcImdcIjpjYXNlXCJwXCI6Y2FzZVwibGlcIjpicmVhaztjYXNlXCJpbWdcIjpzNShcImVycm9yXCIsZSksczUoXCJsb2FkXCIsZSk7dmFyIHIsbz0hMSxhPSExO2ZvcihyIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIGk9bltyXTtpZihudWxsIT1pKXN3aXRjaChyKXtjYXNlXCJzcmNcIjpvPSEwO2JyZWFrO2Nhc2VcInNyY1NldFwiOmE9ITA7YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoMTM3LHQpKTtkZWZhdWx0OmNzKGUsdCxyLGksbixudWxsKX19YSYmY3MoZSx0LFwic3JjU2V0XCIsbi5zcmNTZXQsbixudWxsKSxvJiZjcyhlLHQsXCJzcmNcIixuLnNyYyxuLG51bGwpO3JldHVybjtjYXNlXCJpbnB1dFwiOnM1KFwiaW52YWxpZFwiLGUpO3ZhciBzPXI9aT1hPW51bGwsYz1udWxsLHU9bnVsbDtmb3IobyBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkobykpe3ZhciBkPW5bb107aWYobnVsbCE9ZClzd2l0Y2gobyl7Y2FzZVwibmFtZVwiOmE9ZDticmVhaztjYXNlXCJ0eXBlXCI6aT1kO2JyZWFrO2Nhc2VcImNoZWNrZWRcIjpjPWQ7YnJlYWs7Y2FzZVwiZGVmYXVsdENoZWNrZWRcIjp1PWQ7YnJlYWs7Y2FzZVwidmFsdWVcIjpyPWQ7YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6cz1kO2JyZWFrO2Nhc2VcImNoaWxkcmVuXCI6Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjppZihudWxsIT1kKXRocm93IEVycm9yKGwoMTM3LHQpKTticmVhaztkZWZhdWx0OmNzKGUsdCxvLGQsbixudWxsKX19dHIoZSxyLHMsYyx1LGksYSwhMSk7cmV0dXJuO2Nhc2VcInNlbGVjdFwiOmZvcihhIGluIHM1KFwiaW52YWxpZFwiLGUpLG89aT1yPW51bGwsbilpZihuLmhhc093blByb3BlcnR5KGEpJiZudWxsIT0ocz1uW2FdKSlzd2l0Y2goYSl7Y2FzZVwidmFsdWVcIjpyPXM7YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6aT1zO2JyZWFrO2Nhc2VcIm11bHRpcGxlXCI6bz1zO2RlZmF1bHQ6Y3MoZSx0LGEscyxuLG51bGwpfXQ9cixuPWksZS5tdWx0aXBsZT0hIW8sbnVsbCE9dD90YShlLCEhbyx0LCExKTpudWxsIT1uJiZ0YShlLCEhbyxuLCEwKTtyZXR1cm47Y2FzZVwidGV4dGFyZWFcIjpmb3IoaSBpbiBzNShcImludmFsaWRcIixlKSxyPWE9bz1udWxsLG4paWYobi5oYXNPd25Qcm9wZXJ0eShpKSYmbnVsbCE9KHM9bltpXSkpc3dpdGNoKGkpe2Nhc2VcInZhbHVlXCI6bz1zO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOmE9czticmVhaztjYXNlXCJjaGlsZHJlblwiOnI9czticmVhaztjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPXMpdGhyb3cgRXJyb3IobCg5MSkpO2JyZWFrO2RlZmF1bHQ6Y3MoZSx0LGkscyxuLG51bGwpfXRsKGUsbyxhLHIpO3JldHVybjtjYXNlXCJvcHRpb25cIjpmb3IoYyBpbiBuKW4uaGFzT3duUHJvcGVydHkoYykmJm51bGwhPShvPW5bY10pJiYoXCJzZWxlY3RlZFwiPT09Yz9lLnNlbGVjdGVkPW8mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG8mJlwic3ltYm9sXCIhPXR5cGVvZiBvOmNzKGUsdCxjLG8sbixudWxsKSk7cmV0dXJuO2Nhc2VcImRpYWxvZ1wiOnM1KFwiYmVmb3JldG9nZ2xlXCIsZSksczUoXCJ0b2dnbGVcIixlKSxzNShcImNhbmNlbFwiLGUpLHM1KFwiY2xvc2VcIixlKTticmVhaztjYXNlXCJpZnJhbWVcIjpjYXNlXCJvYmplY3RcIjpzNShcImxvYWRcIixlKTticmVhaztjYXNlXCJ2aWRlb1wiOmNhc2VcImF1ZGlvXCI6Zm9yKG89MDtvPHMxLmxlbmd0aDtvKyspczUoczFbb10sZSk7YnJlYWs7Y2FzZVwiaW1hZ2VcIjpzNShcImVycm9yXCIsZSksczUoXCJsb2FkXCIsZSk7YnJlYWs7Y2FzZVwiZGV0YWlsc1wiOnM1KFwidG9nZ2xlXCIsZSk7YnJlYWs7Y2FzZVwiZW1iZWRcIjpjYXNlXCJzb3VyY2VcIjpjYXNlXCJsaW5rXCI6czUoXCJlcnJvclwiLGUpLHM1KFwibG9hZFwiLGUpO2Nhc2VcImFyZWFcIjpjYXNlXCJiYXNlXCI6Y2FzZVwiYnJcIjpjYXNlXCJjb2xcIjpjYXNlXCJoclwiOmNhc2VcImtleWdlblwiOmNhc2VcIm1ldGFcIjpjYXNlXCJwYXJhbVwiOmNhc2VcInRyYWNrXCI6Y2FzZVwid2JyXCI6Y2FzZVwibWVudWl0ZW1cIjpmb3IodSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodSkmJm51bGwhPShvPW5bdV0pKXN3aXRjaCh1KXtjYXNlXCJjaGlsZHJlblwiOmNhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6dGhyb3cgRXJyb3IobCgxMzcsdCkpO2RlZmF1bHQ6Y3MoZSx0LHUsbyxuLG51bGwpfXJldHVybjtkZWZhdWx0OmlmKHRmKHQpKXtmb3IoZCBpbiBuKW4uaGFzT3duUHJvcGVydHkoZCkmJnZvaWQgMCE9PShvPW5bZF0pJiZjYyhlLHQsZCxvLG4sdm9pZCAwKTtyZXR1cm59fWZvcihzIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShzKSYmbnVsbCE9KG89bltzXSkmJmNzKGUsdCxzLG8sbixudWxsKX12YXIgY2Q9bnVsbCxjZj1udWxsO2Z1bmN0aW9uIGNwKGUpe3JldHVybiA5PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudH1mdW5jdGlvbiBjaChlKXtzd2l0Y2goZSl7Y2FzZVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjpyZXR1cm4gMTtjYXNlXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19ZnVuY3Rpb24gY20oZSx0KXtpZigwPT09ZSlzd2l0Y2godCl7Y2FzZVwic3ZnXCI6cmV0dXJuIDE7Y2FzZVwibWF0aFwiOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9cmV0dXJuIDE9PT1lJiZcImZvcmVpZ25PYmplY3RcIj09PXQ/MDplfWZ1bmN0aW9uIGNnKGUsdCl7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09ZXx8XCJub3NjcmlwdFwiPT09ZXx8XCJzdHJpbmdcIj09dHlwZW9mIHQuY2hpbGRyZW58fFwibnVtYmVyXCI9PXR5cGVvZiB0LmNoaWxkcmVufHxcImJpZ2ludFwiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJvYmplY3RcIj09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH12YXIgY3k9bnVsbCxjdj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLGNiPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLGNBPVwiZnVuY3Rpb25cIj09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsY3g9XCJmdW5jdGlvblwiPT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6dm9pZCAwIT09Y0E/ZnVuY3Rpb24oZSl7cmV0dXJuIGNBLnJlc29sdmUobnVsbCkudGhlbihlKS5jYXRjaChjdyl9OmN2O2Z1bmN0aW9uIGN3KGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9ZnVuY3Rpb24gY0MoZSl7cmV0dXJuXCJoZWFkXCI9PT1lfWZ1bmN0aW9uIGNfKGUsdCl7dmFyIG49dCxyPTA7ZG97dmFyIG89bi5uZXh0U2libGluZztpZihlLnJlbW92ZUNoaWxkKG4pLG8mJjg9PT1vLm5vZGVUeXBlKWlmKFwiLyRcIj09PShuPW8uZGF0YSl8fFwiLyZcIj09PW4pe2lmKDA9PT1yKXtlLnJlbW92ZUNoaWxkKG8pLHVPKHQpO3JldHVybn1yLS19ZWxzZSBpZihcIiRcIj09PW58fFwiJD9cIj09PW58fFwiJH5cIj09PW58fFwiJCFcIj09PW58fFwiJlwiPT09bilyKys7ZWxzZSBpZihcImh0bWxcIj09PW4pY0QoZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7ZWxzZSBpZihcImhlYWRcIj09PW4pe2NEKG49ZS5vd25lckRvY3VtZW50LmhlYWQpO2Zvcih2YXIgYT1uLmZpcnN0Q2hpbGQ7YTspe3ZhciBpPWEubmV4dFNpYmxpbmcsbD1hLm5vZGVOYW1lO2FbZUZdfHxcIlNDUklQVFwiPT09bHx8XCJTVFlMRVwiPT09bHx8XCJMSU5LXCI9PT1sJiZcInN0eWxlc2hlZXRcIj09PWEucmVsLnRvTG93ZXJDYXNlKCl8fG4ucmVtb3ZlQ2hpbGQoYSksYT1pfX1lbHNlXCJib2R5XCI9PT1uJiZjRChlLm93bmVyRG9jdW1lbnQuYm9keSk7bj1vfXdoaWxlKG4pO3VPKHQpfWZ1bmN0aW9uIGNrKGUsdCl7dmFyIG49ZTtlPTA7ZG97dmFyIHI9bi5uZXh0U2libGluZztpZigxPT09bi5ub2RlVHlwZT90PyhuLl9zdGFzaGVkRGlzcGxheT1uLnN0eWxlLmRpc3BsYXksbi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKToobi5zdHlsZS5kaXNwbGF5PW4uX3N0YXNoZWREaXNwbGF5fHxcIlwiLFwiXCI9PT1uLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpJiZuLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpKTozPT09bi5ub2RlVHlwZSYmKHQ/KG4uX3N0YXNoZWRUZXh0PW4ubm9kZVZhbHVlLG4ubm9kZVZhbHVlPVwiXCIpOm4ubm9kZVZhbHVlPW4uX3N0YXNoZWRUZXh0fHxcIlwiKSxyJiY4PT09ci5ub2RlVHlwZSlpZihcIi8kXCI9PT0obj1yLmRhdGEpKWlmKDA9PT1lKWJyZWFrO2Vsc2UgZS0tO2Vsc2VcIiRcIiE9PW4mJlwiJD9cIiE9PW4mJlwiJH5cIiE9PW4mJlwiJCFcIiE9PW58fGUrKztuPXJ9d2hpbGUobil9ZnVuY3Rpb24gY0UoZSl7dmFyIHQ9ZS5maXJzdENoaWxkO2Zvcih0JiYxMD09PXQubm9kZVR5cGUmJih0PXQubmV4dFNpYmxpbmcpO3Q7KXt2YXIgbj10O3N3aXRjaCh0PXQubmV4dFNpYmxpbmcsbi5ub2RlTmFtZSl7Y2FzZVwiSFRNTFwiOmNhc2VcIkhFQURcIjpjYXNlXCJCT0RZXCI6Y0UobiksZXEobik7Y29udGludWU7Y2FzZVwiU0NSSVBUXCI6Y2FzZVwiU1RZTEVcIjpjb250aW51ZTtjYXNlXCJMSU5LXCI6aWYoXCJzdHlsZXNoZWV0XCI9PT1uLnJlbC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWUucmVtb3ZlQ2hpbGQobil9fWZ1bmN0aW9uIGNqKGUsdCl7Zm9yKDs4IT09ZS5ub2RlVHlwZTspaWYoIXR8fG51bGw9PT0oZT1jQihlLm5leHRTaWJsaW5nKSkpcmV0dXJuIG51bGw7cmV0dXJuIGV9ZnVuY3Rpb24gY1MoZSl7cmV0dXJuXCIkP1wiPT09ZS5kYXRhfHxcIiR+XCI9PT1lLmRhdGF9ZnVuY3Rpb24gY08oZSl7cmV0dXJuXCIkIVwiPT09ZS5kYXRhfHxcIiQ/XCI9PT1lLmRhdGEmJlwibG9hZGluZ1wiIT09ZS5vd25lckRvY3VtZW50LnJlYWR5U3RhdGV9ZnVuY3Rpb24gY0IoZSl7Zm9yKDtudWxsIT1lO2U9ZS5uZXh0U2libGluZyl7dmFyIHQ9ZS5ub2RlVHlwZTtpZigxPT09dHx8Mz09PXQpYnJlYWs7aWYoOD09PXQpe2lmKFwiJFwiPT09KHQ9ZS5kYXRhKXx8XCIkIVwiPT09dHx8XCIkP1wiPT09dHx8XCIkflwiPT09dHx8XCImXCI9PT10fHxcIkYhXCI9PT10fHxcIkZcIj09PXQpYnJlYWs7aWYoXCIvJFwiPT09dHx8XCIvJlwiPT09dClyZXR1cm4gbnVsbH19cmV0dXJuIGV9dmFyIGNQPW51bGw7ZnVuY3Rpb24gY0koZSl7ZT1lLm5leHRTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIG49ZS5kYXRhO2lmKFwiLyRcIj09PW58fFwiLyZcIj09PW4pe2lmKDA9PT10KXJldHVybiBjQihlLm5leHRTaWJsaW5nKTt0LS19ZWxzZVwiJFwiIT09biYmXCIkIVwiIT09biYmXCIkP1wiIT09biYmXCIkflwiIT09biYmXCImXCIhPT1ufHx0Kyt9ZT1lLm5leHRTaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIGN6KGUpe2U9ZS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciB0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoXCIkXCI9PT1ufHxcIiQhXCI9PT1ufHxcIiQ/XCI9PT1ufHxcIiR+XCI9PT1ufHxcIiZcIj09PW4pe2lmKDA9PT10KXJldHVybiBlO3QtLX1lbHNlXCIvJFwiIT09biYmXCIvJlwiIT09bnx8dCsrfWU9ZS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY1QoZSx0LG4pe3N3aXRjaCh0PWNwKG4pLGUpe2Nhc2VcImh0bWxcIjppZighKGU9dC5kb2N1bWVudEVsZW1lbnQpKXRocm93IEVycm9yKGwoNDUyKSk7cmV0dXJuIGU7Y2FzZVwiaGVhZFwiOmlmKCEoZT10LmhlYWQpKXRocm93IEVycm9yKGwoNDUzKSk7cmV0dXJuIGU7Y2FzZVwiYm9keVwiOmlmKCEoZT10LmJvZHkpKXRocm93IEVycm9yKGwoNDU0KSk7cmV0dXJuIGU7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQ1MSkpfX1mdW5jdGlvbiBjRChlKXtmb3IodmFyIHQ9ZS5hdHRyaWJ1dGVzO3QubGVuZ3RoOyllLnJlbW92ZUF0dHJpYnV0ZU5vZGUodFswXSk7ZXEoZSl9dmFyIGNMPW5ldyBNYXAsY049bmV3IFNldDtmdW5jdGlvbiBjUihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldFJvb3ROb2RlP2UuZ2V0Um9vdE5vZGUoKTo5PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudH12YXIgY009ei5kO3ouZD17ZjpmdW5jdGlvbigpe3ZhciBlPWNNLmYoKSx0PXNjKCk7cmV0dXJuIGV8fHR9LHI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVYoZSk7bnVsbCE9PXQmJjU9PT10LnRhZyYmXCJmb3JtXCI9PT10LnR5cGU/YVEodCk6Y00ucihlKX0sRDpmdW5jdGlvbihlKXtjTS5EKGUpLGNVKFwiZG5zLXByZWZldGNoXCIsZSxudWxsKX0sQzpmdW5jdGlvbihlLHQpe2NNLkMoZSx0KSxjVShcInByZWNvbm5lY3RcIixlLHQpfSxMOmZ1bmN0aW9uKGUsdCxuKXtpZihjTS5MKGUsdCxuKSxjWiYmZSYmdCl7dmFyIHI9J2xpbmtbcmVsPVwicHJlbG9hZFwiXVthcz1cIicrdHQodCkrJ1wiXSc7XCJpbWFnZVwiPT09dCYmbiYmbi5pbWFnZVNyY1NldD8ocis9J1tpbWFnZXNyY3NldD1cIicrdHQobi5pbWFnZVNyY1NldCkrJ1wiXScsXCJzdHJpbmdcIj09dHlwZW9mIG4uaW1hZ2VTaXplcyYmKHIrPSdbaW1hZ2VzaXplcz1cIicrdHQobi5pbWFnZVNpemVzKSsnXCJdJykpOnIrPSdbaHJlZj1cIicrdHQoZSkrJ1wiXSc7dmFyIG89cjtzd2l0Y2godCl7Y2FzZVwic3R5bGVcIjpvPWNxKGUpO2JyZWFrO2Nhc2VcInNjcmlwdFwiOm89YyQoZSl9Y0wuaGFzKG8pfHwoZT1mKHtyZWw6XCJwcmVsb2FkXCIsaHJlZjpcImltYWdlXCI9PT10JiZuJiZuLmltYWdlU3JjU2V0P3ZvaWQgMDplLGFzOnR9LG4pLGNMLnNldChvLGUpLG51bGwhPT1jWi5xdWVyeVNlbGVjdG9yKHIpfHxcInN0eWxlXCI9PT10JiZjWi5xdWVyeVNlbGVjdG9yKGNIKG8pKXx8XCJzY3JpcHRcIj09PXQmJmNaLnF1ZXJ5U2VsZWN0b3IoY1cobykpfHwoY3UodD1jWi5jcmVhdGVFbGVtZW50KFwibGlua1wiKSxcImxpbmtcIixlKSxlWSh0KSxjWi5oZWFkLmFwcGVuZENoaWxkKHQpKSl9fSxtOmZ1bmN0aW9uKGUsdCl7aWYoY00ubShlLHQpLGNaJiZlKXt2YXIgbj10JiZcInN0cmluZ1wiPT10eXBlb2YgdC5hcz90LmFzOlwic2NyaXB0XCIscj0nbGlua1tyZWw9XCJtb2R1bGVwcmVsb2FkXCJdW2FzPVwiJyt0dChuKSsnXCJdW2hyZWY9XCInK3R0KGUpKydcIl0nLG89cjtzd2l0Y2gobil7Y2FzZVwiYXVkaW93b3JrbGV0XCI6Y2FzZVwicGFpbnR3b3JrbGV0XCI6Y2FzZVwic2VydmljZXdvcmtlclwiOmNhc2VcInNoYXJlZHdvcmtlclwiOmNhc2VcIndvcmtlclwiOmNhc2VcInNjcmlwdFwiOm89YyQoZSl9aWYoIWNMLmhhcyhvKSYmKGU9Zih7cmVsOlwibW9kdWxlcHJlbG9hZFwiLGhyZWY6ZX0sdCksY0wuc2V0KG8sZSksbnVsbD09PWNaLnF1ZXJ5U2VsZWN0b3IocikpKXtzd2l0Y2gobil7Y2FzZVwiYXVkaW93b3JrbGV0XCI6Y2FzZVwicGFpbnR3b3JrbGV0XCI6Y2FzZVwic2VydmljZXdvcmtlclwiOmNhc2VcInNoYXJlZHdvcmtlclwiOmNhc2VcIndvcmtlclwiOmNhc2VcInNjcmlwdFwiOmlmKGNaLnF1ZXJ5U2VsZWN0b3IoY1cobykpKXJldHVybn1jdShuPWNaLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpLFwibGlua1wiLGUpLGVZKG4pLGNaLmhlYWQuYXBwZW5kQ2hpbGQobil9fX0sWDpmdW5jdGlvbihlLHQpe2lmKGNNLlgoZSx0KSxjWiYmZSl7dmFyIG49ZVcoY1opLmhvaXN0YWJsZVNjcmlwdHMscj1jJChlKSxvPW4uZ2V0KHIpO298fCgobz1jWi5xdWVyeVNlbGVjdG9yKGNXKHIpKSl8fChlPWYoe3NyYzplLGFzeW5jOiEwfSx0KSwodD1jTC5nZXQocikpJiZjRyhlLHQpLGVZKG89Y1ouY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSksY3UobyxcImxpbmtcIixlKSxjWi5oZWFkLmFwcGVuZENoaWxkKG8pKSxvPXt0eXBlOlwic2NyaXB0XCIsaW5zdGFuY2U6byxjb3VudDoxLHN0YXRlOm51bGx9LG4uc2V0KHIsbykpfX0sUzpmdW5jdGlvbihlLHQsbil7aWYoY00uUyhlLHQsbiksY1omJmUpe3ZhciByPWVXKGNaKS5ob2lzdGFibGVTdHlsZXMsbz1jcShlKTt0PXR8fFwiZGVmYXVsdFwiO3ZhciBhPXIuZ2V0KG8pO2lmKCFhKXt2YXIgaT17bG9hZGluZzowLHByZWxvYWQ6bnVsbH07aWYoYT1jWi5xdWVyeVNlbGVjdG9yKGNIKG8pKSlpLmxvYWRpbmc9NTtlbHNle2U9Zih7cmVsOlwic3R5bGVzaGVldFwiLGhyZWY6ZSxcImRhdGEtcHJlY2VkZW5jZVwiOnR9LG4pLChuPWNMLmdldChvKSkmJmNYKGUsbik7dmFyIGw9YT1jWi5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtlWShsKSxjdShsLFwibGlua1wiLGUpLGwuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtsLm9ubG9hZD1lLGwub25lcnJvcj10fSksbC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGZ1bmN0aW9uKCl7aS5sb2FkaW5nfD0xfSksbC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbigpe2kubG9hZGluZ3w9Mn0pLGkubG9hZGluZ3w9NCxjSyhhLHQsY1opfWE9e3R5cGU6XCJzdHlsZXNoZWV0XCIsaW5zdGFuY2U6YSxjb3VudDoxLHN0YXRlOml9LHIuc2V0KG8sYSl9fX0sTTpmdW5jdGlvbihlLHQpe2lmKGNNLk0oZSx0KSxjWiYmZSl7dmFyIG49ZVcoY1opLmhvaXN0YWJsZVNjcmlwdHMscj1jJChlKSxvPW4uZ2V0KHIpO298fCgobz1jWi5xdWVyeVNlbGVjdG9yKGNXKHIpKSl8fChlPWYoe3NyYzplLGFzeW5jOiEwLHR5cGU6XCJtb2R1bGVcIn0sdCksKHQ9Y0wuZ2V0KHIpKSYmY0coZSx0KSxlWShvPWNaLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpLGN1KG8sXCJsaW5rXCIsZSksY1ouaGVhZC5hcHBlbmRDaGlsZChvKSksbz17dHlwZTpcInNjcmlwdFwiLGluc3RhbmNlOm8sY291bnQ6MSxzdGF0ZTpudWxsfSxuLnNldChyLG8pKX19fTt2YXIgY1o9XCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50P251bGw6ZG9jdW1lbnQ7ZnVuY3Rpb24gY1UoZSx0LG4pe2lmKGNaJiZcInN0cmluZ1wiPT10eXBlb2YgdCYmdCl7dmFyIHI9dHQodCk7cj0nbGlua1tyZWw9XCInK2UrJ1wiXVtocmVmPVwiJytyKydcIl0nLFwic3RyaW5nXCI9PXR5cGVvZiBuJiYocis9J1tjcm9zc29yaWdpbj1cIicrbisnXCJdJyksY04uaGFzKHIpfHwoY04uYWRkKHIpLGU9e3JlbDplLGNyb3NzT3JpZ2luOm4saHJlZjp0fSxudWxsPT09Y1oucXVlcnlTZWxlY3RvcihyKSYmKGN1KHQ9Y1ouY3JlYXRlRWxlbWVudChcImxpbmtcIiksXCJsaW5rXCIsZSksZVkodCksY1ouaGVhZC5hcHBlbmRDaGlsZCh0KSkpfX1mdW5jdGlvbiBjRihlLHQsbixyKXt2YXIgbz0obz1GLmN1cnJlbnQpP2NSKG8pOm51bGw7aWYoIW8pdGhyb3cgRXJyb3IobCg0NDYpKTtzd2l0Y2goZSl7Y2FzZVwibWV0YVwiOmNhc2VcInRpdGxlXCI6cmV0dXJuIG51bGw7Y2FzZVwic3R5bGVcIjpyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygbi5wcmVjZWRlbmNlJiZcInN0cmluZ1wiPT10eXBlb2Ygbi5ocmVmPyh0PWNxKG4uaHJlZiksKHI9KG49ZVcobykuaG9pc3RhYmxlU3R5bGVzKS5nZXQodCkpfHwocj17dHlwZTpcInN0eWxlXCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9LG4uc2V0KHQscikpLHIpOnt0eXBlOlwidm9pZFwiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfTtjYXNlXCJsaW5rXCI6aWYoXCJzdHlsZXNoZWV0XCI9PT1uLnJlbCYmXCJzdHJpbmdcIj09dHlwZW9mIG4uaHJlZiYmXCJzdHJpbmdcIj09dHlwZW9mIG4ucHJlY2VkZW5jZSl7ZT1jcShuLmhyZWYpO3ZhciBhLGkscyxjLHU9ZVcobykuaG9pc3RhYmxlU3R5bGVzLGQ9dS5nZXQoZSk7aWYoZHx8KG89by5vd25lckRvY3VtZW50fHxvLGQ9e3R5cGU6XCJzdHlsZXNoZWV0XCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOntsb2FkaW5nOjAscHJlbG9hZDpudWxsfX0sdS5zZXQoZSxkKSwodT1vLnF1ZXJ5U2VsZWN0b3IoY0goZSkpKSYmIXUuX3AmJihkLmluc3RhbmNlPXUsZC5zdGF0ZS5sb2FkaW5nPTUpLGNMLmhhcyhlKXx8KG49e3JlbDpcInByZWxvYWRcIixhczpcInN0eWxlXCIsaHJlZjpuLmhyZWYsY3Jvc3NPcmlnaW46bi5jcm9zc09yaWdpbixpbnRlZ3JpdHk6bi5pbnRlZ3JpdHksbWVkaWE6bi5tZWRpYSxocmVmTGFuZzpuLmhyZWZMYW5nLHJlZmVycmVyUG9saWN5Om4ucmVmZXJyZXJQb2xpY3l9LGNMLnNldChlLG4pLHV8fChhPW8saT1lLHM9bixjPWQuc3RhdGUsYS5xdWVyeVNlbGVjdG9yKCdsaW5rW3JlbD1cInByZWxvYWRcIl1bYXM9XCJzdHlsZVwiXVsnK2krXCJdXCIpP2MubG9hZGluZz0xOihjLnByZWxvYWQ9aT1hLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpLGkuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixmdW5jdGlvbigpe3JldHVybiBjLmxvYWRpbmd8PTF9KSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLGZ1bmN0aW9uKCl7cmV0dXJuIGMubG9hZGluZ3w9Mn0pLGN1KGksXCJsaW5rXCIscyksZVkoaSksYS5oZWFkLmFwcGVuZENoaWxkKGkpKSkpKSx0JiZudWxsPT09cil0aHJvdyBFcnJvcihsKDUyOCxcIlwiKSk7cmV0dXJuIGR9aWYodCYmbnVsbCE9PXIpdGhyb3cgRXJyb3IobCg1MjksXCJcIikpO3JldHVybiBudWxsO2Nhc2VcInNjcmlwdFwiOnJldHVybiB0PW4uYXN5bmMsXCJzdHJpbmdcIj09dHlwZW9mKG49bi5zcmMpJiZ0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZcInN5bWJvbFwiIT10eXBlb2YgdD8odD1jJChuKSwocj0obj1lVyhvKS5ob2lzdGFibGVTY3JpcHRzKS5nZXQodCkpfHwocj17dHlwZTpcInNjcmlwdFwiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfSxuLnNldCh0LHIpKSxyKTp7dHlwZTpcInZvaWRcIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH07ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQ0NCxlKSl9fWZ1bmN0aW9uIGNxKGUpe3JldHVybidocmVmPVwiJyt0dChlKSsnXCInfWZ1bmN0aW9uIGNIKGUpe3JldHVybidsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1bJytlK1wiXVwifWZ1bmN0aW9uIGNWKGUpe3JldHVybiBmKHt9LGUse1wiZGF0YS1wcmVjZWRlbmNlXCI6ZS5wcmVjZWRlbmNlLHByZWNlZGVuY2U6bnVsbH0pfWZ1bmN0aW9uIGMkKGUpe3JldHVybidbc3JjPVwiJyt0dChlKSsnXCJdJ31mdW5jdGlvbiBjVyhlKXtyZXR1cm5cInNjcmlwdFthc3luY11cIitlfWZ1bmN0aW9uIGNZKGUsdCxuKXtpZih0LmNvdW50KyssbnVsbD09PXQuaW5zdGFuY2Upc3dpdGNoKHQudHlwZSl7Y2FzZVwic3R5bGVcIjp2YXIgcj1lLnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtaHJlZn49XCInK3R0KG4uaHJlZikrJ1wiXScpO2lmKHIpcmV0dXJuIHQuaW5zdGFuY2U9cixlWShyKSxyO3ZhciBvPWYoe30sbix7XCJkYXRhLWhyZWZcIjpuLmhyZWYsXCJkYXRhLXByZWNlZGVuY2VcIjpuLnByZWNlZGVuY2UsaHJlZjpudWxsLHByZWNlZGVuY2U6bnVsbH0pO3JldHVybiBlWShyPShlLm93bmVyRG9jdW1lbnR8fGUpLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSksY3UocixcInN0eWxlXCIsbyksY0socixuLnByZWNlZGVuY2UsZSksdC5pbnN0YW5jZT1yO2Nhc2VcInN0eWxlc2hlZXRcIjpvPWNxKG4uaHJlZik7dmFyIGE9ZS5xdWVyeVNlbGVjdG9yKGNIKG8pKTtpZihhKXJldHVybiB0LnN0YXRlLmxvYWRpbmd8PTQsdC5pbnN0YW5jZT1hLGVZKGEpLGE7cj1jVihuKSwobz1jTC5nZXQobykpJiZjWChyLG8pLGVZKGE9KGUub3duZXJEb2N1bWVudHx8ZSkuY3JlYXRlRWxlbWVudChcImxpbmtcIikpO3ZhciBpPWE7cmV0dXJuIGkuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpLm9ubG9hZD1lLGkub25lcnJvcj10fSksY3UoYSxcImxpbmtcIixyKSx0LnN0YXRlLmxvYWRpbmd8PTQsY0soYSxuLnByZWNlZGVuY2UsZSksdC5pbnN0YW5jZT1hO2Nhc2VcInNjcmlwdFwiOmlmKGE9YyQobi5zcmMpLG89ZS5xdWVyeVNlbGVjdG9yKGNXKGEpKSlyZXR1cm4gdC5pbnN0YW5jZT1vLGVZKG8pLG87cmV0dXJuIHI9biwobz1jTC5nZXQoYSkpJiZjRyhyPWYoe30sbiksbyksZVkobz0oZT1lLm93bmVyRG9jdW1lbnR8fGUpLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpLGN1KG8sXCJsaW5rXCIsciksZS5oZWFkLmFwcGVuZENoaWxkKG8pLHQuaW5zdGFuY2U9bztjYXNlXCJ2b2lkXCI6cmV0dXJuIG51bGw7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQ0Myx0LnR5cGUpKX1yZXR1cm5cInN0eWxlc2hlZXRcIj09PXQudHlwZSYmMD09KDQmdC5zdGF0ZS5sb2FkaW5nKSYmKHI9dC5pbnN0YW5jZSx0LnN0YXRlLmxvYWRpbmd8PTQsY0socixuLnByZWNlZGVuY2UsZSkpLHQuaW5zdGFuY2V9ZnVuY3Rpb24gY0soZSx0LG4pe2Zvcih2YXIgcj1uLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPVwic3R5bGVzaGVldFwiXVtkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0nKSxvPXIubGVuZ3RoP3Jbci5sZW5ndGgtMV06bnVsbCxhPW8saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbD1yW2ldO2lmKGwuZGF0YXNldC5wcmVjZWRlbmNlPT09dClhPWw7ZWxzZSBpZihhIT09bylicmVha31hP2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxhLm5leHRTaWJsaW5nKToodD05PT09bi5ub2RlVHlwZT9uLmhlYWQ6bikuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX1mdW5jdGlvbiBjWChlLHQpe251bGw9PWUuY3Jvc3NPcmlnaW4mJihlLmNyb3NzT3JpZ2luPXQuY3Jvc3NPcmlnaW4pLG51bGw9PWUucmVmZXJyZXJQb2xpY3kmJihlLnJlZmVycmVyUG9saWN5PXQucmVmZXJyZXJQb2xpY3kpLG51bGw9PWUudGl0bGUmJihlLnRpdGxlPXQudGl0bGUpfWZ1bmN0aW9uIGNHKGUsdCl7bnVsbD09ZS5jcm9zc09yaWdpbiYmKGUuY3Jvc3NPcmlnaW49dC5jcm9zc09yaWdpbiksbnVsbD09ZS5yZWZlcnJlclBvbGljeSYmKGUucmVmZXJyZXJQb2xpY3k9dC5yZWZlcnJlclBvbGljeSksbnVsbD09ZS5pbnRlZ3JpdHkmJihlLmludGVncml0eT10LmludGVncml0eSl9dmFyIGNRPW51bGw7ZnVuY3Rpb24gY0ooZSx0LG4pe2lmKG51bGw9PT1jUSl7dmFyIHI9bmV3IE1hcCxvPWNRPW5ldyBNYXA7by5zZXQobixyKX1lbHNlKHI9KG89Y1EpLmdldChuKSl8fChyPW5ldyBNYXAsby5zZXQobixyKSk7aWYoci5oYXMoZSkpcmV0dXJuIHI7Zm9yKHIuc2V0KGUsbnVsbCksbj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpLG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGE9bltvXTtpZighKGFbZUZdfHxhW2VEXXx8XCJsaW5rXCI9PT1lJiZcInN0eWxlc2hlZXRcIj09PWEuZ2V0QXR0cmlidXRlKFwicmVsXCIpKSYmXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkkpe3ZhciBpPWEuZ2V0QXR0cmlidXRlKHQpfHxcIlwiO2k9ZStpO3ZhciBsPXIuZ2V0KGkpO2w/bC5wdXNoKGEpOnIuc2V0KGksW2FdKX19cmV0dXJuIHJ9ZnVuY3Rpb24gYzAoZSx0LG4peyhlPWUub3duZXJEb2N1bWVudHx8ZSkuaGVhZC5pbnNlcnRCZWZvcmUobixcInRpdGxlXCI9PT10P2UucXVlcnlTZWxlY3RvcihcImhlYWQgPiB0aXRsZVwiKTpudWxsKX1mdW5jdGlvbiBjMShlKXtyZXR1cm5cInN0eWxlc2hlZXRcIiE9PWUudHlwZXx8MCE9KDMmZS5zdGF0ZS5sb2FkaW5nKX12YXIgYzI9bnVsbDtmdW5jdGlvbiBjNCgpe2lmKHRoaXMuY291bnQtLSwwPT09dGhpcy5jb3VudCl7aWYodGhpcy5zdHlsZXNoZWV0cyljMyh0aGlzLHRoaXMuc3R5bGVzaGVldHMpO2Vsc2UgaWYodGhpcy51bnN1c3BlbmQpe3ZhciBlPXRoaXMudW5zdXNwZW5kO3RoaXMudW5zdXNwZW5kPW51bGwsZSgpfX19dmFyIGM1PW51bGw7ZnVuY3Rpb24gYzMoZSx0KXtlLnN0eWxlc2hlZXRzPW51bGwsbnVsbCE9PWUudW5zdXNwZW5kJiYoZS5jb3VudCsrLGM1PW5ldyBNYXAsdC5mb3JFYWNoKGM2LGUpLGM1PW51bGwsYzQuY2FsbChlKSl9ZnVuY3Rpb24gYzYoZSx0KXtpZighKDQmdC5zdGF0ZS5sb2FkaW5nKSl7dmFyIG49YzUuZ2V0KGUpO2lmKG4pdmFyIHI9bi5nZXQobnVsbCk7ZWxzZXtuPW5ldyBNYXAsYzUuc2V0KGUsbik7Zm9yKHZhciBvPWUucXVlcnlTZWxlY3RvckFsbChcImxpbmtbZGF0YS1wcmVjZWRlbmNlXSxzdHlsZVtkYXRhLXByZWNlZGVuY2VdXCIpLGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIGk9b1thXTsoXCJMSU5LXCI9PT1pLm5vZGVOYW1lfHxcIm5vdCBhbGxcIiE9PWkuZ2V0QXR0cmlidXRlKFwibWVkaWFcIikpJiYobi5zZXQoaS5kYXRhc2V0LnByZWNlZGVuY2UsaSkscj1pKX1yJiZuLnNldChudWxsLHIpfWk9KG89dC5pbnN0YW5jZSkuZ2V0QXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpLChhPW4uZ2V0KGkpfHxyKT09PXImJm4uc2V0KG51bGwsbyksbi5zZXQoaSxvKSx0aGlzLmNvdW50Kysscj1jNC5iaW5kKHRoaXMpLG8uYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixyKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLHIpLGE/YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShvLGEubmV4dFNpYmxpbmcpOihlPTk9PT1lLm5vZGVUeXBlP2UuaGVhZDplKS5pbnNlcnRCZWZvcmUobyxlLmZpcnN0Q2hpbGQpLHQuc3RhdGUubG9hZGluZ3w9NH19dmFyIGM5PXskJHR5cGVvZjpBLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfY3VycmVudFZhbHVlOlQsX2N1cnJlbnRWYWx1ZTI6VCxfdGhyZWFkQ291bnQ6MH07ZnVuY3Rpb24gYzgoZSx0LG4scixvLGEsaSxsLHMpe3RoaXMudGFnPTEsdGhpcy5jb250YWluZXJJbmZvPWUsdGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMuY2FsbGJhY2tOb2RlPXRoaXMubmV4dD10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD10aGlzLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbCx0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MCx0aGlzLmV4cGlyYXRpb25UaW1lcz1laygtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLnNoZWxsU3VzcGVuZENvdW50ZXI9dGhpcy5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLndhcm1MYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MCx0aGlzLmVudGFuZ2xlbWVudHM9ZWsoMCksdGhpcy5oaWRkZW5VcGRhdGVzPWVrKG51bGwpLHRoaXMuaWRlbnRpZmllclByZWZpeD1yLHRoaXMub25VbmNhdWdodEVycm9yPW8sdGhpcy5vbkNhdWdodEVycm9yPWEsdGhpcy5vblJlY292ZXJhYmxlRXJyb3I9aSx0aGlzLnBvb2xlZENhY2hlPW51bGwsdGhpcy5wb29sZWRDYWNoZUxhbmVzPTAsdGhpcy5mb3JtU3RhdGU9cyx0aGlzLmluY29tcGxldGVUcmFuc2l0aW9ucz1uZXcgTWFwfWZ1bmN0aW9uIGM3KGUsdCxuLHIsbyxhKXtvPW8/bjg6bjgsbnVsbD09PXIuY29udGV4dD9yLmNvbnRleHQ9bzpyLnBlbmRpbmdDb250ZXh0PW8sKHI9b18odCkpLnBheWxvYWQ9e2VsZW1lbnQ6bn0sbnVsbCE9PShhPXZvaWQgMD09PWE/bnVsbDphKSYmKHIuY2FsbGJhY2s9YSksbnVsbCE9PShuPW9rKGUscix0KSkmJihzYShuLGUsdCksb0UobixlLHQpKX1mdW5jdGlvbiB1ZShlLHQpe2lmKG51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXt2YXIgbj1lLnJldHJ5TGFuZTtlLnJldHJ5TGFuZT0wIT09biYmbjx0P246dH19ZnVuY3Rpb24gdXQoZSx0KXt1ZShlLHQpLChlPWUuYWx0ZXJuYXRlKSYmdWUoZSx0KX1mdW5jdGlvbiB1bihlKXtpZigxMz09PWUudGFnfHwzMT09PWUudGFnKXt2YXIgdD1uMyhlLDB4NDAwMDAwMCk7bnVsbCE9PXQmJnNhKHQsZSwweDQwMDAwMDApLHV0KGUsMHg0MDAwMDAwKX19ZnVuY3Rpb24gdXIoZSl7aWYoMTM9PT1lLnRhZ3x8MzE9PT1lLnRhZyl7dmFyIHQ9c3IoKSxuPW4zKGUsdD1lQih0KSk7bnVsbCE9PW4mJnNhKG4sZSx0KSx1dChlLHQpfX12YXIgdW89ITA7ZnVuY3Rpb24gdWEoZSx0LG4scil7dmFyIG89SS5UO0kuVD1udWxsO3ZhciBhPXoucDt0cnl7ei5wPTIsdWwoZSx0LG4scil9ZmluYWxseXt6LnA9YSxJLlQ9b319ZnVuY3Rpb24gdWkoZSx0LG4scil7dmFyIG89SS5UO0kuVD1udWxsO3ZhciBhPXoucDt0cnl7ei5wPTgsdWwoZSx0LG4scil9ZmluYWxseXt6LnA9YSxJLlQ9b319ZnVuY3Rpb24gdWwoZSx0LG4scil7aWYodW8pe3ZhciBvPXVzKHIpO2lmKG51bGw9PT1vKXM3KGUsdCxyLHVjLG4pLHVBKGUscik7ZWxzZSBpZihmdW5jdGlvbihlLHQsbixyLG8pe3N3aXRjaCh0KXtjYXNlXCJmb2N1c2luXCI6cmV0dXJuIHVwPXV4KHVwLGUsdCxuLHIsbyksITA7Y2FzZVwiZHJhZ2VudGVyXCI6cmV0dXJuIHVoPXV4KHVoLGUsdCxuLHIsbyksITA7Y2FzZVwibW91c2VvdmVyXCI6cmV0dXJuIHVtPXV4KHVtLGUsdCxuLHIsbyksITA7Y2FzZVwicG9pbnRlcm92ZXJcIjp2YXIgYT1vLnBvaW50ZXJJZDtyZXR1cm4gdWcuc2V0KGEsdXgodWcuZ2V0KGEpfHxudWxsLGUsdCxuLHIsbykpLCEwO2Nhc2VcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGE9by5wb2ludGVySWQsdXkuc2V0KGEsdXgodXkuZ2V0KGEpfHxudWxsLGUsdCxuLHIsbykpLCEwfXJldHVybiExfShvLGUsdCxuLHIpKXIuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZih1QShlLHIpLDQmdCYmLTE8dWIuaW5kZXhPZihlKSl7Zm9yKDtudWxsIT09bzspe3ZhciBhPWVWKG8pO2lmKG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOmlmKChhPWEuc3RhdGVOb2RlKS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgaT1lQShhLnBlbmRpbmdMYW5lcyk7aWYoMCE9PWkpe3ZhciBsPWE7Zm9yKGwucGVuZGluZ0xhbmVzfD0yLGwuZW50YW5nbGVkTGFuZXN8PTI7aTspe3ZhciBzPTE8PDMxLWVtKGkpO2wuZW50YW5nbGVtZW50c1sxXXw9cyxpJj1+c31zcShhKSwwPT0oNiZsRCkmJihsMT1lcigpKzUwMCxzSCgwLCExKSl9fWJyZWFrO2Nhc2UgMzE6Y2FzZSAxMzpudWxsIT09KGw9bjMoYSwyKSkmJnNhKGwsYSwyKSxzYygpLHV0KGEsMil9aWYobnVsbD09PShhPXVzKHIpKSYmczcoZSx0LHIsdWMsbiksYT09PW8pYnJlYWs7bz1hfW51bGwhPT1vJiZyLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgczcoZSx0LHIsbnVsbCxuKX19ZnVuY3Rpb24gdXMoZSl7cmV0dXJuIHV1KGU9dHYoZSkpfXZhciB1Yz1udWxsO2Z1bmN0aW9uIHV1KGUpe2lmKHVjPW51bGwsbnVsbCE9PShlPWVIKGUpKSl7dmFyIHQ9cyhlKTtpZihudWxsPT09dCllPW51bGw7ZWxzZXt2YXIgbj10LnRhZztpZigxMz09PW4pe2lmKG51bGwhPT0oZT1jKHQpKSlyZXR1cm4gZTtlPW51bGx9ZWxzZSBpZigzMT09PW4pe2lmKG51bGwhPT0oZT11KHQpKSlyZXR1cm4gZTtlPW51bGx9ZWxzZSBpZigzPT09bil7aWYodC5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PXQudGFnP3Quc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtlPW51bGx9ZWxzZSB0IT09ZSYmKGU9bnVsbCl9fXJldHVybiB1Yz1lLG51bGx9ZnVuY3Rpb24gdWQoZSl7c3dpdGNoKGUpe2Nhc2VcImJlZm9yZXRvZ2dsZVwiOmNhc2VcImNhbmNlbFwiOmNhc2VcImNsaWNrXCI6Y2FzZVwiY2xvc2VcIjpjYXNlXCJjb250ZXh0bWVudVwiOmNhc2VcImNvcHlcIjpjYXNlXCJjdXRcIjpjYXNlXCJhdXhjbGlja1wiOmNhc2VcImRibGNsaWNrXCI6Y2FzZVwiZHJhZ2VuZFwiOmNhc2VcImRyYWdzdGFydFwiOmNhc2VcImRyb3BcIjpjYXNlXCJmb2N1c2luXCI6Y2FzZVwiZm9jdXNvdXRcIjpjYXNlXCJpbnB1dFwiOmNhc2VcImludmFsaWRcIjpjYXNlXCJrZXlkb3duXCI6Y2FzZVwia2V5cHJlc3NcIjpjYXNlXCJrZXl1cFwiOmNhc2VcIm1vdXNlZG93blwiOmNhc2VcIm1vdXNldXBcIjpjYXNlXCJwYXN0ZVwiOmNhc2VcInBhdXNlXCI6Y2FzZVwicGxheVwiOmNhc2VcInBvaW50ZXJjYW5jZWxcIjpjYXNlXCJwb2ludGVyZG93blwiOmNhc2VcInBvaW50ZXJ1cFwiOmNhc2VcInJhdGVjaGFuZ2VcIjpjYXNlXCJyZXNldFwiOmNhc2VcInJlc2l6ZVwiOmNhc2VcInNlZWtlZFwiOmNhc2VcInN1Ym1pdFwiOmNhc2VcInRvZ2dsZVwiOmNhc2VcInRvdWNoY2FuY2VsXCI6Y2FzZVwidG91Y2hlbmRcIjpjYXNlXCJ0b3VjaHN0YXJ0XCI6Y2FzZVwidm9sdW1lY2hhbmdlXCI6Y2FzZVwiY2hhbmdlXCI6Y2FzZVwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZVwidGV4dElucHV0XCI6Y2FzZVwiY29tcG9zaXRpb25zdGFydFwiOmNhc2VcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZVwiY29tcG9zaXRpb251cGRhdGVcIjpjYXNlXCJiZWZvcmVibHVyXCI6Y2FzZVwiYWZ0ZXJibHVyXCI6Y2FzZVwiYmVmb3JlaW5wdXRcIjpjYXNlXCJibHVyXCI6Y2FzZVwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2VcImZvY3VzXCI6Y2FzZVwiaGFzaGNoYW5nZVwiOmNhc2VcInBvcHN0YXRlXCI6Y2FzZVwic2VsZWN0XCI6Y2FzZVwic2VsZWN0c3RhcnRcIjpyZXR1cm4gMjtjYXNlXCJkcmFnXCI6Y2FzZVwiZHJhZ2VudGVyXCI6Y2FzZVwiZHJhZ2V4aXRcIjpjYXNlXCJkcmFnbGVhdmVcIjpjYXNlXCJkcmFnb3ZlclwiOmNhc2VcIm1vdXNlbW92ZVwiOmNhc2VcIm1vdXNlb3V0XCI6Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwicG9pbnRlcm1vdmVcIjpjYXNlXCJwb2ludGVyb3V0XCI6Y2FzZVwicG9pbnRlcm92ZXJcIjpjYXNlXCJzY3JvbGxcIjpjYXNlXCJ0b3VjaG1vdmVcIjpjYXNlXCJ3aGVlbFwiOmNhc2VcIm1vdXNlZW50ZXJcIjpjYXNlXCJtb3VzZWxlYXZlXCI6Y2FzZVwicG9pbnRlcmVudGVyXCI6Y2FzZVwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDg7Y2FzZVwibWVzc2FnZVwiOnN3aXRjaChlbygpKXtjYXNlIGVhOnJldHVybiAyO2Nhc2UgZWk6cmV0dXJuIDg7Y2FzZSBlbDpjYXNlIGVzOnJldHVybiAzMjtjYXNlIGVjOnJldHVybiAweDEwMDAwMDAwO2RlZmF1bHQ6cmV0dXJuIDMyfWRlZmF1bHQ6cmV0dXJuIDMyfX12YXIgdWY9ITEsdXA9bnVsbCx1aD1udWxsLHVtPW51bGwsdWc9bmV3IE1hcCx1eT1uZXcgTWFwLHV2PVtdLHViPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0XCIuc3BsaXQoXCIgXCIpO2Z1bmN0aW9uIHVBKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImZvY3VzaW5cIjpjYXNlXCJmb2N1c291dFwiOnVwPW51bGw7YnJlYWs7Y2FzZVwiZHJhZ2VudGVyXCI6Y2FzZVwiZHJhZ2xlYXZlXCI6dWg9bnVsbDticmVhaztjYXNlXCJtb3VzZW92ZXJcIjpjYXNlXCJtb3VzZW91dFwiOnVtPW51bGw7YnJlYWs7Y2FzZVwicG9pbnRlcm92ZXJcIjpjYXNlXCJwb2ludGVyb3V0XCI6dWcuZGVsZXRlKHQucG9pbnRlcklkKTticmVhaztjYXNlXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2VcImxvc3Rwb2ludGVyY2FwdHVyZVwiOnV5LmRlbGV0ZSh0LnBvaW50ZXJJZCl9fWZ1bmN0aW9uIHV4KGUsdCxuLHIsbyxhKXtyZXR1cm4gbnVsbD09PWV8fGUubmF0aXZlRXZlbnQhPT1hPyhlPXtibG9ja2VkT246dCxkb21FdmVudE5hbWU6bixldmVudFN5c3RlbUZsYWdzOnIsbmF0aXZlRXZlbnQ6YSx0YXJnZXRDb250YWluZXJzOltvXX0sbnVsbCE9PXQmJm51bGwhPT0odD1lVih0KSkmJnVuKHQpKTooZS5ldmVudFN5c3RlbUZsYWdzfD1yLHQ9ZS50YXJnZXRDb250YWluZXJzLG51bGwhPT1vJiYtMT09PXQuaW5kZXhPZihvKSYmdC5wdXNoKG8pKSxlfWZ1bmN0aW9uIHV3KGUpe3ZhciB0PWVIKGUudGFyZ2V0KTtpZihudWxsIT09dCl7dmFyIG49cyh0KTtpZihudWxsIT09bil7aWYoMTM9PT0odD1uLnRhZykpe2lmKG51bGwhPT0odD1jKG4pKSl7ZS5ibG9ja2VkT249dCxleihlLnByaW9yaXR5LGZ1bmN0aW9uKCl7dXIobil9KTtyZXR1cm59fWVsc2UgaWYoMzE9PT10KXtpZihudWxsIT09KHQ9dShuKSkpe2UuYmxvY2tlZE9uPXQsZXooZS5wcmlvcml0eSxmdW5jdGlvbigpe3VyKG4pfSk7cmV0dXJufX1lbHNlIGlmKDM9PT10JiZuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXtlLmJsb2NrZWRPbj0zPT09bi50YWc/bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19fWUuYmxvY2tlZE9uPW51bGx9ZnVuY3Rpb24gdUMoZSl7aWYobnVsbCE9PWUuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgdD1lLnRhcmdldENvbnRhaW5lcnM7MDx0Lmxlbmd0aDspe3ZhciBuPXVzKGUubmF0aXZlRXZlbnQpO2lmKG51bGwhPT1uKXJldHVybiBudWxsIT09KHQ9ZVYobikpJiZ1bih0KSxlLmJsb2NrZWRPbj1uLCExO3ZhciByPW5ldyhuPWUubmF0aXZlRXZlbnQpLmNvbnN0cnVjdG9yKG4udHlwZSxuKTt0eT1yLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQociksdHk9bnVsbCx0LnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gdV8oZSx0LG4pe3VDKGUpJiZuLmRlbGV0ZSh0KX1mdW5jdGlvbiB1aygpe3VmPSExLG51bGwhPT11cCYmdUModXApJiYodXA9bnVsbCksbnVsbCE9PXVoJiZ1Qyh1aCkmJih1aD1udWxsKSxudWxsIT09dW0mJnVDKHVtKSYmKHVtPW51bGwpLHVnLmZvckVhY2godV8pLHV5LmZvckVhY2godV8pfWZ1bmN0aW9uIHVFKGUsdCl7ZS5ibG9ja2VkT249PT10JiYoZS5ibG9ja2VkT249bnVsbCx1Znx8KHVmPSEwLG8udW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhvLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LHVrKSkpfXZhciB1aj1udWxsO2Z1bmN0aW9uIHVTKGUpe3VqIT09ZSYmKHVqPWUsby51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKG8udW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZnVuY3Rpb24oKXt1aj09PWUmJih1aj1udWxsKTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrPTMpe3ZhciBuPWVbdF0scj1lW3QrMV0sbz1lW3QrMl07aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgcilpZihudWxsPT09dXUocnx8bikpY29udGludWU7ZWxzZSBicmVhazt2YXIgYT1lVihuKTtudWxsIT09YSYmKGUuc3BsaWNlKHQsMyksdC09MyxhWChhLHtwZW5kaW5nOiEwLGRhdGE6byxtZXRob2Q6bi5tZXRob2QsYWN0aW9uOnJ9LHIsbykpfX0pKX1mdW5jdGlvbiB1TyhlKXtmdW5jdGlvbiB0KHQpe3JldHVybiB1RSh0LGUpfW51bGwhPT11cCYmdUUodXAsZSksbnVsbCE9PXVoJiZ1RSh1aCxlKSxudWxsIT09dW0mJnVFKHVtLGUpLHVnLmZvckVhY2godCksdXkuZm9yRWFjaCh0KTtmb3IodmFyIG49MDtuPHV2Lmxlbmd0aDtuKyspe3ZhciByPXV2W25dO3IuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpfWZvcig7MDx1di5sZW5ndGgmJm51bGw9PT0obj11dlswXSkuYmxvY2tlZE9uOyl1dyhuKSxudWxsPT09bi5ibG9ja2VkT24mJnV2LnNoaWZ0KCk7aWYobnVsbCE9KG49KGUub3duZXJEb2N1bWVudHx8ZSkuJCRyZWFjdEZvcm1SZXBsYXkpKWZvcihyPTA7cjxuLmxlbmd0aDtyKz0zKXt2YXIgbz1uW3JdLGE9bltyKzFdLGk9b1tlTF18fG51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYSlpfHx1UyhuKTtlbHNlIGlmKGkpe3ZhciBsPW51bGw7aWYoYSYmYS5oYXNBdHRyaWJ1dGUoXCJmb3JtQWN0aW9uXCIpKXtpZihvPWEsaT1hW2VMXXx8bnVsbClsPWkuZm9ybUFjdGlvbjtlbHNlIGlmKG51bGwhPT11dShvKSljb250aW51ZX1lbHNlIGw9aS5hY3Rpb247XCJmdW5jdGlvblwiPT10eXBlb2YgbD9uW3IrMV09bDoobi5zcGxpY2UociwzKSxyLT0zKSx1UyhuKX19fWZ1bmN0aW9uIHVCKCl7ZnVuY3Rpb24gZShlKXtlLmNhbkludGVyY2VwdCYmXCJyZWFjdC10cmFuc2l0aW9uXCI9PT1lLmluZm8mJmUuaW50ZXJjZXB0KHtoYW5kbGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe3JldHVybiBvPWV9KX0sZm9jdXNSZXNldDpcIm1hbnVhbFwiLHNjcm9sbDpcIm1hbnVhbFwifSl9ZnVuY3Rpb24gdCgpe251bGwhPT1vJiYobygpLG89bnVsbCkscnx8c2V0VGltZW91dChuLDIwKX1mdW5jdGlvbiBuKCl7aWYoIXImJiFuYXZpZ2F0aW9uLnRyYW5zaXRpb24pe3ZhciBlPW5hdmlnYXRpb24uY3VycmVudEVudHJ5O2UmJm51bGwhPWUudXJsJiZuYXZpZ2F0aW9uLm5hdmlnYXRlKGUudXJsLHtzdGF0ZTplLmdldFN0YXRlKCksaW5mbzpcInJlYWN0LXRyYW5zaXRpb25cIixoaXN0b3J5OlwicmVwbGFjZVwifSl9fWlmKFwib2JqZWN0XCI9PXR5cGVvZiBuYXZpZ2F0aW9uKXt2YXIgcj0hMSxvPW51bGw7cmV0dXJuIG5hdmlnYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlXCIsZSksbmF2aWdhdGlvbi5hZGRFdmVudExpc3RlbmVyKFwibmF2aWdhdGVzdWNjZXNzXCIsdCksbmF2aWdhdGlvbi5hZGRFdmVudExpc3RlbmVyKFwibmF2aWdhdGVlcnJvclwiLHQpLHNldFRpbWVvdXQobiwxMDApLGZ1bmN0aW9uKCl7cj0hMCxuYXZpZ2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZVwiLGUpLG5hdmlnYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlc3VjY2Vzc1wiLHQpLG5hdmlnYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlZXJyb3JcIix0KSxudWxsIT09byYmKG8oKSxvPW51bGwpfX19ZnVuY3Rpb24gdVAoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9ZnVuY3Rpb24gdUkoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9dUkucHJvdG90eXBlLnJlbmRlcj11UC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09dCl0aHJvdyBFcnJvcihsKDQwOSkpO2M3KHQuY3VycmVudCxzcigpLGUsdCxudWxsLG51bGwpfSx1SS5wcm90b3R5cGUudW5tb3VudD11UC5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsIT09ZSl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIHQ9ZS5jb250YWluZXJJbmZvO2M3KGUuY3VycmVudCwyLG51bGwsZSxudWxsLG51bGwpLHNjKCksdFtlTl09bnVsbH19LHVJLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihlKXtpZihlKXt2YXIgdD1lSSgpO2U9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDplLHByaW9yaXR5OnR9O2Zvcih2YXIgbj0wO248dXYubGVuZ3RoJiYwIT09dCYmdDx1dltuXS5wcmlvcml0eTtuKyspO3V2LnNwbGljZShuLDAsZSksMD09PW4mJnV3KGUpfX07dmFyIHV6PWEudmVyc2lvbjtpZihcIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIiE9PXV6KXRocm93IEVycm9yKGwoNTI3LHV6LFwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwiKSk7aWYoei5maW5kRE9NTm9kZT1mdW5jdGlvbihlKXt2YXIgdD1lLl9yZWFjdEludGVybmFscztpZih2b2lkIDA9PT10KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihsKDE4OCkpO3Rocm93IEVycm9yKGwoMjY4LGU9T2JqZWN0LmtleXMoZSkuam9pbihcIixcIikpKX1yZXR1cm4gZT1udWxsPT09KGU9bnVsbCE9PShlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO2lmKCF0KXtpZihudWxsPT09KHQ9cyhlKSkpdGhyb3cgRXJyb3IobCgxODgpKTtyZXR1cm4gdCE9PWU/bnVsbDplfWZvcih2YXIgbj1lLHI9dDs7KXt2YXIgbz1uLnJldHVybjtpZihudWxsPT09bylicmVhazt2YXIgYT1vLmFsdGVybmF0ZTtpZihudWxsPT09YSl7aWYobnVsbCE9PShyPW8ucmV0dXJuKSl7bj1yO2NvbnRpbnVlfWJyZWFrfWlmKG8uY2hpbGQ9PT1hLmNoaWxkKXtmb3IoYT1vLmNoaWxkO2E7KXtpZihhPT09bilyZXR1cm4gZChvKSxlO2lmKGE9PT1yKXJldHVybiBkKG8pLHQ7YT1hLnNpYmxpbmd9dGhyb3cgRXJyb3IobCgxODgpKX1pZihuLnJldHVybiE9PXIucmV0dXJuKW49byxyPWE7ZWxzZXtmb3IodmFyIGk9ITEsYz1vLmNoaWxkO2M7KXtpZihjPT09bil7aT0hMCxuPW8scj1hO2JyZWFrfWlmKGM9PT1yKXtpPSEwLHI9byxuPWE7YnJlYWt9Yz1jLnNpYmxpbmd9aWYoIWkpe2ZvcihjPWEuY2hpbGQ7Yzspe2lmKGM9PT1uKXtpPSEwLG49YSxyPW87YnJlYWt9aWYoYz09PXIpe2k9ITAscj1hLG49bzticmVha31jPWMuc2libGluZ31pZighaSl0aHJvdyBFcnJvcihsKDE4OSkpfX1pZihuLmFsdGVybmF0ZSE9PXIpdGhyb3cgRXJyb3IobCgxOTApKX1pZigzIT09bi50YWcpdGhyb3cgRXJyb3IobCgxODgpKTtyZXR1cm4gbi5zdGF0ZU5vZGUuY3VycmVudD09PW4/ZTp0fSh0KSk/ZnVuY3Rpb24gZSh0KXt2YXIgbj10LnRhZztpZig1PT09bnx8MjY9PT1ufHwyNz09PW58fDY9PT1uKXJldHVybiB0O2Zvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KXtpZihudWxsIT09KG49ZSh0KSkpcmV0dXJuIG47dD10LnNpYmxpbmd9cmV0dXJuIG51bGx9KGUpOm51bGwpP251bGw6ZS5zdGF0ZU5vZGV9LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB1VD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXVULmlzRGlzYWJsZWQmJnVULnN1cHBvcnRzRmliZXIpdHJ5e2VmPXVULmluamVjdCh7YnVuZGxlVHlwZTowLHZlcnNpb246XCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwiLGN1cnJlbnREaXNwYXRjaGVyUmVmOkkscmVjb25jaWxlclZlcnNpb246XCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCJ9KSxlcD11VH1jYXRjaChlKXt9fXQuY3JlYXRlUm9vdD1mdW5jdGlvbihlLHQpe2lmKCEobj1lKXx8MSE9PW4ubm9kZVR5cGUmJjkhPT1uLm5vZGVUeXBlJiYxMSE9PW4ubm9kZVR5cGUpdGhyb3cgRXJyb3IobCgyOTkpKTt2YXIgbixyLG8sYSxpLHMsYyx1LGQ9ITEsZj1cIlwiLHA9aXUsaD1pZCxtPWlwO3JldHVybiBudWxsIT10JiYoITA9PT10LnVuc3RhYmxlX3N0cmljdE1vZGUmJihkPSEwKSx2b2lkIDAhPT10LmlkZW50aWZpZXJQcmVmaXgmJihmPXQuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09dC5vblVuY2F1Z2h0RXJyb3ImJihwPXQub25VbmNhdWdodEVycm9yKSx2b2lkIDAhPT10Lm9uQ2F1Z2h0RXJyb3ImJihoPXQub25DYXVnaHRFcnJvciksdm9pZCAwIT09dC5vblJlY292ZXJhYmxlRXJyb3ImJihtPXQub25SZWNvdmVyYWJsZUVycm9yKSkscj1lLG89MSxhPSExLGk9bnVsbCxzPTAsYz1kLHU9bnVsbCxyPW5ldyBjOChyLG8sYSxmLHAsaCxtLHVCLG51bGwpLG89MSwhMD09PWMmJihvfD0yNCksYz1yZSgzLG51bGwsbnVsbCxvKSxyLmN1cnJlbnQ9YyxjLnN0YXRlTm9kZT1yLG89cjEoKSxvLnJlZkNvdW50Kyssci5wb29sZWRDYWNoZT1vLG8ucmVmQ291bnQrKyxjLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6bnVsbCxpc0RlaHlkcmF0ZWQ6YSxjYWNoZTpvfSxvdyhjKSx0PXIsZVtlTl09dC5jdXJyZW50LHM5KGUpLG5ldyB1UCh0KX19LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9pbmRleC5qc1wiKTtmdW5jdGlvbiBvKGUpe3ZhciB0PVwiaHR0cHM6Ly9yZWFjdC5kZXYvZXJyb3JzL1wiK2U7aWYoMTxhcmd1bWVudHMubGVuZ3RoKXt0Kz1cIj9hcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7Zm9yKHZhciBuPTI7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSl9cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgXCIrdCtcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9ZnVuY3Rpb24gYSgpe312YXIgaT17ZDp7ZjphLHI6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihvKDUyMikpfSxEOmEsQzphLEw6YSxtOmEsWDphLFM6YSxNOmF9LHA6MCxmaW5kRE9NTm9kZTpudWxsfSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikscz1yLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtmdW5jdGlvbiBjKGUsdCl7cmV0dXJuXCJmb250XCI9PT1lP1wiXCI6XCJzdHJpbmdcIj09dHlwZW9mIHQ/XCJ1c2UtY3JlZGVudGlhbHNcIj09PXQ/dDpcIlwiOnZvaWQgMH10Ll9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERT1pLHQuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIXR8fDEhPT10Lm5vZGVUeXBlJiY5IT09dC5ub2RlVHlwZSYmMTEhPT10Lm5vZGVUeXBlKXRocm93IEVycm9yKG8oMjk5KSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6bCxrZXk6bnVsbD09cj9udWxsOlwiXCIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX0oZSx0LG51bGwsbil9LHQuZmx1c2hTeW5jPWZ1bmN0aW9uKGUpe3ZhciB0PXMuVCxuPWkucDt0cnl7aWYocy5UPW51bGwsaS5wPTIsZSlyZXR1cm4gZSgpfWZpbmFsbHl7cy5UPXQsaS5wPW4saS5kLmYoKX19LHQucHJlY29ubmVjdD1mdW5jdGlvbihlLHQpe1wic3RyaW5nXCI9PXR5cGVvZiBlJiYodD10P1wic3RyaW5nXCI9PXR5cGVvZih0PXQuY3Jvc3NPcmlnaW4pP1widXNlLWNyZWRlbnRpYWxzXCI9PT10P3Q6XCJcIjp2b2lkIDA6bnVsbCxpLmQuQyhlLHQpKX0sdC5wcmVmZXRjaEROUz1mdW5jdGlvbihlKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmaS5kLkQoZSl9LHQucHJlaW5pdD1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZ0JiZcInN0cmluZ1wiPT10eXBlb2YgdC5hcyl7dmFyIG49dC5hcyxyPWMobix0LmNyb3NzT3JpZ2luKSxvPVwic3RyaW5nXCI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDAsYT1cInN0cmluZ1wiPT10eXBlb2YgdC5mZXRjaFByaW9yaXR5P3QuZmV0Y2hQcmlvcml0eTp2b2lkIDA7XCJzdHlsZVwiPT09bj9pLmQuUyhlLFwic3RyaW5nXCI9PXR5cGVvZiB0LnByZWNlZGVuY2U/dC5wcmVjZWRlbmNlOnZvaWQgMCx7Y3Jvc3NPcmlnaW46cixpbnRlZ3JpdHk6byxmZXRjaFByaW9yaXR5OmF9KTpcInNjcmlwdFwiPT09biYmaS5kLlgoZSx7Y3Jvc3NPcmlnaW46cixpbnRlZ3JpdHk6byxmZXRjaFByaW9yaXR5OmEsbm9uY2U6XCJzdHJpbmdcIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDB9KX19LHQucHJlaW5pdE1vZHVsZT1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKWlmKFwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCl7aWYobnVsbD09dC5hc3x8XCJzY3JpcHRcIj09PXQuYXMpe3ZhciBuPWModC5hcyx0LmNyb3NzT3JpZ2luKTtpLmQuTShlLHtjcm9zc09yaWdpbjpuLGludGVncml0eTpcInN0cmluZ1wiPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwLG5vbmNlOlwic3RyaW5nXCI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwfSl9fWVsc2UgbnVsbD09dCYmaS5kLk0oZSl9LHQucHJlbG9hZD1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQmJlwic3RyaW5nXCI9PXR5cGVvZiB0LmFzKXt2YXIgbj10LmFzLHI9YyhuLHQuY3Jvc3NPcmlnaW4pO2kuZC5MKGUsbix7Y3Jvc3NPcmlnaW46cixpbnRlZ3JpdHk6XCJzdHJpbmdcIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxub25jZTpcInN0cmluZ1wiPT10eXBlb2YgdC5ub25jZT90Lm5vbmNlOnZvaWQgMCx0eXBlOlwic3RyaW5nXCI9PXR5cGVvZiB0LnR5cGU/dC50eXBlOnZvaWQgMCxmZXRjaFByaW9yaXR5Olwic3RyaW5nXCI9PXR5cGVvZiB0LmZldGNoUHJpb3JpdHk/dC5mZXRjaFByaW9yaXR5OnZvaWQgMCxyZWZlcnJlclBvbGljeTpcInN0cmluZ1wiPT10eXBlb2YgdC5yZWZlcnJlclBvbGljeT90LnJlZmVycmVyUG9saWN5OnZvaWQgMCxpbWFnZVNyY1NldDpcInN0cmluZ1wiPT10eXBlb2YgdC5pbWFnZVNyY1NldD90LmltYWdlU3JjU2V0OnZvaWQgMCxpbWFnZVNpemVzOlwic3RyaW5nXCI9PXR5cGVvZiB0LmltYWdlU2l6ZXM/dC5pbWFnZVNpemVzOnZvaWQgMCxtZWRpYTpcInN0cmluZ1wiPT10eXBlb2YgdC5tZWRpYT90Lm1lZGlhOnZvaWQgMH0pfX0sdC5wcmVsb2FkTW9kdWxlPWZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpaWYodCl7dmFyIG49Yyh0LmFzLHQuY3Jvc3NPcmlnaW4pO2kuZC5tKGUse2FzOlwic3RyaW5nXCI9PXR5cGVvZiB0LmFzJiZcInNjcmlwdFwiIT09dC5hcz90LmFzOnZvaWQgMCxjcm9zc09yaWdpbjpuLGludGVncml0eTpcInN0cmluZ1wiPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwfSl9ZWxzZSBpLmQubShlKX0sdC5yZXF1ZXN0Rm9ybVJlc2V0PWZ1bmN0aW9uKGUpe2kuZC5yKGUpfSx0LnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUodCl9LHQudXNlRm9ybVN0YXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcy5ILnVzZUZvcm1TdGF0ZShlLHQsbil9LHQudXNlRm9ybVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiBzLkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKX0sdC52ZXJzaW9uPVwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwifSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2xpZW50LmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyFmdW5jdGlvbiBlKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmXCJmdW5jdGlvblwiPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoZSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KCksZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tY2xpZW50LnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9pbmRleC5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjshZnVuY3Rpb24gZSgpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJlwiZnVuY3Rpb25cIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGUpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fSgpLGUuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC1jb21waWxlci1ydW50aW1lLnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9pbmRleC5qc1wiKS5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU7dC5jPWZ1bmN0aW9uKGUpe3JldHVybiByLkgudXNlTWVtb0NhY2hlKGUpfX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuPVN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKTtmdW5jdGlvbiByKGUsdCxyKXt2YXIgbz1udWxsO2lmKHZvaWQgMCE9PXImJihvPVwiXCIrciksdm9pZCAwIT09dC5rZXkmJihvPVwiXCIrdC5rZXkpLFwia2V5XCJpbiB0KWZvcih2YXIgYSBpbiByPXt9LHQpXCJrZXlcIiE9PWEmJihyW2FdPXRbYV0pO2Vsc2Ugcj10O3JldHVybnskJHR5cGVvZjpuLHR5cGU6ZSxrZXk6byxyZWY6dm9pZCAwIT09KHQ9ci5yZWYpP3Q6bnVsbCxwcm9wczpyfX10LkZyYWdtZW50PVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx0LmpzeD1yLHQuanN4cz1yfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49U3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxvPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxpPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxzPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLGM9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLGQ9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksZj1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSxwPVN5bWJvbC5pdGVyYXRvcixoPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxtPU9iamVjdC5hc3NpZ24sZz17fTtmdW5jdGlvbiB5KGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWcsdGhpcy51cGRhdGVyPW58fGh9ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBiKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWcsdGhpcy51cGRhdGVyPW58fGh9eS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSx5LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT1lKXRocm93IEVycm9yKFwidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlLHQsXCJzZXRTdGF0ZVwiKX0seS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLGUsXCJmb3JjZVVwZGF0ZVwiKX0sdi5wcm90b3R5cGU9eS5wcm90b3R5cGU7dmFyIEE9Yi5wcm90b3R5cGU9bmV3IHY7QS5jb25zdHJ1Y3Rvcj1iLG0oQSx5LnByb3RvdHlwZSksQS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgeD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHcoKXt9dmFyIEM9e0g6bnVsbCxBOm51bGwsVDpudWxsLFM6bnVsbH0sXz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGsoZSx0LHIpe3ZhciBvPXIucmVmO3JldHVybnskJHR5cGVvZjpuLHR5cGU6ZSxrZXk6dCxyZWY6dm9pZCAwIT09bz9vOm51bGwscHJvcHM6cn19ZnVuY3Rpb24gRShlKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1ufXZhciBqPS9cXC8rL2c7ZnVuY3Rpb24gUyhlLHQpe3ZhciBuLHI7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT8obj1cIlwiK2Uua2V5LHI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9LFwiJFwiK24ucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiByW2VdfSkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIE8oZSx0LG8pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIGE9W10saT0wO3JldHVybiFmdW5jdGlvbiBlKHQsbyxhLGksbCl7dmFyIHMsYyx1LGQ9dHlwZW9mIHQ7KFwidW5kZWZpbmVkXCI9PT1kfHxcImJvb2xlYW5cIj09PWQpJiYodD1udWxsKTt2YXIgaD0hMTtpZihudWxsPT09dCloPSEwO2Vsc2Ugc3dpdGNoKGQpe2Nhc2VcImJpZ2ludFwiOmNhc2VcInN0cmluZ1wiOmNhc2VcIm51bWJlclwiOmg9ITA7YnJlYWs7Y2FzZVwib2JqZWN0XCI6c3dpdGNoKHQuJCR0eXBlb2Ype2Nhc2UgbjpjYXNlIHI6aD0hMDticmVhaztjYXNlIGY6cmV0dXJuIGUoKGg9dC5faW5pdCkodC5fcGF5bG9hZCksbyxhLGksbCl9fWlmKGgpcmV0dXJuIGw9bCh0KSxoPVwiXCI9PT1pP1wiLlwiK1ModCwwKTppLHgobCk/KGE9XCJcIixudWxsIT1oJiYoYT1oLnJlcGxhY2UoaixcIiQmL1wiKStcIi9cIiksZShsLG8sYSxcIlwiLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpOm51bGwhPWwmJihFKGwpJiYocz1sLGM9YSsobnVsbD09bC5rZXl8fHQmJnQua2V5PT09bC5rZXk/XCJcIjooXCJcIitsLmtleSkucmVwbGFjZShqLFwiJCYvXCIpK1wiL1wiKStoLGw9ayhzLnR5cGUsYyxzLnByb3BzKSksby5wdXNoKGwpKSwxO2g9MDt2YXIgbT1cIlwiPT09aT9cIi5cIjppK1wiOlwiO2lmKHgodCkpZm9yKHZhciBnPTA7Zzx0Lmxlbmd0aDtnKyspZD1tK1MoaT10W2ddLGcpLGgrPWUoaSxvLGEsZCxsKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKGc9bnVsbD09PSh1PXQpfHxcIm9iamVjdFwiIT10eXBlb2YgdT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKHU9cCYmdVtwXXx8dVtcIkBAaXRlcmF0b3JcIl0pP3U6bnVsbCkpZm9yKHQ9Zy5jYWxsKHQpLGc9MDshKGk9dC5uZXh0KCkpLmRvbmU7KWQ9bStTKGk9aS52YWx1ZSxnKyspLGgrPWUoaSxvLGEsZCxsKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1kKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4pcmV0dXJuIGUoZnVuY3Rpb24oZSl7c3dpdGNoKGUuc3RhdHVzKXtjYXNlXCJmdWxmaWxsZWRcIjpyZXR1cm4gZS52YWx1ZTtjYXNlXCJyZWplY3RlZFwiOnRocm93IGUucmVhc29uO2RlZmF1bHQ6c3dpdGNoKFwic3RyaW5nXCI9PXR5cGVvZiBlLnN0YXR1cz9lLnRoZW4odyx3KTooZS5zdGF0dXM9XCJwZW5kaW5nXCIsZS50aGVuKGZ1bmN0aW9uKHQpe1wicGVuZGluZ1wiPT09ZS5zdGF0dXMmJihlLnN0YXR1cz1cImZ1bGZpbGxlZFwiLGUudmFsdWU9dCl9LGZ1bmN0aW9uKHQpe1wicGVuZGluZ1wiPT09ZS5zdGF0dXMmJihlLnN0YXR1cz1cInJlamVjdGVkXCIsZS5yZWFzb249dCl9KSksZS5zdGF0dXMpe2Nhc2VcImZ1bGZpbGxlZFwiOnJldHVybiBlLnZhbHVlO2Nhc2VcInJlamVjdGVkXCI6dGhyb3cgZS5yZWFzb259fXRocm93IGV9KHQpLG8sYSxpLGwpO3Rocm93IEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PShvPVN0cmluZyh0KSk/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyh0KS5qb2luKFwiLCBcIikrXCJ9XCI6bykrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpfXJldHVybiBofShlLGEsXCJcIixcIlwiLGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwobyxlLGkrKyl9KSxhfWZ1bmN0aW9uIEIoZSl7aWYoLTE9PT1lLl9zdGF0dXMpe3ZhciB0PWUuX3Jlc3VsdDsodD10KCkpLnRoZW4oZnVuY3Rpb24odCl7KDA9PT1lLl9zdGF0dXN8fC0xPT09ZS5fc3RhdHVzKSYmKGUuX3N0YXR1cz0xLGUuX3Jlc3VsdD10KX0sZnVuY3Rpb24odCl7KDA9PT1lLl9zdGF0dXN8fC0xPT09ZS5fc3RhdHVzKSYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pLC0xPT09ZS5fc3RhdHVzJiYoZS5fc3RhdHVzPTAsZS5fcmVzdWx0PXQpfWlmKDE9PT1lLl9zdGF0dXMpcmV0dXJuIGUuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGUuX3Jlc3VsdH12YXIgUD1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudCl7dmFyIHQ9bmV3IHdpbmRvdy5FcnJvckV2ZW50KFwiZXJyb3JcIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLG1lc3NhZ2U6XCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lJiZcInN0cmluZ1wiPT10eXBlb2YgZS5tZXNzYWdlP1N0cmluZyhlLm1lc3NhZ2UpOlN0cmluZyhlKSxlcnJvcjplfSk7aWYoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KHQpKXJldHVybn1lbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBwcm9jZXNzJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwcm9jZXNzLmVtaXQpcmV0dXJuIHZvaWQgcHJvY2Vzcy5lbWl0KFwidW5jYXVnaHRFeGNlcHRpb25cIixlKTtjb25zb2xlLmVycm9yKGUpfTt0LkNoaWxkcmVuPXttYXA6Tyxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxuKXtPKGUsZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbil9LGNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PTA7cmV0dXJuIE8oZSxmdW5jdGlvbigpe3QrK30pLHR9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSxmdW5jdGlvbihlKXtyZXR1cm4gZX0pfHxbXX0sb25seTpmdW5jdGlvbihlKXtpZighRShlKSl0aHJvdyBFcnJvcihcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PXksdC5GcmFnbWVudD1vLHQuUHJvZmlsZXI9aSx0LlB1cmVDb21wb25lbnQ9Yix0LlN0cmljdE1vZGU9YSx0LlN1c3BlbnNlPXUsdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9Qyx0Ll9fQ09NUElMRVJfUlVOVElNRT17X19wcm90b19fOm51bGwsYzpmdW5jdGlvbihlKXtyZXR1cm4gQy5ILnVzZU1lbW9DYWNoZShlKX19LHQuY2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0sdC5jYWNoZVNpZ25hbD1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0LmNsb25lRWxlbWVudD1mdW5jdGlvbihlLHQsbil7aWYobnVsbD09ZSl0aHJvdyBFcnJvcihcIlRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgXCIrZStcIi5cIik7dmFyIHI9bSh7fSxlLnByb3BzKSxvPWUua2V5O2lmKG51bGwhPXQpZm9yKGEgaW4gdm9pZCAwIT09dC5rZXkmJihvPVwiXCIrdC5rZXkpLHQpXy5jYWxsKHQsYSkmJlwia2V5XCIhPT1hJiZcIl9fc2VsZlwiIT09YSYmXCJfX3NvdXJjZVwiIT09YSYmKFwicmVmXCIhPT1hfHx2b2lkIDAhPT10LnJlZikmJihyW2FdPXRbYV0pO3ZhciBhPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09YSlyLmNoaWxkcmVuPW47ZWxzZSBpZigxPGEpe2Zvcih2YXIgaT1BcnJheShhKSxsPTA7bDxhO2wrKylpW2xdPWFyZ3VtZW50c1tsKzJdO3IuY2hpbGRyZW49aX1yZXR1cm4gayhlLnR5cGUsbyxyKX0sdC5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybihlPXskJHR5cGVvZjpzLF9jdXJyZW50VmFsdWU6ZSxfY3VycmVudFZhbHVlMjplLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbH0pLlByb3ZpZGVyPWUsZS5Db25zdW1lcj17JCR0eXBlb2Y6bCxfY29udGV4dDplfSxlfSx0LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG89e30sYT1udWxsO2lmKG51bGwhPXQpZm9yKHIgaW4gdm9pZCAwIT09dC5rZXkmJihhPVwiXCIrdC5rZXkpLHQpXy5jYWxsKHQscikmJlwia2V5XCIhPT1yJiZcIl9fc2VsZlwiIT09ciYmXCJfX3NvdXJjZVwiIT09ciYmKG9bcl09dFtyXSk7dmFyIGk9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1pKW8uY2hpbGRyZW49bjtlbHNlIGlmKDE8aSl7Zm9yKHZhciBsPUFycmF5KGkpLHM9MDtzPGk7cysrKWxbc109YXJndW1lbnRzW3MrMl07by5jaGlsZHJlbj1sfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIGk9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09b1tyXSYmKG9bcl09aVtyXSk7cmV0dXJuIGsoZSxhLG8pfSx0LmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSx0LmZvcndhcmRSZWY9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmMscmVuZGVyOmV9fSx0LmlzVmFsaWRFbGVtZW50PUUsdC5sYXp5PWZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpmLF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6ZX0sX2luaXQ6Qn19LHQubWVtbz1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjpkLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9Qy5ULG49e307Qy5UPW47dHJ5e3ZhciByPWUoKSxvPUMuUztudWxsIT09byYmbyhuLHIpLFwib2JqZWN0XCI9PXR5cGVvZiByJiZudWxsIT09ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci50aGVuJiZyLnRoZW4odyxQKX1jYXRjaChlKXtQKGUpfWZpbmFsbHl7bnVsbCE9PXQmJm51bGwhPT1uLnR5cGVzJiYodC50eXBlcz1uLnR5cGVzKSxDLlQ9dH19LHQudW5zdGFibGVfdXNlQ2FjaGVSZWZyZXNoPWZ1bmN0aW9uKCl7cmV0dXJuIEMuSC51c2VDYWNoZVJlZnJlc2goKX0sdC51c2U9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuSC51c2UoZSl9LHQudXNlQWN0aW9uU3RhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBDLkgudXNlQWN0aW9uU3RhdGUoZSx0LG4pfSx0LnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VDYWxsYmFjayhlLHQpfSx0LnVzZUNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuSC51c2VDb250ZXh0KGUpfSx0LnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LHQudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlRGVmZXJyZWRWYWx1ZShlLHQpfSx0LnVzZUVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlRWZmZWN0KGUsdCl9LHQudXNlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gQy5ILnVzZUlkKCl9LHQudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEMuSC51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxuKX0sdC51c2VJbnNlcnRpb25FZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZUluc2VydGlvbkVmZmVjdChlLHQpfSx0LnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlTGF5b3V0RWZmZWN0KGUsdCl9LHQudXNlTWVtbz1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlTWVtbyhlLHQpfSx0LnVzZU9wdGltaXN0aWM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZU9wdGltaXN0aWMoZSx0KX0sdC51c2VSZWR1Y2VyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQy5ILnVzZVJlZHVjZXIoZSx0LG4pfSx0LnVzZVJlZj1mdW5jdGlvbihlKXtyZXR1cm4gQy5ILnVzZVJlZihlKX0sdC51c2VTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gQy5ILnVzZVN0YXRlKGUpfSx0LnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQy5ILnVzZVN5bmNFeHRlcm5hbFN0b3JlKGUsdCxuKX0sdC51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEMuSC51c2VUcmFuc2l0aW9uKCl9LHQudmVyc2lvbj1cIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIn0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY29tcGlsZXItcnVudGltZS5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QtY29tcGlsZXItcnVudGltZS5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9pbmRleC5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LXJ1bnRpbWUuanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3NjaGVkdWxlci9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24uanNcIjpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1lLmxlbmd0aDtmb3IoZS5wdXNoKHQpOzA8bjspe3ZhciByPW4tMT4+PjEsbz1lW3JdO2lmKDA8YShvLHQpKWVbcl09dCxlW25dPW8sbj1yO2Vsc2UgYnJlYWt9fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmVbMF19ZnVuY3Rpb24gbyhlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIHQ9ZVswXSxuPWUucG9wKCk7aWYobiE9PXQpe2VbMF09bjtmb3IodmFyIHI9MCxvPWUubGVuZ3RoLGk9bz4+PjE7cjxpOyl7dmFyIGw9MioocisxKS0xLHM9ZVtsXSxjPWwrMSx1PWVbY107aWYoMD5hKHMsbikpYzxvJiYwPmEodSxzKT8oZVtyXT11LGVbY109bixyPWMpOihlW3JdPXMsZVtsXT1uLHI9bCk7ZWxzZSBpZihjPG8mJjA+YSh1LG4pKWVbcl09dSxlW2NdPW4scj1jO2Vsc2UgYnJlYWt9fXJldHVybiB0fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1lLnNvcnRJbmRleC10LnNvcnRJbmRleDtyZXR1cm4gMCE9PW4/bjplLmlkLXQuaWR9aWYodC51bnN0YWJsZV9ub3c9dm9pZCAwLFwib2JqZWN0XCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgaSxsPXBlcmZvcm1hbmNlO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHM9RGF0ZSxjPXMubm93KCk7dC51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcy5ub3coKS1jfX12YXIgdT1bXSxkPVtdLGY9MSxwPW51bGwsaD0zLG09ITEsZz0hMSx5PSExLHY9ITEsYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCxBPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCx4PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7ZnVuY3Rpb24gdyhlKXtmb3IodmFyIHQ9cihkKTtudWxsIT09dDspe2lmKG51bGw9PT10LmNhbGxiYWNrKW8oZCk7ZWxzZSBpZih0LnN0YXJ0VGltZTw9ZSlvKGQpLHQuc29ydEluZGV4PXQuZXhwaXJhdGlvblRpbWUsbih1LHQpO2Vsc2UgYnJlYWs7dD1yKGQpfX1mdW5jdGlvbiBDKGUpe2lmKHk9ITEsdyhlKSwhZylpZihudWxsIT09cih1KSlnPSEwLF98fChfPSEwLGkoKSk7ZWxzZXt2YXIgdD1yKGQpO251bGwhPT10JiZJKEMsdC5zdGFydFRpbWUtZSl9fXZhciBfPSExLGs9LTEsRT01LGo9LTE7ZnVuY3Rpb24gUygpe3JldHVybiEhdnx8ISh0LnVuc3RhYmxlX25vdygpLWo8RSl9ZnVuY3Rpb24gTygpe2lmKHY9ITEsXyl7dmFyIGU9dC51bnN0YWJsZV9ub3coKTtqPWU7dmFyIG49ITA7dHJ5e2U6e2c9ITEseSYmKHk9ITEsQShrKSxrPS0xKSxtPSEwO3ZhciBhPWg7dHJ5e3Q6e2Zvcih3KGUpLHA9cih1KTtudWxsIT09cCYmIShwLmV4cGlyYXRpb25UaW1lPmUmJlMoKSk7KXt2YXIgbD1wLmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGwpe3AuY2FsbGJhY2s9bnVsbCxoPXAucHJpb3JpdHlMZXZlbDt2YXIgcz1sKHAuZXhwaXJhdGlvblRpbWU8PWUpO2lmKGU9dC51bnN0YWJsZV9ub3coKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKXtwLmNhbGxiYWNrPXMsdyhlKSxuPSEwO2JyZWFrIHR9cD09PXIodSkmJm8odSksdyhlKX1lbHNlIG8odSk7cD1yKHUpfWlmKG51bGwhPT1wKW49ITA7ZWxzZXt2YXIgYz1yKGQpO251bGwhPT1jJiZJKEMsYy5zdGFydFRpbWUtZSksbj0hMX19YnJlYWsgZX1maW5hbGx5e3A9bnVsbCxoPWEsbT0hMX19fWZpbmFsbHl7bj9pKCk6Xz0hMX19fWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHgpaT1mdW5jdGlvbigpe3goTyl9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgQj1uZXcgTWVzc2FnZUNoYW5uZWwsUD1CLnBvcnQyO0IucG9ydDEub25tZXNzYWdlPU8saT1mdW5jdGlvbigpe1AucG9zdE1lc3NhZ2UobnVsbCl9fWVsc2UgaT1mdW5jdGlvbigpe2IoTywwKX07ZnVuY3Rpb24gSShlLG4pe2s9YihmdW5jdGlvbigpe2UodC51bnN0YWJsZV9ub3coKSl9LG4pfXQudW5zdGFibGVfSWRsZVByaW9yaXR5PTUsdC51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xLHQudW5zdGFibGVfTG93UHJpb3JpdHk9NCx0LnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTMsdC51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbCx0LnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTIsdC51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihlKXtlLmNhbGxiYWNrPW51bGx9LHQudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oZSl7MD5lfHwxMjU8ZT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOkU9MDxlP01hdGguZmxvb3IoMWUzL2UpOjV9LHQudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gaH0sdC51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGUpe3N3aXRjaChoKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgdD0zO2JyZWFrO2RlZmF1bHQ6dD1ofXZhciBuPWg7aD10O3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7aD1ufX0sdC51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt2PSEwfSx0LnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6ZT0zfXZhciBuPWg7aD1lO3RyeXtyZXR1cm4gdCgpfWZpbmFsbHl7aD1ufX0sdC51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGUsbyxhKXt2YXIgbD10LnVuc3RhYmxlX25vdygpO3N3aXRjaChhPVwib2JqZWN0XCI9PXR5cGVvZiBhJiZudWxsIT09YSYmXCJudW1iZXJcIj09dHlwZW9mKGE9YS5kZWxheSkmJjA8YT9sK2E6bCxlKXtjYXNlIDE6dmFyIHM9LTE7YnJlYWs7Y2FzZSAyOnM9MjUwO2JyZWFrO2Nhc2UgNTpzPTB4M2ZmZmZmZmY7YnJlYWs7Y2FzZSA0OnM9MWU0O2JyZWFrO2RlZmF1bHQ6cz01ZTN9cmV0dXJuIHM9YStzLGU9e2lkOmYrKyxjYWxsYmFjazpvLHByaW9yaXR5TGV2ZWw6ZSxzdGFydFRpbWU6YSxleHBpcmF0aW9uVGltZTpzLHNvcnRJbmRleDotMX0sYT5sPyhlLnNvcnRJbmRleD1hLG4oZCxlKSxudWxsPT09cih1KSYmZT09PXIoZCkmJih5PyhBKGspLGs9LTEpOnk9ITAsSShDLGEtbCkpKTooZS5zb3J0SW5kZXg9cyxuKHUsZSksZ3x8bXx8KGc9ITAsX3x8KF89ITAsaSgpKSkpLGV9LHQudW5zdGFibGVfc2hvdWxkWWllbGQ9Uyx0LnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD1oO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWg7aD10O3RyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtoPW59fX19LFwiLi9kaXN0L2NvbXBpbGVkL3NjaGVkdWxlci9pbmRleC5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9zdGFja3RyYWNlLXBhcnNlci9zdGFjay10cmFjZS1wYXJzZXIuY2pzLmpzXCI6ZnVuY3Rpb24oZSl7KCgpPT57XCJ1c2Ugc3RyaWN0XCI7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18mJihfX25jY3dwY2tfcmVxdWlyZV9fLmFiPVwiLy9cIik7dmFyIHQsbixyLG8sYSxpLGwscyxjPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQ9XCI8dW5rbm93bj5cIixuPS9eXFxzKmF0ICguKj8pID9cXCgoKD86ZmlsZXxodHRwcz98YmxvYnxjaHJvbWUtZXh0ZW5zaW9ufG5hdGl2ZXxldmFsfHdlYnBhY2t8d2VicGFjay1pbnRlcm5hbHxyc2N8YWJvdXR8dHVyYm9wYWNrfDxhbm9ueW1vdXM+fFxcL3xbYS16XTpcXFxcfFxcXFxcXFxcKS4qPykoPzo6KFxcZCspKT8oPzo6KFxcZCspKT9cXCk/XFxzKiQvaSxyPS9cXCgoXFxTKikoPzo6KFxcZCspKSg/OjooXFxkKykpXFwpLyxvPS9eXFxzKmF0ICg/OigoPzpcXFtvYmplY3Qgb2JqZWN0XFxdKT8uKykgKT9cXCg/KCg/OmZpbGV8bXMtYXBweHxodHRwcz98d2VicGFja3x3ZWJwYWNrLWludGVybmFsfHJzY3xhYm91dHx0dXJib3BhY2t8YmxvYik6Lio/KTooXFxkKykoPzo6KFxcZCspKT9cXCk/XFxzKiQvaSxhPS9eXFxzKiguKj8pKD86XFwoKC4qPylcXCkpPyg/Ol58QCkoKD86ZmlsZXxodHRwcz98YmxvYnxjaHJvbWV8d2VicGFja3x3ZWJwYWNrLWludGVybmFsfHJzY3xhYm91dHx0dXJib3BhY2t8cmVzb3VyY2V8XFxbbmF0aXZlKS4qP3xbXkBdKmJ1bmRsZSkoPzo6KFxcZCspKT8oPzo6KFxcZCspKT9cXHMqJC9pLGk9LyhcXFMrKSBsaW5lIChcXGQrKSg/OiA+IGV2YWwgbGluZSBcXGQrKSogPiBldmFsL2ksbD0vXlxccyooPzooW15AXSopKD86XFwoKC4qPylcXCkpP0ApPyhcXFMuKj8pOihcXGQrKSg/OjooXFxkKykpP1xccyokL2kscz0vXlxccyphdCAoPzooKD86XFxbb2JqZWN0IG9iamVjdFxcXSk/W15cXFxcL10rKD86IFxcW2FzIFxcUytcXF0pPykgKT9cXCg/KC4qPyk6KFxcZCspKD86OihcXGQrKSk/XFwpP1xccyokL2ksYy5wYXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdChcIlxcblwiKS5yZWR1Y2UoZnVuY3Rpb24oZSxjKXt2YXIgdSxkLGYscCxoLG0sZz1mdW5jdGlvbihlKXt2YXIgbz1uLmV4ZWMoZSk7aWYoIW8pcmV0dXJuIG51bGw7dmFyIGE9b1syXSYmMD09PW9bMl0uaW5kZXhPZihcIm5hdGl2ZVwiKSxpPW9bMl0mJjA9PT1vWzJdLmluZGV4T2YoXCJldmFsXCIpLGw9ci5leGVjKG9bMl0pO3JldHVybiBpJiZudWxsIT1sJiYob1syXT1sWzFdLG9bM109bFsyXSxvWzRdPWxbM10pLHtmaWxlOmE/bnVsbDpvWzJdLG1ldGhvZE5hbWU6b1sxXXx8dCxhcmd1bWVudHM6YT9bb1syXV06W10sbGluZU51bWJlcjpvWzNdPytvWzNdOm51bGwsY29sdW1uOm9bNF0/K29bNF06bnVsbH19KGMpfHwodT1jLChkPW8uZXhlYyh1KSk/e2ZpbGU6ZFsyXSxtZXRob2ROYW1lOmRbMV18fHQsYXJndW1lbnRzOltdLGxpbmVOdW1iZXI6K2RbM10sY29sdW1uOmRbNF0/K2RbNF06bnVsbH06bnVsbCl8fGZ1bmN0aW9uKGUpe3ZhciBuPWEuZXhlYyhlKTtpZighbilyZXR1cm4gbnVsbDt2YXIgcj1uWzNdJiZuWzNdLmluZGV4T2YoXCIgPiBldmFsXCIpPi0xLG89aS5leGVjKG5bM10pO3JldHVybiByJiZudWxsIT1vJiYoblszXT1vWzFdLG5bNF09b1syXSxuWzVdPW51bGwpLHtmaWxlOm5bM10sbWV0aG9kTmFtZTpuWzFdfHx0LGFyZ3VtZW50czpuWzJdP25bMl0uc3BsaXQoXCIsXCIpOltdLGxpbmVOdW1iZXI6bls0XT8rbls0XTpudWxsLGNvbHVtbjpuWzVdPytuWzVdOm51bGx9fShjKXx8KGY9YywocD1zLmV4ZWMoZikpP3tmaWxlOnBbMl0sbWV0aG9kTmFtZTpwWzFdfHx0LGFyZ3VtZW50czpbXSxsaW5lTnVtYmVyOitwWzNdLGNvbHVtbjpwWzRdPytwWzRdOm51bGx9Om51bGwpfHwoaD1jLChtPWwuZXhlYyhoKSk/e2ZpbGU6bVszXSxtZXRob2ROYW1lOm1bMV18fHQsYXJndW1lbnRzOltdLGxpbmVOdW1iZXI6K21bNF0sY29sdW1uOm1bNV0/K21bNV06bnVsbH06bnVsbCk7cmV0dXJuIGcmJmUucHVzaChnKSxlfSxbXSl9LGUuZXhwb3J0cz1jfSkoKX0sXCIuL2Rpc3QvY29tcGlsZWQvc3RyaXAtYW5zaS9pbmRleC5qc1wiOmZ1bmN0aW9uKGUpeygoKT0+e1widXNlIHN0cmljdFwiO3ZhciB0PXs1MTE6ZT0+e2UuZXhwb3J0cz0oe29ubHlGaXJzdDplPSExfT17fSk9PlJlZ0V4cChcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyl8KD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIixlP3ZvaWQgMDpcImdcIil9LDUzMjooZSx0LG4pPT57bGV0IHI9big1MTEpO2UuZXhwb3J0cz1lPT5cInN0cmluZ1wiPT10eXBlb2YgZT9lLnJlcGxhY2UocigpLFwiXCIpOmV9fSxuPXt9O2Z1bmN0aW9uIHIoZSl7dmFyIG89bltlXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGE9bltlXT17ZXhwb3J0czp7fX0saT0hMDt0cnl7dFtlXShhLGEuZXhwb3J0cyxyKSxpPSExfWZpbmFsbHl7aSYmZGVsZXRlIG5bZV19cmV0dXJuIGEuZXhwb3J0c31yLmFiPVwiLy9cIixlLmV4cG9ydHM9cig1MzIpfSkoKX0sXCIuL3NyYy9idWlsZC93ZWJwYWNrL2xvYWRlcnMvZGV2dG9vbC9kZXZ0b29sLXN0eWxlLWluamVjdC5qc1wiOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtsZXQgZT13aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZTtpZihlLmNhY2hlZFNoYWRvd1Jvb3QpcmV0dXJuIGUuY2FjaGVkU2hhZG93Um9vdDtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibmV4dGpzLXBvcnRhbFwiKSxuPXQ/LnNoYWRvd1Jvb3R8fG51bGw7cmV0dXJuIG4mJihlLmNhY2hlZFNoYWRvd1Jvb3Q9biksbn1mdW5jdGlvbiBuKGUsdCl7bGV0IG49d2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGU7bi5sYXN0SW5zZXJ0ZWRFbGVtZW50P24ubGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZz90Lmluc2VydEJlZm9yZShlLG4ubGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyk6dC5hcHBlbmRDaGlsZChlKTp0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCksbi5sYXN0SW5zZXJ0ZWRFbGVtZW50PWV9ZnVuY3Rpb24gcigpe2xldCBlPXdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlLHI9dCgpO3ImJihlLnBlbmRpbmdFbGVtZW50cy5mb3JFYWNoKGU9PntuKGUscil9KSxlLnBlbmRpbmdFbGVtZW50cz1bXSl9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlPXdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlfHx7cGVuZGluZ0VsZW1lbnRzOltdLGlzT2JzZXJ2aW5nOiExLGxhc3RJbnNlcnRlZEVsZW1lbnQ6bnVsbCxjYWNoZWRTaGFkb3dSb290Om51bGx9KSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLW5leHRqcy1kZXYtdG9vbC1zdHlsZVwiLFwidHJ1ZVwiKTtsZXQgbz10KCk7bz9uKGUsbyk6KHdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlLnBlbmRpbmdFbGVtZW50cy5wdXNoKGUpLGZ1bmN0aW9uKCl7bGV0IGU9d2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGU7aWYoZS5pc09ic2VydmluZylyZXR1cm47aWYoZS5pc09ic2VydmluZz0hMCx0KCkpcmV0dXJuIHIoKTtsZXQgbj1uZXcgTXV0YXRpb25PYnNlcnZlcihvPT57aWYoMD09PW8ubGVuZ3RofHwwPT09b1swXS5hZGRlZE5vZGVzLmxlbmd0aClyZXR1cm47bGV0IGE9b1swXS5hZGRlZE5vZGVzWzBdLGk9bnVsbDtpZihcIlNDUklQVFwiPT09YS50YWdOYW1lJiZhLmdldEF0dHJpYnV0ZShcImRhdGEtbmV4dGpzLWRldi1vdmVybGF5XCIpP2k9YS5maXJzdENoaWxkOlwiTkVYVEpTLVBPUlRBTFwiPT09YS50YWdOYW1lJiYoaT1hKSwhaSlyZXR1cm47bGV0IGw9KCk9Pnt0KCk/KHIoKSxuLmRpc2Nvbm5lY3QoKSxlLmlzT2JzZXJ2aW5nPSExKTpzZXRUaW1lb3V0KGwsMjApfTtsKCl9KTtuLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX0oKSl9fSxcIi4vZGlzdC9jb21waWxlZC96b2QvaW5kZXguY2pzXCI6ZnVuY3Rpb24oZSl7KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezYyOTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTsoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSkmJihvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2UuZGVmYXVsdD10fSksYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCIhPT1uJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmcih0LGUsbik7cmV0dXJuIG8odCxlKSx0fSxpPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lno9dm9pZCAwO2xldCBsPWEobig5MjMpKTt0Lno9bCxpKG4oOTIzKSx0KSx0LmRlZmF1bHQ9bH0sMzQ4OihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlpvZEVycm9yPXQucXVvdGVsZXNzSnNvbj10LlpvZElzc3VlQ29kZT12b2lkIDA7bGV0IHI9big3MDkpO3QuWm9kSXNzdWVDb2RlPXIudXRpbC5hcnJheVRvRW51bShbXCJpbnZhbGlkX3R5cGVcIixcImludmFsaWRfbGl0ZXJhbFwiLFwiY3VzdG9tXCIsXCJpbnZhbGlkX3VuaW9uXCIsXCJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3JcIixcImludmFsaWRfZW51bV92YWx1ZVwiLFwidW5yZWNvZ25pemVkX2tleXNcIixcImludmFsaWRfYXJndW1lbnRzXCIsXCJpbnZhbGlkX3JldHVybl90eXBlXCIsXCJpbnZhbGlkX2RhdGVcIixcImludmFsaWRfc3RyaW5nXCIsXCJ0b29fc21hbGxcIixcInRvb19iaWdcIixcImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzXCIsXCJub3RfbXVsdGlwbGVfb2ZcIixcIm5vdF9maW5pdGVcIl0pLHQucXVvdGVsZXNzSnNvbj1lPT5KU09OLnN0cmluZ2lmeShlLG51bGwsMikucmVwbGFjZSgvXCIoW15cIl0rKVwiOi9nLFwiJDE6XCIpO2NsYXNzIG8gZXh0ZW5kcyBFcnJvcntnZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuaXNzdWVzfWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5pc3N1ZXM9W10sdGhpcy5hZGRJc3N1ZT1lPT57dGhpcy5pc3N1ZXM9Wy4uLnRoaXMuaXNzdWVzLGVdfSx0aGlzLmFkZElzc3Vlcz0oZT1bXSk9Pnt0aGlzLmlzc3Vlcz1bLi4udGhpcy5pc3N1ZXMsLi4uZV19O2xldCB0PW5ldy50YXJnZXQucHJvdG90eXBlO09iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyx0KTp0aGlzLl9fcHJvdG9fXz10LHRoaXMubmFtZT1cIlpvZEVycm9yXCIsdGhpcy5pc3N1ZXM9ZX1mb3JtYXQoZSl7bGV0IHQ9ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVzc2FnZX0sbj17X2Vycm9yczpbXX0scj1lPT57Zm9yKGxldCBvIG9mIGUuaXNzdWVzKWlmKFwiaW52YWxpZF91bmlvblwiPT09by5jb2RlKW8udW5pb25FcnJvcnMubWFwKHIpO2Vsc2UgaWYoXCJpbnZhbGlkX3JldHVybl90eXBlXCI9PT1vLmNvZGUpcihvLnJldHVyblR5cGVFcnJvcik7ZWxzZSBpZihcImludmFsaWRfYXJndW1lbnRzXCI9PT1vLmNvZGUpcihvLmFyZ3VtZW50c0Vycm9yKTtlbHNlIGlmKDA9PT1vLnBhdGgubGVuZ3RoKW4uX2Vycm9ycy5wdXNoKHQobykpO2Vsc2V7bGV0IGU9bixyPTA7Zm9yKDtyPG8ucGF0aC5sZW5ndGg7KXtsZXQgbj1vLnBhdGhbcl07cj09PW8ucGF0aC5sZW5ndGgtMT8oZVtuXT1lW25dfHx7X2Vycm9yczpbXX0sZVtuXS5fZXJyb3JzLnB1c2godChvKSkpOmVbbl09ZVtuXXx8e19lcnJvcnM6W119LGU9ZVtuXSxyKyt9fX07cmV0dXJuIHIodGhpcyksbn1zdGF0aWMgYXNzZXJ0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIG8pKXRocm93IEVycm9yKGBOb3QgYSBab2RFcnJvcjogJHtlfWApfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMubWVzc2FnZX1nZXQgbWVzc2FnZSgpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcyxyLnV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmlzc3Vlcy5sZW5ndGh9ZmxhdHRlbihlPWU9PmUubWVzc2FnZSl7bGV0IHQ9e30sbj1bXTtmb3IobGV0IHIgb2YgdGhpcy5pc3N1ZXMpaWYoci5wYXRoLmxlbmd0aD4wKXtsZXQgbj1yLnBhdGhbMF07dFtuXT10W25dfHxbXSx0W25dLnB1c2goZShyKSl9ZWxzZSBuLnB1c2goZShyKSk7cmV0dXJue2Zvcm1FcnJvcnM6bixmaWVsZEVycm9yczp0fX1nZXQgZm9ybUVycm9ycygpe3JldHVybiB0aGlzLmZsYXR0ZW4oKX19dC5ab2RFcnJvcj1vLG8uY3JlYXRlPWU9Pm5ldyBvKGUpfSw2MTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kZWZhdWx0RXJyb3JNYXA9dm9pZCAwLHQuc2V0RXJyb3JNYXA9ZnVuY3Rpb24oZSl7YT1lfSx0LmdldEVycm9yTWFwPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O2xldCBvPXIobig4NzEpKTt0LmRlZmF1bHRFcnJvck1hcD1vLmRlZmF1bHQ7bGV0IGE9by5kZWZhdWx0fSw5MjM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKTt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7KCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpJiYobz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLG8pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxvKG4oNjEpLHQpLG8obig4MTgpLHQpLG8obig1MTUpLHQpLG8obig3MDkpLHQpLG8obigxNTUpLHQpLG8obigzNDgpLHQpfSw1Mzg6KGUsdCk9Pnt2YXIgbixyO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZXJyb3JVdGlsPXZvaWQgMCwocj1ufHwodC5lcnJvclV0aWw9bj17fSkpLmVyclRvT2JqPWU9Plwic3RyaW5nXCI9PXR5cGVvZiBlP3ttZXNzYWdlOmV9OmV8fHt9LHIudG9TdHJpbmc9ZT0+XCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplPy5tZXNzYWdlfSw4MTg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNBc3luYz10LmlzVmFsaWQ9dC5pc0RpcnR5PXQuaXNBYm9ydGVkPXQuT0s9dC5ESVJUWT10LklOVkFMSUQ9dC5QYXJzZVN0YXR1cz10LkVNUFRZX1BBVEg9dC5tYWtlSXNzdWU9dm9pZCAwLHQuYWRkSXNzdWVUb0NvbnRleHQ9ZnVuY3Rpb24oZSxuKXtsZXQgcj0oMCxvLmdldEVycm9yTWFwKSgpLGk9KDAsdC5tYWtlSXNzdWUpKHtpc3N1ZURhdGE6bixkYXRhOmUuZGF0YSxwYXRoOmUucGF0aCxlcnJvck1hcHM6W2UuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCxlLnNjaGVtYUVycm9yTWFwLHIscj09PWEuZGVmYXVsdD92b2lkIDA6YS5kZWZhdWx0XS5maWx0ZXIoZT0+ISFlKX0pO2UuY29tbW9uLmlzc3Vlcy5wdXNoKGkpfTtsZXQgbz1uKDYxKSxhPXIobig4NzEpKTt0Lm1ha2VJc3N1ZT1lPT57bGV0e2RhdGE6dCxwYXRoOm4sZXJyb3JNYXBzOnIsaXNzdWVEYXRhOm99PWUsYT1bLi4ubiwuLi5vLnBhdGh8fFtdXSxpPXsuLi5vLHBhdGg6YX07aWYodm9pZCAwIT09by5tZXNzYWdlKXJldHVybnsuLi5vLHBhdGg6YSxtZXNzYWdlOm8ubWVzc2FnZX07bGV0IGw9XCJcIjtmb3IobGV0IGUgb2Ygci5maWx0ZXIoZT0+ISFlKS5zbGljZSgpLnJldmVyc2UoKSlsPWUoaSx7ZGF0YTp0LGRlZmF1bHRFcnJvcjpsfSkubWVzc2FnZTtyZXR1cm57Li4ubyxwYXRoOmEsbWVzc2FnZTpsfX0sdC5FTVBUWV9QQVRIPVtdO2NsYXNzIGl7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPVwidmFsaWRcIn1kaXJ0eSgpe1widmFsaWRcIj09PXRoaXMudmFsdWUmJih0aGlzLnZhbHVlPVwiZGlydHlcIil9YWJvcnQoKXtcImFib3J0ZWRcIiE9PXRoaXMudmFsdWUmJih0aGlzLnZhbHVlPVwiYWJvcnRlZFwiKX1zdGF0aWMgbWVyZ2VBcnJheShlLG4pe2xldCByPVtdO2ZvcihsZXQgbyBvZiBuKXtpZihcImFib3J0ZWRcIj09PW8uc3RhdHVzKXJldHVybiB0LklOVkFMSUQ7XCJkaXJ0eVwiPT09by5zdGF0dXMmJmUuZGlydHkoKSxyLnB1c2goby52YWx1ZSl9cmV0dXJue3N0YXR1czplLnZhbHVlLHZhbHVlOnJ9fXN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKGUsdCl7bGV0IG49W107Zm9yKGxldCBlIG9mIHQpe2xldCB0PWF3YWl0IGUua2V5LHI9YXdhaXQgZS52YWx1ZTtuLnB1c2goe2tleTp0LHZhbHVlOnJ9KX1yZXR1cm4gaS5tZXJnZU9iamVjdFN5bmMoZSxuKX1zdGF0aWMgbWVyZ2VPYmplY3RTeW5jKGUsbil7bGV0IHI9e307Zm9yKGxldCBvIG9mIG4pe2xldHtrZXk6bix2YWx1ZTphfT1vO2lmKFwiYWJvcnRlZFwiPT09bi5zdGF0dXN8fFwiYWJvcnRlZFwiPT09YS5zdGF0dXMpcmV0dXJuIHQuSU5WQUxJRDtcImRpcnR5XCI9PT1uLnN0YXR1cyYmZS5kaXJ0eSgpLFwiZGlydHlcIj09PWEuc3RhdHVzJiZlLmRpcnR5KCksXCJfX3Byb3RvX19cIiE9PW4udmFsdWUmJih2b2lkIDAhPT1hLnZhbHVlfHxvLmFsd2F5c1NldCkmJihyW24udmFsdWVdPWEudmFsdWUpfXJldHVybntzdGF0dXM6ZS52YWx1ZSx2YWx1ZTpyfX19dC5QYXJzZVN0YXR1cz1pLHQuSU5WQUxJRD1PYmplY3QuZnJlZXplKHtzdGF0dXM6XCJhYm9ydGVkXCJ9KSx0LkRJUlRZPWU9Pih7c3RhdHVzOlwiZGlydHlcIix2YWx1ZTplfSksdC5PSz1lPT4oe3N0YXR1czpcInZhbGlkXCIsdmFsdWU6ZX0pLHQuaXNBYm9ydGVkPWU9PlwiYWJvcnRlZFwiPT09ZS5zdGF0dXMsdC5pc0RpcnR5PWU9PlwiZGlydHlcIj09PWUuc3RhdHVzLHQuaXNWYWxpZD1lPT5cInZhbGlkXCI9PT1lLnN0YXR1cyx0LmlzQXN5bmM9ZT0+XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFByb21pc2UmJmUgaW5zdGFuY2VvZiBQcm9taXNlfSw1MTU6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sNzA5OihlLHQpPT57dmFyIG4scixvO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZ2V0UGFyc2VkVHlwZT10LlpvZFBhcnNlZFR5cGU9dC5vYmplY3RVdGlsPXQudXRpbD12b2lkIDAsKG89bnx8KHQudXRpbD1uPXt9KSkuYXNzZXJ0RXF1YWw9ZT0+e30sby5hc3NlcnRJcz1mdW5jdGlvbihlKXt9LG8uYXNzZXJ0TmV2ZXI9ZnVuY3Rpb24oZSl7dGhyb3cgRXJyb3IoKX0sby5hcnJheVRvRW51bT1lPT57bGV0IHQ9e307Zm9yKGxldCBuIG9mIGUpdFtuXT1uO3JldHVybiB0fSxvLmdldFZhbGlkRW51bVZhbHVlcz1lPT57bGV0IHQ9by5vYmplY3RLZXlzKGUpLmZpbHRlcih0PT5cIm51bWJlclwiIT10eXBlb2YgZVtlW3RdXSksbj17fTtmb3IobGV0IHIgb2YgdCluW3JdPWVbcl07cmV0dXJuIG8ub2JqZWN0VmFsdWVzKG4pfSxvLm9iamVjdFZhbHVlcz1lPT5vLm9iamVjdEtleXMoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSksby5vYmplY3RLZXlzPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5rZXlzP2U9Pk9iamVjdC5rZXlzKGUpOmU9PntsZXQgdD1bXTtmb3IobGV0IG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmdC5wdXNoKG4pO3JldHVybiB0fSxvLmZpbmQ9KGUsdCk9Pntmb3IobGV0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxvLmlzSW50ZWdlcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBOdW1iZXIuaXNJbnRlZ2VyP2U9Pk51bWJlci5pc0ludGVnZXIoZSk6ZT0+XCJudW1iZXJcIj09dHlwZW9mIGUmJk51bWJlci5pc0Zpbml0ZShlKSYmTWF0aC5mbG9vcihlKT09PWUsby5qb2luVmFsdWVzPWZ1bmN0aW9uKGUsdD1cIiB8IFwiKXtyZXR1cm4gZS5tYXAoZT0+XCJzdHJpbmdcIj09dHlwZW9mIGU/YCcke2V9J2A6ZSkuam9pbih0KX0sby5qc29uU3RyaW5naWZ5UmVwbGFjZXI9KGUsdCk9PlwiYmlnaW50XCI9PXR5cGVvZiB0P3QudG9TdHJpbmcoKTp0LChyfHwodC5vYmplY3RVdGlsPXI9e30pKS5tZXJnZVNoYXBlcz0oZSx0KT0+KHsuLi5lLC4uLnR9KSx0LlpvZFBhcnNlZFR5cGU9bi5hcnJheVRvRW51bShbXCJzdHJpbmdcIixcIm5hblwiLFwibnVtYmVyXCIsXCJpbnRlZ2VyXCIsXCJmbG9hdFwiLFwiYm9vbGVhblwiLFwiZGF0ZVwiLFwiYmlnaW50XCIsXCJzeW1ib2xcIixcImZ1bmN0aW9uXCIsXCJ1bmRlZmluZWRcIixcIm51bGxcIixcImFycmF5XCIsXCJvYmplY3RcIixcInVua25vd25cIixcInByb21pc2VcIixcInZvaWRcIixcIm5ldmVyXCIsXCJtYXBcIixcInNldFwiXSksdC5nZXRQYXJzZWRUeXBlPWU9Pntzd2l0Y2godHlwZW9mIGUpe2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkO2Nhc2VcInN0cmluZ1wiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUuc3RyaW5nO2Nhc2VcIm51bWJlclwiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/dC5ab2RQYXJzZWRUeXBlLm5hbjp0LlpvZFBhcnNlZFR5cGUubnVtYmVyO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLmJvb2xlYW47Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLmZ1bmN0aW9uO2Nhc2VcImJpZ2ludFwiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUuYmlnaW50O2Nhc2VcInN5bWJvbFwiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUuc3ltYm9sO2Nhc2VcIm9iamVjdFwiOmlmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5hcnJheTtpZihudWxsPT09ZSlyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLm51bGw7aWYoZS50aGVuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnRoZW4mJmUuY2F0Y2gmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY2F0Y2gpcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5wcm9taXNlO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBNYXAmJmUgaW5zdGFuY2VvZiBNYXApcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5tYXA7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNldCYmZSBpbnN0YW5jZW9mIFNldClyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnNldDtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgRGF0ZSYmZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5kYXRlO3JldHVybiB0LlpvZFBhcnNlZFR5cGUub2JqZWN0O2RlZmF1bHQ6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS51bmtub3dufX19LDg3MTooZSx0LG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7bGV0IHI9bigzNDgpLG89big3MDkpO3QuZGVmYXVsdD0oZSx0KT0+e2xldCBuO3N3aXRjaChlLmNvZGUpe2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlOm49ZS5yZWNlaXZlZD09PW8uWm9kUGFyc2VkVHlwZS51bmRlZmluZWQ/XCJSZXF1aXJlZFwiOmBFeHBlY3RlZCAke2UuZXhwZWN0ZWR9LCByZWNlaXZlZCAke2UucmVjZWl2ZWR9YDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbDpuPWBJbnZhbGlkIGxpdGVyYWwgdmFsdWUsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoZS5leHBlY3RlZCxvLnV0aWwuanNvblN0cmluZ2lmeVJlcGxhY2VyKX1gO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXM6bj1gVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7by51dGlsLmpvaW5WYWx1ZXMoZS5rZXlzLFwiLCBcIil9YDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb246bj1cIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpuPWBJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7by51dGlsLmpvaW5WYWx1ZXMoZS5vcHRpb25zKX1gO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlOm49YEludmFsaWQgZW51bSB2YWx1ZS4gRXhwZWN0ZWQgJHtvLnV0aWwuam9pblZhbHVlcyhlLm9wdGlvbnMpfSwgcmVjZWl2ZWQgJyR7ZS5yZWNlaXZlZH0nYDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzOm49XCJJbnZhbGlkIGZ1bmN0aW9uIGFyZ3VtZW50c1wiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTpuPVwiSW52YWxpZCBmdW5jdGlvbiByZXR1cm4gdHlwZVwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlOm49XCJJbnZhbGlkIGRhdGVcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nOlwib2JqZWN0XCI9PXR5cGVvZiBlLnZhbGlkYXRpb24/XCJpbmNsdWRlc1wiaW4gZS52YWxpZGF0aW9uPyhuPWBJbnZhbGlkIGlucHV0OiBtdXN0IGluY2x1ZGUgXCIke2UudmFsaWRhdGlvbi5pbmNsdWRlc31cImAsXCJudW1iZXJcIj09dHlwZW9mIGUudmFsaWRhdGlvbi5wb3NpdGlvbiYmKG49YCR7bn0gYXQgb25lIG9yIG1vcmUgcG9zaXRpb25zIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2UudmFsaWRhdGlvbi5wb3NpdGlvbn1gKSk6XCJzdGFydHNXaXRoXCJpbiBlLnZhbGlkYXRpb24/bj1gSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoIFwiJHtlLnZhbGlkYXRpb24uc3RhcnRzV2l0aH1cImA6XCJlbmRzV2l0aFwiaW4gZS52YWxpZGF0aW9uP249YEludmFsaWQgaW5wdXQ6IG11c3QgZW5kIHdpdGggXCIke2UudmFsaWRhdGlvbi5lbmRzV2l0aH1cImA6by51dGlsLmFzc2VydE5ldmVyKGUudmFsaWRhdGlvbik6bj1cInJlZ2V4XCIhPT1lLnZhbGlkYXRpb24/YEludmFsaWQgJHtlLnZhbGlkYXRpb259YDpcIkludmFsaWRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLnRvb19zbWFsbDpuPVwiYXJyYXlcIj09PWUudHlwZT9gQXJyYXkgbXVzdCBjb250YWluICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImF0IGxlYXN0XCI6XCJtb3JlIHRoYW5cIn0gJHtlLm1pbmltdW19IGVsZW1lbnQocylgOlwic3RyaW5nXCI9PT1lLnR5cGU/YFN0cmluZyBtdXN0IGNvbnRhaW4gJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wiYXQgbGVhc3RcIjpcIm92ZXJcIn0gJHtlLm1pbmltdW19IGNoYXJhY3RlcihzKWA6XCJudW1iZXJcIj09PWUudHlwZXx8XCJiaWdpbnRcIj09PWUudHlwZT9gTnVtYmVyIG11c3QgYmUgJHtlLmV4YWN0P1wiZXhhY3RseSBlcXVhbCB0byBcIjplLmluY2x1c2l2ZT9cImdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcIjpcImdyZWF0ZXIgdGhhbiBcIn0ke2UubWluaW11bX1gOlwiZGF0ZVwiPT09ZS50eXBlP2BEYXRlIG11c3QgYmUgJHtlLmV4YWN0P1wiZXhhY3RseSBlcXVhbCB0byBcIjplLmluY2x1c2l2ZT9cImdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcIjpcImdyZWF0ZXIgdGhhbiBcIn0ke25ldyBEYXRlKE51bWJlcihlLm1pbmltdW0pKX1gOlwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUudG9vX2JpZzpuPVwiYXJyYXlcIj09PWUudHlwZT9gQXJyYXkgbXVzdCBjb250YWluICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImF0IG1vc3RcIjpcImxlc3MgdGhhblwifSAke2UubWF4aW11bX0gZWxlbWVudChzKWA6XCJzdHJpbmdcIj09PWUudHlwZT9gU3RyaW5nIG11c3QgY29udGFpbiAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJhdCBtb3N0XCI6XCJ1bmRlclwifSAke2UubWF4aW11bX0gY2hhcmFjdGVyKHMpYDpcIm51bWJlclwiPT09ZS50eXBlP2BOdW1iZXIgbXVzdCBiZSAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIjpcImxlc3MgdGhhblwifSAke2UubWF4aW11bX1gOlwiYmlnaW50XCI9PT1lLnR5cGU/YEJpZ0ludCBtdXN0IGJlICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImxlc3MgdGhhbiBvciBlcXVhbCB0b1wiOlwibGVzcyB0aGFuXCJ9ICR7ZS5tYXhpbXVtfWA6XCJkYXRlXCI9PT1lLnR5cGU/YERhdGUgbXVzdCBiZSAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJzbWFsbGVyIHRoYW4gb3IgZXF1YWwgdG9cIjpcInNtYWxsZXIgdGhhblwifSAke25ldyBEYXRlKE51bWJlcihlLm1heGltdW0pKX1gOlwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuY3VzdG9tOm49XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlczpuPVwiSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mOm49YE51bWJlciBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLm11bHRpcGxlT2Z9YDticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLm5vdF9maW5pdGU6bj1cIk51bWJlciBtdXN0IGJlIGZpbml0ZVwiO2JyZWFrO2RlZmF1bHQ6bj10LmRlZmF1bHRFcnJvcixvLnV0aWwuYXNzZXJ0TmV2ZXIoZSl9cmV0dXJue21lc3NhZ2U6bn19fSwxNTU6KGUsdCxuKT0+e3ZhciByLG87bGV0IGE7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5kaXNjcmltaW5hdGVkVW5pb249dC5kYXRlPXQuYm9vbGVhbj10LmJpZ2ludD10LmFycmF5PXQuYW55PXQuY29lcmNlPXQuWm9kRmlyc3RQYXJ0eVR5cGVLaW5kPXQubGF0ZT10LlpvZFNjaGVtYT10LlNjaGVtYT10LlpvZFJlYWRvbmx5PXQuWm9kUGlwZWxpbmU9dC5ab2RCcmFuZGVkPXQuQlJBTkQ9dC5ab2ROYU49dC5ab2RDYXRjaD10LlpvZERlZmF1bHQ9dC5ab2ROdWxsYWJsZT10LlpvZE9wdGlvbmFsPXQuWm9kVHJhbnNmb3JtZXI9dC5ab2RFZmZlY3RzPXQuWm9kUHJvbWlzZT10LlpvZE5hdGl2ZUVudW09dC5ab2RFbnVtPXQuWm9kTGl0ZXJhbD10LlpvZExhenk9dC5ab2RGdW5jdGlvbj10LlpvZFNldD10LlpvZE1hcD10LlpvZFJlY29yZD10LlpvZFR1cGxlPXQuWm9kSW50ZXJzZWN0aW9uPXQuWm9kRGlzY3JpbWluYXRlZFVuaW9uPXQuWm9kVW5pb249dC5ab2RPYmplY3Q9dC5ab2RBcnJheT10LlpvZFZvaWQ9dC5ab2ROZXZlcj10LlpvZFVua25vd249dC5ab2RBbnk9dC5ab2ROdWxsPXQuWm9kVW5kZWZpbmVkPXQuWm9kU3ltYm9sPXQuWm9kRGF0ZT10LlpvZEJvb2xlYW49dC5ab2RCaWdJbnQ9dC5ab2ROdW1iZXI9dC5ab2RTdHJpbmc9dC5ab2RUeXBlPXZvaWQgMCx0Lk5FVkVSPXQudm9pZD10LnVua25vd249dC51bmlvbj10LnVuZGVmaW5lZD10LnR1cGxlPXQudHJhbnNmb3JtZXI9dC5zeW1ib2w9dC5zdHJpbmc9dC5zdHJpY3RPYmplY3Q9dC5zZXQ9dC5yZWNvcmQ9dC5wcm9taXNlPXQucHJlcHJvY2Vzcz10LnBpcGVsaW5lPXQub3N0cmluZz10Lm9wdGlvbmFsPXQub251bWJlcj10Lm9ib29sZWFuPXQub2JqZWN0PXQubnVtYmVyPXQubnVsbGFibGU9dC5udWxsPXQubmV2ZXI9dC5uYXRpdmVFbnVtPXQubmFuPXQubWFwPXQubGl0ZXJhbD10Lmxhenk9dC5pbnRlcnNlY3Rpb249dC5pbnN0YW5jZW9mPXQuZnVuY3Rpb249dC5lbnVtPXQuZWZmZWN0PXZvaWQgMCx0LmRhdGV0aW1lUmVnZXg9SSx0LmN1c3RvbT1ldjtsZXQgaT1uKDM0OCksbD1uKDYxKSxzPW4oNTM4KSxjPW4oODE4KSx1PW4oNzA5KTtjbGFzcyBke2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX2NhY2hlZFBhdGg9W10sdGhpcy5wYXJlbnQ9ZSx0aGlzLmRhdGE9dCx0aGlzLl9wYXRoPW4sdGhpcy5fa2V5PXJ9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fY2FjaGVkUGF0aC5sZW5ndGh8fChBcnJheS5pc0FycmF5KHRoaXMuX2tleSk/dGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsLi4udGhpcy5fa2V5KTp0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCx0aGlzLl9rZXkpKSx0aGlzLl9jYWNoZWRQYXRofX1sZXQgZj0oZSx0KT0+e2lmKCgwLGMuaXNWYWxpZCkodCkpcmV0dXJue3N1Y2Nlc3M6ITAsZGF0YTp0LnZhbHVlfTtpZighZS5jb21tb24uaXNzdWVzLmxlbmd0aCl0aHJvdyBFcnJvcihcIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuXCIpO3JldHVybntzdWNjZXNzOiExLGdldCBlcnJvcigpe2lmKHRoaXMuX2Vycm9yKXJldHVybiB0aGlzLl9lcnJvcjtsZXQgdD1uZXcgaS5ab2RFcnJvcihlLmNvbW1vbi5pc3N1ZXMpO3JldHVybiB0aGlzLl9lcnJvcj10LHRoaXMuX2Vycm9yfX19O2Z1bmN0aW9uIHAoZSl7aWYoIWUpcmV0dXJue307bGV0e2Vycm9yTWFwOnQsaW52YWxpZF90eXBlX2Vycm9yOm4scmVxdWlyZWRfZXJyb3I6cixkZXNjcmlwdGlvbjpvfT1lO2lmKHQmJihufHxyKSl0aHJvdyBFcnJvcignQ2FuXFwndCB1c2UgXCJpbnZhbGlkX3R5cGVfZXJyb3JcIiBvciBcInJlcXVpcmVkX2Vycm9yXCIgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gZXJyb3IgbWFwLicpO3JldHVybiB0P3tlcnJvck1hcDp0LGRlc2NyaXB0aW9uOm99OntlcnJvck1hcDoodCxvKT0+e2xldHttZXNzYWdlOmF9PWU7cmV0dXJuXCJpbnZhbGlkX2VudW1fdmFsdWVcIj09PXQuY29kZT97bWVzc2FnZTphPz9vLmRlZmF1bHRFcnJvcn06dm9pZCAwPT09by5kYXRhP3ttZXNzYWdlOmE/P3I/P28uZGVmYXVsdEVycm9yfTpcImludmFsaWRfdHlwZVwiIT09dC5jb2RlP3ttZXNzYWdlOm8uZGVmYXVsdEVycm9yfTp7bWVzc2FnZTphPz9uPz9vLmRlZmF1bHRFcnJvcn19LGRlc2NyaXB0aW9uOm99fWNsYXNzIGh7Z2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZi5kZXNjcmlwdGlvbn1fZ2V0VHlwZShlKXtyZXR1cm4oMCx1LmdldFBhcnNlZFR5cGUpKGUuZGF0YSl9X2dldE9yUmV0dXJuQ3R4KGUsdCl7cmV0dXJuIHR8fHtjb21tb246ZS5wYXJlbnQuY29tbW9uLGRhdGE6ZS5kYXRhLHBhcnNlZFR5cGU6KDAsdS5nZXRQYXJzZWRUeXBlKShlLmRhdGEpLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXRoOmUucGF0aCxwYXJlbnQ6ZS5wYXJlbnR9fV9wcm9jZXNzSW5wdXRQYXJhbXMoZSl7cmV0dXJue3N0YXR1czpuZXcgYy5QYXJzZVN0YXR1cyxjdHg6e2NvbW1vbjplLnBhcmVudC5jb21tb24sZGF0YTplLmRhdGEscGFyc2VkVHlwZTooMCx1LmdldFBhcnNlZFR5cGUpKGUuZGF0YSksc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhdGg6ZS5wYXRoLHBhcmVudDplLnBhcmVudH19fV9wYXJzZVN5bmMoZSl7bGV0IHQ9dGhpcy5fcGFyc2UoZSk7aWYoKDAsYy5pc0FzeW5jKSh0KSl0aHJvdyBFcnJvcihcIlN5bmNocm9ub3VzIHBhcnNlIGVuY291bnRlcmVkIHByb21pc2UuXCIpO3JldHVybiB0fV9wYXJzZUFzeW5jKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcGFyc2UoZSkpfXBhcnNlKGUsdCl7bGV0IG49dGhpcy5zYWZlUGFyc2UoZSx0KTtpZihuLnN1Y2Nlc3MpcmV0dXJuIG4uZGF0YTt0aHJvdyBuLmVycm9yfXNhZmVQYXJzZShlLHQpe2xldCBuPXtjb21tb246e2lzc3VlczpbXSxhc3luYzp0Py5hc3luYz8/ITEsY29udGV4dHVhbEVycm9yTWFwOnQ/LmVycm9yTWFwfSxwYXRoOnQ/LnBhdGh8fFtdLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXJlbnQ6bnVsbCxkYXRhOmUscGFyc2VkVHlwZTooMCx1LmdldFBhcnNlZFR5cGUpKGUpfSxyPXRoaXMuX3BhcnNlU3luYyh7ZGF0YTplLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuIGYobixyKX1cIn52YWxpZGF0ZVwiKGUpe2xldCB0PXtjb21tb246e2lzc3VlczpbXSxhc3luYzohIXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmN9LHBhdGg6W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6ZSxwYXJzZWRUeXBlOigwLHUuZ2V0UGFyc2VkVHlwZSkoZSl9O2lmKCF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jKXRyeXtsZXQgbj10aGlzLl9wYXJzZVN5bmMoe2RhdGE6ZSxwYXRoOltdLHBhcmVudDp0fSk7cmV0dXJuKDAsYy5pc1ZhbGlkKShuKT97dmFsdWU6bi52YWx1ZX06e2lzc3Vlczp0LmNvbW1vbi5pc3N1ZXN9fWNhdGNoKGUpe2U/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKFwiZW5jb3VudGVyZWRcIikmJih0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jPSEwKSx0LmNvbW1vbj17aXNzdWVzOltdLGFzeW5jOiEwfX1yZXR1cm4gdGhpcy5fcGFyc2VBc3luYyh7ZGF0YTplLHBhdGg6W10scGFyZW50OnR9KS50aGVuKGU9PigwLGMuaXNWYWxpZCkoZSk/e3ZhbHVlOmUudmFsdWV9Ontpc3N1ZXM6dC5jb21tb24uaXNzdWVzfSl9YXN5bmMgcGFyc2VBc3luYyhlLHQpe2xldCBuPWF3YWl0IHRoaXMuc2FmZVBhcnNlQXN5bmMoZSx0KTtpZihuLnN1Y2Nlc3MpcmV0dXJuIG4uZGF0YTt0aHJvdyBuLmVycm9yfWFzeW5jIHNhZmVQYXJzZUFzeW5jKGUsdCl7bGV0IG49e2NvbW1vbjp7aXNzdWVzOltdLGNvbnRleHR1YWxFcnJvck1hcDp0Py5lcnJvck1hcCxhc3luYzohMH0scGF0aDp0Py5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTplLHBhcnNlZFR5cGU6KDAsdS5nZXRQYXJzZWRUeXBlKShlKX0scj10aGlzLl9wYXJzZSh7ZGF0YTplLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuIGYobixhd2FpdCAoKDAsYy5pc0FzeW5jKShyKT9yOlByb21pc2UucmVzb2x2ZShyKSkpfXJlZmluZShlLHQpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KChuLHIpPT57bGV0IG89ZShuKSxhPSgpPT5yLmFkZElzc3VlKHtjb2RlOmkuWm9kSXNzdWVDb2RlLmN1c3RvbSwuLi5cInN0cmluZ1wiPT10eXBlb2YgdHx8dm9pZCAwPT09dD97bWVzc2FnZTp0fTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Qobik6dH0pO3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oZT0+ISFlfHwoYSgpLCExKSk6ISFvfHwoYSgpLCExKX0pfXJlZmluZW1lbnQoZSx0KXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgobixyKT0+ISFlKG4pfHwoci5hZGRJc3N1ZShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QobixyKTp0KSwhMSkpfV9yZWZpbmVtZW50KGUpe3JldHVybiBuZXcgZXMoe3NjaGVtYTp0aGlzLHR5cGVOYW1lOnIuWm9kRWZmZWN0cyxlZmZlY3Q6e3R5cGU6XCJyZWZpbmVtZW50XCIscmVmaW5lbWVudDplfX0pfXN1cGVyUmVmaW5lKGUpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KGUpfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3BhPXRoaXMuc2FmZVBhcnNlQXN5bmMsdGhpcy5fZGVmPWUsdGhpcy5wYXJzZT10aGlzLnBhcnNlLmJpbmQodGhpcyksdGhpcy5zYWZlUGFyc2U9dGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKSx0aGlzLnBhcnNlQXN5bmM9dGhpcy5wYXJzZUFzeW5jLmJpbmQodGhpcyksdGhpcy5zYWZlUGFyc2VBc3luYz10aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyksdGhpcy5zcGE9dGhpcy5zcGEuYmluZCh0aGlzKSx0aGlzLnJlZmluZT10aGlzLnJlZmluZS5iaW5kKHRoaXMpLHRoaXMucmVmaW5lbWVudD10aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKSx0aGlzLnN1cGVyUmVmaW5lPXRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKSx0aGlzLm9wdGlvbmFsPXRoaXMub3B0aW9uYWwuYmluZCh0aGlzKSx0aGlzLm51bGxhYmxlPXRoaXMubnVsbGFibGUuYmluZCh0aGlzKSx0aGlzLm51bGxpc2g9dGhpcy5udWxsaXNoLmJpbmQodGhpcyksdGhpcy5hcnJheT10aGlzLmFycmF5LmJpbmQodGhpcyksdGhpcy5wcm9taXNlPXRoaXMucHJvbWlzZS5iaW5kKHRoaXMpLHRoaXMub3I9dGhpcy5vci5iaW5kKHRoaXMpLHRoaXMuYW5kPXRoaXMuYW5kLmJpbmQodGhpcyksdGhpcy50cmFuc2Zvcm09dGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKSx0aGlzLmJyYW5kPXRoaXMuYnJhbmQuYmluZCh0aGlzKSx0aGlzLmRlZmF1bHQ9dGhpcy5kZWZhdWx0LmJpbmQodGhpcyksdGhpcy5jYXRjaD10aGlzLmNhdGNoLmJpbmQodGhpcyksdGhpcy5kZXNjcmliZT10aGlzLmRlc2NyaWJlLmJpbmQodGhpcyksdGhpcy5waXBlPXRoaXMucGlwZS5iaW5kKHRoaXMpLHRoaXMucmVhZG9ubHk9dGhpcy5yZWFkb25seS5iaW5kKHRoaXMpLHRoaXMuaXNOdWxsYWJsZT10aGlzLmlzTnVsbGFibGUuYmluZCh0aGlzKSx0aGlzLmlzT3B0aW9uYWw9dGhpcy5pc09wdGlvbmFsLmJpbmQodGhpcyksdGhpc1tcIn5zdGFuZGFyZFwiXT17dmVyc2lvbjoxLHZlbmRvcjpcInpvZFwiLHZhbGlkYXRlOmU9PnRoaXNbXCJ+dmFsaWRhdGVcIl0oZSl9fW9wdGlvbmFsKCl7cmV0dXJuIGVjLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGFibGUoKXtyZXR1cm4gZXUuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1udWxsaXNoKCl7cmV0dXJuIHRoaXMubnVsbGFibGUoKS5vcHRpb25hbCgpfWFycmF5KCl7cmV0dXJuIFYuY3JlYXRlKHRoaXMpfXByb21pc2UoKXtyZXR1cm4gZWwuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1vcihlKXtyZXR1cm4gVy5jcmVhdGUoW3RoaXMsZV0sdGhpcy5fZGVmKX1hbmQoZSl7cmV0dXJuIFguY3JlYXRlKHRoaXMsZSx0aGlzLl9kZWYpfXRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IGVzKHsuLi5wKHRoaXMuX2RlZiksc2NoZW1hOnRoaXMsdHlwZU5hbWU6ci5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZTpcInRyYW5zZm9ybVwiLHRyYW5zZm9ybTplfX0pfWRlZmF1bHQoZSl7cmV0dXJuIG5ldyBlZCh7Li4ucCh0aGlzLl9kZWYpLGlubmVyVHlwZTp0aGlzLGRlZmF1bHRWYWx1ZTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6KCk9PmUsdHlwZU5hbWU6ci5ab2REZWZhdWx0fSl9YnJhbmQoKXtyZXR1cm4gbmV3IGVoKHt0eXBlTmFtZTpyLlpvZEJyYW5kZWQsdHlwZTp0aGlzLC4uLnAodGhpcy5fZGVmKX0pfWNhdGNoKGUpe3JldHVybiBuZXcgZWYoey4uLnAodGhpcy5fZGVmKSxpbm5lclR5cGU6dGhpcyxjYXRjaFZhbHVlOlwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTooKT0+ZSx0eXBlTmFtZTpyLlpvZENhdGNofSl9ZGVzY3JpYmUoZSl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHsuLi50aGlzLl9kZWYsZGVzY3JpcHRpb246ZX0pfXBpcGUoZSl7cmV0dXJuIGVtLmNyZWF0ZSh0aGlzLGUpfXJlYWRvbmx5KCl7cmV0dXJuIGVnLmNyZWF0ZSh0aGlzKX1pc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc31pc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9fXQuWm9kVHlwZT1oLHQuU2NoZW1hPWgsdC5ab2RTY2hlbWE9aDtsZXQgbT0vXmNbXlxccy1dezgsfSQvaSxnPS9eWzAtOWEtel0rJC8seT0vXlswLTlBLUhKS01OUC1UVi1aXXsyNn0kL2ksdj0vXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvaSxiPS9eW2EtejAtOV8tXXsyMX0kL2ksQT0vXltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dKiQvLHg9L15bLStdP1AoPyEkKSg/Oig/OlstK10/XFxkK1kpfCg/OlstK10/XFxkK1suLF1cXGQrWSQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86KD86Wy0rXT9cXGQrVyl8KD86Wy0rXT9cXGQrWy4sXVxcZCtXJCkpPyg/Oig/OlstK10/XFxkK0QpfCg/OlstK10/XFxkK1suLF1cXGQrRCQpKT8oPzpUKD89W1xcZCstXSkoPzooPzpbLStdP1xcZCtIKXwoPzpbLStdP1xcZCtbLixdXFxkK0gkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/OlstK10/XFxkKyg/OlsuLF1cXGQrKT9TKT8pPz8kLyx3PS9eKD8hXFwuKSg/IS4qXFwuXFwuKShbQS1aMC05XycrXFwtXFwuXSopW0EtWjAtOV8rLV1AKFtBLVowLTldW0EtWjAtOVxcLV0qXFwuKStbQS1aXXsyLH0kL2ksQz0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLF89L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC8oM1swLTJdfFsxMl0/WzAtOV0pJC8saz0vXigoWzAtOWEtZkEtRl17MSw0fTopezcsN31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318Oil8ZmU4MDooOlswLTlhLWZBLUZdezAsNH0pezAsNH0lWzAtOWEtekEtWl17MSx9fDo6KGZmZmYoOjB7MSw0fSl7MCwxfTopezAsMX0oKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKSkkLyxFPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8saj0vXihbMC05YS16QS1aKy9dezR9KSooKFswLTlhLXpBLVorL117Mn09PSl8KFswLTlhLXpBLVorL117M309KSk/JC8sUz0vXihbMC05YS16QS1aLV9dezR9KSooKFswLTlhLXpBLVotX117Mn0oPT0pPyl8KFswLTlhLXpBLVotX117M30oPSk/KSk/JC8sTz1cIigoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKVwiLEI9UmVnRXhwKGBeJHtPfSRgKTtmdW5jdGlvbiBQKGUpe2xldCB0PVwiWzAtNV1cXFxcZFwiO2UucHJlY2lzaW9uP3Q9YCR7dH1cXFxcLlxcXFxkeyR7ZS5wcmVjaXNpb259fWA6bnVsbD09ZS5wcmVjaXNpb24mJih0PWAke3R9KFxcXFwuXFxcXGQrKT9gKTtsZXQgbj1lLnByZWNpc2lvbj9cIitcIjpcIj9cIjtyZXR1cm5gKFswMV1cXFxcZHwyWzAtM10pOlswLTVdXFxcXGQoOiR7dH0pJHtufWB9ZnVuY3Rpb24gSShlKXtsZXQgdD1gJHtPfVQke1AoZSl9YCxuPVtdO3JldHVybiBuLnB1c2goZS5sb2NhbD9cIlo/XCI6XCJaXCIpLGUub2Zmc2V0JiZuLnB1c2goXCIoWystXVxcXFxkezJ9Oj9cXFxcZHsyfSlcIiksdD1gJHt0fSgke24uam9pbihcInxcIil9KWAsUmVnRXhwKGBeJHt0fSRgKX1jbGFzcyB6IGV4dGVuZHMgaHtfcGFyc2UoZSl7dmFyIHQsbixyLG87bGV0IGw7aWYodGhpcy5fZGVmLmNvZXJjZSYmKGUuZGF0YT1TdHJpbmcoZS5kYXRhKSksdGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5zdHJpbmcpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5zdHJpbmcscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfWxldCBzPW5ldyBjLlBhcnNlU3RhdHVzO2ZvcihsZXQgZCBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFwibWluXCI9PT1kLmtpbmQpZS5kYXRhLmxlbmd0aDxkLnZhbHVlJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06ZC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwibWF4XCI9PT1kLmtpbmQpZS5kYXRhLmxlbmd0aD5kLnZhbHVlJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOmQudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcImxlbmd0aFwiPT09ZC5raW5kKXtsZXQgdD1lLmRhdGEubGVuZ3RoPmQudmFsdWUsbj1lLmRhdGEubGVuZ3RoPGQudmFsdWU7KHR8fG4pJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLHQ/KDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06ZC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6ZC5tZXNzYWdlfSk6biYmKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpkLnZhbHVlLHR5cGU6XCJzdHJpbmdcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpfWVsc2UgaWYoXCJlbWFpbFwiPT09ZC5raW5kKXcudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJlbWFpbFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJlbW9qaVwiPT09ZC5raW5kKWF8fChhPVJlZ0V4cChcIl4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskXCIsXCJ1XCIpKSxhLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiZW1vamlcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwidXVpZFwiPT09ZC5raW5kKXYudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJ1dWlkXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcIm5hbm9pZFwiPT09ZC5raW5kKWIudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJuYW5vaWRcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwiY3VpZFwiPT09ZC5raW5kKW0udGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJjdWlkXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcImN1aWQyXCI9PT1kLmtpbmQpZy50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImN1aWQyXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcInVsaWRcIj09PWQua2luZCl5LnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwidWxpZFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJ1cmxcIj09PWQua2luZCl0cnl7bmV3IFVSTChlLmRhdGEpfWNhdGNoe2w9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwidXJsXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKX1lbHNlXCJyZWdleFwiPT09ZC5raW5kPyhkLnJlZ2V4Lmxhc3RJbmRleD0wLGQucmVnZXgudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJyZWdleFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpKTpcInRyaW1cIj09PWQua2luZD9lLmRhdGE9ZS5kYXRhLnRyaW0oKTpcImluY2x1ZGVzXCI9PT1kLmtpbmQ/ZS5kYXRhLmluY2x1ZGVzKGQudmFsdWUsZC5wb3NpdGlvbil8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOntpbmNsdWRlczpkLnZhbHVlLHBvc2l0aW9uOmQucG9zaXRpb259LG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcInRvTG93ZXJDYXNlXCI9PT1kLmtpbmQ/ZS5kYXRhPWUuZGF0YS50b0xvd2VyQ2FzZSgpOlwidG9VcHBlckNhc2VcIj09PWQua2luZD9lLmRhdGE9ZS5kYXRhLnRvVXBwZXJDYXNlKCk6XCJzdGFydHNXaXRoXCI9PT1kLmtpbmQ/ZS5kYXRhLnN0YXJ0c1dpdGgoZC52YWx1ZSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOntzdGFydHNXaXRoOmQudmFsdWV9LG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImVuZHNXaXRoXCI9PT1kLmtpbmQ/ZS5kYXRhLmVuZHNXaXRoKGQudmFsdWUpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7ZW5kc1dpdGg6ZC52YWx1ZX0sbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiZGF0ZXRpbWVcIj09PWQua2luZD9JKGQpLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJkYXRldGltZVwiLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImRhdGVcIj09PWQua2luZD9CLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246XCJkYXRlXCIsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwidGltZVwiPT09ZC5raW5kP1JlZ0V4cChgXiR7UChkKX0kYCkudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjpcInRpbWVcIixtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJkdXJhdGlvblwiPT09ZC5raW5kP3gudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJkdXJhdGlvblwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiaXBcIj09PWQua2luZD8odD1lLmRhdGEsISgoXCJ2NFwiPT09KG49ZC52ZXJzaW9uKXx8IW4pJiZDLnRlc3QodCl8fChcInY2XCI9PT1ufHwhbikmJmsudGVzdCh0KSkmJjEmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImlwXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSkpOlwiand0XCI9PT1kLmtpbmQ/IWZ1bmN0aW9uKGUsdCl7aWYoIUEudGVzdChlKSlyZXR1cm4hMTt0cnl7bGV0W25dPWUuc3BsaXQoXCIuXCIpO2lmKCFuKXJldHVybiExO2xldCByPW4ucmVwbGFjZSgvLS9nLFwiK1wiKS5yZXBsYWNlKC9fL2csXCIvXCIpLnBhZEVuZChuLmxlbmd0aCsoNC1uLmxlbmd0aCU0KSU0LFwiPVwiKSxvPUpTT04ucGFyc2UoYXRvYihyKSk7aWYoXCJvYmplY3RcIiE9dHlwZW9mIG98fG51bGw9PT1vfHxcInR5cFwiaW4gbyYmbz8udHlwIT09XCJKV1RcInx8IW8uYWxnfHx0JiZvLmFsZyE9PXQpcmV0dXJuITE7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fShlLmRhdGEsZC5hbGcpJiYobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJqd3RcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImNpZHJcIj09PWQua2luZD8ocj1lLmRhdGEsISgoXCJ2NFwiPT09KG89ZC52ZXJzaW9uKXx8IW8pJiZfLnRlc3Qocil8fChcInY2XCI9PT1vfHwhbykmJkUudGVzdChyKSkmJjEmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImNpZHJcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKSk6XCJiYXNlNjRcIj09PWQua2luZD9qLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiYmFzZTY0XCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJiYXNlNjR1cmxcIj09PWQua2luZD9TLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiYmFzZTY0dXJsXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6dS51dGlsLmFzc2VydE5ldmVyKGQpO3JldHVybntzdGF0dXM6cy52YWx1ZSx2YWx1ZTplLmRhdGF9fV9yZWdleChlLHQsbil7cmV0dXJuIHRoaXMucmVmaW5lbWVudCh0PT5lLnRlc3QodCkse3ZhbGlkYXRpb246dCxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKG4pfSl9X2FkZENoZWNrKGUpe3JldHVybiBuZXcgeih7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyxlXX0pfWVtYWlsKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImVtYWlsXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX11cmwoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidXJsXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1lbW9qaShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJlbW9qaVwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9dXVpZChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ1dWlkXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1uYW5vaWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibmFub2lkXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1jdWlkKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImN1aWRcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWN1aWQyKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImN1aWQyXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX11bGlkKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInVsaWRcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWJhc2U2NChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJiYXNlNjRcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWJhc2U2NHVybChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJiYXNlNjR1cmxcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWp3dChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJqd3RcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWlwKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImlwXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX1jaWRyKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImNpZHJcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWRhdGV0aW1lKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX2FkZENoZWNrKHtraW5kOlwiZGF0ZXRpbWVcIixwcmVjaXNpb246bnVsbCxvZmZzZXQ6ITEsbG9jYWw6ITEsbWVzc2FnZTplfSk6dGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRldGltZVwiLHByZWNpc2lvbjp2b2lkIDA9PT1lPy5wcmVjaXNpb24/bnVsbDplPy5wcmVjaXNpb24sb2Zmc2V0OmU/Lm9mZnNldD8/ITEsbG9jYWw6ZT8ubG9jYWw/PyExLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGU/Lm1lc3NhZ2UpfSl9ZGF0ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRlXCIsbWVzc2FnZTplfSl9dGltZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT90aGlzLl9hZGRDaGVjayh7a2luZDpcInRpbWVcIixwcmVjaXNpb246bnVsbCxtZXNzYWdlOmV9KTp0aGlzLl9hZGRDaGVjayh7a2luZDpcInRpbWVcIixwcmVjaXNpb246dm9pZCAwPT09ZT8ucHJlY2lzaW9uP251bGw6ZT8ucHJlY2lzaW9uLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGU/Lm1lc3NhZ2UpfSl9ZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZHVyYXRpb25cIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfXJlZ2V4KGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwicmVnZXhcIixyZWdleDplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9aW5jbHVkZXMoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJpbmNsdWRlc1wiLHZhbHVlOmUscG9zaXRpb246dD8ucG9zaXRpb24sLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodD8ubWVzc2FnZSl9KX1zdGFydHNXaXRoKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwic3RhcnRzV2l0aFwiLHZhbHVlOmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1lbmRzV2l0aChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImVuZHNXaXRoXCIsdmFsdWU6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfW1pbihlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1tYXgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9bGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibGVuZ3RoXCIsdmFsdWU6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfW5vbmVtcHR5KGUpe3JldHVybiB0aGlzLm1pbigxLHMuZXJyb3JVdGlsLmVyclRvT2JqKGUpKX10cmltKCl7cmV0dXJuIG5ldyB6KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOlwidHJpbVwifV19KX10b0xvd2VyQ2FzZSgpe3JldHVybiBuZXcgeih7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDpcInRvTG93ZXJDYXNlXCJ9XX0pfXRvVXBwZXJDYXNlKCl7cmV0dXJuIG5ldyB6KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOlwidG9VcHBlckNhc2VcIn1dfSl9Z2V0IGlzRGF0ZXRpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImRhdGV0aW1lXCI9PT1lLmtpbmQpfWdldCBpc0RhdGUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImRhdGVcIj09PWUua2luZCl9Z2V0IGlzVGltZSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwidGltZVwiPT09ZS5raW5kKX1nZXQgaXNEdXJhdGlvbigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiZHVyYXRpb25cIj09PWUua2luZCl9Z2V0IGlzRW1haWwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImVtYWlsXCI9PT1lLmtpbmQpfWdldCBpc1VSTCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwidXJsXCI9PT1lLmtpbmQpfWdldCBpc0Vtb2ppKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJlbW9qaVwiPT09ZS5raW5kKX1nZXQgaXNVVUlEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJ1dWlkXCI9PT1lLmtpbmQpfWdldCBpc05BTk9JRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwibmFub2lkXCI9PT1lLmtpbmQpfWdldCBpc0NVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImN1aWRcIj09PWUua2luZCl9Z2V0IGlzQ1VJRDIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImN1aWQyXCI9PT1lLmtpbmQpfWdldCBpc1VMSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cInVsaWRcIj09PWUua2luZCl9Z2V0IGlzSVAoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImlwXCI9PT1lLmtpbmQpfWdldCBpc0NJRFIoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImNpZHJcIj09PWUua2luZCl9Z2V0IGlzQmFzZTY0KCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJiYXNlNjRcIj09PWUua2luZCl9Z2V0IGlzQmFzZTY0dXJsKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJiYXNlNjR1cmxcIj09PWUua2luZCl9Z2V0IG1pbkxlbmd0aCgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPmUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX1nZXQgbWF4TGVuZ3RoKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1heFwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU8ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfX10LlpvZFN0cmluZz16LHouY3JlYXRlPWU9Pm5ldyB6KHtjaGVja3M6W10sdHlwZU5hbWU6ci5ab2RTdHJpbmcsY29lcmNlOmU/LmNvZXJjZT8/ITEsLi4ucChlKX0pO2NsYXNzIFQgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm1pbj10aGlzLmd0ZSx0aGlzLm1heD10aGlzLmx0ZSx0aGlzLnN0ZXA9dGhpcy5tdWx0aXBsZU9mfV9wYXJzZShlKXtsZXQgdDtpZih0aGlzLl9kZWYuY29lcmNlJiYoZS5kYXRhPU51bWJlcihlLmRhdGEpKSx0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLm51bWJlcil7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm51bWJlcixyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9bGV0IG49bmV3IGMuUGFyc2VTdGF0dXM7Zm9yKGxldCByIG9mIHRoaXMuX2RlZi5jaGVja3MpXCJpbnRcIj09PXIua2luZD91LnV0aWwuaXNJbnRlZ2VyKGUuZGF0YSl8fCh0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6XCJpbnRlZ2VyXCIscmVjZWl2ZWQ6XCJmbG9hdFwiLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcIm1pblwiPT09ci5raW5kPyhyLmluY2x1c2l2ZT9lLmRhdGE8ci52YWx1ZTplLmRhdGE8PXIudmFsdWUpJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06ci52YWx1ZSx0eXBlOlwibnVtYmVyXCIsaW5jbHVzaXZlOnIuaW5jbHVzaXZlLGV4YWN0OiExLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcIm1heFwiPT09ci5raW5kPyhyLmluY2x1c2l2ZT9lLmRhdGE+ci52YWx1ZTplLmRhdGE+PXIudmFsdWUpJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOnIudmFsdWUsdHlwZTpcIm51bWJlclwiLGluY2x1c2l2ZTpyLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJtdWx0aXBsZU9mXCI9PT1yLmtpbmQ/MCE9PWZ1bmN0aW9uKGUsdCl7bGV0IG49KGUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV18fFwiXCIpLmxlbmd0aCxyPSh0LnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdfHxcIlwiKS5sZW5ndGgsbz1uPnI/bjpyO3JldHVybiBOdW1iZXIucGFyc2VJbnQoZS50b0ZpeGVkKG8pLnJlcGxhY2UoXCIuXCIsXCJcIikpJU51bWJlci5wYXJzZUludCh0LnRvRml4ZWQobykucmVwbGFjZShcIi5cIixcIlwiKSkvMTAqKm99KGUuZGF0YSxyLnZhbHVlKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZixtdWx0aXBsZU9mOnIudmFsdWUsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwiZmluaXRlXCI9PT1yLmtpbmQ/TnVtYmVyLmlzRmluaXRlKGUuZGF0YSl8fCh0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5ub3RfZmluaXRlLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTp1LnV0aWwuYXNzZXJ0TmV2ZXIocik7cmV0dXJue3N0YXR1czpuLnZhbHVlLHZhbHVlOmUuZGF0YX19Z3RlKGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIixlLCEwLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1ndChlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsZSwhMSxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9bHRlKGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIixlLCEwLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1sdChlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsZSwhMSxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9c2V0TGltaXQoZSx0LG4scil7cmV0dXJuIG5ldyBUKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOmUsdmFsdWU6dCxpbmNsdXNpdmU6bixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHIpfV19KX1fYWRkQ2hlY2soZSl7cmV0dXJuIG5ldyBUKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9aW50KGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImludFwiLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOjAsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1ub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTowLGluY2x1c2l2ZTohMCxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bXVsdGlwbGVPZihlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm11bHRpcGxlT2ZcIix2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9KX1maW5pdGUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZmluaXRlXCIsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfXNhZmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsaW5jbHVzaXZlOiEwLHZhbHVlOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KS5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIixpbmNsdXNpdmU6ITAsdmFsdWU6TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfWdldCBtaW5WYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPmUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX1nZXQgbWF4VmFsdWUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWF4XCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZTxlKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9Z2V0IGlzSW50KCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJpbnRcIj09PWUua2luZHx8XCJtdWx0aXBsZU9mXCI9PT1lLmtpbmQmJnUudXRpbC5pc0ludGVnZXIoZS52YWx1ZSkpfWdldCBpc0Zpbml0ZSgpe2xldCBlPW51bGwsdD1udWxsO2ZvcihsZXQgbiBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKFwiZmluaXRlXCI9PT1uLmtpbmR8fFwiaW50XCI9PT1uLmtpbmR8fFwibXVsdGlwbGVPZlwiPT09bi5raW5kKXJldHVybiEwO2Vsc2VcIm1pblwiPT09bi5raW5kPyhudWxsPT09dHx8bi52YWx1ZT50KSYmKHQ9bi52YWx1ZSk6XCJtYXhcIj09PW4ua2luZCYmKG51bGw9PT1lfHxuLnZhbHVlPGUpJiYoZT1uLnZhbHVlKTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZOdW1iZXIuaXNGaW5pdGUoZSl9fXQuWm9kTnVtYmVyPVQsVC5jcmVhdGU9ZT0+bmV3IFQoe2NoZWNrczpbXSx0eXBlTmFtZTpyLlpvZE51bWJlcixjb2VyY2U6ZT8uY29lcmNlfHwhMSwuLi5wKGUpfSk7Y2xhc3MgRCBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubWluPXRoaXMuZ3RlLHRoaXMubWF4PXRoaXMubHRlfV9wYXJzZShlKXtsZXQgdDtpZih0aGlzLl9kZWYuY29lcmNlKXRyeXtlLmRhdGE9QmlnSW50KGUuZGF0YSl9Y2F0Y2h7cmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dChlKX1pZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLmJpZ2ludClyZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KGUpO2xldCBuPW5ldyBjLlBhcnNlU3RhdHVzO2ZvcihsZXQgciBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT1yLmtpbmQ/KHIuaW5jbHVzaXZlP2UuZGF0YTxyLnZhbHVlOmUuZGF0YTw9ci52YWx1ZSkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsdHlwZTpcImJpZ2ludFwiLG1pbmltdW06ci52YWx1ZSxpbmNsdXNpdmU6ci5pbmNsdXNpdmUsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwibWF4XCI9PT1yLmtpbmQ/KHIuaW5jbHVzaXZlP2UuZGF0YT5yLnZhbHVlOmUuZGF0YT49ci52YWx1ZSkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLHR5cGU6XCJiaWdpbnRcIixtYXhpbXVtOnIudmFsdWUsaW5jbHVzaXZlOnIuaW5jbHVzaXZlLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcIm11bHRpcGxlT2ZcIj09PXIua2luZD9lLmRhdGElci52YWx1ZSE9PUJpZ0ludCgwKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZixtdWx0aXBsZU9mOnIudmFsdWUsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOnUudXRpbC5hc3NlcnROZXZlcihyKTtyZXR1cm57c3RhdHVzOm4udmFsdWUsdmFsdWU6ZS5kYXRhfX1fZ2V0SW52YWxpZElucHV0KGUpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5iaWdpbnQscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfWd0ZShlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsZSwhMCxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9Z3QoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLGUsITEscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWx0ZShlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsZSwhMCxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9bHQoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLGUsITEscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfXNldExpbWl0KGUsdCxuLHIpe3JldHVybiBuZXcgRCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDplLHZhbHVlOnQsaW5jbHVzaXZlOm4sbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhyKX1dfSl9X2FkZENoZWNrKGUpe3JldHVybiBuZXcgRCh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyxlXX0pfXBvc2l0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITAsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5vbm5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITAsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW11bHRpcGxlT2YoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtdWx0aXBsZU9mXCIsdmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfSl9Z2V0IG1pblZhbHVlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU+ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfWdldCBtYXhWYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtYXhcIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPGUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX19dC5ab2RCaWdJbnQ9RCxELmNyZWF0ZT1lPT5uZXcgRCh7Y2hlY2tzOltdLHR5cGVOYW1lOnIuWm9kQmlnSW50LGNvZXJjZTplPy5jb2VyY2U/PyExLC4uLnAoZSl9KTtjbGFzcyBMIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZGVmLmNvZXJjZSYmKGUuZGF0YT0hIWUuZGF0YSksdGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5ib29sZWFuKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuYm9vbGVhbixyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RCb29sZWFuPUwsTC5jcmVhdGU9ZT0+bmV3IEwoe3R5cGVOYW1lOnIuWm9kQm9vbGVhbixjb2VyY2U6ZT8uY29lcmNlfHwhMSwuLi5wKGUpfSk7Y2xhc3MgTiBleHRlbmRzIGh7X3BhcnNlKGUpe2xldCB0O2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9bmV3IERhdGUoZS5kYXRhKSksdGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5kYXRlKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuZGF0ZSxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9aWYoTnVtYmVyLmlzTmFOKGUuZGF0YS5nZXRUaW1lKCkpKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZX0pLGMuSU5WQUxJRH1sZXQgbj1uZXcgYy5QYXJzZVN0YXR1cztmb3IobGV0IHIgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09ci5raW5kP2UuZGF0YS5nZXRUaW1lKCk8ci52YWx1ZSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtZXNzYWdlOnIubWVzc2FnZSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWluaW11bTpyLnZhbHVlLHR5cGU6XCJkYXRlXCJ9KSxuLmRpcnR5KCkpOlwibWF4XCI9PT1yLmtpbmQ/ZS5kYXRhLmdldFRpbWUoKT5yLnZhbHVlJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtZXNzYWdlOnIubWVzc2FnZSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWF4aW11bTpyLnZhbHVlLHR5cGU6XCJkYXRlXCJ9KSxuLmRpcnR5KCkpOnUudXRpbC5hc3NlcnROZXZlcihyKTtyZXR1cm57c3RhdHVzOm4udmFsdWUsdmFsdWU6bmV3IERhdGUoZS5kYXRhLmdldFRpbWUoKSl9fV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IE4oey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1taW4oZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIix2YWx1ZTplLmdldFRpbWUoKSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfSl9bWF4KGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6ZS5nZXRUaW1lKCksbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX0pfWdldCBtaW5EYXRlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU+ZSkmJihlPXQudmFsdWUpO3JldHVybiBudWxsIT1lP25ldyBEYXRlKGUpOm51bGx9Z2V0IG1heERhdGUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWF4XCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZTxlKSYmKGU9dC52YWx1ZSk7cmV0dXJuIG51bGwhPWU/bmV3IERhdGUoZSk6bnVsbH19dC5ab2REYXRlPU4sTi5jcmVhdGU9ZT0+bmV3IE4oe2NoZWNrczpbXSxjb2VyY2U6ZT8uY29lcmNlfHwhMSx0eXBlTmFtZTpyLlpvZERhdGUsLi4ucChlKX0pO2NsYXNzIFIgZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLnN5bWJvbCl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnN5bWJvbCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RTeW1ib2w9UixSLmNyZWF0ZT1lPT5uZXcgUih7dHlwZU5hbWU6ci5ab2RTeW1ib2wsLi4ucChlKX0pO2NsYXNzIE0gZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RVbmRlZmluZWQ9TSxNLmNyZWF0ZT1lPT5uZXcgTSh7dHlwZU5hbWU6ci5ab2RVbmRlZmluZWQsLi4ucChlKX0pO2NsYXNzIFogZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLm51bGwpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5udWxsLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZE51bGw9WixaLmNyZWF0ZT1lPT5uZXcgWih7dHlwZU5hbWU6ci5ab2ROdWxsLC4uLnAoZSl9KTtjbGFzcyBVIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fYW55PSEwfV9wYXJzZShlKXtyZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZEFueT1VLFUuY3JlYXRlPWU9Pm5ldyBVKHt0eXBlTmFtZTpyLlpvZEFueSwuLi5wKGUpfSk7Y2xhc3MgRiBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Vua25vd249ITB9X3BhcnNlKGUpe3JldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kVW5rbm93bj1GLEYuY3JlYXRlPWU9Pm5ldyBGKHt0eXBlTmFtZTpyLlpvZFVua25vd24sLi4ucChlKX0pO2NsYXNzIHEgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUubmV2ZXIscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfX10LlpvZE5ldmVyPXEscS5jcmVhdGU9ZT0+bmV3IHEoe3R5cGVOYW1lOnIuWm9kTmV2ZXIsLi4ucChlKX0pO2NsYXNzIEggZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnZvaWQscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kVm9pZD1ILEguY3JlYXRlPWU9Pm5ldyBIKHt0eXBlTmFtZTpyLlpvZFZvaWQsLi4ucChlKX0pO2NsYXNzIFYgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnQsc3RhdHVzOm59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxyPXRoaXMuX2RlZjtpZih0LnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUuYXJyYXkpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmFycmF5LHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtpZihudWxsIT09ci5leGFjdExlbmd0aCl7bGV0IGU9dC5kYXRhLmxlbmd0aD5yLmV4YWN0TGVuZ3RoLnZhbHVlLG89dC5kYXRhLmxlbmd0aDxyLmV4YWN0TGVuZ3RoLnZhbHVlOyhlfHxvKSYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6ZT9pLlpvZElzc3VlQ29kZS50b29fYmlnOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOm8/ci5leGFjdExlbmd0aC52YWx1ZTp2b2lkIDAsbWF4aW11bTplP3IuZXhhY3RMZW5ndGgudmFsdWU6dm9pZCAwLHR5cGU6XCJhcnJheVwiLGluY2x1c2l2ZTohMCxleGFjdDohMCxtZXNzYWdlOnIuZXhhY3RMZW5ndGgubWVzc2FnZX0pLG4uZGlydHkoKSl9aWYobnVsbCE9PXIubWluTGVuZ3RoJiZ0LmRhdGEubGVuZ3RoPHIubWluTGVuZ3RoLnZhbHVlJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpyLm1pbkxlbmd0aC52YWx1ZSx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpyLm1pbkxlbmd0aC5tZXNzYWdlfSksbi5kaXJ0eSgpKSxudWxsIT09ci5tYXhMZW5ndGgmJnQuZGF0YS5sZW5ndGg+ci5tYXhMZW5ndGgudmFsdWUmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTpyLm1heExlbmd0aC52YWx1ZSx0eXBlOlwiYXJyYXlcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpyLm1heExlbmd0aC5tZXNzYWdlfSksbi5kaXJ0eSgpKSx0LmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwoWy4uLnQuZGF0YV0ubWFwKChlLG4pPT5yLnR5cGUuX3BhcnNlQXN5bmMobmV3IGQodCxlLHQucGF0aCxuKSkpKS50aGVuKGU9PmMuUGFyc2VTdGF0dXMubWVyZ2VBcnJheShuLGUpKTtsZXQgbz1bLi4udC5kYXRhXS5tYXAoKGUsbik9PnIudHlwZS5fcGFyc2VTeW5jKG5ldyBkKHQsZSx0LnBhdGgsbikpKTtyZXR1cm4gYy5QYXJzZVN0YXR1cy5tZXJnZUFycmF5KG4sbyl9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZGVmLnR5cGV9bWluKGUsdCl7cmV0dXJuIG5ldyBWKHsuLi50aGlzLl9kZWYsbWluTGVuZ3RoOnt2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9fSl9bWF4KGUsdCl7cmV0dXJuIG5ldyBWKHsuLi50aGlzLl9kZWYsbWF4TGVuZ3RoOnt2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9fSl9bGVuZ3RoKGUsdCl7cmV0dXJuIG5ldyBWKHsuLi50aGlzLl9kZWYsZXhhY3RMZW5ndGg6e3ZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX19KX1ub25lbXB0eShlKXtyZXR1cm4gdGhpcy5taW4oMSxlKX19dC5ab2RBcnJheT1WLFYuY3JlYXRlPShlLHQpPT5uZXcgVih7dHlwZTplLG1pbkxlbmd0aDpudWxsLG1heExlbmd0aDpudWxsLGV4YWN0TGVuZ3RoOm51bGwsdHlwZU5hbWU6ci5ab2RBcnJheSwuLi5wKHQpfSk7Y2xhc3MgJCBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2NhY2hlZD1udWxsLHRoaXMubm9uc3RyaWN0PXRoaXMucGFzc3Rocm91Z2gsdGhpcy5hdWdtZW50PXRoaXMuZXh0ZW5kfV9nZXRDYWNoZWQoKXtpZihudWxsIT09dGhpcy5fY2FjaGVkKXJldHVybiB0aGlzLl9jYWNoZWQ7bGV0IGU9dGhpcy5fZGVmLnNoYXBlKCksdD11LnV0aWwub2JqZWN0S2V5cyhlKTtyZXR1cm4gdGhpcy5fY2FjaGVkPXtzaGFwZTplLGtleXM6dH0sdGhpcy5fY2FjaGVkfV9wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLm9iamVjdCl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm9iamVjdCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSkse3NoYXBlOnIsa2V5czpvfT10aGlzLl9nZXRDYWNoZWQoKSxhPVtdO2lmKCEodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2YgcSYmXCJzdHJpcFwiPT09dGhpcy5fZGVmLnVua25vd25LZXlzKSlmb3IobGV0IGUgaW4gbi5kYXRhKW8uaW5jbHVkZXMoZSl8fGEucHVzaChlKTtsZXQgbD1bXTtmb3IobGV0IGUgb2Ygbyl7bGV0IHQ9cltlXSxvPW4uZGF0YVtlXTtsLnB1c2goe2tleTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTplfSx2YWx1ZTp0Ll9wYXJzZShuZXcgZChuLG8sbi5wYXRoLGUpKSxhbHdheXNTZXQ6ZSBpbiBuLmRhdGF9KX1pZih0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBxKXtsZXQgZT10aGlzLl9kZWYudW5rbm93bktleXM7aWYoXCJwYXNzdGhyb3VnaFwiPT09ZSlmb3IobGV0IGUgb2YgYSlsLnB1c2goe2tleTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTplfSx2YWx1ZTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpuLmRhdGFbZV19fSk7ZWxzZSBpZihcInN0cmljdFwiPT09ZSlhLmxlbmd0aD4wJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS51bnJlY29nbml6ZWRfa2V5cyxrZXlzOmF9KSx0LmRpcnR5KCkpO2Vsc2UgaWYoXCJzdHJpcFwiPT09ZSk7ZWxzZSB0aHJvdyBFcnJvcihcIkludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5cIil9ZWxzZXtsZXQgZT10aGlzLl9kZWYuY2F0Y2hhbGw7Zm9yKGxldCB0IG9mIGEpe2xldCByPW4uZGF0YVt0XTtsLnB1c2goe2tleTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTp0fSx2YWx1ZTplLl9wYXJzZShuZXcgZChuLHIsbi5wYXRoLHQpKSxhbHdheXNTZXQ6dCBpbiBuLmRhdGF9KX19cmV0dXJuIG4uY29tbW9uLmFzeW5jP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMoKT0+e2xldCBlPVtdO2ZvcihsZXQgdCBvZiBsKXtsZXQgbj1hd2FpdCB0LmtleSxyPWF3YWl0IHQudmFsdWU7ZS5wdXNoKHtrZXk6bix2YWx1ZTpyLGFsd2F5c1NldDp0LmFsd2F5c1NldH0pfXJldHVybiBlfSkudGhlbihlPT5jLlBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyh0LGUpKTpjLlBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyh0LGwpfWdldCBzaGFwZSgpe3JldHVybiB0aGlzLl9kZWYuc2hhcGUoKX1zdHJpY3QoZSl7cmV0dXJuIHMuZXJyb3JVdGlsLmVyclRvT2JqLG5ldyAkKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJzdHJpY3RcIiwuLi52b2lkIDAhPT1lP3tlcnJvck1hcDoodCxuKT0+e2xldCByPXRoaXMuX2RlZi5lcnJvck1hcD8uKHQsbikubWVzc2FnZT8/bi5kZWZhdWx0RXJyb3I7cmV0dXJuXCJ1bnJlY29nbml6ZWRfa2V5c1wiPT09dC5jb2RlP3ttZXNzYWdlOnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpLm1lc3NhZ2U/P3J9OnttZXNzYWdlOnJ9fX06e319KX1zdHJpcCgpe3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHVua25vd25LZXlzOlwic3RyaXBcIn0pfXBhc3N0aHJvdWdoKCl7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJwYXNzdGhyb3VnaFwifSl9ZXh0ZW5kKGUpe3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT4oey4uLnRoaXMuX2RlZi5zaGFwZSgpLC4uLmV9KX0pfW1lcmdlKGUpe3JldHVybiBuZXcgJCh7dW5rbm93bktleXM6ZS5fZGVmLnVua25vd25LZXlzLGNhdGNoYWxsOmUuX2RlZi5jYXRjaGFsbCxzaGFwZTooKT0+KHsuLi50aGlzLl9kZWYuc2hhcGUoKSwuLi5lLl9kZWYuc2hhcGUoKX0pLHR5cGVOYW1lOnIuWm9kT2JqZWN0fSl9c2V0S2V5KGUsdCl7cmV0dXJuIHRoaXMuYXVnbWVudCh7W2VdOnR9KX1jYXRjaGFsbChlKXtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixjYXRjaGFsbDplfSl9cGljayhlKXtsZXQgdD17fTtmb3IobGV0IG4gb2YgdS51dGlsLm9iamVjdEtleXMoZSkpZVtuXSYmdGhpcy5zaGFwZVtuXSYmKHRbbl09dGhpcy5zaGFwZVtuXSk7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PnR9KX1vbWl0KGUpe2xldCB0PXt9O2ZvcihsZXQgbiBvZiB1LnV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSllW25dfHwodFtuXT10aGlzLnNoYXBlW25dKTtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+dH0pfWRlZXBQYXJ0aWFsKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCl7aWYodCBpbnN0YW5jZW9mICQpe2xldCBuPXt9O2ZvcihsZXQgciBpbiB0LnNoYXBlKXtsZXQgbz10LnNoYXBlW3JdO25bcl09ZWMuY3JlYXRlKGUobykpfXJldHVybiBuZXcgJCh7Li4udC5fZGVmLHNoYXBlOigpPT5ufSl9aWYodCBpbnN0YW5jZW9mIFYpcmV0dXJuIG5ldyBWKHsuLi50Ll9kZWYsdHlwZTplKHQuZWxlbWVudCl9KTtpZih0IGluc3RhbmNlb2YgZWMpcmV0dXJuIGVjLmNyZWF0ZShlKHQudW53cmFwKCkpKTtpZih0IGluc3RhbmNlb2YgZXUpcmV0dXJuIGV1LmNyZWF0ZShlKHQudW53cmFwKCkpKTtpZih0IGluc3RhbmNlb2YgRylyZXR1cm4gRy5jcmVhdGUodC5pdGVtcy5tYXAodD0+ZSh0KSkpO2Vsc2UgcmV0dXJuIHR9KHRoaXMpfXBhcnRpYWwoZSl7bGV0IHQ9e307Zm9yKGxldCBuIG9mIHUudXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKXtsZXQgcj10aGlzLnNoYXBlW25dO2UmJiFlW25dP3Rbbl09cjp0W25dPXIub3B0aW9uYWwoKX1yZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+dH0pfXJlcXVpcmVkKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBvZiB1LnV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSlpZihlJiYhZVtuXSl0W25dPXRoaXMuc2hhcGVbbl07ZWxzZXtsZXQgZT10aGlzLnNoYXBlW25dO2Zvcig7ZSBpbnN0YW5jZW9mIGVjOyllPWUuX2RlZi5pbm5lclR5cGU7dFtuXT1lfXJldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT50fSl9a2V5b2YoKXtyZXR1cm4gZW8odS51dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpfX10LlpvZE9iamVjdD0kLCQuY3JlYXRlPShlLHQpPT5uZXcgJCh7c2hhcGU6KCk9PmUsdW5rbm93bktleXM6XCJzdHJpcFwiLGNhdGNoYWxsOnEuY3JlYXRlKCksdHlwZU5hbWU6ci5ab2RPYmplY3QsLi4ucCh0KX0pLCQuc3RyaWN0Q3JlYXRlPShlLHQpPT5uZXcgJCh7c2hhcGU6KCk9PmUsdW5rbm93bktleXM6XCJzdHJpY3RcIixjYXRjaGFsbDpxLmNyZWF0ZSgpLHR5cGVOYW1lOnIuWm9kT2JqZWN0LC4uLnAodCl9KSwkLmxhenljcmVhdGU9KGUsdCk9Pm5ldyAkKHtzaGFwZTplLHVua25vd25LZXlzOlwic3RyaXBcIixjYXRjaGFsbDpxLmNyZWF0ZSgpLHR5cGVOYW1lOnIuWm9kT2JqZWN0LC4uLnAodCl9KTtjbGFzcyBXIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSksbj10aGlzLl9kZWYub3B0aW9ucztpZih0LmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwobi5tYXAoYXN5bmMgZT0+e2xldCBuPXsuLi50LGNvbW1vbjp7Li4udC5jb21tb24saXNzdWVzOltdfSxwYXJlbnQ6bnVsbH07cmV0dXJue3Jlc3VsdDphd2FpdCBlLl9wYXJzZUFzeW5jKHtkYXRhOnQuZGF0YSxwYXRoOnQucGF0aCxwYXJlbnQ6bn0pLGN0eDpufX0pKS50aGVuKGZ1bmN0aW9uKGUpe2ZvcihsZXQgdCBvZiBlKWlmKFwidmFsaWRcIj09PXQucmVzdWx0LnN0YXR1cylyZXR1cm4gdC5yZXN1bHQ7Zm9yKGxldCBuIG9mIGUpaWYoXCJkaXJ0eVwiPT09bi5yZXN1bHQuc3RhdHVzKXJldHVybiB0LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5uLmN0eC5jb21tb24uaXNzdWVzKSxuLnJlc3VsdDtsZXQgbj1lLm1hcChlPT5uZXcgaS5ab2RFcnJvcihlLmN0eC5jb21tb24uaXNzdWVzKSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uLHVuaW9uRXJyb3JzOm59KSxjLklOVkFMSUR9KTt7bGV0IGUscj1bXTtmb3IobGV0IG8gb2Ygbil7bGV0IG49ey4uLnQsY29tbW9uOnsuLi50LmNvbW1vbixpc3N1ZXM6W119LHBhcmVudDpudWxsfSxhPW8uX3BhcnNlU3luYyh7ZGF0YTp0LmRhdGEscGF0aDp0LnBhdGgscGFyZW50Om59KTtpZihcInZhbGlkXCI9PT1hLnN0YXR1cylyZXR1cm4gYTtcImRpcnR5XCIhPT1hLnN0YXR1c3x8ZXx8KGU9e3Jlc3VsdDphLGN0eDpufSksbi5jb21tb24uaXNzdWVzLmxlbmd0aCYmci5wdXNoKG4uY29tbW9uLmlzc3Vlcyl9aWYoZSlyZXR1cm4gdC5jb21tb24uaXNzdWVzLnB1c2goLi4uZS5jdHguY29tbW9uLmlzc3VlcyksZS5yZXN1bHQ7bGV0IG89ci5tYXAoZT0+bmV3IGkuWm9kRXJyb3IoZSkpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbix1bmlvbkVycm9yczpvfSksYy5JTlZBTElEfX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9kZWYub3B0aW9uc319dC5ab2RVbmlvbj1XLFcuY3JlYXRlPShlLHQpPT5uZXcgVyh7b3B0aW9uczplLHR5cGVOYW1lOnIuWm9kVW5pb24sLi4ucCh0KX0pO2xldCBZPWU9PntpZihlIGluc3RhbmNlb2YgZW4pcmV0dXJuIFkoZS5zY2hlbWEpO2lmKGUgaW5zdGFuY2VvZiBlcylyZXR1cm4gWShlLmlubmVyVHlwZSgpKTtpZihlIGluc3RhbmNlb2YgZXIpcmV0dXJuW2UudmFsdWVdO2lmKGUgaW5zdGFuY2VvZiBlYSlyZXR1cm4gZS5vcHRpb25zO2lmKGUgaW5zdGFuY2VvZiBlaSlyZXR1cm4gdS51dGlsLm9iamVjdFZhbHVlcyhlLmVudW0pO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGVkKXJldHVybiBZKGUuX2RlZi5pbm5lclR5cGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIE0pcmV0dXJuW3ZvaWQgMF07ZWxzZSBpZihlIGluc3RhbmNlb2YgWilyZXR1cm5bbnVsbF07ZWxzZSBpZihlIGluc3RhbmNlb2YgZWMpcmV0dXJuW3ZvaWQgMCwuLi5ZKGUudW53cmFwKCkpXTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBldSlyZXR1cm5bbnVsbCwuLi5ZKGUudW53cmFwKCkpXTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBlaClyZXR1cm4gWShlLnVud3JhcCgpKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBlZylyZXR1cm4gWShlLnVud3JhcCgpKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBlZilyZXR1cm4gWShlLl9kZWYuaW5uZXJUeXBlKTtlbHNlIHJldHVybltdfTtjbGFzcyBLIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYodC5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLm9iamVjdClyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUub2JqZWN0LHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtsZXQgbj10aGlzLmRpc2NyaW1pbmF0b3Iscj10LmRhdGFbbl0sbz10aGlzLm9wdGlvbnNNYXAuZ2V0KHIpO3JldHVybiBvP3QuY29tbW9uLmFzeW5jP28uX3BhcnNlQXN5bmMoe2RhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLHBhcmVudDp0fSk6by5fcGFyc2VTeW5jKHtkYXRhOnQuZGF0YSxwYXRoOnQucGF0aCxwYXJlbnQ6dH0pOigoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSkscGF0aDpbbl19KSxjLklOVkFMSUQpfWdldCBkaXNjcmltaW5hdG9yKCl7cmV0dXJuIHRoaXMuX2RlZi5kaXNjcmltaW5hdG9yfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zfWdldCBvcHRpb25zTWFwKCl7cmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zTWFwfXN0YXRpYyBjcmVhdGUoZSx0LG4pe2xldCBvPW5ldyBNYXA7Zm9yKGxldCBuIG9mIHQpe2xldCB0PVkobi5zaGFwZVtlXSk7aWYoIXQubGVuZ3RoKXRocm93IEVycm9yKGBBIGRpc2NyaW1pbmF0b3IgdmFsdWUgZm9yIGtleSBcXGAke2V9XFxgIGNvdWxkIG5vdCBiZSBleHRyYWN0ZWQgZnJvbSBhbGwgc2NoZW1hIG9wdGlvbnNgKTtmb3IobGV0IHIgb2YgdCl7aWYoby5oYXMocikpdGhyb3cgRXJyb3IoYERpc2NyaW1pbmF0b3IgcHJvcGVydHkgJHtTdHJpbmcoZSl9IGhhcyBkdXBsaWNhdGUgdmFsdWUgJHtTdHJpbmcocil9YCk7by5zZXQocixuKX19cmV0dXJuIG5ldyBLKHt0eXBlTmFtZTpyLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixkaXNjcmltaW5hdG9yOmUsb3B0aW9uczp0LG9wdGlvbnNNYXA6bywuLi5wKG4pfSl9fXQuWm9kRGlzY3JpbWluYXRlZFVuaW9uPUs7Y2xhc3MgWCBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHI9KGUscik9PntpZigoMCxjLmlzQWJvcnRlZCkoZSl8fCgwLGMuaXNBYm9ydGVkKShyKSlyZXR1cm4gYy5JTlZBTElEO2xldCBvPWZ1bmN0aW9uIGUodCxuKXtsZXQgcj0oMCx1LmdldFBhcnNlZFR5cGUpKHQpLG89KDAsdS5nZXRQYXJzZWRUeXBlKShuKTtpZih0PT09bilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZihyPT09dS5ab2RQYXJzZWRUeXBlLm9iamVjdCYmbz09PXUuWm9kUGFyc2VkVHlwZS5vYmplY3Qpe2xldCByPXUudXRpbC5vYmplY3RLZXlzKG4pLG89dS51dGlsLm9iamVjdEtleXModCkuZmlsdGVyKGU9Pi0xIT09ci5pbmRleE9mKGUpKSxhPXsuLi50LC4uLm59O2ZvcihsZXQgciBvZiBvKXtsZXQgbz1lKHRbcl0sbltyXSk7aWYoIW8udmFsaWQpcmV0dXJue3ZhbGlkOiExfTthW3JdPW8uZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTphfX1pZihyPT09dS5ab2RQYXJzZWRUeXBlLmFycmF5JiZvPT09dS5ab2RQYXJzZWRUeXBlLmFycmF5KXtpZih0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybnt2YWxpZDohMX07bGV0IHI9W107Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCBhPWUodFtvXSxuW29dKTtpZighYS52YWxpZClyZXR1cm57dmFsaWQ6ITF9O3IucHVzaChhLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOnJ9fWlmKHI9PT11LlpvZFBhcnNlZFR5cGUuZGF0ZSYmbz09PXUuWm9kUGFyc2VkVHlwZS5kYXRlJiYrdD09K24pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07cmV0dXJue3ZhbGlkOiExfX0oZS52YWx1ZSxyLnZhbHVlKTtyZXR1cm4gby52YWxpZD8oKCgwLGMuaXNEaXJ0eSkoZSl8fCgwLGMuaXNEaXJ0eSkocikpJiZ0LmRpcnR5KCkse3N0YXR1czp0LnZhbHVlLHZhbHVlOm8uZGF0YX0pOigoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzfSksYy5JTlZBTElEKX07cmV0dXJuIG4uY29tbW9uLmFzeW5jP1Byb21pc2UuYWxsKFt0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSldKS50aGVuKChbZSx0XSk9PnIoZSx0KSk6cih0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLHRoaXMuX2RlZi5yaWdodC5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pKX19dC5ab2RJbnRlcnNlY3Rpb249WCxYLmNyZWF0ZT0oZSx0LG4pPT5uZXcgWCh7bGVmdDplLHJpZ2h0OnQsdHlwZU5hbWU6ci5ab2RJbnRlcnNlY3Rpb24sLi4ucChuKX0pO2NsYXNzIEcgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUuYXJyYXkpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmFycmF5LHJlY2VpdmVkOm4ucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtpZihuLmRhdGEubGVuZ3RoPHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTp0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLGluY2x1c2l2ZTohMCxleGFjdDohMSx0eXBlOlwiYXJyYXlcIn0pLGMuSU5WQUxJRDshdGhpcy5fZGVmLnJlc3QmJm4uZGF0YS5sZW5ndGg+dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsaW5jbHVzaXZlOiEwLGV4YWN0OiExLHR5cGU6XCJhcnJheVwifSksdC5kaXJ0eSgpKTtsZXQgcj1bLi4ubi5kYXRhXS5tYXAoKGUsdCk9PntsZXQgcj10aGlzLl9kZWYuaXRlbXNbdF18fHRoaXMuX2RlZi5yZXN0O3JldHVybiByP3IuX3BhcnNlKG5ldyBkKG4sZSxuLnBhdGgsdCkpOm51bGx9KS5maWx0ZXIoZT0+ISFlKTtyZXR1cm4gbi5jb21tb24uYXN5bmM/UHJvbWlzZS5hbGwocikudGhlbihlPT5jLlBhcnNlU3RhdHVzLm1lcmdlQXJyYXkodCxlKSk6Yy5QYXJzZVN0YXR1cy5tZXJnZUFycmF5KHQscil9Z2V0IGl0ZW1zKCl7cmV0dXJuIHRoaXMuX2RlZi5pdGVtc31yZXN0KGUpe3JldHVybiBuZXcgRyh7Li4udGhpcy5fZGVmLHJlc3Q6ZX0pfX10LlpvZFR1cGxlPUcsRy5jcmVhdGU9KGUsdCk9PntpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBFcnJvcihcIllvdSBtdXN0IHBhc3MgYW4gYXJyYXkgb2Ygc2NoZW1hcyB0byB6LnR1cGxlKFsgLi4uIF0pXCIpO3JldHVybiBuZXcgRyh7aXRlbXM6ZSx0eXBlTmFtZTpyLlpvZFR1cGxlLHJlc3Q6bnVsbCwuLi5wKHQpfSl9O2NsYXNzIFEgZXh0ZW5kcyBoe2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5vYmplY3QpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm9iamVjdCxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7bGV0IHI9W10sbz10aGlzLl9kZWYua2V5VHlwZSxhPXRoaXMuX2RlZi52YWx1ZVR5cGU7Zm9yKGxldCBlIGluIG4uZGF0YSlyLnB1c2goe2tleTpvLl9wYXJzZShuZXcgZChuLGUsbi5wYXRoLGUpKSx2YWx1ZTphLl9wYXJzZShuZXcgZChuLG4uZGF0YVtlXSxuLnBhdGgsZSkpLGFsd2F5c1NldDplIGluIG4uZGF0YX0pO3JldHVybiBuLmNvbW1vbi5hc3luYz9jLlBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0QXN5bmModCxyKTpjLlBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyh0LHIpfWdldCBlbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9c3RhdGljIGNyZWF0ZShlLHQsbil7cmV0dXJuIG5ldyBRKHQgaW5zdGFuY2VvZiBoP3trZXlUeXBlOmUsdmFsdWVUeXBlOnQsdHlwZU5hbWU6ci5ab2RSZWNvcmQsLi4ucChuKX06e2tleVR5cGU6ei5jcmVhdGUoKSx2YWx1ZVR5cGU6ZSx0eXBlTmFtZTpyLlpvZFJlY29yZCwuLi5wKHQpfSl9fXQuWm9kUmVjb3JkPVE7Y2xhc3MgSiBleHRlbmRzIGh7Z2V0IGtleVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYua2V5VHlwZX1nZXQgdmFsdWVTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZX1fcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLm1hcClyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUubWFwLHJlY2VpdmVkOm4ucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtsZXQgcj10aGlzLl9kZWYua2V5VHlwZSxvPXRoaXMuX2RlZi52YWx1ZVR5cGUsYT1bLi4ubi5kYXRhLmVudHJpZXMoKV0ubWFwKChbZSx0XSxhKT0+KHtrZXk6ci5fcGFyc2UobmV3IGQobixlLG4ucGF0aCxbYSxcImtleVwiXSkpLHZhbHVlOm8uX3BhcnNlKG5ldyBkKG4sdCxuLnBhdGgsW2EsXCJ2YWx1ZVwiXSkpfSkpO2lmKG4uY29tbW9uLmFzeW5jKXtsZXQgZT1uZXcgTWFwO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jKCk9Pntmb3IobGV0IG4gb2YgYSl7bGV0IHI9YXdhaXQgbi5rZXksbz1hd2FpdCBuLnZhbHVlO2lmKFwiYWJvcnRlZFwiPT09ci5zdGF0dXN8fFwiYWJvcnRlZFwiPT09by5zdGF0dXMpcmV0dXJuIGMuSU5WQUxJRDsoXCJkaXJ0eVwiPT09ci5zdGF0dXN8fFwiZGlydHlcIj09PW8uc3RhdHVzKSYmdC5kaXJ0eSgpLGUuc2V0KHIudmFsdWUsby52YWx1ZSl9cmV0dXJue3N0YXR1czp0LnZhbHVlLHZhbHVlOmV9fSl9e2xldCBlPW5ldyBNYXA7Zm9yKGxldCBuIG9mIGEpe2xldCByPW4ua2V5LG89bi52YWx1ZTtpZihcImFib3J0ZWRcIj09PXIuc3RhdHVzfHxcImFib3J0ZWRcIj09PW8uc3RhdHVzKXJldHVybiBjLklOVkFMSUQ7KFwiZGlydHlcIj09PXIuc3RhdHVzfHxcImRpcnR5XCI9PT1vLnN0YXR1cykmJnQuZGlydHkoKSxlLnNldChyLnZhbHVlLG8udmFsdWUpfXJldHVybntzdGF0dXM6dC52YWx1ZSx2YWx1ZTplfX19fXQuWm9kTWFwPUosSi5jcmVhdGU9KGUsdCxuKT0+bmV3IEooe3ZhbHVlVHlwZTp0LGtleVR5cGU6ZSx0eXBlTmFtZTpyLlpvZE1hcCwuLi5wKG4pfSk7Y2xhc3MgZWUgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUuc2V0KXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5zZXQscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2xldCByPXRoaXMuX2RlZjtudWxsIT09ci5taW5TaXplJiZuLmRhdGEuc2l6ZTxyLm1pblNpemUudmFsdWUmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOnIubWluU2l6ZS52YWx1ZSx0eXBlOlwic2V0XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ci5taW5TaXplLm1lc3NhZ2V9KSx0LmRpcnR5KCkpLG51bGwhPT1yLm1heFNpemUmJm4uZGF0YS5zaXplPnIubWF4U2l6ZS52YWx1ZSYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOnIubWF4U2l6ZS52YWx1ZSx0eXBlOlwic2V0XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ci5tYXhTaXplLm1lc3NhZ2V9KSx0LmRpcnR5KCkpO2xldCBvPXRoaXMuX2RlZi52YWx1ZVR5cGU7ZnVuY3Rpb24gYShlKXtsZXQgbj1uZXcgU2V0O2ZvcihsZXQgciBvZiBlKXtpZihcImFib3J0ZWRcIj09PXIuc3RhdHVzKXJldHVybiBjLklOVkFMSUQ7XCJkaXJ0eVwiPT09ci5zdGF0dXMmJnQuZGlydHkoKSxuLmFkZChyLnZhbHVlKX1yZXR1cm57c3RhdHVzOnQudmFsdWUsdmFsdWU6bn19bGV0IGw9Wy4uLm4uZGF0YS52YWx1ZXMoKV0ubWFwKChlLHQpPT5vLl9wYXJzZShuZXcgZChuLGUsbi5wYXRoLHQpKSk7cmV0dXJuIG4uY29tbW9uLmFzeW5jP1Byb21pc2UuYWxsKGwpLnRoZW4oZT0+YShlKSk6YShsKX1taW4oZSx0KXtyZXR1cm4gbmV3IGVlKHsuLi50aGlzLl9kZWYsbWluU2l6ZTp7dmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfX0pfW1heChlLHQpe3JldHVybiBuZXcgZWUoey4uLnRoaXMuX2RlZixtYXhTaXplOnt2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9fSl9c2l6ZShlLHQpe3JldHVybiB0aGlzLm1pbihlLHQpLm1heChlLHQpfW5vbmVtcHR5KGUpe3JldHVybiB0aGlzLm1pbigxLGUpfX10LlpvZFNldD1lZSxlZS5jcmVhdGU9KGUsdCk9Pm5ldyBlZSh7dmFsdWVUeXBlOmUsbWluU2l6ZTpudWxsLG1heFNpemU6bnVsbCx0eXBlTmFtZTpyLlpvZFNldCwuLi5wKHQpfSk7Y2xhc3MgZXQgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZhbGlkYXRlPXRoaXMuaW1wbGVtZW50fV9wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZih0LnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUuZnVuY3Rpb24pcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmZ1bmN0aW9uLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtmdW5jdGlvbiBuKGUsbil7cmV0dXJuKDAsYy5tYWtlSXNzdWUpKHtkYXRhOmUscGF0aDp0LnBhdGgsZXJyb3JNYXBzOlt0LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsdC5zY2hlbWFFcnJvck1hcCwoMCxsLmdldEVycm9yTWFwKSgpLGwuZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoZT0+ISFlKSxpc3N1ZURhdGE6e2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHMsYXJndW1lbnRzRXJyb3I6bn19KX1mdW5jdGlvbiByKGUsbil7cmV0dXJuKDAsYy5tYWtlSXNzdWUpKHtkYXRhOmUscGF0aDp0LnBhdGgsZXJyb3JNYXBzOlt0LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsdC5zY2hlbWFFcnJvck1hcCwoMCxsLmdldEVycm9yTWFwKSgpLGwuZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoZT0+ISFlKSxpc3N1ZURhdGE6e2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZSxyZXR1cm5UeXBlRXJyb3I6bn19KX1sZXQgbz17ZXJyb3JNYXA6dC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSxhPXQuZGF0YTtpZih0aGlzLl9kZWYucmV0dXJucyBpbnN0YW5jZW9mIGVsKXtsZXQgZT10aGlzO3JldHVybigwLGMuT0spKGFzeW5jIGZ1bmN0aW9uKC4uLnQpe2xldCBsPW5ldyBpLlpvZEVycm9yKFtdKSxzPWF3YWl0IGUuX2RlZi5hcmdzLnBhcnNlQXN5bmModCxvKS5jYXRjaChlPT57dGhyb3cgbC5hZGRJc3N1ZShuKHQsZSkpLGx9KSxjPWF3YWl0IFJlZmxlY3QuYXBwbHkoYSx0aGlzLHMpO3JldHVybiBhd2FpdCBlLl9kZWYucmV0dXJucy5fZGVmLnR5cGUucGFyc2VBc3luYyhjLG8pLmNhdGNoKGU9Pnt0aHJvdyBsLmFkZElzc3VlKHIoYyxlKSksbH0pfSl9e2xldCBlPXRoaXM7cmV0dXJuKDAsYy5PSykoZnVuY3Rpb24oLi4udCl7bGV0IGw9ZS5fZGVmLmFyZ3Muc2FmZVBhcnNlKHQsbyk7aWYoIWwuc3VjY2Vzcyl0aHJvdyBuZXcgaS5ab2RFcnJvcihbbih0LGwuZXJyb3IpXSk7bGV0IHM9UmVmbGVjdC5hcHBseShhLHRoaXMsbC5kYXRhKSxjPWUuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShzLG8pO2lmKCFjLnN1Y2Nlc3MpdGhyb3cgbmV3IGkuWm9kRXJyb3IoW3IocyxjLmVycm9yKV0pO3JldHVybiBjLmRhdGF9KX19cGFyYW1ldGVycygpe3JldHVybiB0aGlzLl9kZWYuYXJnc31yZXR1cm5UeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5yZXR1cm5zfWFyZ3MoLi4uZSl7cmV0dXJuIG5ldyBldCh7Li4udGhpcy5fZGVmLGFyZ3M6Ry5jcmVhdGUoZSkucmVzdChGLmNyZWF0ZSgpKX0pfXJldHVybnMoZSl7cmV0dXJuIG5ldyBldCh7Li4udGhpcy5fZGVmLHJldHVybnM6ZX0pfWltcGxlbWVudChlKXtyZXR1cm4gdGhpcy5wYXJzZShlKX1zdHJpY3RJbXBsZW1lbnQoZSl7cmV0dXJuIHRoaXMucGFyc2UoZSl9c3RhdGljIGNyZWF0ZShlLHQsbil7cmV0dXJuIG5ldyBldCh7YXJnczplfHxHLmNyZWF0ZShbXSkucmVzdChGLmNyZWF0ZSgpKSxyZXR1cm5zOnR8fEYuY3JlYXRlKCksdHlwZU5hbWU6ci5ab2RGdW5jdGlvbiwuLi5wKG4pfSl9fXQuWm9kRnVuY3Rpb249ZXQ7Y2xhc3MgZW4gZXh0ZW5kcyBoe2dldCBzY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpfV9wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpLl9wYXJzZSh7ZGF0YTp0LmRhdGEscGF0aDp0LnBhdGgscGFyZW50OnR9KX19dC5ab2RMYXp5PWVuLGVuLmNyZWF0ZT0oZSx0KT0+bmV3IGVuKHtnZXR0ZXI6ZSx0eXBlTmFtZTpyLlpvZExhenksLi4ucCh0KX0pO2NsYXNzIGVyIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYoZS5kYXRhIT09dGhpcy5fZGVmLnZhbHVlKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtyZWNlaXZlZDp0LmRhdGEsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWwsZXhwZWN0ZWQ6dGhpcy5fZGVmLnZhbHVlfSksYy5JTlZBTElEfXJldHVybntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOmUuZGF0YX19Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZX19ZnVuY3Rpb24gZW8oZSx0KXtyZXR1cm4gbmV3IGVhKHt2YWx1ZXM6ZSx0eXBlTmFtZTpyLlpvZEVudW0sLi4ucCh0KX0pfXQuWm9kTGl0ZXJhbD1lcixlci5jcmVhdGU9KGUsdCk9Pm5ldyBlcih7dmFsdWU6ZSx0eXBlTmFtZTpyLlpvZExpdGVyYWwsLi4ucCh0KX0pO2NsYXNzIGVhIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUuZGF0YSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSksbj10aGlzLl9kZWYudmFsdWVzO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2V4cGVjdGVkOnUudXRpbC5qb2luVmFsdWVzKG4pLHJlY2VpdmVkOnQucGFyc2VkVHlwZSxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZX0pLGMuSU5WQUxJRH1pZih0aGlzLl9jYWNoZXx8KHRoaXMuX2NhY2hlPW5ldyBTZXQodGhpcy5fZGVmLnZhbHVlcykpLCF0aGlzLl9jYWNoZS5oYXMoZS5kYXRhKSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSksbj10aGlzLl9kZWYudmFsdWVzO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse3JlY2VpdmVkOnQuZGF0YSxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZSxvcHRpb25zOm59KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9kZWYudmFsdWVzfWdldCBlbnVtKCl7bGV0IGU9e307Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi52YWx1ZXMpZVt0XT10O3JldHVybiBlfWdldCBWYWx1ZXMoKXtsZXQgZT17fTtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLnZhbHVlcyllW3RdPXQ7cmV0dXJuIGV9Z2V0IEVudW0oKXtsZXQgZT17fTtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLnZhbHVlcyllW3RdPXQ7cmV0dXJuIGV9ZXh0cmFjdChlLHQ9dGhpcy5fZGVmKXtyZXR1cm4gZWEuY3JlYXRlKGUsey4uLnRoaXMuX2RlZiwuLi50fSl9ZXhjbHVkZShlLHQ9dGhpcy5fZGVmKXtyZXR1cm4gZWEuY3JlYXRlKHRoaXMub3B0aW9ucy5maWx0ZXIodD0+IWUuaW5jbHVkZXModCkpLHsuLi50aGlzLl9kZWYsLi4udH0pfX10LlpvZEVudW09ZWEsZWEuY3JlYXRlPWVvO2NsYXNzIGVpIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0IHQ9dS51dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKSxuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO2lmKG4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5zdHJpbmcmJm4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5udW1iZXIpe2xldCBlPXUudXRpbC5vYmplY3RWYWx1ZXModCk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7ZXhwZWN0ZWQ6dS51dGlsLmpvaW5WYWx1ZXMoZSkscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlfSksYy5JTlZBTElEfWlmKHRoaXMuX2NhY2hlfHwodGhpcy5fY2FjaGU9bmV3IFNldCh1LnV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpKSksIXRoaXMuX2NhY2hlLmhhcyhlLmRhdGEpKXtsZXQgZT11LnV0aWwub2JqZWN0VmFsdWVzKHQpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se3JlY2VpdmVkOm4uZGF0YSxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZSxvcHRpb25zOmV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX1nZXQgZW51bSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVzfX10LlpvZE5hdGl2ZUVudW09ZWksZWkuY3JlYXRlPShlLHQpPT5uZXcgZWkoe3ZhbHVlczplLHR5cGVOYW1lOnIuWm9kTmF0aXZlRW51bSwuLi5wKHQpfSk7Y2xhc3MgZWwgZXh0ZW5kcyBoe3Vud3JhcCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX1fcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYodC5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLnByb21pc2UmJiExPT09dC5jb21tb24uYXN5bmMpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnByb21pc2UscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2xldCBuPXQucGFyc2VkVHlwZT09PXUuWm9kUGFyc2VkVHlwZS5wcm9taXNlP3QuZGF0YTpQcm9taXNlLnJlc29sdmUodC5kYXRhKTtyZXR1cm4oMCxjLk9LKShuLnRoZW4oZT0+dGhpcy5fZGVmLnR5cGUucGFyc2VBc3luYyhlLHtwYXRoOnQucGF0aCxlcnJvck1hcDp0LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXB9KSkpfX10LlpvZFByb21pc2U9ZWwsZWwuY3JlYXRlPShlLHQpPT5uZXcgZWwoe3R5cGU6ZSx0eXBlTmFtZTpyLlpvZFByb21pc2UsLi4ucCh0KX0pO2NsYXNzIGVzIGV4dGVuZHMgaHtpbm5lclR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYX1zb3VyY2VUeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX2RlZi50eXBlTmFtZT09PXIuWm9kRWZmZWN0cz90aGlzLl9kZWYuc2NoZW1hLnNvdXJjZVR5cGUoKTp0aGlzLl9kZWYuc2NoZW1hfV9wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxyPXRoaXMuX2RlZi5lZmZlY3R8fG51bGwsbz17YWRkSXNzdWU6ZT0+eygwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4sZSksZS5mYXRhbD90LmFib3J0KCk6dC5kaXJ0eSgpfSxnZXQgcGF0aCgpe3JldHVybiBuLnBhdGh9fTtpZihvLmFkZElzc3VlPW8uYWRkSXNzdWUuYmluZChvKSxcInByZXByb2Nlc3NcIj09PXIudHlwZSl7bGV0IGU9ci50cmFuc2Zvcm0obi5kYXRhLG8pO2lmKG4uY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoZSkudGhlbihhc3luYyBlPT57aWYoXCJhYm9ydGVkXCI9PT10LnZhbHVlKXJldHVybiBjLklOVkFMSUQ7bGV0IHI9YXdhaXQgdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTplLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuXCJhYm9ydGVkXCI9PT1yLnN0YXR1cz9jLklOVkFMSUQ6XCJkaXJ0eVwiPT09ci5zdGF0dXN8fFwiZGlydHlcIj09PXQudmFsdWU/KDAsYy5ESVJUWSkoci52YWx1ZSk6cn0pO3tpZihcImFib3J0ZWRcIj09PXQudmFsdWUpcmV0dXJuIGMuSU5WQUxJRDtsZXQgcj10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVyblwiYWJvcnRlZFwiPT09ci5zdGF0dXM/Yy5JTlZBTElEOlwiZGlydHlcIj09PXIuc3RhdHVzfHxcImRpcnR5XCI9PT10LnZhbHVlPygwLGMuRElSVFkpKHIudmFsdWUpOnJ9fWlmKFwicmVmaW5lbWVudFwiPT09ci50eXBlKXtsZXQgZT1lPT57bGV0IHQ9ci5yZWZpbmVtZW50KGUsbyk7aWYobi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtpZih0IGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBFcnJvcihcIkFzeW5jIHJlZmluZW1lbnQgZW5jb3VudGVyZWQgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlIG9wZXJhdGlvbi4gVXNlIC5wYXJzZUFzeW5jIGluc3RlYWQuXCIpO3JldHVybiBlfTtpZighMSE9PW4uY29tbW9uLmFzeW5jKXJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLnRoZW4obj0+XCJhYm9ydGVkXCI9PT1uLnN0YXR1cz9jLklOVkFMSUQ6KFwiZGlydHlcIj09PW4uc3RhdHVzJiZ0LmRpcnR5KCksZShuLnZhbHVlKS50aGVuKCgpPT4oe3N0YXR1czp0LnZhbHVlLHZhbHVlOm4udmFsdWV9KSkpKTt7bGV0IHI9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVyblwiYWJvcnRlZFwiPT09ci5zdGF0dXM/Yy5JTlZBTElEOihcImRpcnR5XCI9PT1yLnN0YXR1cyYmdC5kaXJ0eSgpLGUoci52YWx1ZSkse3N0YXR1czp0LnZhbHVlLHZhbHVlOnIudmFsdWV9KX19aWYoXCJ0cmFuc2Zvcm1cIj09PXIudHlwZSlpZighMSE9PW4uY29tbW9uLmFzeW5jKXJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLnRoZW4oZT0+KDAsYy5pc1ZhbGlkKShlKT9Qcm9taXNlLnJlc29sdmUoci50cmFuc2Zvcm0oZS52YWx1ZSxvKSkudGhlbihlPT4oe3N0YXR1czp0LnZhbHVlLHZhbHVlOmV9KSk6Yy5JTlZBTElEKTtlbHNle2xldCBlPXRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KTtpZighKDAsYy5pc1ZhbGlkKShlKSlyZXR1cm4gYy5JTlZBTElEO2xldCBhPXIudHJhbnNmb3JtKGUudmFsdWUsbyk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgRXJyb3IoXCJBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtyZXR1cm57c3RhdHVzOnQudmFsdWUsdmFsdWU6YX19dS51dGlsLmFzc2VydE5ldmVyKHIpfX10LlpvZEVmZmVjdHM9ZXMsdC5ab2RUcmFuc2Zvcm1lcj1lcyxlcy5jcmVhdGU9KGUsdCxuKT0+bmV3IGVzKHtzY2hlbWE6ZSx0eXBlTmFtZTpyLlpvZEVmZmVjdHMsZWZmZWN0OnQsLi4ucChuKX0pLGVzLmNyZWF0ZVdpdGhQcmVwcm9jZXNzPShlLHQsbik9Pm5ldyBlcyh7c2NoZW1hOnQsZWZmZWN0Ont0eXBlOlwicHJlcHJvY2Vzc1wiLHRyYW5zZm9ybTplfSx0eXBlTmFtZTpyLlpvZEVmZmVjdHMsLi4ucChuKX0pO2NsYXNzIGVjIGV4dGVuZHMgaHtfcGFyc2UoZSl7cmV0dXJuIHRoaXMuX2dldFR5cGUoZSk9PT11LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkPygwLGMuT0spKHZvaWQgMCk6dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoZSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fXQuWm9kT3B0aW9uYWw9ZWMsZWMuY3JlYXRlPShlLHQpPT5uZXcgZWMoe2lubmVyVHlwZTplLHR5cGVOYW1lOnIuWm9kT3B0aW9uYWwsLi4ucCh0KX0pO2NsYXNzIGV1IGV4dGVuZHMgaHtfcGFyc2UoZSl7cmV0dXJuIHRoaXMuX2dldFR5cGUoZSk9PT11LlpvZFBhcnNlZFR5cGUubnVsbD8oMCxjLk9LKShudWxsKTp0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShlKX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19dC5ab2ROdWxsYWJsZT1ldSxldS5jcmVhdGU9KGUsdCk9Pm5ldyBldSh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6ci5ab2ROdWxsYWJsZSwuLi5wKHQpfSk7Y2xhc3MgZWQgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXQuZGF0YTtyZXR1cm4gdC5wYXJzZWRUeXBlPT09dS5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCYmKG49dGhpcy5fZGVmLmRlZmF1bHRWYWx1ZSgpKSx0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7ZGF0YTpuLHBhdGg6dC5wYXRoLHBhcmVudDp0fSl9cmVtb3ZlRGVmYXVsdCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX10LlpvZERlZmF1bHQ9ZWQsZWQuY3JlYXRlPShlLHQpPT5uZXcgZWQoe2lubmVyVHlwZTplLHR5cGVOYW1lOnIuWm9kRGVmYXVsdCxkZWZhdWx0VmFsdWU6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZWZhdWx0P3QuZGVmYXVsdDooKT0+dC5kZWZhdWx0LC4uLnAodCl9KTtjbGFzcyBlZiBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLG49ey4uLnQsY29tbW9uOnsuLi50LmNvbW1vbixpc3N1ZXM6W119fSxyPXRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6ey4uLm59fSk7cmV0dXJuKDAsYy5pc0FzeW5jKShyKT9yLnRoZW4oZT0+KHtzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOlwidmFsaWRcIj09PWUuc3RhdHVzP2UudmFsdWU6dGhpcy5fZGVmLmNhdGNoVmFsdWUoe2dldCBlcnJvcigpe3JldHVybiBuZXcgaS5ab2RFcnJvcihuLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpuLmRhdGF9KX0pKTp7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTpcInZhbGlkXCI9PT1yLnN0YXR1cz9yLnZhbHVlOnRoaXMuX2RlZi5jYXRjaFZhbHVlKHtnZXQgZXJyb3IoKXtyZXR1cm4gbmV3IGkuWm9kRXJyb3Iobi5jb21tb24uaXNzdWVzKX0saW5wdXQ6bi5kYXRhfSl9fXJlbW92ZUNhdGNoKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fXQuWm9kQ2F0Y2g9ZWYsZWYuY3JlYXRlPShlLHQpPT5uZXcgZWYoe2lubmVyVHlwZTplLHR5cGVOYW1lOnIuWm9kQ2F0Y2gsY2F0Y2hWYWx1ZTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmNhdGNoP3QuY2F0Y2g6KCk9PnQuY2F0Y2gsLi4ucCh0KX0pO2NsYXNzIGVwIGV4dGVuZHMgaHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PXUuWm9kUGFyc2VkVHlwZS5uYW4pe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5uYW4scmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOmUuZGF0YX19fXQuWm9kTmFOPWVwLGVwLmNyZWF0ZT1lPT5uZXcgZXAoe3R5cGVOYW1lOnIuWm9kTmFOLC4uLnAoZSl9KSx0LkJSQU5EPVN5bWJvbChcInpvZF9icmFuZFwiKTtjbGFzcyBlaCBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLG49dC5kYXRhO3JldHVybiB0aGlzLl9kZWYudHlwZS5fcGFyc2Uoe2RhdGE6bixwYXRoOnQucGF0aCxwYXJlbnQ6dH0pfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX19dC5ab2RCcmFuZGVkPWVoO2NsYXNzIGVtIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5jb21tb24uYXN5bmMpcmV0dXJuKGFzeW5jKCk9PntsZXQgZT1hd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuXCJhYm9ydGVkXCI9PT1lLnN0YXR1cz9jLklOVkFMSUQ6XCJkaXJ0eVwiPT09ZS5zdGF0dXM/KHQuZGlydHkoKSwoMCxjLkRJUlRZKShlLnZhbHVlKSk6dGhpcy5fZGVmLm91dC5fcGFyc2VBc3luYyh7ZGF0YTplLnZhbHVlLHBhdGg6bi5wYXRoLHBhcmVudDpufSl9KSgpO3tsZXQgZT10aGlzLl9kZWYuaW4uX3BhcnNlU3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm5cImFib3J0ZWRcIj09PWUuc3RhdHVzP2MuSU5WQUxJRDpcImRpcnR5XCI9PT1lLnN0YXR1cz8odC5kaXJ0eSgpLHtzdGF0dXM6XCJkaXJ0eVwiLHZhbHVlOmUudmFsdWV9KTp0aGlzLl9kZWYub3V0Ll9wYXJzZVN5bmMoe2RhdGE6ZS52YWx1ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pfX1zdGF0aWMgY3JlYXRlKGUsdCl7cmV0dXJuIG5ldyBlbSh7aW46ZSxvdXQ6dCx0eXBlTmFtZTpyLlpvZFBpcGVsaW5lfSl9fXQuWm9kUGlwZWxpbmU9ZW07Y2xhc3MgZWcgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXQgdD10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShlKSxuPWU9PigoMCxjLmlzVmFsaWQpKGUpJiYoZS52YWx1ZT1PYmplY3QuZnJlZXplKGUudmFsdWUpKSxlKTtyZXR1cm4oMCxjLmlzQXN5bmMpKHQpP3QudGhlbihlPT5uKGUpKTpuKHQpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1mdW5jdGlvbiBleShlLHQpe2xldCBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSh0KTpcInN0cmluZ1wiPT10eXBlb2YgZT97bWVzc2FnZTplfTplO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBuP3ttZXNzYWdlOm59Om59ZnVuY3Rpb24gZXYoZSx0PXt9LG4pe3JldHVybiBlP1UuY3JlYXRlKCkuc3VwZXJSZWZpbmUoKHIsbyk9PntsZXQgYT1lKHIpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBhLnRoZW4oZT0+e2lmKCFlKXtsZXQgZT1leSh0LHIpLGE9ZS5mYXRhbD8/bj8/ITA7by5hZGRJc3N1ZSh7Y29kZTpcImN1c3RvbVwiLC4uLmUsZmF0YWw6YX0pfX0pO2lmKCFhKXtsZXQgZT1leSh0LHIpLGE9ZS5mYXRhbD8/bj8/ITA7by5hZGRJc3N1ZSh7Y29kZTpcImN1c3RvbVwiLC4uLmUsZmF0YWw6YX0pfX0pOlUuY3JlYXRlKCl9dC5ab2RSZWFkb25seT1lZyxlZy5jcmVhdGU9KGUsdCk9Pm5ldyBlZyh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6ci5ab2RSZWFkb25seSwuLi5wKHQpfSksdC5sYXRlPXtvYmplY3Q6JC5sYXp5Y3JlYXRlfSwobz1yfHwodC5ab2RGaXJzdFBhcnR5VHlwZUtpbmQ9cj17fSkpLlpvZFN0cmluZz1cIlpvZFN0cmluZ1wiLG8uWm9kTnVtYmVyPVwiWm9kTnVtYmVyXCIsby5ab2ROYU49XCJab2ROYU5cIixvLlpvZEJpZ0ludD1cIlpvZEJpZ0ludFwiLG8uWm9kQm9vbGVhbj1cIlpvZEJvb2xlYW5cIixvLlpvZERhdGU9XCJab2REYXRlXCIsby5ab2RTeW1ib2w9XCJab2RTeW1ib2xcIixvLlpvZFVuZGVmaW5lZD1cIlpvZFVuZGVmaW5lZFwiLG8uWm9kTnVsbD1cIlpvZE51bGxcIixvLlpvZEFueT1cIlpvZEFueVwiLG8uWm9kVW5rbm93bj1cIlpvZFVua25vd25cIixvLlpvZE5ldmVyPVwiWm9kTmV2ZXJcIixvLlpvZFZvaWQ9XCJab2RWb2lkXCIsby5ab2RBcnJheT1cIlpvZEFycmF5XCIsby5ab2RPYmplY3Q9XCJab2RPYmplY3RcIixvLlpvZFVuaW9uPVwiWm9kVW5pb25cIixvLlpvZERpc2NyaW1pbmF0ZWRVbmlvbj1cIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiLG8uWm9kSW50ZXJzZWN0aW9uPVwiWm9kSW50ZXJzZWN0aW9uXCIsby5ab2RUdXBsZT1cIlpvZFR1cGxlXCIsby5ab2RSZWNvcmQ9XCJab2RSZWNvcmRcIixvLlpvZE1hcD1cIlpvZE1hcFwiLG8uWm9kU2V0PVwiWm9kU2V0XCIsby5ab2RGdW5jdGlvbj1cIlpvZEZ1bmN0aW9uXCIsby5ab2RMYXp5PVwiWm9kTGF6eVwiLG8uWm9kTGl0ZXJhbD1cIlpvZExpdGVyYWxcIixvLlpvZEVudW09XCJab2RFbnVtXCIsby5ab2RFZmZlY3RzPVwiWm9kRWZmZWN0c1wiLG8uWm9kTmF0aXZlRW51bT1cIlpvZE5hdGl2ZUVudW1cIixvLlpvZE9wdGlvbmFsPVwiWm9kT3B0aW9uYWxcIixvLlpvZE51bGxhYmxlPVwiWm9kTnVsbGFibGVcIixvLlpvZERlZmF1bHQ9XCJab2REZWZhdWx0XCIsby5ab2RDYXRjaD1cIlpvZENhdGNoXCIsby5ab2RQcm9taXNlPVwiWm9kUHJvbWlzZVwiLG8uWm9kQnJhbmRlZD1cIlpvZEJyYW5kZWRcIixvLlpvZFBpcGVsaW5lPVwiWm9kUGlwZWxpbmVcIixvLlpvZFJlYWRvbmx5PVwiWm9kUmVhZG9ubHlcIix0Lmluc3RhbmNlb2Y9KGUsdD17bWVzc2FnZTpgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7ZS5uYW1lfWB9KT0+ZXYodD0+dCBpbnN0YW5jZW9mIGUsdCk7bGV0IGViPXouY3JlYXRlO3Quc3RyaW5nPWViO2xldCBlQT1ULmNyZWF0ZTt0Lm51bWJlcj1lQSx0Lm5hbj1lcC5jcmVhdGUsdC5iaWdpbnQ9RC5jcmVhdGU7bGV0IGV4PUwuY3JlYXRlO3QuYm9vbGVhbj1leCx0LmRhdGU9Ti5jcmVhdGUsdC5zeW1ib2w9Ui5jcmVhdGUsdC51bmRlZmluZWQ9TS5jcmVhdGUsdC5udWxsPVouY3JlYXRlLHQuYW55PVUuY3JlYXRlLHQudW5rbm93bj1GLmNyZWF0ZSx0Lm5ldmVyPXEuY3JlYXRlLHQudm9pZD1ILmNyZWF0ZSx0LmFycmF5PVYuY3JlYXRlLHQub2JqZWN0PSQuY3JlYXRlLHQuc3RyaWN0T2JqZWN0PSQuc3RyaWN0Q3JlYXRlLHQudW5pb249Vy5jcmVhdGUsdC5kaXNjcmltaW5hdGVkVW5pb249Sy5jcmVhdGUsdC5pbnRlcnNlY3Rpb249WC5jcmVhdGUsdC50dXBsZT1HLmNyZWF0ZSx0LnJlY29yZD1RLmNyZWF0ZSx0Lm1hcD1KLmNyZWF0ZSx0LnNldD1lZS5jcmVhdGUsdC5mdW5jdGlvbj1ldC5jcmVhdGUsdC5sYXp5PWVuLmNyZWF0ZSx0LmxpdGVyYWw9ZXIuY3JlYXRlLHQuZW51bT1lYS5jcmVhdGUsdC5uYXRpdmVFbnVtPWVpLmNyZWF0ZSx0LnByb21pc2U9ZWwuY3JlYXRlO2xldCBldz1lcy5jcmVhdGU7dC5lZmZlY3Q9ZXcsdC50cmFuc2Zvcm1lcj1ldyx0Lm9wdGlvbmFsPWVjLmNyZWF0ZSx0Lm51bGxhYmxlPWV1LmNyZWF0ZSx0LnByZXByb2Nlc3M9ZXMuY3JlYXRlV2l0aFByZXByb2Nlc3MsdC5waXBlbGluZT1lbS5jcmVhdGUsdC5vc3RyaW5nPSgpPT5lYigpLm9wdGlvbmFsKCksdC5vbnVtYmVyPSgpPT5lQSgpLm9wdGlvbmFsKCksdC5vYm9vbGVhbj0oKT0+ZXgoKS5vcHRpb25hbCgpLHQuY29lcmNlPXtzdHJpbmc6ZT0+ei5jcmVhdGUoey4uLmUsY29lcmNlOiEwfSksbnVtYmVyOmU9PlQuY3JlYXRlKHsuLi5lLGNvZXJjZTohMH0pLGJvb2xlYW46ZT0+TC5jcmVhdGUoey4uLmUsY29lcmNlOiEwfSksYmlnaW50OmU9PkQuY3JlYXRlKHsuLi5lLGNvZXJjZTohMH0pLGRhdGU6ZT0+Ti5jcmVhdGUoey4uLmUsY29lcmNlOiEwfSl9LHQuTkVWRVI9Yy5JTlZBTElEfX0sbj17fTtmdW5jdGlvbiByKGUpe3ZhciBvPW5bZV07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBhPW5bZV09e2V4cG9ydHM6e319LGk9ITA7dHJ5e3RbZV0uY2FsbChhLmV4cG9ydHMsYSxhLmV4cG9ydHMsciksaT0hMX1maW5hbGx5e2kmJmRlbGV0ZSBuW2VdfXJldHVybiBhLmV4cG9ydHN9ci5hYj1cIi8vXCIsZS5leHBvcnRzPXIoNjI5KX0pKCl9fSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhlKXt2YXIgdD1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBuPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tlXT17aWQ6ZSxleHBvcnRzOnt9fTtyZXR1cm4gX193ZWJwYWNrX21vZHVsZXNfX1tlXShuLG4uZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKSxuLmV4cG9ydHN9X193ZWJwYWNrX3JlcXVpcmVfXy5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5kKHQse2E6dH0pLHR9LCgoKT0+e3ZhciBlLHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mP2U9Pk9iamVjdC5nZXRQcm90b3R5cGVPZihlKTplPT5lLl9fcHJvdG9fXztfX3dlYnBhY2tfcmVxdWlyZV9fLnQ9ZnVuY3Rpb24obixyKXtpZigxJnImJihuPXRoaXMobikpLDgmcnx8XCJvYmplY3RcIj09dHlwZW9mIG4mJm4mJig0JnImJm4uX19lc01vZHVsZXx8MTYmciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50aGVuKSlyZXR1cm4gbjt2YXIgbz1PYmplY3QuY3JlYXRlKG51bGwpO19fd2VicGFja19yZXF1aXJlX18ucihvKTt2YXIgYT17fTtlPWV8fFtudWxsLHQoe30pLHQoW10pLHQodCldO2Zvcih2YXIgaT0yJnImJm47XCJvYmplY3RcIj09dHlwZW9mIGkmJiF+ZS5pbmRleE9mKGkpO2k9dChpKSlPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpKS5mb3JFYWNoKGU9PnthW2VdPSgpPT5uW2VdfSk7cmV0dXJuIGEuZGVmYXVsdD0oKT0+bixfX3dlYnBhY2tfcmVxdWlyZV9fLmQobyxhKSxvfX0pKCksX193ZWJwYWNrX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBuIGluIHQpX193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsbikmJiFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSxuKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSxfX3dlYnBhY2tfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLF9fd2VicGFja19yZXF1aXJlX18ucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sX193ZWJwYWNrX3JlcXVpcmVfXy5uYz12b2lkIDA7dmFyIF9fd2VicGFja19leHBvcnRzX189e307Zm9yKHZhciBfX3dlYnBhY2tfaV9fIGluKCgpPT57XCJ1c2Ugc3RyaWN0XCI7X193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pLF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLHtkaXNwYXRjaGVyOigpPT5kdCxyZW5kZXJBcHBEZXZPdmVybGF5OigpPT5kYyxEZXZPdmVybGF5Q29udGV4dDooKT0+ZHIscmVuZGVyUGFnZXNEZXZPdmVybGF5OigpPT5kdSx1c2VEZXZPdmVybGF5Q29udGV4dDooKT0+ZGF9KTt2YXIgZSx0LG4scj1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpLG89X193ZWJwYWNrX3JlcXVpcmVfXy5uKHIpLGE9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCIpLGk9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGEpLGw9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vc3JjL2J1aWxkL3dlYnBhY2svbG9hZGVycy9kZXZ0b29sL2RldnRvb2wtc3R5bGUtaW5qZWN0LmpzXCIpLHM9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGwpLGM9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiKSx1PV9fd2VicGFja19yZXF1aXJlX18ubihjKSxkPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIiksZj1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZCkscD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIiksaD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4ocCksbT1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2dsb2JhbC5jc3NcIiksZz17fTtnLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxnLnNldEF0dHJpYnV0ZXM9dSgpLGcuaW5zZXJ0PXMoKSxnLmRvbUFQST1pKCksZy5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKShtLlosZyksbS5aJiZtLloubG9jYWxzJiZtLloubG9jYWxzO3ZhciB5PV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b2FzdC9zdHlsZS5jc3NcIiksdj17fTt2LnN0eWxlVGFnVHJhbnNmb3JtPWgoKSx2LnNldEF0dHJpYnV0ZXM9dSgpLHYuaW5zZXJ0PXMoKSx2LmRvbUFQST1pKCksdi5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKSh5LlosdikseS5aJiZ5LloubG9jYWxzJiZ5LloubG9jYWxzO3ZhciBiPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LXJ1bnRpbWUuanNcIiksQT1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2NvbXBpbGVyLXJ1bnRpbWUuanNcIikseD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCIpLHc9X193ZWJwYWNrX3JlcXVpcmVfXy50KHgsMiksQz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3N0YWNrdHJhY2UtcGFyc2VyL3N0YWNrLXRyYWNlLXBhcnNlci5janMuanNcIiksXz0vXFwvX25leHQoXFwvc3RhdGljXFwvLispLyxrPVN5bWJvbC5mb3IoXCJuZXh0LmNvbnNvbGUuZXJyb3IuZGlnZXN0XCIpO2Z1bmN0aW9uIEUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe0UoZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9dmFyIE89e1NtYWxsOjE2LzE0LE1lZGl1bToxLExhcmdlOjE2LzE4fSxCPVwic3RhdGljLWluZGljYXRvclwiLFA9XCJidWlsZC1va1wiLEk9XCJidWlsZC1lcnJvclwiLHo9XCJiZWZvcmUtZmFzdC1yZWZyZXNoXCIsVD1cImZhc3QtcmVmcmVzaFwiLEQ9XCJ2ZXJzaW9uLWluZm9cIixMPVwidW5oYW5kbGVkLWVycm9yXCIsTj1cInVuaGFuZGxlZC1yZWplY3Rpb25cIixSPVwiZGVidWctaW5mb1wiLE09XCJkZXYtaW5kaWNhdG9yXCIsWj1cImRldi1pbmRpY2F0b3ItZGlzYWJsZVwiLFU9XCJlcnJvci1vdmVybGF5LW9wZW5cIixGPVwiZXJyb3Itb3ZlcmxheS1jbG9zZVwiLHE9XCJlcnJvci1vdmVybGF5LXRvZ2dsZVwiLEg9XCJidWlsZGluZy1pbmRpY2F0b3Itc2hvd1wiLFY9XCJidWlsZGluZy1pbmRpY2F0b3ItaGlkZVwiLCQ9XCJyZW5kZXJpbmctaW5kaWNhdG9yLXNob3dcIixXPVwicmVuZGVyaW5nLWluZGljYXRvci1oaWRlXCIsWT1cImRldnRvb2xzLXBvc2l0aW9uXCIsSz1cImRldnRvb2xzLXBhbmVsLXBvc2l0aW9uXCIsWD1cImRldnRvb2xzLXNjYWxlXCIsRz1cImRldnRvb2xzLWNvbmZpZ1wiLFE9XCJfX25leHRqcy1kZXYtdG9vbHMtcGFuZWwtcG9zaXRpb25cIixKPVwiX19uZXh0anMtZGV2LXRvb2xzLXBhbmVsLXNpemVcIixlZT1cIl9fbmV4dGpzLWRldi10b29scy1zaGFyZWQtcGFuZWwtc2l6ZVwiLGV0PVwiX19uZXh0anMtZGV2LXRvb2xzLXNoYXJlZC1wYW5lbC1sb2NhdGlvblwiLGVuPVwic2VnbWVudC1leHBsb3Jlci11cGRhdGUtcm91dGUtc3RhdGVcIixlcj0vXFxzKyhhdCBPYmplY3RcXC5yZWFjdF9zdGFja19ib3R0b21fZnJhbWUuKil8KHJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZUAuKil8KGF0IHJlYWN0LXN0YWNrLWJvdHRvbS1mcmFtZS4qKXwocmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lQC4qKS87ZnVuY3Rpb24gZW8oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmUuc3BsaXQoZXIpWzBdfXZhciBlYT0obnVsbD09KGU9cHJvY2Vzcy5lbnYuX19ORVhUX0RFVl9JTkRJQ0FUT1IpP3ZvaWQgMDplLnRvU3RyaW5nKCkpPT09XCJmYWxzZVwiLGVpPXtuZXh0SWQ6MSxidWlsZEVycm9yOm51bGwsZXJyb3JzOltdLG5vdEZvdW5kOiExLHJlbmRlcmluZ0luZGljYXRvcjohMSxzdGF0aWNJbmRpY2F0b3I6ITEsc2hvd0luZGljYXRvcjohMSxkaXNhYmxlRGV2SW5kaWNhdG9yOiExLGJ1aWxkaW5nSW5kaWNhdG9yOiExLHJlZnJlc2hTdGF0ZTp7dHlwZTpcImlkbGVcIn0sdmVyc2lvbkluZm86e2luc3RhbGxlZDpcIjAuMC4wXCIsc3RhbGVuZXNzOlwidW5rbm93blwifSxkZWJ1Z0luZm86e2RldnRvb2xzRnJvbnRlbmRVcmw6dm9pZCAwfSxkZXZUb29sc1Bvc2l0aW9uOlwiYm90dG9tLWxlZnRcIixkZXZUb29sc1BhbmVsUG9zaXRpb246RSh7fSxldCxcImJvdHRvbS1sZWZ0XCIpLGRldlRvb2xzUGFuZWxTaXplOnt9LHNjYWxlOk8uTWVkaXVtLHBhZ2U6XCJcIix0aGVtZTpcInN5c3RlbVwiLGhpZGVTaG9ydGN1dDpudWxsfSxlbD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9jbGllbnQuanNcIik7ZnVuY3Rpb24gZXMoZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dmFyIG89ZS5sZW5ndGgtMTtyZXR1cm4oZS5zbGljZSgwLG8pLnJlZHVjZShmdW5jdGlvbihlLHQscil7cmV0dXJuIGUrdCtuW3JdfSxcIlwiKStlW29dKS5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKS5yZXBsYWNlKC9cXHMqKFs6Oyx7fV0pXFxzKi9nLFwiJDFcIikucmVwbGFjZSgvOyt9L2csXCJ9XCIpLnRyaW0oKX1mdW5jdGlvbiBlYygpe3ZhciBlLHQsbj0oZT1bXCJcXG4gICAgICAvKiBsYXRpbi1leHQgKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QnO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1sYXRpbi1leHQud29mZjIpIGZvcm1hdCgnd29mZjInKTtcXG4gICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LFxcbiAgICAgICAgICBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLFxcbiAgICAgICAgICBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsXFxuICAgICAgICAgIFUrQTcyMC1BN0ZGO1xcbiAgICAgIH1cXG4gICAgICAvKiBsYXRpbi1leHQgKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QgTW9ubyc7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwIDYwMDtcXG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcXG4gICAgICAgIHNyYzogdXJsKC9fX25leHRqc19mb250L2dlaXN0LW1vbm8tbGF0aW4tZXh0LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XFxuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENyxcXG4gICAgICAgICAgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RixcXG4gICAgICAgICAgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLFxcbiAgICAgICAgICBVK0E3MjAtQTdGRjtcXG4gICAgICB9XFxuICAgICAgLyogbGF0aW4gKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QnO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1sYXRpbi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xcbiAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsXFxuICAgICAgICAgIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsXFxuICAgICAgICAgIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XFxuICAgICAgfVxcbiAgICAgIC8qIGxhdGluICovXFxuICAgICAgQGZvbnQtZmFjZSB7XFxuICAgICAgICBmb250LWZhbWlseTogJ19fbmV4dGpzLUdlaXN0IE1vbm8nO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMCA2MDA7XFxuICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XFxuICAgICAgICBzcmM6IHVybCgvX19uZXh0anNfZm9udC9nZWlzdC1tb25vLWxhdGluLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XFxuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNixcXG4gICAgICAgICAgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMixcXG4gICAgICAgICAgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG4gICAgICB9XFxuICAgIFwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBlYz1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciBldT1mdW5jdGlvbigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPVtdLHRbMF09ZSk6ZT10WzBdLCgwLHgudXNlSW5zZXJ0aW9uRWZmZWN0KShlZCxlKSxudWxsfTtmdW5jdGlvbiBlZCgpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtyZXR1cm4gZS50ZXh0Q29udGVudD1lcyhlYygpKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChlKX19dmFyIGVmPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2luZGV4LmpzXCIpO2Z1bmN0aW9uIGVwKGUpe3ZhciB0LG49KDAsQS5jKSgzKSxyPWUuY2hpbGRyZW4sbz1kYSgpLnNoYWRvd1Jvb3Q7cmV0dXJuIG5bMF0hPT1yfHxuWzFdIT09bz8odD0oMCxlZi5jcmVhdGVQb3J0YWwpKHIsbyksblswXT1yLG5bMV09byxuWzJdPXQpOnQ9blsyXSx0fWZ1bmN0aW9uIGVoKGUpe2lmKFwiXCI9PT1lLnRyaW0oKSl0aHJvdyBFcnJvcihcImNhbid0IGRlY29kZSBlbXB0eSBoZXhcIik7dmFyIHQ9cGFyc2VJbnQoZSwxNik7aWYoaXNOYU4odCkpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGhleDogYFwiLmNvbmNhdChlLFwiYFwiKSk7cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHQpfXZhciBlbT0vXl9fVFVSQk9QQUNLX18oW2EtekEtWjAtOV8kXSspX18kLyxlZz0vaHR0cHM/OlxcL1xcL1teXFxzLyQuPyNdLlteXFxzKSdcIl0qL2ksZXk9bmV3IFJlZ0V4cChcIihcIi5jb25jYXQoL19fVFVSQk9QQUNLX19bYS16QS1aMC05XyRdK19fL2cuc291cmNlLFwifFxcXFxzKylcIikpLGV2PWZ1bmN0aW9uKGUpe3ZhciB0LG49KDAsQS5jKSg3KSxyPWUudGV4dCxvPWUubWF0Y2hlcjtpZihuWzBdIT09b3x8blsxXSE9PXIpe3ZhciBhLGksbD1yLnNwbGl0KGV5KTtuWzNdIT09bz8oaT1mdW5jdGlvbihlLHQpe2lmKGVnLnRlc3QoZSkpe3ZhciBuPWVnLmV4ZWMoZSlbMF07cmV0dXJuXCJmdW5jdGlvblwiIT10eXBlb2Ygb3x8byhuKT8oMCxiLmpzeCkoeC5GcmFnbWVudCx7Y2hpbGRyZW46KDAsYi5qc3gpKFwiYVwiLHtocmVmOm4sdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwiLGNoaWxkcmVuOmV9KX0sXCJsaW5rLVwiLmNvbmNhdCh0KSk6ZX10cnl7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChlbSk7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuPXRbMV0scj1cIlwiLG89MCxhPVwiXCIsaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbD1uW2ldO2lmKDA9PT1vKVwiX1wiPT09bD9vPTE6XCIkXCI9PT1sP289MjpyKz1sO2Vsc2UgaWYoMT09PW8pXCJfXCI9PT1sPyhyKz1cIiBcIixvPTApOlwiJFwiPT09bD8ocis9XCJfXCIsbz0yKToocis9bCxvPTApO2Vsc2UgaWYoMj09PW8paWYoMj09PWEubGVuZ3RoJiYocis9ZWgoYSksYT1cIlwiKSxcIl9cIj09PWwpe2lmKFwiXCIhPT1hKXRocm93IEVycm9yKFwiaW52YWxpZCBoZXg6IGBcIi5jb25jYXQoYSxcImBcIikpO289M31lbHNlIGlmKFwiJFwiPT09bCl7aWYoXCJcIiE9PWEpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGhleDogYFwiLmNvbmNhdChhLFwiYFwiKSk7bz0wfWVsc2UgYSs9bDtlbHNlIGlmKDM9PT1vKWlmKFwiX1wiPT09bCl0aHJvdyBFcnJvcihcImludmFsaWQgaGV4OiBgXCIuY29uY2F0KGErbCxcImBcIikpO2Vsc2VcIiRcIj09PWw/KHIrPWVoKGEpLGE9XCJcIixvPTApOmErPWx9cmV0dXJuIHJ9KGUpO2lmKHIhPT1lKXJldHVybigwLGIuanN4cykoXCJpXCIse2NoaWxkcmVuOltcIntcIixyLFwifVwiXX0sXCJpZGVudC1cIi5jb25jYXQodCkpfWNhdGNoKG4pe3JldHVybigwLGIuanN4cykoXCJpXCIse2NoaWxkcmVuOltcIntcIixlLFwiIChkZWNvZGluZyBmYWlsZWQ6IFwiLFwiXCIrbixcIilcIixcIn1cIl19LFwiaWRlbnQtXCIuY29uY2F0KHQpKX1yZXR1cm4oMCxiLmpzeCkoeC5GcmFnbWVudCx7Y2hpbGRyZW46ZX0sXCJ0ZXh0LVwiLmNvbmNhdCh0KSl9LG5bM109byxuWzRdPWkpOmk9bls0XSxhPWwubWFwKGkpLG5bMF09byxuWzFdPXIsblsyXT1hfWVsc2UgYT1uWzJdO3JldHVybiBuWzVdIT09YT8odD0oMCxiLmpzeCkoYi5GcmFnbWVudCx7Y2hpbGRyZW46YX0pLG5bNV09YSxuWzZdPXQpOnQ9bls2XSx0fSxlYj1bL153ZWJwYWNrLWludGVybmFsOlxcL1xcL1xcLyhcXChbXFx3LV0rXFwpXFwvKT8vLC9eKHdlYnBhY2s6XFwvXFwvXFwvfHdlYnBhY2s6XFwvXFwvKF9OX0VcXC8pPykoXFwoW1xcdy1dK1xcKVxcLyk/L107ZnVuY3Rpb24gZUEoZSl7dmFyIHQ9ITAsbj0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBvLGE9ZWJbU3ltYm9sLml0ZXJhdG9yXSgpOyEodD0obz1hLm5leHQoKSkuZG9uZSk7dD0hMCl7dmFyIGk9by52YWx1ZTtpZihpLnRlc3QoZSkpcmV0dXJuITA7ZT1lLnJlcGxhY2UoaSxcIlwiKX19Y2F0Y2goZSl7bj0hMCxyPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09YS5yZXR1cm58fGEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fXJldHVybiExfWZ1bmN0aW9uIGV4KGUpe3ZhciB0PSEwLG49ITEscj12b2lkIDA7dHJ5e2Zvcih2YXIgbyxhPWViW1N5bWJvbC5pdGVyYXRvcl0oKTshKHQ9KG89YS5uZXh0KCkpLmRvbmUpO3Q9ITApe3ZhciBpPW8udmFsdWU7ZT1lLnJlcGxhY2UoaSxcIlwiKX19Y2F0Y2goZSl7bj0hMCxyPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09YS5yZXR1cm58fGEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fXJldHVybiBlfWZ1bmN0aW9uIGV3KGUsdCxuLHIsbyxhLGkpe3RyeXt2YXIgbD1lW2FdKGkpLHM9bC52YWx1ZX1jYXRjaChlKXtuKGUpO3JldHVybn1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGVDKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGkoZSl7ZXcoYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7ZXcoYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX19ZnVuY3Rpb24gZV8oZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fWZ1bmN0aW9uIGVrKGUsdCl7dmFyIG47cmV0dXJuXCJmaWxlOi8vXCI9PT1lLmZpbGV8fChudWxsPT0obj1lLmZpbGUpP3ZvaWQgMDpuLm1hdGNoKC9odHRwcz86XFwvXFwvLykpP1Byb21pc2UucmVzb2x2ZSh7ZXJyb3I6ITEscmVhc29uOm51bGwsZXh0ZXJuYWw6ITAsc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGwsaWdub3JlZDohMH0pOmVDKGZ1bmN0aW9uKCl7dmFyIG4scjtyZXR1cm4gZV8odGhpcyxmdW5jdGlvbihvKXtpZihcInJlamVjdGVkXCI9PT10LnN0YXR1cyl0aHJvdyBFcnJvcih0LnJlYXNvbik7cmV0dXJuWzIse2Vycm9yOiExLHJlYXNvbjpudWxsLGV4dGVybmFsOiExLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6KHI9dC52YWx1ZSkub3JpZ2luYWxTdGFja0ZyYW1lLG9yaWdpbmFsQ29kZUZyYW1lOnIub3JpZ2luYWxDb2RlRnJhbWV8fG51bGwsaWdub3JlZDoobnVsbD09KG49ci5vcmlnaW5hbFN0YWNrRnJhbWUpP3ZvaWQgMDpuLmlnbm9yZWQpfHwhMX1dfSl9KSgpLmNhdGNoKGZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJue2Vycm9yOiEwLHJlYXNvbjpudWxsIT0ocj1udWxsIT0obj1udWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpP246bnVsbD09dD92b2lkIDA6dC50b1N0cmluZygpKT9yOlwiVW5rbm93biBFcnJvclwiLGV4dGVybmFsOiExLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6bnVsbCxvcmlnaW5hbENvZGVGcmFtZTpudWxsLGlnbm9yZWQ6ITF9fSl9ZnVuY3Rpb24gZUUoZSx0LG4pe3JldHVybiBlQyhmdW5jdGlvbigpe3ZhciByLG8sYSxpO3JldHVybiBlXyh0aGlzLGZ1bmN0aW9uKGwpe3N3aXRjaChsLmxhYmVsKXtjYXNlIDA6cj17ZnJhbWVzOmUsaXNTZXJ2ZXI6XCJzZXJ2ZXJcIj09PXQsaXNFZGdlU2VydmVyOlwiZWRnZS1zZXJ2ZXJcIj09PXQsaXNBcHBEaXJlY3Rvcnk6bn0sbz12b2lkIDAsYT12b2lkIDAsbC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbC50cnlzLnB1c2goWzEsMywsNF0pLFs0LGZldGNoKFwiL19fbmV4dGpzX29yaWdpbmFsLXN0YWNrLWZyYW1lc1wiLHttZXRob2Q6XCJQT1NUXCIsYm9keTpKU09OLnN0cmluZ2lmeShyKX0pXTtjYXNlIDI6cmV0dXJuIG89bC5zZW50KCksWzMsNF07Y2FzZSAzOnJldHVybiBhPWwuc2VudCgpK1wiXCIsWzMsNF07Y2FzZSA0OmlmKCEobyYmby5vayYmMjA0IT09by5zdGF0dXMpKXJldHVyblszLDZdO3JldHVybls0LG8uanNvbigpXTtjYXNlIDU6cmV0dXJuIGk9bC5zZW50KCksWzIsUHJvbWlzZS5hbGwoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZWsoZSxpW3RdKX0pKV07Y2FzZSA2OmlmKCFvKXJldHVyblszLDhdO3JldHVybls0LG8udGV4dCgpXTtjYXNlIDc6YT1sLnNlbnQoKSxsLmxhYmVsPTg7Y2FzZSA4OnJldHVyblsyLFByb21pc2UuYWxsKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlayhlLHtzdGF0dXM6XCJyZWplY3RlZFwiLHJlYXNvbjpcIkZhaWxlZCB0byBmZXRjaCB0aGUgb3JpZ2luYWwgc3RhY2sgZnJhbWVzIFwiLmNvbmNhdChhP1wiOiBcIi5jb25jYXQoYSk6XCJcIil9KX0pKV19fSl9KSgpfWZ1bmN0aW9uIGVqKGUpe2lmKCFlLmZpbGUpcmV0dXJuXCJcIjt2YXIgdD1lQShlLmZpbGUpLG49XCJcIjtpZih0KW49ZXgoZS5maWxlKTtlbHNlIHRyeXt2YXIgcixvPW5ldyBVUkwoZS5maWxlKSxhPVwiXCI7KG51bGw9PShyPWdsb2JhbFRoaXMubG9jYXRpb24pP3ZvaWQgMDpyLm9yaWdpbikhPT1vLm9yaWdpbiYmKFwibnVsbFwiPT09by5vcmlnaW4/YSs9by5wcm90b2NvbDphKz1vLm9yaWdpbiksYSs9by5wYXRobmFtZSxuPWV4KGEpfWNhdGNoKHQpe249ZXgoZS5maWxlKX1yZXR1cm4hZUEoZS5maWxlKSYmbnVsbCE9ZS5saW5lMSYmbiYmXCI8YW5vbnltb3VzPlwiIT09ZS5maWxlJiYobnVsbCE9ZS5jb2x1bW4xP24rPVwiIChcIi5jb25jYXQoZS5saW5lMSxcIjpcIikuY29uY2F0KGUuY29sdW1uMSxcIilcIik6bis9XCIgKFwiLmNvbmNhdChlLmxpbmUxLFwiKVwiKSksbn1mdW5jdGlvbiBlUyhlKXt2YXIgdCxuLHI9KDAsQS5jKSg2KTtyWzBdIT09ZT8odD12b2lkIDA9PT1lP3t9OmUsclswXT1lLHJbMV09dCk6dD1yWzFdO3ZhciBvPXQuZmlsZSxhPXQubGluZTEsaT10LmNvbHVtbjE7cmV0dXJuIHJbMl0hPT1pfHxyWzNdIT09b3x8cls0XSE9PWE/KG49ZnVuY3Rpb24oKXtpZihudWxsIT1vJiZudWxsIT1hJiZudWxsIT1pKXt2YXIgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2UuYXBwZW5kKFwiZmlsZVwiLG8pLGUuYXBwZW5kKFwibGluZTFcIixTdHJpbmcoYSkpLGUuYXBwZW5kKFwiY29sdW1uMVwiLFN0cmluZyhpKSksc2VsZi5mZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/XCIpLmNvbmNhdChlLnRvU3RyaW5nKCkpKS50aGVuKGVPLGZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBvcGVuIGZpbGUgXCInLmNvbmNhdChvLFwiIChcIikuY29uY2F0KGEsXCI6XCIpLmNvbmNhdChpLCcpXCIgaW4geW91ciBlZGl0b3IuIENhdXNlOicpLGUpfSl9fSxyWzJdPWksclszXT1vLHJbNF09YSxyWzVdPW4pOm49cls1XSxufWZ1bmN0aW9uIGVPKCl7fWZ1bmN0aW9uIGVCKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBlUChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gZUkoZSl7dmFyIHQsbixyPSgwLEEuYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIixkOlwiTTExLjUgOS43NVYxMS4yNUMxMS41IDExLjM4ODEgMTEuMzg4MSAxMS41IDExLjI1IDExLjVINC43NUM0LjYxMTkzIDExLjUgNC41IDExLjM4ODEgNC41IDExLjI1TDQuNSA0Ljc1QzQuNSA0LjYxMTkzIDQuNjExOTMgNC41IDQuNzUgNC41SDYuMjVIN1YzSDYuMjVINC43NUMzLjc4MzUgMyAzIDMuNzgzNSAzIDQuNzVWMTEuMjVDMyAxMi4yMTY1IDMuNzgzNSAxMyA0Ljc1IDEzSDExLjI1QzEyLjIxNjUgMTMgMTMgMTIuMjE2NSAxMyAxMS4yNVY5Ljc1VjlIMTEuNVY5Ljc1Wk04LjUgM0g5LjI1SDEyLjI0OTVDMTIuNjYzNyAzIDEyLjk5OTUgMy4zMzU3OSAxMi45OTk1IDMuNzVWNi43NVY3LjVIMTEuNDk5NVY2Ljc1VjUuNTYwNjZMOC41MzAzMyA4LjUyOTc4TDggOS4wNjAxMUw2LjkzOTM0IDcuOTk5NDVMNy40Njk2NyA3LjQ2OTEyTDEwLjQzODggNC41SDkuMjVIOC41VjNaXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxiLmpzeCkoXCJzdmdcIixlUChlQih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwifSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiBleihlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk04LjU1ODQ2IDJINy40NDE0OEwxLjg4OTc1IDEzLjVIMTQuMTEwMkw4LjU1ODQ2IDJaTTkuOTA5MjkgMS4zNDc4OEM5LjY1OTAyIDAuODI5NDU2IDkuMTM0MTMgMC41IDguNTU4NDYgMC41SDcuNDQxNDhDNi44NjU4MSAwLjUgNi4zNDA5MiAwLjgyOTQ1NCA2LjA5MDY1IDEuMzQ3ODdMMC4xOTI2MDggMTMuNTY1M0MtMC4xMjc5NDMgMTQuMjI5MyAwLjM1NTgzNSAxNSAxLjA5MzE2IDE1SDE0LjkwNjhDMTUuNjQ0MSAxNSAxNi4xMjc5IDE0LjIyOTMgMTUuODA3MyAxMy41NjUzTDkuOTA5MjkgMS4zNDc4OFpNOC43NDk5NyA0Ljc1VjUuNVY4VjguNzVINy4yNDk5N1Y4VjUuNVY0Ljc1SDguNzQ5OTdaTTcuOTk5OTcgMTJDOC41NTIyNiAxMiA4Ljk5OTk3IDExLjU1MjMgOC45OTk5NyAxMUM4Ljk5OTk3IDEwLjQ0NzcgOC41NTIyNiAxMCA3Ljk5OTk3IDEwQzcuNDQ3NjkgMTAgNi45OTk5NyAxMC40NDc3IDYuOTk5OTcgMTFDNi45OTk5NyAxMS41NTIzIDcuNDQ3NjkgMTIgNy45OTk5NyAxMlpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxiLmpzeCkoXCJzdmdcIixlUChlQih7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGhlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCItNCAtNCAyNCAyNFwiLHdpZHRoOlwiMTZcIn0sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gZVQoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSg2KSxzPWUubGFuZztpZighcylyZXR1cm4gbFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShlUix7fSksbFswXT10KTp0PWxbMF0sdDtzd2l0Y2gocy50b0xvd2VyQ2FzZSgpKXtjYXNlXCJqc3hcIjpjYXNlXCJ0c3hcIjpyZXR1cm4gbFsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4KShlTSx7fSksbFsxXT1uKTpuPWxbMV0sbjtjYXNlXCJ0c1wiOmNhc2VcInR5cGVzY3JpcHRcIjpyZXR1cm4gbFsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShlTix7fSksbFsyXT1yKTpyPWxbMl0scjtjYXNlXCJqYXZhc2NyaXB0XCI6Y2FzZVwianNcIjpjYXNlXCJtanNcIjpyZXR1cm4gbFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLGIuanN4KShlTCx7fSksbFszXT1vKTpvPWxbM10sbztjYXNlXCJqc29uXCI6cmV0dXJuIGxbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxiLmpzeCkoZUQse30pLGxbNF09YSk6YT1sWzRdLGE7ZGVmYXVsdDpyZXR1cm4gbFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLGIuanN4KShlUix7fSksbFs1XT1pKTppPWxbNV0saX19ZnVuY3Rpb24gZUQoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7Y2xpcFJ1bGU6XCJldmVub2RkXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDEzMjEuNDUgMTMzMy4zM1wiLHdpZHRoOlwiMTZcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMjIxLjM3IDYxOC40NGg3NTcuOTRWNDA1LjE1SDc1NS4xNGMtMjMuNSAwLTU2LjMyLTEyLjc0LTcxLjgyLTI4LjI0LTE1LjUtMTUuNS0yNS00My40Ny0yNS02Ni45N1Y4Mi44OUg4OC4zOWMtMS45OSAwLTMuNDkgMS00LjQ5IDItMS41IDEtMiAyLjUtMiA0LjV2MTE1NS4wNGMwIDEuNSAxIDMuNSAyIDQuNSAxIDEuNDkgMyAxLjk5IDQuNDkgMS45OUg5NzIuOGMyIDAgMS44OS0uOTkgMi44OS0xLjk5IDEuNS0xIDMuNjEtMyAzLjYxLTQuNXYtMTIxLjA5SDIyMS4zNmMtNDQuOTYgMC04Mi0zNi45LTgyLTgxLjk5VjcwMC40NGMwLTQ1LjEgMzYuOS04MiA4Mi04MnptMTI2LjUxIDExNy40N2g3NS4yNHYxNDYuNjFjMCAzMC43OS0yLjQ0IDU0LjIzLTcuMzMgNzAuMzEtNC45MiAxNi4wMy0xNC44IDI5LjY3LTI5LjY1IDQwLjg1LTE0Ljg2IDExLjEyLTMzLjkxIDE2LjcyLTU3LjA1IDE2LjcyLTI0LjUzIDAtNDMuNTEtMy43MS01Ni45NC0xMS4wNi0xMy41LTcuMzYtMjMuODktMTguMS0zMS4yMy0zMi4zLTcuMzUtMTQuMTQtMTEuNjktMzEuNjctMTIuOTktNTIuNTNsNzEuNS0xMC44MWMuMTEgMTEuODEgMS4wNyAyMC42MSAyLjgxIDI2LjMzIDEuNzYgNS43OCA0Ljc1IDEwLjM3IDkgMTMuOTUgMi44NyAyLjMzIDYuOTQgMy40NiAxMi4yNSAzLjQ2IDguNCAwIDE0LjU4LTMuNDYgMTguNTMtMTAuMzcgMy45LTYuOTIgNS44Ny0xOC42IDUuODctMzVWNzM1Ljkyem0xMTIuNzcgMTgwLjY3bDcxLjE3LTQuOTdjMS41NCAxMi44MSA0LjY5IDIyLjYyIDkuNDQgMjkuMjggNy43NCAxMC44OCAxOC43NCAxNi4zNCAzMy4wOSAxNi4zNCAxMC42OCAwIDE4LjkzLTIuNzYgMjQuNjgtOC4zNiA1LjgxLTUuNTggOC43LTEyLjA3IDguNy0xOS40MSAwLTYuOTctMi43MS0xMy4yNi04LjItMTguNzktNS40Ny01LjUzLTE4LjIzLTEwLjY4LTM4LjI4LTE1LjY1LTMyLjg5LTguMTctNTYuMjctMTkuMS03MC4yNi0zMi43NC0xNC4xMi0xMy41Ny0yMS4xOC0zMC45Mi0yMS4xOC01Mi4wMyAwLTEzLjgzIDMuNjEtMjYuODkgMTAuODUtMzkuMjEgNy4yMi0xMi4zOCAxOC4wNy0yMi4wNiAzMi41OS0yOS4wOSAxNC41Mi03LjA0IDM0LjQtMTAuNTYgNTkuNjUtMTAuNTYgMzEgMCA1NC42MiA2LjQxIDcwLjg4IDE5LjI5IDE2LjI4IDEyLjgxIDI1LjkyIDMzLjI0IDI5LjA0IDYxLjI3bC03MC41IDQuNjVjLTEuODctMTIuMjUtNS44MS0yMS4xNy0xMS44MS0yNi43LTYuMDUtNS42LTE0LjM1LTguMzYtMjQuOS04LjM2LTguNzEgMC0xNS4zMSAyLjA3LTE5LjczIDYuMTYtNC40IDQuMDktNi41OSA5LjEyLTYuNTkgMTUuMDIgMCA0LjI3IDEuODEgOC4xMSA1LjM3IDExLjU3IDMuNDUgMy41OSAxMS44IDYuODUgMjUuMDIgOS45MyAzMi43NSA3Ljg2IDU2LjIgMTUuODQgNzAuMzEgMjMuODcgMTQuMTggOC4wNSAyNC41MiAxNy45OCAzMC45NiAyOS45MiA2LjQ0IDExLjg4IDkuNjYgMjUuMiA5LjY2IDM5Ljk2IDAgMTcuMjktNC4zIDMzLjI0LTEyLjg4IDQ3Ljg5LTguNjMgMTQuNTgtMjAuNjEgMjUuNy0zNi4wOCAzMy4yNC0xNS40MSA3LjU0LTM0Ljg1IDExLjMxLTU4LjMzIDExLjMxLTQxLjI0IDAtNjkuODEtOC44Ni04NS42OC0yNi41Mi0xNS44OC0xNy42NS0yNC44NS00MC4wOS0yNi45Ni02Ny4zem0yNDguNzQtNDUuNWMwLTQ0LjA1IDExLjAyLTc4LjM2IDMzLjA5LTEwMi44NyAyMi4wOS0yNC41NyA1Mi44Mi0zNi44MiA5Mi4yNC0zNi44MiA0MC4zOCAwIDcxLjUgMTIuMDcgOTMuMzQgMzYuMTMgMjEuODYgMjQuMTMgMzIuNzcgNTcuOTQgMzIuNzcgMTAxLjM3IDAgMzEuNTQtNC43NSA1Ny4zNi0xNC4zIDc3LjU0LTkuNTQgMjAuMTgtMjMuMzcgMzUuODktNDEuNCA0Ny4xMy0xOC4wNyAxMS4yNC00MC41NSAxNi44NC02Ny40OCAxNi44NC0yNy4zMyAwLTQ5Ljk5LTQuODMtNjcuOTQtMTQuNTItMTcuOTItOS43NC0zMi40OS0yNS4wNy00My42Mi00Ni4wNi0xMS4xMy0yMC45Mi0xNi43Mi00Ny4xOS0xNi43Mi03OC43NHptNzQuODkuMTljMCAyNy4yMSA0LjU3IDQ2LjgxIDEzLjY4IDU4LjY4IDkuMTMgMTEuODggMjEuNTcgMTcuODUgMzcuMjYgMTcuODUgMTYuMSAwIDI4LjY1LTUuODQgMzcuNDUtMTcuNDcgOC44Ny0xMS42OCAxMy4yOC0zMi41NCAxMy4yOC02Mi43NyAwLTI1LjM5LTQuNjMtNDMuOTItMTMuODQtNTUuNjEtOS4yNi0xMS43Ni0yMS43NS0xNy42LTM3LjU2LTE3LjYtMTUuMTMgMC0yNy4zNCA1Ljk3LTM2LjQ5IDE3Ljg1LTkuMjEgMTEuODgtMTMuNzggMzEuNjEtMTMuNzggNTkuMDd6bTIwOS4wOC0xMzUuMzZoNjkuOTlsOTAuOTggMTQ5LjA1VjczNS45MWg3MC44M3YyNjkuOTZoLTcwLjgzbC05MC40OC0xNDguMjR2MTQ4LjI0aC03MC40OVY3MzUuOTF6bTY3LjcxLTExNy40N2gxNzguMzdjNDUuMSAwIDgyIDM3LjA0IDgyIDgydjM0MC45MWMwIDQ0Ljk2LTM3LjAzIDgxLjk5LTgyIDgxLjk5aC0xNzguMzd2MTQ3YzAgMTcuNS02Ljk5IDMyLjk5LTE4LjUgNDQuNS0xMS41IDExLjQ5LTI3IDE4LjUtNDQuNSAxOC41SDYyLjk3Yy0xNy41IDAtMzIuOTktNy00NC41LTE4LjUtMTEuNDktMTEuNS0xOC41LTI3LTE4LjUtNDQuNVY2My40OWMwLTE3LjUgNy0zMyAxOC41LTQ0LjVTNDUuOTcuNDkgNjIuOTcuNDlINzAwLjFjMS41LS41IDMtLjUgNC41LS41IDcgMCAxNCAzIDE5IDcuNDloMWMxIC41IDEuNSAxIDIuNSAybDMyNS40NiAzMjkuNDdjNS41IDUuNSA5LjUgMTMgOS41IDIxLjUgMCAyLjUtLjUgNC41LTEgN3YyNTAuOTh6TTczMi42MSAzMDMuNDdWOTYuOTlsMjMyLjQ4IDIzNS40N0g3NjEuNmMtNy45OSAwLTE0Ljk5LTMuNS0yMC41LTguNDktNC45OS01LTguNDktMTIuNS04LjQ5LTIwLjV6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIGVMKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCA1MCA1MFwiLHdpZHRoOlwiMTZcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTSA0My4zMzU5MzggNCBMIDYuNjY3OTY5IDQgQyA1LjE5NTMxMyA0IDQgNS4xOTUzMTMgNCA2LjY2Nzk2OSBMIDQgNDMuMzMyMDMxIEMgNCA0NC44MDQ2ODggNS4xOTUzMTMgNDYgNi42Njc5NjkgNDYgTCA0My4zMzIwMzEgNDYgQyA0NC44MDQ2ODggNDYgNDYgNDQuODA0Njg4IDQ2IDQzLjMzNTkzOCBMIDQ2IDYuNjY3OTY5IEMgNDYgNS4xOTUzMTMgNDQuODA0Njg4IDQgNDMuMzM1OTM4IDQgWiBNIDI3IDM2LjE4MzU5NCBDIDI3IDQwLjE3OTY4OCAyNC42NTYyNSA0MiAyMS4yMzQzNzUgNDIgQyAxOC4xNDA2MjUgNDIgMTUuOTEwMTU2IDM5LjkyNTc4MSAxNSAzOCBMIDE4LjE0NDUzMSAzNi4wOTc2NTYgQyAxOC43NSAzNy4xNzE4NzUgMTkuNjcxODc1IDM4IDIxIDM4IEMgMjIuMjY5NTMxIDM4IDIzIDM3LjUwMzkwNiAyMyAzNS41NzQyMTkgTCAyMyAyMyBMIDI3IDIzIFogTSAzNS42NzU3ODEgNDIgQyAzMi4xMzI4MTMgNDIgMzAuMTIxMDk0IDQwLjIxNDg0NCAyOSAzOCBMIDMyIDM2IEMgMzIuODE2NDA2IDM3LjMzNTkzOCAzMy43MDcwMzEgMzguNjEzMjgxIDM1LjU4OTg0NCAzOC42MTMyODEgQyAzNy4xNzE4NzUgMzguNjEzMjgxIDM4IDM3LjgyNDIxOSAzOCAzNi43MzA0NjkgQyAzOCAzNS40MjU3ODEgMzcuMTQwNjI1IDM0Ljk2MDkzOCAzNS40MDIzNDQgMzQuMTk5MjE5IEwgMzQuNDQ5MjE5IDMzLjc4OTA2MyBDIDMxLjY5NTMxMyAzMi42MTcxODggMjkuODYzMjgxIDMxLjE0ODQzOCAyOS44NjMyODEgMjguMDM5MDYzIEMgMjkuODYzMjgxIDI1LjE3OTY4OCAzMi4wNDY4NzUgMjMgMzUuNDUzMTI1IDIzIEMgMzcuODc4OTA2IDIzIDM5LjYyMTA5NCAyMy44NDM3NSA0MC44Nzg5MDYgMjYuMDU0Njg4IEwgMzcuOTEwMTU2IDI3Ljk2NDg0NCBDIDM3LjI1MzkwNiAyNi43ODkwNjMgMzYuNTUwNzgxIDI2LjMyODEyNSAzNS40NTMxMjUgMjYuMzI4MTI1IEMgMzQuMzM1OTM4IDI2LjMyODEyNSAzMy42Mjg5MDYgMjcuMDM5MDYzIDMzLjYyODkwNiAyNy45NjQ4NDQgQyAzMy42Mjg5MDYgMjkuMTA5Mzc1IDM0LjMzNTkzOCAyOS41NzAzMTMgMzUuOTcyNjU2IDMwLjI4MTI1IEwgMzYuOTI1NzgxIDMwLjY5MTQwNiBDIDQwLjE3MTg3NSAzMi4wNzgxMjUgNDIgMzMuNDk2MDk0IDQyIDM2LjY4MzU5NCBDIDQyIDQwLjExNzE4OCAzOS4zMDA3ODEgNDIgMzUuNjc1NzgxIDQyIFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZU4oKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeHMpKFwic3ZnXCIse2ZpbGw6XCJub25lXCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDUxMiA1MTJcIix3aWR0aDpcIjE0XCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJyZWN0XCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixoZWlnaHQ6XCI1MTJcIixyeDpcIjUwXCIsd2lkdGg6XCI1MTJcIn0pLCgwLGIuanN4KShcInJlY3RcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGhlaWdodDpcIjUxMlwiLHJ4OlwiNTBcIix3aWR0aDpcIjUxMlwifSksKDAsYi5qc3gpKFwicGF0aFwiLHtjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwibTMxNi45MzkgNDA3LjQyNHY1MC4wNjFjOC4xMzggNC4xNzIgMTcuNzYzIDcuMyAyOC44NzUgOS4zODZzMjIuODIzIDMuMTI5IDM1LjEzNSAzLjEyOWMxMS45OTkgMCAyMy4zOTctMS4xNDcgMzQuMTk2LTMuNDQyIDEwLjc5OS0yLjI5NCAyMC4yNjgtNi4wNzUgMjguNDA2LTExLjM0MiA4LjEzOC01LjI2NiAxNC41ODEtMTIuMTUgMTkuMzI4LTIwLjY1czcuMTIxLTE5LjAwNyA3LjEyMS0zMS41MjJjMC05LjA3NC0xLjM1Ni0xNy4wMjYtNC4wNjktMjMuODU3cy02LjYyNS0xMi45MDYtMTEuNzM4LTE4LjIyNWMtNS4xMTItNS4zMTktMTEuMjQyLTEwLjA5MS0xOC4zODktMTQuMzE1cy0xNS4yMDctOC4yMTMtMjQuMTgtMTEuOTY3Yy02LjU3My0yLjcxMi0xMi40NjgtNS4zNDUtMTcuNjg1LTcuOS01LjIxNy0yLjU1Ni05LjY1MS01LjE2My0xMy4zMDMtNy44MjItMy42NTItMi42Ni02LjQ2OS01LjQ3Ni04LjQ1MS04LjQ0OC0xLjk4Mi0yLjk3My0yLjk3NC02LjMzNi0yLjk3NC0xMC4wOTEgMC0zLjQ0MS44ODctNi41NDQgMi42NjEtOS4zMDhzNC4yNzgtNS4xMzYgNy41MTItNy4xMThjMy4yMzUtMS45ODEgNy4xOTktMy41MiAxMS44OTQtNC42MTUgNC42OTYtMS4wOTUgOS45MTItMS42NDIgMTUuNjUxLTEuNjQyIDQuMTczIDAgOC41ODEuMzEzIDEzLjIyNC45MzggNC42NDMuNjI2IDkuMzEyIDEuNTkxIDE0LjAwOCAyLjg5NCA0LjY5NSAxLjMwNCA5LjI1OSAyLjk0NyAxMy42OTQgNC45MjggNC40MzQgMS45ODIgOC41MjkgNC4yNzYgMTIuMjg1IDYuODg0di00Ni43NzZjLTcuNjE2LTIuOTItMTUuOTM3LTUuMDg0LTI0Ljk2Mi02LjQ5MnMtMTkuMzgxLTIuMTEyLTMxLjA2Ni0yLjExMmMtMTEuODk1IDAtMjMuMTYzIDEuMjc4LTMzLjgwNSAzLjgzM3MtMjAuMDA2IDYuNTQ0LTI4LjA5MyAxMS45NjdjLTguMDg2IDUuNDI0LTE0LjQ3NiAxMi4zMzMtMTkuMTcxIDIwLjcyOS00LjY5NSA4LjM5NS03LjA0MyAxOC40MzMtNy4wNDMgMzAuMTE0IDAgMTQuOTE0IDQuMzA0IDI3LjYzOCAxMi45MTIgMzguMTcyIDguNjA3IDEwLjUzMyAyMS42NzUgMTkuNDUgMzkuMjA0IDI2Ljc1MSA2Ljg4NiAyLjgxNiAxMy4zMDMgNS41NzkgMTkuMjUgOC4yOTFzMTEuMDg2IDUuNTI4IDE1LjQxNSA4LjQ0OGM0LjMzIDIuOTIgNy43NDcgNi4xMDEgMTAuMjUyIDkuNTQzIDIuNTA0IDMuNDQxIDMuNzU2IDcuMzUyIDMuNzU2IDExLjczMyAwIDMuMjMzLS43ODMgNi4yMzEtMi4zNDggOC45OTVzLTMuOTM5IDUuMTYyLTcuMTIxIDcuMTk2LTcuMTQ3IDMuNjI0LTExLjg5NCA0Ljc3MWMtNC43NDggMS4xNDgtMTAuMzAzIDEuNzIxLTE2LjY2OCAxLjcyMS0xMC44NTEgMC0yMS41OTctMS45MDMtMzIuMjQtNS43MS0xMC42NDItMy44MDYtMjAuNTAyLTkuNTE2LTI5LjU3OS0xNy4xM3ptLTg0LjE1OS0xMjMuMzQyaDY0LjIydi00MS4wODJoLTE3OXY0MS4wODJoNjMuOTA2djE4Mi45MThoNTAuODc0elwiLGZpbGw6XCJ2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMClcIixmaWxsUnVsZTpcImV2ZW5vZGRcIn0pXX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZVIoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE3XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTE0LjUgN3Y3YTIuNSAyLjUgMCAwIDEtMi41IDIuNUg0QTIuNSAyLjUgMCAwIDEgMS41IDE0Vi41aDcuNTg2YTEgMSAwIDAgMSAuNzA3LjI5M2w0LjQxNCA0LjQxNGExIDEgMCAwIDEgLjI5My43MDdWN3pNMTMgN3Y3YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJoNXY1aDV6TTkuNSAyLjYyMVY1LjVoMi44NzlMOS41IDIuNjIxelwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBlTSgpe3ZhciBlLHQsbj0oMCxBLmMpKDIpO3JldHVybiBuWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwiZ1wiLHtjbGlwUGF0aDpcInVybCgjZmlsZV9yZWFjdF9jbGlwMF84NzJfMzE4MylcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNC41IDEuOTM3ODJDNC43MDEyOSAxLjgyMTYxIDQuOTk0NzIgMS43ODU4IDUuNDEzMTUgMS45MTA1M0M1LjgzMjk4IDIuMDM1NjcgNi4zMzEzOSAyLjMxMDczIDYuODc2MjcgMi43Mzk0OEM3LjAxMTM2IDIuODQ1NzggNy4xNDgwMyAyLjk2MDUyIDcuMjg1NzMgMy4wODMzMUM2Ljg2MjE3IDMuNTM0NDYgNi40NDIzOSA0LjA0MzU4IDYuMDM3NTIgNC42MDA5MkM1LjM1MjQzIDQuNjcyODggNC43MDE2NCA0Ljc4MTg2IDQuMDk5MTYgNC45MjMwOUM0LjA2MTY3IDQuNzQyNDQgNC4wMzA2NCA0LjU2NjcxIDQuMDA2MTIgNC4zOTY1NkMzLjkwNzI1IDMuNzEwMzEgMy45MTgyNSAzLjE0MTE0IDQuMDE5NzkgMi43MTQ5OUM0LjEyMDk5IDIuMjkwMjUgNC4yOTg3MSAyLjA1NDA0IDQuNSAxLjkzNzgyWk03LjQ5NDY2IDEuOTUzNjFDNy42NjIyNSAyLjA4NTQ4IDcuODMwOTIgMi4yMjgwNCA3Ljk5OTk5IDIuMzgwNjdDOC4xNjkwNiAyLjIyODA0IDguMzM3NzMgMi4wODU0OCA4LjUwNTMyIDEuOTUzNjFDOS4xMDkyMSAxLjQ3ODQyIDkuNzE5ODIgMS4xMjU0OSAxMC4zMDEyIDAuOTUyMjAyQzEwLjg4MzkgMC43Nzg0OTYgMTEuNDgzOCAwLjc3MzggMTIgMS4wNzE4QzEyLjUxNjEgMS4zNjk4IDEyLjgxMiAxLjg5MTY5IDEyLjk1MyAyLjQ4MzIyQzEzLjA5MzYgMy4wNzMzMyAxMy4wOTMyIDMuNzc4NTggMTIuOTgzNiA0LjUzOTE3QzEyLjk1MzIgNC43NTAyNCAxMi45MTQxIDQuOTY3NiAxMi44NjY1IDUuMTkwMzRDMTMuMDgzMiA1LjI2MDQ0IDEzLjI5MSA1LjMzNTI0IDEzLjQ4OSA1LjQxNDQ0QzE0LjIwMjUgNS42OTk4MyAxNC44MTM0IDYuMDUyMTcgMTUuMjU0MiA2LjQ2ODk5QzE1LjY5NiA2Ljg4NjggMTYgNy40MDQgMTYgOEMxNiA4LjU5NiAxNS42OTYgOS4xMTMxOSAxNS4yNTQyIDkuNTMxMDFDMTQuODEzNCA5Ljk0NzgzIDE0LjIwMjUgMTAuMzAwMiAxMy40ODkgMTAuNTg1NkMxMy4yOTEgMTAuNjY0OCAxMy4wODMyIDEwLjczOTYgMTIuODY2NSAxMC44MDk3QzEyLjkxNDEgMTEuMDMyNCAxMi45NTMyIDExLjI0OTggMTIuOTgzNyAxMS40NjA4QzEzLjA5MzIgMTIuMjIxNCAxMy4wOTM2IDEyLjkyNjcgMTIuOTUzIDEzLjUxNjhDMTIuODEyIDE0LjEwODMgMTIuNTE2MSAxNC42MzAyIDEyIDE0LjkyODJDMTEuNDgzOSAxNS4yMjYyIDEwLjg4MzkgMTUuMjIxNSAxMC4zMDEyIDE1LjA0NzhDOS43MTk4NCAxNC44NzQ1IDkuMTA5MjMgMTQuNTIxNiA4LjUwNTM0IDE0LjA0NjRDOC4zMzc3NSAxMy45MTQ1IDguMTY5MDYgMTMuNzcxOSA3Ljk5OTk5IDEzLjYxOTNDNy44MzA5MSAxMy43NzE5IDcuNjYyMjMgMTMuOTE0NSA3LjQ5NDY0IDE0LjA0NjRDNi44OTA3NSAxNC41MjE2IDYuMjgwMTQgMTQuODc0NSA1LjY5ODc5IDE1LjA0NzhDNS4xMTYwNSAxNS4yMjE1IDQuNTE2MTMgMTUuMjI2MiAzLjk5OTk4IDE0LjkyODJDMy40ODM4MyAxNC42MzAyIDMuMTg3OTQgMTQuMTA4MyAzLjA0NyAxMy41MTY4QzIuOTA2NCAxMi45MjY3IDIuOTA2NzQgMTIuMjIxNCAzLjAxNjMyIDExLjQ2MDhDMy4wNDY3MyAxMS4yNDk4IDMuMDg1ODYgMTEuMDMyNCAzLjEzMzUxIDEwLjgwOTdDMi45MTY3OSAxMC43Mzk1IDIuNzA5IDEwLjY2NDggMi41MTEgMTAuNTg1NkMxLjc5NzUyIDEwLjMwMDIgMS4xODY1OCA5Ljk0NzgzIDAuNzQ1ODMzIDkuNTMxMDFDMC4zMDQwMjggOS4xMTMxOSAwIDguNTk2IDAgOEMwIDcuNDA0IDAuMzA0MDI4IDYuODg2OCAwLjc0NTgzMyA2LjQ2ODk5QzEuMTg2NTggNi4wNTIxNyAxLjc5NzUyIDUuNjk5ODMgMi41MTEgNS40MTQ0NEMyLjcwOSA1LjMzNTI0IDIuOTE2OCA1LjI2MDQ0IDMuMTMzNTIgNS4xOTAzNEMzLjA4NTg3IDQuOTY3NiAzLjA0Njc1IDQuNzUwMjQgMy4wMTYzNCA0LjUzOTE3QzIuOTA2NzYgMy43Nzg1OCAyLjkwNjQyIDMuMDczMzIgMy4wNDcwMiAyLjQ4MzIxQzMuMTg3OTYgMS44OTE2OSAzLjQ4Mzg1IDEuMzY5OCA0IDEuMDcxOEM0LjUxNjE1IDAuNzczNzk4IDUuMTE2MDcgMC43Nzg0OTUgNS42OTg4MSAwLjk1MjIwMUM2LjI4MDE2IDEuMTI1NDkgNi44OTA3NyAxLjQ3ODQxIDcuNDk0NjYgMS45NTM2MVpNNy4zNjc0NyA0LjUxMDI1QzcuNTc3MzUgNC4yNTE5NCA3Ljc4ODgxIDQuMDA5MjcgNy45OTk5OSAzLjc4MzU2QzguMjExMTcgNC4wMDkyNyA4LjQyMjYzIDQuMjUxOTQgOC42MzI1MSA0LjUxMDI1QzguNDIzNjkgNC41MDM0NiA4LjIxMjc0IDQuNSA4IDQuNUM3Ljc4NzI1IDQuNSA3LjU3NjMgNC41MDM0NSA3LjM2NzQ3IDQuNTEwMjVaTTguNzE0MjUgMy4wODMzMUM5LjEzNzgxIDMuNTM0NDcgOS41NTc1OSA0LjA0MzU4IDkuOTYyNDYgNC42MDA5MkMxMC42NDc1IDQuNjcyODggMTEuMjk4MyA0Ljc4MTg2IDExLjkwMDggNC45MjMwOUMxMS45MzgzIDQuNzQyNDQgMTEuOTY5MyA0LjU2NjcxIDExLjk5MzkgNC4zOTY1N0MxMi4wOTI3IDMuNzEwMzEgMTIuMDgxNyAzLjE0MTE0IDExLjk4MDIgMi43MTQ5OUMxMS44NzkgMi4yOTAyNSAxMS43MDEzIDIuMDU0MDQgMTEuNSAxLjkzNzgyQzExLjI5ODcgMS44MjE2MSAxMS4wMDUzIDEuNzg1OCAxMC41ODY4IDEuOTEwNTNDMTAuMTY3IDIuMDM1NjggOS42Njg1OSAyLjMxMDczIDkuMTIzNzEgMi43Mzk0OEM4Ljk4ODYyIDIuODQ1NzggOC44NTE5NiAyLjk2MDUyIDguNzE0MjUgMy4wODMzMVpNOCA1LjVDOC40ODQzMyA1LjUgOC45NTYzOCA1LjUxODg1IDkuNDExODggNS41NTQ1NkM5LjY3MDU2IDUuOTMxMTggOS45MjI5IDYuMzMwNTYgMTAuMTY1MSA2Ljc1QzEwLjQwNzIgNy4xNjk0NCAxMC42MjY5IDcuNTg3NjYgMTAuODIzNyA3Ljk5OTk4QzEwLjYyNjkgOC40MTIzMiAxMC40MDcyIDguODMwNTUgMTAuMTY1IDkuMjVDOS45MjI4OCA5LjY2OTQ0IDkuNjcwNTMgMTAuMDY4OCA5LjQxMTg1IDEwLjQ0NTRDOC45NTYzNiAxMC40ODEyIDguNDg0MzIgMTAuNSA4IDEwLjVDNy41MTU2NyAxMC41IDcuMDQzNjMgMTAuNDgxMiA2LjU4ODEzIDEwLjQ0NTRDNi4zMjk0NSAxMC4wNjg4IDYuMDc3MSA5LjY2OTQ0IDUuODM0OTQgOS4yNUM1LjU5Mjc3IDguODMwNTUgNS4zNzMwNiA4LjQxMjMyIDUuMTc2MjQgNy45OTk5OEM1LjM3MzA2IDcuNTg3NjUgNS41OTI3NSA3LjE2OTQ0IDUuODM0OTIgNi43NUM2LjA3NzA4IDYuMzMwNTYgNi4zMjk0MiA1LjkzMTE4IDYuNTg4MSA1LjU1NDU2QzcuMDQzNjEgNS41MTg4NCA3LjUxNTY2IDUuNSA4IDUuNVpNMTEuMDMxMSA2LjI1QzExLjEzNzUgNi40MzQyMyAxMS4yMzk5IDYuNjE4NjQgMTEuMzM4NSA2LjgwMjg3QzExLjQ1NzIgNi40OTE5NyAxMS41NjE2IDYuMTg3NTIgMTEuNjUxNSA1Ljg5MTc4QzExLjM1MDUgNS44MjE3NSAxMS4wMzQ2IDUuNzU5OTYgMTAuNzA2IDUuNzA3MzZDMTAuODE2MyA1Ljg4NDggMTAuOTI0NyA2LjA2NTc2IDExLjAzMTEgNi4yNVpNMTEuMDMxMSA5Ljc1QzExLjEzNzQgOS41NjU3NiAxMS4yMzk5IDkuMzgxMzMgMTEuMzM4NSA5LjE5NzA5QzExLjQ1NzIgOS41MDgwMSAxMS41NjE3IDkuODEyNDYgMTEuNjUxNSAxMC4xMDgyQzExLjM1MDUgMTAuMTc4MiAxMS4wMzQ2IDEwLjI0IDEwLjcwNTkgMTAuMjkyNkMxMC44MTYyIDEwLjExNTIgMTAuOTI0NyA5LjkzNDI0IDExLjAzMTEgOS43NVpNMTEuOTI0OSA3Ljk5OTk4QzEyLjIwNTEgOC42MjkyNyAxMi40MzYyIDkuMjQ3MzggMTIuNjE1MSA5LjgzOTc3QzEyLjc5MDMgOS43ODE5MSAxMi45NTggOS43MjA5MiAxMy4xMTc2IDkuNjU3MDhDMTMuNzYxNCA5LjM5OTU4IDE0LjI0ODggOS4xMDU0NyAxNC41NjcxIDguODA0NDZDMTQuODg0MyA4LjUwNDQ1IDE1IDguMjMyNDMgMTUgOEMxNSA3Ljc2NzU3IDE0Ljg4NDMgNy40OTU1NSAxNC41NjcxIDcuMTk1NTRDMTQuMjQ4OCA2Ljg5NDUzIDEzLjc2MTQgNi42MDA0MiAxMy4xMTc2IDYuMzQyOTJDMTIuOTU4IDYuMjc5MDcgMTIuNzkwMyA2LjIxODA4IDEyLjYxNTEgNi4xNjAyMkMxMi40MzYyIDYuNzUyNiAxMi4yMDUxIDcuMzcwNjkgMTEuOTI0OSA3Ljk5OTk4Wk05Ljk2MjQ0IDExLjM5OTFDMTAuNjQ3NSAxMS4zMjcxIDExLjI5ODMgMTEuMjE4MSAxMS45MDA4IDExLjA3NjlDMTEuOTM4MyAxMS4yNTc2IDExLjk2OTQgMTEuNDMzMyAxMS45OTM5IDExLjYwMzRDMTIuMDkyOCAxMi4yODk3IDEyLjA4MTcgMTIuODU4OSAxMS45ODAyIDEzLjI4NUMxMS44NzkgMTMuNzA5OCAxMS43MDEzIDEzLjk0NiAxMS41IDE0LjA2MjJDMTEuMjk4NyAxNC4xNzg0IDExLjAwNTMgMTQuMjE0MiAxMC41ODY4IDE0LjA4OTVDMTAuMTY3IDEzLjk2NDMgOS42Njg2MSAxMy42ODkzIDkuMTIzNzMgMTMuMjYwNUM4Ljk4ODYzIDEzLjE1NDIgOC44NTE5NiAxMy4wMzk1IDguNzE0MjQgMTIuOTE2N0M5LjEzNzggMTIuNDY1NSA5LjU1NzU4IDExLjk1NjQgOS45NjI0NCAxMS4zOTkxWk04LjYzMjQ5IDExLjQ4OThDOC40MjI2MiAxMS43NDgxIDguMjExMTYgMTEuOTkwNyA3Ljk5OTk5IDEyLjIxNjRDNy43ODg4MSAxMS45OTA3IDcuNTc3MzcgMTEuNzQ4MSA3LjM2NzQ5IDExLjQ4OTdDNy41NzYzMSAxMS40OTY1IDcuNzg3MjYgMTEuNSA4IDExLjVDOC4yMTI3MyAxMS41IDguNDIzNjcgMTEuNDk2NSA4LjYzMjQ5IDExLjQ4OThaTTQuOTY4OTEgOS43NUM1LjA3NTI4IDkuOTM0MjQgNS4xODM3NSAxMC4xMTUyIDUuMjk0MDQgMTAuMjkyNkM0Ljk2NTQgMTAuMjQgNC42NDk1MSAxMC4xNzgyIDQuMzQ4NDQgMTAuMTA4MkM0LjQzODMzIDkuODEyNDYgNC41NDI3NiA5LjUwOCA0LjY2MTUyIDkuMTk3MDhDNC43NjAwNSA5LjM4MTMzIDQuODYyNTQgOS41NjU3NSA0Ljk2ODkxIDkuNzVaTTYuMDM3NTQgMTEuMzk5MUM1LjM1MjQ0IDExLjMyNzEgNC43MDE2MyAxMS4yMTgxIDQuMDk5MTQgMTEuMDc2OUM0LjA2MTY1IDExLjI1NzYgNC4wMzA2MiAxMS40MzMzIDQuMDA2MSAxMS42MDM0QzMuOTA3MjMgMTIuMjg5NyAzLjkxODIzIDEyLjg1ODkgNC4wMTk3NyAxMy4yODVDNC4xMjA5NyAxMy43MDk4IDQuMjk4NjkgMTMuOTQ2IDQuNDk5OTggMTQuMDYyMkM0LjcwMTI3IDE0LjE3ODQgNC45OTQ3IDE0LjIxNDIgNS40MTMxMyAxNC4wODk1QzUuODMyOTYgMTMuOTY0MyA2LjMzMTM3IDEzLjY4OTMgNi44NzYyNSAxMy4yNjA1QzcuMDExMzUgMTMuMTU0MiA3LjE0ODAyIDEzLjAzOTUgNy4yODU3MyAxMi45MTY3QzYuODYyMTcgMTIuNDY1NSA2LjQ0MjQgMTEuOTU2NCA2LjAzNzU0IDExLjM5OTFaTTQuMDc1MDcgNy45OTk5OEMzLjc5NDg0IDguNjI5MjcgMy41NjM4MSA5LjI0NzM3IDMuMzg0ODkgOS44Mzk3N0MzLjIwOTY5IDkuNzgxOTEgMy4wNDIgOS43MjA5MiAyLjg4MjM5IDkuNjU3MDhDMi4yMzg2NCA5LjM5OTU4IDEuNzUxMjMgOS4xMDU0NyAxLjQzMjk0IDguODA0NDZDMS4xMTU3MSA4LjUwNDQ1IDEgOC4yMzI0MyAxIDhDMSA3Ljc2NzU3IDEuMTE1NzEgNy40OTU1NSAxLjQzMjk0IDcuMTk1NTRDMS43NTEyMyA2Ljg5NDUzIDIuMjM4NjQgNi42MDA0MiAyLjg4MjM5IDYuMzQyOTJDMy4wNDIgNi4yNzkwNyAzLjIwOTcgNi4yMTgwOCAzLjM4NDkgNi4xNjAyMkMzLjU2MzgzIDYuNzUyNjEgMy43OTQ4NCA3LjM3MDY5IDQuMDc1MDcgNy45OTk5OFpNNC42NjE1MiA2LjgwMjg3QzQuNTQyNzcgNi40OTE5NyA0LjQzODM1IDYuMTg3NTIgNC4zNDg0NiA1Ljg5MTc4QzQuNjQ5NTIgNS44MjE3NSA0Ljk2NTM5IDUuNzU5OTYgNS4yOTQwMiA1LjcwNzM2QzUuMTgzNzMgNS44ODQ4IDUuMDc1MjYgNi4wNjU3NiA0Ljk2ODg5IDYuMjVDNC44NjI1MyA2LjQzNDIzIDQuNzYwMDUgNi42MTg2NCA0LjY2MTUyIDYuODAyODdaTTkuMjUgOEM5LjI1IDguNjkwMzYgOC42OTAzNiA5LjI1IDggOS4yNUM3LjMwOTY0IDkuMjUgNi43NSA4LjY5MDM2IDYuNzUgOEM2Ljc1IDcuMzA5NjUgNy4zMDk2NCA2Ljc1IDggNi43NUM4LjY5MDM2IDYuNzUgOS4yNSA3LjMwOTY1IDkuMjUgOFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLG5bMF09ZSk6ZT1uWzBdLG5bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeHMpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsY2hpbGRyZW46W2UsKDAsYi5qc3gpKFwiZGVmc1wiLHtjaGlsZHJlbjooMCxiLmpzeCkoXCJjbGlwUGF0aFwiLHtpZDpcImZpbGVfcmVhY3RfY2xpcDBfODcyXzMxODNcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJ3aGl0ZVwifSl9KX0pXX0pLG5bMV09dCk6dD1uWzFdLHR9dmFyIGVaPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvYW5zZXIvaW5kZXguanNcIiksZVU9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGVaKSxlRj1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2kvaW5kZXguanNcIiksZXE9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGVGKTtmdW5jdGlvbiBlSChlKXt2YXIgdD1lLnNwbGl0KC9cXHI/XFxuL2cpLG49dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0vXj4/ICtcXGQrICtcXHwgWyBdKy8uZXhlYyhlcSgpKGUpKT9udWxsOi9ePj8gK1xcZCsgK1xcfCAoICopLy5leGVjKGVxKCkoZSkpfSkuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5wb3AoKX0pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBpc05hTihlKT90Lmxlbmd0aDpNYXRoLm1pbihlLHQubGVuZ3RoKX0sTmFOKTtyZXR1cm4gbj4xP3QubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJufih0PWUuaW5kZXhPZihcInxcIikpP2Uuc3Vic3RyaW5nKDAsdCkrZS5zdWJzdHJpbmcodCkucmVwbGFjZShcIl5cXFxcIHtcIi5jb25jYXQobixcIn1cIiksXCJcIik6ZX0pLmpvaW4oXCJcXG5cIik6dC5qb2luKFwiXFxuXCIpfWZ1bmN0aW9uIGVWKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBlJChlKXt2YXIgdCxuLHIsbz1lLnN0YWNrRnJhbWUsYT1lLmNvZGVGcmFtZSxpPSgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4oZnVuY3Rpb24oZSl7dmFyIHQ9ZVUoKS5hbnNpVG9Kc29uKGUse2pzb246ITAsdXNlX2NsYXNzZXM6ITAscmVtb3ZlX2VtcHR5OiEwfSksbj1bXSxyPVtdLG89ITAsYT0hMSxpPXZvaWQgMDt0cnl7Zm9yKHZhciBsLHM9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShvPShsPXMubmV4dCgpKS5kb25lKTtvPSEwKXt2YXIgYz1sLnZhbHVlO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBjLmNvbnRlbnQmJmMuY29udGVudC5pbmNsdWRlcyhcIlxcblwiKSlmb3IodmFyIHU9Yy5jb250ZW50LnNwbGl0KFwiXFxuXCIpLGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGY9dVtkXTtmJiZyLnB1c2goZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfShmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGMpLHtjb250ZW50OmZ9KSksZDx1Lmxlbmd0aC0xJiYobi5wdXNoKHIpLHI9W10pfWVsc2Ugci5wdXNoKGMpfX1jYXRjaChlKXthPSEwLGk9ZX1maW5hbGx5e3RyeXtvfHxudWxsPT1zLnJldHVybnx8cy5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgaX19cmV0dXJuIHIubGVuZ3RoPjAmJm4ucHVzaChyKSxufSkoZUgoYSkpLm1hcChmdW5jdGlvbihlKXt2YXIgdCxuLHIsYSxpLGwscyxjLHU7cmV0dXJue2xpbmU6ZSxwYXJzZWRMaW5lOih0PWUsbj1vLCgobnVsbD09KHI9dFswXSk/dm9pZCAwOnIuY29udGVudCk9PT1cIj5cInx8KG51bGw9PShhPXRbMF0pP3ZvaWQgMDphLmNvbnRlbnQpPT09XCIgXCIpJiYocz1udWxsPT0obD10WzFdKXx8bnVsbD09KHU9bC5jb250ZW50KXx8bnVsbD09KGM9dS5yZXBsYWNlKFwifFwiLFwiXCIpKT92b2lkIDA6Yy50cmltKCkpLHtsaW5lTnVtYmVyOnMsaXNFcnJvcmVkTGluZTpzPT09KG51bGw9PShpPW4ubGluZTEpP3ZvaWQgMDppLnRvU3RyaW5nKCkpfSl9fSl9LFthLG9dKSxsPWVTKHtmaWxlOm8uZmlsZSxsaW5lMTpudWxsIT0obj1vLmxpbmUxKT9uOjEsY29sdW1uMTpudWxsIT0ocj1vLmNvbHVtbjEpP3I6MX0pLHM9bnVsbD09b3x8bnVsbD09KHQ9by5maWxlKT92b2lkIDA6dC5zcGxpdChcIi5cIikucG9wKCk7cmV0dXJuKDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvZGVmcmFtZVwiOiEwLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1oZWFkZXJcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmtcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixjaGlsZHJlbjooMCxiLmpzeCkoZVQse2xhbmc6c30pfSksKDAsYi5qc3hzKShcInNwYW5cIix7XCJkYXRhLXRleHRcIjohMCxjaGlsZHJlbjpbZWoobyksXCIgQFwiLFwiIFwiLCgwLGIuanN4KShldix7dGV4dDpvLm1ldGhvZE5hbWV9KV19KSwoMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6XCJPcGVuIGluIGVkaXRvclwiLFwiZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstc291cmNlLWZpbGVcIjohMCxvbkNsaWNrOmwsY2hpbGRyZW46KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixcImRhdGEtaWNvblwiOlwicmlnaHRcIixjaGlsZHJlbjooMCxiLmpzeCkoZUkse3dpZHRoOjE2LGhlaWdodDoxNn0pfSl9KV19KX0pLCgwLGIuanN4KShcInByZVwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLXByZVwiLGNoaWxkcmVuOigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmVzXCIsY2hpbGRyZW46aS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89ZS5saW5lLGE9ZS5wYXJzZWRMaW5lLGk9YS5saW5lTnVtYmVyLGw9YS5pc0Vycm9yZWRMaW5lLHM9e307cmV0dXJuIGkmJihzW1wiZGF0YS1uZXh0anMtY29kZWZyYW1lLWxpbmVcIl09aSksbCYmKHNbXCJkYXRhLW5leHRqcy1jb2RlZnJhbWUtbGluZS0tZXJyb3JlZFwiXT0hMCksKDAsYi5qc3gpKFwiZGl2XCIsKG49ZVYoe30scykscj1yPXtjaGlsZHJlbjpvLm1hcChmdW5jdGlvbihlLHQpe3JldHVybigwLGIuanN4KShcInNwYW5cIix7c3R5bGU6ZVYoe2NvbG9yOmUuZmc/XCJ2YXIoLS1jb2xvci1cIi5jb25jYXQoZS5mZyxcIilcIik6dm9pZCAwfSxcImJvbGRcIj09PWUuZGVjb3JhdGlvbj97Zm9udFdlaWdodDo1MDB9OlwiaXRhbGljXCI9PT1lLmRlY29yYXRpb24/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp2b2lkIDApLGNoaWxkcmVuOmUuY29udGVudH0sXCJmcmFtZS1cIi5jb25jYXQodCkpfSl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSksbiksXCJsaW5lLVwiLmNvbmNhdCh0KSl9KX0pfSldfSl9dmFyIGVXPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLEEuYykoOCk7cmV0dXJuKGxbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCJdKSxyPWUuY2hpbGRyZW4sbz1lLmNsYXNzTmFtZSxsWzBdPWUsbFsxXT1yLGxbMl09byxsWzNdPWEpOihyPWxbMV0sbz1sWzJdLGE9bFszXSksbFs0XSE9PXJ8fGxbNV0hPT1vfHxsWzZdIT09YSk/KGk9KDAsYi5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctYm9keVwiOiEwLGNsYXNzTmFtZTpvfSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGxbNF09cixsWzVdPW8sbFs2XT1hLGxbN109aSk6aT1sWzddLGl9LGVZPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLEEuYykoOCk7cmV0dXJuKGxbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCJdKSxyPWUuY2hpbGRyZW4sbz1lLmNsYXNzTmFtZSxsWzBdPWUsbFsxXT1yLGxbMl09byxsWzNdPWEpOihyPWxbMV0sbz1sWzJdLGE9bFszXSksbFs0XSE9PXJ8fGxbNV0hPT1vfHxsWzZdIT09YSk/KGk9KDAsYi5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudFwiOiEwLGNsYXNzTmFtZTpvfSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGxbNF09cixsWzVdPW8sbFs2XT1hLGxbN109aSk6aT1sWzddLGl9O2Z1bmN0aW9uIGVLKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1yb290XSB7XFxuICAgIC0tbmV4dC1kaWFsb2ctcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcXG4gICAgLS1uZXh0LWRpYWxvZy1tYXgtd2lkdGg6IDk2MHB4O1xcbiAgICAtLW5leHQtZGlhbG9nLXJvdy1wYWRkaW5nOiAxNnB4O1xcbiAgICAtLW5leHQtZGlhbG9nLXBhZGRpbmc6IDEycHg7XFxuICAgIC0tbmV4dC1kaWFsb2ctbm90Y2gtaGVpZ2h0OiA0MnB4O1xcbiAgICAtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aDogMXB4O1xcblxcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XFxuICAgIG1heC13aWR0aDogdmFyKC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoKTtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gICAgc2NhbGU6IDAuOTc7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHNjYWxlLCBvcGFjaXR5O1xcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uKTtcXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXRpbWluZy1vdmVybGF5KTtcXG5cXG4gICAgJltkYXRhLXJlbmRlcmVkPSd0cnVlJ10ge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgc2NhbGU6IDE7XFxuICAgIH1cXG5cXG4gICAgW2RhdGEtbmV4dGpzLXNjcm9sbC1mYWRlcl1bZGF0YS1zaWRlPSd0b3AnXSB7XFxuICAgICAgbGVmdDogMXB4O1xcbiAgICAgIHRvcDogY2FsYyhcXG4gICAgICAgIHZhcigtLW5leHQtZGlhbG9nLW5vdGNoLWhlaWdodCkgKyB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpXFxuICAgICAgKTtcXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tbmV4dC1kaWFsb2ctcGFkZGluZykpO1xcbiAgICAgIG9wYWNpdHk6IDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcXG4gICAgb3V0bGluZTogMDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BdIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uKSB2YXIoLS10aW1pbmctb3ZlcmxheSk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgbWFyZ2luOiA4cHg7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldW2RhdGEtcmVuZGVyZWQ9J3RydWUnXVxcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdIHtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgcGFkZGluZzogdmFyKC0tbmV4dC1kaWFsb2ctcGFkZGluZyk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1oZWFkZXJdIHtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDhweDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0gPiBbZGF0YS1uZXh0anMtZGlhbG9nLWJvZHldIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBmbGV4OiAxIDEgYXV0bztcXG4gIH1cXG5cXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcXG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XFxuICAgICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMTVweCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogNTQwcHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogNzIwcHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogOTYwcHg7XFxuICAgIH1cXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gZUs9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn12YXIgZVg9ZXMoZUsoKSk7ZnVuY3Rpb24gZUcoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBlUShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZUooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIGUwKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBlMShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZVEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gZVEoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gZTIoZSx0KXtyZXR1cm5cInJlc2V0XCI9PT10LnR5cGU/e3N0YXRlOlwiaW5pdGlhbFwifTpcImNvcGllZFwiPT09dC50eXBlP3tzdGF0ZTpcInN1Y2Nlc3NcIn06XCJjb3B5aW5nXCI9PT10LnR5cGU/e3N0YXRlOlwicGVuZGluZ1wifTpcImVycm9yXCI9PT10LnR5cGU/e3N0YXRlOlwiZXJyb3JcIixlcnJvcjp0LmVycm9yfTplfWZ1bmN0aW9uIGU0KGUpe3JldHVybntzdGF0ZTpcImVycm9yXCIsZXJyb3I6ZX19ZnVuY3Rpb24gZTUoKXtyZXR1cm57c3RhdGU6XCJzdWNjZXNzXCJ9fXZhciBlMz1cImZ1bmN0aW9uXCI9PXR5cGVvZiB4LnVzZUFjdGlvblN0YXRlP2Z1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDgpO2lbMF0hPT1lPyh0PWZ1bmN0aW9uKHQsbil7cmV0dXJuXCJyZXNldFwiPT09bj97c3RhdGU6XCJpbml0aWFsXCJ9OlwiY29weVwiPT09bj9uYXZpZ2F0b3IuY2xpcGJvYXJkP25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLnRoZW4oZTUsZTQpOntzdGF0ZTpcImVycm9yXCIsZXJyb3I6XCJDb3B5IHRvIGNsaXBib2FyZCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwifTp0fSxpWzBdPWUsaVsxXT10KTp0PWlbMV0saVsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPXtzdGF0ZTpcImluaXRpYWxcIn0saVsyXT1uKTpuPWlbMl07dmFyIGw9ZTEoeC51c2VBY3Rpb25TdGF0ZSh0LG4pLDMpLHM9bFswXSxjPWxbMV0sdT1sWzJdO2lbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj1mdW5jdGlvbigpe3guc3RhcnRUcmFuc2l0aW9uKGZ1bmN0aW9uKCl7YyhcImNvcHlcIil9KX0saVszXT1yKTpyPWlbM107dmFyIGQ9cjtpWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89ZnVuY3Rpb24oKXtjKFwicmVzZXRcIil9LGlbNF09byk6bz1pWzRdO3ZhciBmPW87cmV0dXJuIGlbNV0hPT1zfHxpWzZdIT09dT8oYT1bcyxkLGYsdV0saVs1XT1zLGlbNl09dSxpWzddPWEpOmE9aVs3XSxhfTpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCxBLmMpKDEyKTtsWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e3N0YXRlOlwiaW5pdGlhbFwifSxsWzBdPXQpOnQ9bFswXTt2YXIgcz1lMSh4LnVzZVJlZHVjZXIoZTIsdCksMiksYz1zWzBdLHU9c1sxXTtyZXR1cm4gbFsxXSE9PWV8fGxbMl0hPT1jLnN0YXRlPyhuPWZ1bmN0aW9uKCl7cnx8KG5hdmlnYXRvci5jbGlwYm9hcmQ/KHUoe3R5cGU6XCJjb3B5aW5nXCJ9KSxuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChlKS50aGVuKGZ1bmN0aW9uKCl7dSh7dHlwZTpcImNvcGllZFwifSl9LGZ1bmN0aW9uKGUpe3Uoe3R5cGU6XCJlcnJvclwiLGVycm9yOmV9KX0pKTp1KHt0eXBlOlwiZXJyb3JcIixlcnJvcjpcIkNvcHkgdG8gY2xpcGJvYXJkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCJ9KSl9LGxbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbigpe3Uoe3R5cGU6XCJyZXNldFwifSl9LGxbNl09YSk6YT1sWzZdLG89YSxyPVwicGVuZGluZ1wiPT09Yy5zdGF0ZSxsWzFdPWUsbFsyXT1jLnN0YXRlLGxbM109bixsWzRdPXIsbFs1XT1vKToobj1sWzNdLHI9bFs0XSxvPWxbNV0pLGxbN10hPT1ufHxsWzhdIT09Y3x8bFs5XSE9PXJ8fGxbMTBdIT09bz8oaT1bYyxuLG8scl0sbFs3XT1uLGxbOF09YyxsWzldPXIsbFsxMF09byxsWzExXT1pKTppPWxbMTFdLGl9O2Z1bmN0aW9uIGU2KGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdj0oMCxBLmMpKDQwKTt2WzBdIT09ZT8oaT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY29udGVudFwiLFwiZ2V0Q29udGVudFwiLFwiYWN0aW9uTGFiZWxcIixcInN1Y2Nlc3NMYWJlbFwiLFwiaWNvblwiLFwiZGlzYWJsZWRcIl0pLG49ZS5jb250ZW50LG89ZS5nZXRDb250ZW50LHQ9ZS5hY3Rpb25MYWJlbCxsPWUuc3VjY2Vzc0xhYmVsLGE9ZS5pY29uLHI9ZS5kaXNhYmxlZCx2WzBdPWUsdlsxXT10LHZbMl09bix2WzNdPXIsdls0XT1vLHZbNV09YSx2WzZdPWksdls3XT1sKToodD12WzFdLG49dlsyXSxyPXZbM10sbz12WzRdLGE9dls1XSxpPXZbNl0sbD12WzddKSx2WzhdIT09bnx8dls5XSE9PW8/KHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnx8KG8/bygpOlwiXCIpfSx2WzhdPW4sdls5XT1vLHZbMTBdPXMpOnM9dlsxMF07dmFyIHc9czt2WzExXSE9PXc/KGM9dygpLHZbMTFdPXcsdlsxMl09Yyk6Yz12WzEyXTt2YXIgQz1lMShlMyhjKSw0KSxfPUNbMF0saz1DWzFdLEU9Q1syXSxqPUNbM10sUz1cImVycm9yXCI9PT1fLnN0YXRlP18uZXJyb3I6bnVsbDt2WzEzXSE9PVM/KHU9ZnVuY3Rpb24oKXtudWxsIT09UyYmY29uc29sZS53YXJuKFMpfSxkPVtTXSx2WzEzXT1TLHZbMTRdPXUsdlsxNV09ZCk6KHU9dlsxNF0sZD12WzE1XSkseC51c2VFZmZlY3QodSxkKSx2WzE2XSE9PV8uc3RhdGV8fHZbMTddIT09RT8oZj1mdW5jdGlvbigpe2lmKFwic3VjY2Vzc1wiPT09Xy5zdGF0ZSl7dmFyIGU9c2V0VGltZW91dChmdW5jdGlvbigpe0UoKX0sMmUzKTtyZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZSl9fX0sdlsxNl09Xy5zdGF0ZSx2WzE3XT1FLHZbMThdPWYpOmY9dlsxOF0sdlsxOV0hPT1fLnN0YXRlfHx2WzIwXSE9PWp8fHZbMjFdIT09RT8ocD1baixfLnN0YXRlLEVdLHZbMTldPV8uc3RhdGUsdlsyMF09aix2WzIxXT1FLHZbMjJdPXApOnA9dlsyMl0seC51c2VFZmZlY3QoZixwKTt2YXIgTz0hbmF2aWdhdG9yLmNsaXBib2FyZHx8anx8cnx8ISFTLEI9XCJzdWNjZXNzXCI9PT1fLnN0YXRlP2w6dDt2WzIzXSE9PV8uc3RhdGV8fHZbMjRdIT09YT8oaD1cInN1Y2Nlc3NcIj09PV8uc3RhdGU/KDAsYi5qc3gpKGU4LHt9KTphfHwoMCxiLmpzeCkoZTkse3dpZHRoOjE0LGhlaWdodDoxNCxjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXRvb2xiYXItYnV0dG9uLWljb25cIn0pLHZbMjNdPV8uc3RhdGUsdlsyNF09YSx2WzI1XT1oKTpoPXZbMjVdO3ZhciBQPWgsST1cIm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1cIi5jb25jYXQoXy5zdGF0ZSk7dlsyNl0hPT1lLmNsYXNzTmFtZXx8dlsyN10hPT1JPyhtPWVHKGUuY2xhc3NOYW1lLFwibmV4dGpzLWRhdGEtY29weS1idXR0b25cIixJKSx2WzI2XT1lLmNsYXNzTmFtZSx2WzI3XT1JLHZbMjhdPW0pOm09dlsyOF0sdlsyOV0hPT1rfHx2WzMwXSE9PU8/KGc9ZnVuY3Rpb24oKXtPfHxrKCl9LHZbMjldPWssdlszMF09Tyx2WzMxXT1nKTpnPXZbMzFdO3ZhciB6PVwiZXJyb3JcIj09PV8uc3RhdGU/XCIgXCIuY29uY2F0KF8uZXJyb3IpOm51bGw7cmV0dXJuIHZbMzJdIT09T3x8dlszM10hPT1CfHx2WzM0XSE9PVB8fHZbMzVdIT09aXx8dlszNl0hPT16fHx2WzM3XSE9PW18fHZbMzhdIT09Zz8oeT0oMCxiLmpzeHMpKFwiYnV0dG9uXCIsZTAoZUooe30saSkse3R5cGU6XCJidXR0b25cIix0aXRsZTpCLFwiYXJpYS1sYWJlbFwiOkIsXCJhcmlhLWRpc2FibGVkXCI6TyxkaXNhYmxlZDpPLFwiZGF0YS1uZXh0anMtY29weS1idXR0b25cIjohMCxjbGFzc05hbWU6bSxvbkNsaWNrOmcsY2hpbGRyZW46W1Asel19KSksdlszMl09Tyx2WzMzXT1CLHZbMzRdPVAsdlszNV09aSx2WzM2XT16LHZbMzddPW0sdlszOF09Zyx2WzM5XT15KTp5PXZbMzldLHl9ZnVuY3Rpb24gZTkoZSl7dmFyIHQsbixyPSgwLEEuYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMi40MDYuNDM4Yy0uODQ1IDAtMS41MzEuNjg1LTEuNTMxIDEuNTN2Ni41NjNjMCAuODQ2LjY4NiAxLjUzMSAxLjUzMSAxLjUzMUgzLjkzN1Y4Ljc1SDIuNDA2YS4yMTkuMjE5IDAgMCAxLS4yMTktLjIxOVYxLjk3YzAtLjEyMS4wOTgtLjIxOS4yMi0uMjE5aDQuODEyYy4xMiAwIC4yMTguMDk4LjIxOC4yMTl2LjY1Nkg4Ljc1di0uNjU2YzAtLjg0Ni0uNjg2LTEuNTMyLTEuNTMxLTEuNTMySDIuNDA2em00LjM3NSAzLjVjLS44NDUgMC0xLjUzMS42ODUtMS41MzEgMS41M3Y2LjU2M2MwIC44NDYuNjg2IDEuNTMxIDEuNTMxIDEuNTMxaDQuODEzYy44NDUgMCAxLjUzMS0uNjg1IDEuNTMxLTEuNTNWNS40NjhjMC0uODQ2LS42ODYtMS41MzItMS41MzEtMS41MzJINi43OHptLS4yMTggMS41M2MwLS4xMi4wOTctLjIxOC4yMTgtLjIxOGg0LjgxM2MuMTIgMCAuMjE5LjA5OC4yMTkuMjE5djYuNTYyYzAgLjEyMS0uMDk4LjIxOS0uMjIuMjE5SDYuNzgyYS4yMTkuMjE5IDAgMCAxLS4yMTgtLjIxOVY1LjQ3elwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLGIuanN4KShcInN2Z1wiLGUwKGVKKHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIGU4KCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse2hlaWdodDpcIjE2XCIseGxpbmtUaXRsZTpcImNvcGllZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIix3aWR0aDpcIjE2XCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xMy43OCA0LjIyYS43NS43NSAwIDAgMSAwIDEuMDZsLTcuMjUgNy4yNWEuNzUuNzUgMCAwIDEtMS4wNiAwTDIuMjIgOS4yOGEuNzUxLjc1MSAwIDAgMSAuMDE4LTEuMDQyLjc1MS43NTEgMCAwIDEgMS4wNDItLjAxOEw2IDEwLjk0bDYuNzItNi43MmEuNzUuNzUgMCAwIDEgMS4wNiAwWlwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIGU3KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiB0ZShlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9dmFyIHR0PWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4hMTt2YXIgZT1cImNocm9tZVwiaW4gd2luZG93JiZ3aW5kb3cuY2hyb21lLHQ9d2luZG93Lm5hdmlnYXRvci52ZW5kb3I7cmV0dXJuIG51bGwhPWUmJlwiR29vZ2xlIEluYy5cIj09PXR9KCk7ZnVuY3Rpb24gdG4oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCxBLmMpKDE0KTtyZXR1cm4gaFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzBdPXQpOnQ9aFswXSxoWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49KDAsYi5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfYVwiLHN0eWxlOnQsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCIwXCIsd2lkdGg6XCIxNFwiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNjcuMDg5IDEuMjA1IDMuMjU2YS42NjMuNjYzIDAgMCAwLS4zMy41NzN2Ni4zMzljMCAuMjM3LjEyNi40NTUuMzMuNTc0bDUuNDY2IDMuMTdhLjY2LjY2IDAgMCAwIC42NiAwbDUuNDY1LTMuMTdhLjY2NC42NjQgMCAwIDAgLjMyOS0uNTc0VjMuODI5YS42NjMuNjYzIDAgMCAwLS4zMy0uNTczTDcuMzMuMDg5YS42NjMuNjYzIDAgMCAwLS42NjEgMFwiLGZpbGw6XCIjZmZmXCJ9KX0pLGhbMV09bik6bj1oWzFdLGhbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJnXCIse21hc2s6XCJ1cmwoI25vZGVqc19pY29uX21hc2tfYSlcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTguNjQ4IDIuNzE3IDMuMjQ4LTQuODYtNC42NDggMTEuMzFsMTUuNCA3LjU4IDcuODk2LTE2LjE3NHpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfYilcIn0pfSksaFsyXT1yKTpyPWhbMl0saFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzNdPW8pOm89aFszXSxoWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsYi5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfY1wiLHN0eWxlOm8sbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxMlwiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEuMDEgMTAuNTdhLjY2My42NjMgMCAwIDAgLjE5NS4xN2w0LjY4OCAyLjcyLjc4MS40NWEuNjYuNjYgMCAwIDAgLjUxLjA2M2w1Ljc2NC0xMC41OTdhLjY1My42NTMgMCAwIDAtLjE1My0uMTIyTDkuMjE2IDEuMTggNy4zMjUuMDg3YS42ODguNjg4IDAgMCAwLS4xNzEtLjA3TDEuMDEgMTAuNTd6XCIsZmlsbDpcIiNmZmZcIn0pfSksaFs0XT1hKTphPWhbNF0saFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLGIuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19jKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0tNS42NDcgNC45NTggNS4yMjYgMTkuNzM0bDE0LjM4LTEwLjY2N0w4LjczNC01LjcxLTUuNjQ3IDQuOTU4elwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kKVwifSl9KSxoWzVdPWkpOmk9aFs1XSxoWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbNl09bCk6bD1oWzZdLGhbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocz0oMCxiLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19lXCIsc3R5bGU6bCxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIxXCIseTpcIjBcIix3aWR0aDpcIjEzXCIsaGVpZ2h0OlwiMTRcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi45MzQuMDA0QS42NjUuNjY1IDAgMCAwIDYuNjcuMDlMMS4yMiAzLjI0N2w1Ljg3NyAxMC43NDZhLjY1NS42NTUgMCAwIDAgLjIzNS0uMDhsNS40NjUtMy4xN2EuNjY1LjY2NSAwIDAgMCAuMzE5LS40NTNMNy4xMjYuMDE1YS42ODQuNjg0IDAgMCAwLS4xODktLjAxXCIsZmlsbDpcIiNmZmZcIn0pfSksaFs3XT1zKTpzPWhbN10saFs4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhjPSgwLGIuanN4cykoXCJnXCIse2NoaWxkcmVuOltzLCgwLGIuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19lKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xLjIyLjAwMnYxMy45OTJoMTEuODk0Vi4wMDJIMS4yMnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZilcIn0pfSldfSksaFs4XT1jKTpjPWhbOF0saFs5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iXCIseDE6XCIxMC45NDNcIix5MTpcIi0xLjA4NFwiLHgyOlwiMi45OTdcIix5MjpcIjE1LjA2MlwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zXCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNVwiLHN0b3BDb2xvcjpcIiM1NTkzNEZcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjhcIixzdG9wQ29sb3I6XCIjNUFBRDQ1XCJ9KV19KSxoWzldPXUpOnU9aFs5XSxoWzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kXCIseDE6XCItLjE0NVwiLHkxOlwiMTIuNDMxXCIseDI6XCIxNC4yNzdcIix5MjpcIjEuODE4XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjU3XCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNzJcIixzdG9wQ29sb3I6XCIjNjE5ODU3XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6XCIjNzZBQzY0XCJ9KV19KSxoWzEwXT1kKTpkPWhbMTBdLGhbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGY9KDAsYi5qc3hzKShcImRlZnNcIix7Y2hpbGRyZW46W3UsZCwoMCxiLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZlwiLHgxOlwiMS4yMjVcIix5MTpcIjYuOTk4XCIseDI6XCIxMy4xMTZcIix5MjpcIjYuOTk4XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjE2XCIsc3RvcENvbG9yOlwiIzZCQkY0N1wifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMzhcIixzdG9wQ29sb3I6XCIjNzlCNDYxXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi40N1wiLHN0b3BDb2xvcjpcIiM3NUFDNjRcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjdcIixzdG9wQ29sb3I6XCIjNjU5RTVBXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi45XCIsc3RvcENvbG9yOlwiIzNFODYzRFwifSldfSldfSksaFsxMV09Zik6Zj1oWzExXSxoWzEyXSE9PWU/KHA9KDAsYi5qc3hzKShcInN2Z1wiLHRlKGU3KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjpbbixyLGEsaSxjLGZdfSkpLGhbMTJdPWUsaFsxM109cCk6cD1oWzEzXSxwfWZ1bmN0aW9uIHRyKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGg9KDAsQS5jKSgxNCk7cmV0dXJuIGhbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17bWFza1R5cGU6XCJsdW1pbmFuY2VcIn0saFswXT10KTp0PWhbMF0saFsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4KShcIm1hc2tcIix7aWQ6XCJub2RlanNfaWNvbl9tYXNrX2FcIixzdHlsZTp0LG1hc2tVbml0czpcInVzZXJTcGFjZU9uVXNlXCIseDpcIjBcIix5OlwiMFwiLHdpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk02LjY3LjA4OSAxLjIwNSAzLjI1NmEuNjYzLjY2MyAwIDAgMC0uMzMuNTczdjYuMzM5YzAgLjIzNy4xMjYuNDU1LjMzLjU3NGw1LjQ2NiAzLjE3YS42Ni42NiAwIDAgMCAuNjYgMGw1LjQ2NS0zLjE3YS42NjQuNjY0IDAgMCAwIC4zMjktLjU3NFYzLjgyOWEuNjYzLjY2MyAwIDAgMC0uMzMtLjU3M0w3LjMzLjA4OWEuNjYzLjY2MyAwIDAgMC0uNjYxIDBcIixmaWxsOlwiI2ZmZlwifSl9KSxoWzFdPW4pOm49aFsxXSxoWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwiZ1wiLHttYXNrOlwidXJsKCNub2RlanNfaWNvbl9tYXNrX2EpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTE4LjY0OCAyLjcxNyAzLjI0OC00Ljg2LTQuNjQ2IDExLjMxbDE1LjM5OSA3LjU4IDcuODk2LTE2LjE3NHpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfYilcIn0pfSksaFsyXT1yKTpyPWhbMl0saFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzNdPW8pOm89aFszXSxoWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsYi5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfY1wiLHN0eWxlOm8sbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxMlwiLGhlaWdodDpcIjE1XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEuMDEgMTAuNTcxYS42Ni42NiAwIDAgMCAuMTk1LjE3Mmw0LjY4OCAyLjcxOC43ODEuNDUxYS42Ni42NiAwIDAgMCAuNTEuMDYzbDUuNzY0LTEwLjU5N2EuNjUzLjY1MyAwIDAgMC0uMTUzLS4xMjJMOS4yMTYgMS4xODEgNy4zMjUuMDlhLjY4OC42ODggMCAwIDAtLjE3MS0uMDdMMS4wMSAxMC41NzJ6XCIsZmlsbDpcIiNmZmZcIn0pfSksaFs0XT1hKTphPWhbNF0saFs1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLGIuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19jKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0tNS42NDcgNC45NiA1LjIyNiAxOS43MzYgMTkuNjA2IDkuMDcgOC43MzQtNS43MDctNS42NDcgNC45NnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZClcIn0pfSksaFs1XT1pKTppPWhbNV0saFs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhsPXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzZdPWwpOmw9aFs2XSxoWzddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHM9KDAsYi5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfZVwiLHN0eWxlOmwsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMVwiLHk6XCIwXCIsd2lkdGg6XCIxM1wiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTYuOTM1LjAwM2EuNjY1LjY2NSAwIDAgMC0uMjY0LjA4NWwtNS40NSAzLjE1OCA1Ljg3NyAxMC43NDdhLjY1My42NTMgMCAwIDAgLjIzNS0uMDgybDUuNDY1LTMuMTdhLjY2NS42NjUgMCAwIDAgLjMxOS0uNDUyTDcuMTI3LjAxNGEuNjg0LjY4NCAwIDAgMC0uMTg5LS4wMVwiLGZpbGw6XCIjZmZmXCJ9KX0pLGhbN109cyk6cz1oWzddLGhbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYz0oMCxiLmpzeHMpKFwiZ1wiLHtjaGlsZHJlbjpbcywoMCxiLmpzeCkoXCJnXCIse21hc2s6XCJ1cmwoI25vZGVqc19pY29uX21hc2tfZSlcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS4yMjIuMDAxdjEzLjk5MmgxMS44OTNWMEgxLjIyMnpcIixmaWxsOlwidXJsKCNub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZilcIn0pfSldfSksaFs4XT1jKTpjPWhbOF0saFs5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iXCIseDE6XCIxMC45NDRcIix5MTpcIi0xLjA4NFwiLHgyOlwiMi45OTdcIix5MjpcIjE1LjA2MlwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zXCIsc3RvcENvbG9yOlwiIzY3Njc2N1wifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNVwiLHN0b3BDb2xvcjpcIiM4NTg1ODVcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjhcIixzdG9wQ29sb3I6XCIjOTg5QTk4XCJ9KV19KSxoWzldPXUpOnU9aFs5XSxoWzEwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kXCIseDE6XCItLjE0NVwiLHkxOlwiMTIuNDMzXCIseDI6XCIxNC4yNzdcIix5MjpcIjEuODE5XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjU3XCIsc3RvcENvbG9yOlwiIzc0NzQ3NFwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNzJcIixzdG9wQ29sb3I6XCIjNzA3MDcwXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6XCIjOTI5MjkyXCJ9KV19KSxoWzEwXT1kKTpkPWhbMTBdLGhbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGY9KDAsYi5qc3hzKShcImRlZnNcIix7Y2hpbGRyZW46W3UsZCwoMCxiLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJub2RlanNfaWNvbl9saW5lYXJfZ3JhZGllbnRfZlwiLHgxOlwiMS4yMjZcIix5MTpcIjYuOTk3XCIseDI6XCIxMy4xMTdcIix5MjpcIjYuOTk3XCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjE2XCIsc3RvcENvbG9yOlwiIzg3ODc4N1wifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMzhcIixzdG9wQ29sb3I6XCIjQTlBOUE5XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi40N1wiLHN0b3BDb2xvcjpcIiNBNUE1QTVcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjdcIixzdG9wQ29sb3I6XCIjOEY4RjhGXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi45XCIsc3RvcENvbG9yOlwiIzYyNjI2MlwifSldfSldfSksaFsxMV09Zik6Zj1oWzExXSxoWzEyXSE9PWU/KHA9KDAsYi5qc3hzKShcInN2Z1wiLHRlKGU3KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjpbbixyLGEsaSxjLGZdfSkpLGhbMTJdPWUsaFsxM109cCk6cD1oWzEzXSxwfXZhciB0bz1cIkxlYXJuIG1vcmUgYWJvdXQgZW5hYmxpbmcgTm9kZS5qcyBpbnNwZWN0b3IgZm9yIHNlcnZlciBjb2RlIHdpdGggQ2hyb21lIERldlRvb2xzXCI7ZnVuY3Rpb24gdGEoZSl7dmFyIHQsbixyLG89KDAsQS5jKSg0KSxhPWUuZGV2dG9vbHNGcm9udGVuZFVybHx8XCJcIjtyZXR1cm4gYSYmdHQ/KG9bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxiLmpzeCkodG4se2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pLG9bMV09bik6bj1vWzFdLG9bMl0hPT1hPyhyPSgwLGIuanN4KShlNix7XCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29weS1kZXZ0b29scy11cmxcIjohMCxjbGFzc05hbWU6XCJub2RlanMtaW5zcGVjdG9yLWJ1dHRvblwiLGFjdGlvbkxhYmVsOlwiQ29weSBDaHJvbWUgRGV2VG9vbHMgVVJMXCIsc3VjY2Vzc0xhYmVsOlwiQ29waWVkXCIsY29udGVudDphLGljb246bn0pLG9bMl09YSxvWzNdPXIpOnI9b1szXSxyKToob1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcImFcIix7dGl0bGU6dG8sXCJhcmlhLWxhYmVsXCI6dG8sY2xhc3NOYW1lOlwibm9kZWpzLWluc3BlY3Rvci1idXR0b25cIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vY29uZmlndXJpbmcvZGVidWdnaW5nI3NlcnZlci1zaWRlLWNvZGVcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46KDAsYi5qc3gpKHRyLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXRvb2xiYXItYnV0dG9uLWljb25cIix3aWR0aDoxNCxoZWlnaHQ6MTR9KX0pLG9bMF09dCk6dD1vWzBdLHQpfWZ1bmN0aW9uIHRpKGUpe3ZhciB0LG49KDAsQS5jKSgzKSxyPWUuZXJyb3Isbz1lLmdlbmVyYXRlRXJyb3JJbmZvLGE9IXI7cmV0dXJuIG5bMF0hPT1vfHxuWzFdIT09YT8odD0oMCxiLmpzeCkoZTYse1wiZGF0YS1uZXh0anMtZGF0YS1ydW50aW1lLWVycm9yLWNvcHktc3RhY2tcIjohMCxjbGFzc05hbWU6XCJjb3B5LWVycm9yLWJ1dHRvblwiLGFjdGlvbkxhYmVsOlwiQ29weSBFcnJvciBJbmZvXCIsc3VjY2Vzc0xhYmVsOlwiRXJyb3IgSW5mbyBDb3BpZWRcIixnZXRDb250ZW50Om8sZGlzYWJsZWQ6YX0pLG5bMF09byxuWzFdPWEsblsyXT10KTp0PW5bMl0sdH1mdW5jdGlvbiB0bChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX1mdW5jdGlvbiB0Yygpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfWZ1bmN0aW9uIHR1KGUsdCl7cmV0dXJuIHRzKGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHx0ZihlLHQpfHx0YygpfWZ1bmN0aW9uIHRkKGUpe3JldHVybiB0cyhlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHRmKGUpfHx0YygpfWZ1bmN0aW9uIHRmKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRsKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRsKGUsdCl9fXZhciB0cD1cImh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvaHlkcmF0aW9uLW1pc21hdGNoXCIsdGg9XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JcIix0bT1bL15JbiBIVE1MLCAoLis/KSBjYW5ub3QgYmUgYSBjaGlsZCBvZiA8KC4rPyk+XFwuKC4qKVxcblRoaXMgd2lsbCBjYXVzZSBhIGh5ZHJhdGlvbiBlcnJvclxcLiguKikvLC9eSW4gSFRNTCwgKC4rPykgY2Fubm90IGJlIGEgZGVzY2VuZGFudCBvZiA8KC4rPyk+XFwuXFxuVGhpcyB3aWxsIGNhdXNlIGEgaHlkcmF0aW9uIGVycm9yXFwuKC4qKS8sL15JbiBIVE1MLCB0ZXh0IG5vZGVzIGNhbm5vdCBiZSBhIGNoaWxkIG9mIDwoLis/KT5cXC5cXG5UaGlzIHdpbGwgY2F1c2UgYSBoeWRyYXRpb24gZXJyb3JcXC4vLC9eSW4gSFRNTCwgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGNhbm5vdCBiZSBhIGNoaWxkIG9mIDwoLis/KT5cXC4gTWFrZSBzdXJlIHlvdSBkb24ndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNwYWNlIGJldHdlZW4gdGFncyBvbiBlYWNoIGxpbmUgb2YgeW91ciBzb3VyY2UgY29kZVxcLlxcblRoaXMgd2lsbCBjYXVzZSBhIGh5ZHJhdGlvbiBlcnJvclxcLi9dO2Z1bmN0aW9uIHRnKGUpe3JldHVybiB0bS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRlc3QoZSl9KX12YXIgdHk9W1wiaHR0cHM6Ly9uZXh0anMub3JnXCIsXCJodHRwczovL3JlYWN0LmRldlwiXTtmdW5jdGlvbiB0dihlKXtyZXR1cm4gdHkuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZS5zdGFydHNXaXRoKHQpfSl9ZnVuY3Rpb24gdGIoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDYpLGk9ZS5lcnJvck1lc3NhZ2U7YVswXSE9PWk/KHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89KHQ9ZSxuPXR2LHI9QXJyYXkuZnJvbSh0Lm1hdGNoQWxsKC9odHRwcz86XFwvXFwvW15cXHMvJC4/I10uW15cXHMpJ1wiXSovZ2kpLGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdfSksbj9yLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pOnIpO2lmKDA9PT1vLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYT1vWzBdO3JldHVybiBhPT09dHA/dGg6YX0oaSksYVswXT1pLGFbMV09dCk6dD1hWzFdO3ZhciBsPXQ7cmV0dXJuIGw/KGFbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkodEEse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pLGFbM109cik6cj1hWzNdLGFbNF0hPT1sPyhvPSgwLGIuanN4KShcImFcIix7dGl0bGU6XCJHbyB0byByZWxhdGVkIGRvY3VtZW50YXRpb25cIixcImFyaWEtbGFiZWxcIjpcIkdvIHRvIHJlbGF0ZWQgZG9jdW1lbnRhdGlvblwiLGNsYXNzTmFtZTpcImRvY3MtbGluay1idXR0b25cIixocmVmOmwsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOnJ9KSxhWzRdPWwsYVs1XT1vKTpvPWFbNV0sbyk6KGFbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxiLmpzeCkoXCJidXR0b25cIix7dGl0bGU6XCJObyByZWxhdGVkIGRvY3VtZW50YXRpb24gZm91bmRcIixcImFyaWEtbGFiZWxcIjpcIk5vIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3VuZFwiLGNsYXNzTmFtZTpcImRvY3MtbGluay1idXR0b25cIixkaXNhYmxlZDohMCxjaGlsZHJlbjooMCxiLmpzeCkodEEse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pfSksYVsyXT1uKTpuPWFbMl0sbil9ZnVuY3Rpb24gdEEoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTAgLjg3NWg0LjM3NUM1LjQ0OC44NzUgNi40MDEgMS4zOSA3IDIuMTg3QTMuMjc2IDMuMjc2IDAgMCAxIDkuNjI1Ljg3NUgxNHYxMS4xNTZIOS40Yy0uNTIyIDAtMS4wMjMuMjA4LTEuMzkyLjU3N2wtLjU0NC41NDNoLS45MjhsLS41NDQtLjU0M2MtLjM2OS0uMzctLjg3LS41NzctMS4zOTItLjU3N0gwVi44NzV6bTYuMzQ0IDMuMjgxYTEuOTY5IDEuOTY5IDAgMCAwLTEuOTY5LTEuOTY4SDEuMzEydjguNTNINC42Yy42MjIgMCAxLjIyNS4xNzcgMS43NDQuNTAyVjQuMTU2em0xLjMxMiA3LjA2NFY0LjE1NmMwLTEuMDg3Ljg4Mi0xLjk2OCAxLjk2OS0xLjk2OGgzLjA2M3Y4LjUzSDkuNGMtLjYyMiAwLTEuMjI1LjE3Ny0xLjc0NC41MDJ6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLGIuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0eChlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoMTIpLGk9ZS5lcnJvcixsPWUuZGVidWdJbmZvLHM9ZS5mZWVkYmFja0J1dHRvbixjPWUuZ2VuZXJhdGVFcnJvckluZm87YVswXSE9PWl8fGFbMV0hPT1jPyh0PSgwLGIuanN4KSh0aSx7ZXJyb3I6aSxnZW5lcmF0ZUVycm9ySW5mbzpjfSksYVswXT1pLGFbMV09YyxhWzJdPXQpOnQ9YVsyXSxhWzNdIT09aS5tZXNzYWdlPyhuPSgwLGIuanN4KSh0Yix7ZXJyb3JNZXNzYWdlOmkubWVzc2FnZX0pLGFbM109aS5tZXNzYWdlLGFbNF09bik6bj1hWzRdO3ZhciB1PW51bGw9PWw/dm9pZCAwOmwuZGV2dG9vbHNGcm9udGVuZFVybDtyZXR1cm4gYVs1XSE9PXU/KHI9KDAsYi5qc3gpKHRhLHtkZXZ0b29sc0Zyb250ZW5kVXJsOnV9KSxhWzVdPXUsYVs2XT1yKTpyPWFbNl0sYVs3XSE9PXN8fGFbOF0hPT10fHxhWzldIT09bnx8YVsxMF0hPT1yPyhvPSgwLGIuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhclwiLGNoaWxkcmVuOltzLHQsbixyXX0pLGFbN109cyxhWzhdPXQsYVs5XT1uLGFbMTBdPXIsYVsxMV09byk6bz1hWzExXSxvfWZ1bmN0aW9uIHR3KGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgzKTtyZXR1cm4oYVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcImdcIix7aWQ6XCJ0aHVtYi11cC0xNlwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7aWQ6XCJVbmlvblwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi44OTUzMSAyLjIzOTU5QzYuNzI5ODQgMi4xMjE0IDYuNSAyLjIzOTY4IDYuNSAyLjQ0MzAzVjUuMjQ5ODlDNi41IDYuMjE2MzkgNS43MTY1IDYuOTk5ODkgNC43NSA2Ljk5OTg5SDIuNVYxMy40OTk5SDEyLjE4ODRDMTIuNzYyIDEzLjQ5OTkgMTMuMjYyIDEzLjEwOTUgMTMuNDAxMSAxMi41NTMxTDE0LjQwMTEgOC41NTMwNkMxNC41OTg0IDcuNzY0MTIgMTQuMDAxNyA2Ljk5OTg5IDEzLjE4ODQgNi45OTk4OUg5LjI1SDguNVY2LjI0OTg5VjMuNTE0NDZDOC41IDMuNDMzNzIgOC40NjEwMSAzLjM1Nzk1IDguMzk1MzEgMy4zMTEwMkw2Ljg5NTMxIDIuMjM5NTlaTTUgMi40NDMwM0M1IDEuMDE5NjMgNi42MDg5IDAuMTkxNjU2IDcuNzY3MTcgMS4wMTg5OUw5LjI2NzE3IDIuMDkwNDJDOS43MjcwNiAyLjQxODkyIDEwIDIuOTQ5MjkgMTAgMy41MTQ0NlY1LjQ5OTg5SDEzLjE4ODRDMTQuOTc3NSA1LjQ5OTg5IDE2LjI5MDMgNy4xODEyMSAxNS44NTYzIDguOTE2ODZMMTQuODU2MyAxMi45MTY5QzE0LjU1MDMgMTQuMTQxMSAxMy40NTAzIDE0Ljk5OTkgMTIuMTg4NCAxNC45OTk5SDEuNzVIMVYxNC4yNDk5VjYuMjQ5ODlWNS40OTk4OUgxLjc1SDQuNzVDNC44ODgwNyA1LjQ5OTg5IDUgNS4zODc5NiA1IDUuMjQ5ODlWMi40NDMwM1pcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxiLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2xhc3NOYW1lOlwidGh1bWJzLXVwLWljb25cIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0QyhlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS44OTUzMSAxMi43NjAzQzUuNzI5ODQgMTIuODc4NSA1LjUgMTIuNzYwMiA1LjUgMTIuNTU2OVY5Ljc1QzUuNSA4Ljc4MzUgNC43MTY1IDggMy43NSA4SDEuNVYxLjVIMTEuMTg4NEMxMS43NjIgMS41IDEyLjI2MiAxLjg5MDM3IDEyLjQwMTEgMi40NDY4M0wxMy40MDExIDYuNDQ2ODNDMTMuNTk4NCA3LjIzNTc2IDEzLjAwMTcgOCAxMi4xODg0IDhIOC4yNUg3LjVWOC43NVYxMS40ODU0QzcuNSAxMS41NjYyIDcuNDYxMDEgMTEuNjQxOSA3LjM5NTMxIDExLjY4ODlMNS44OTUzMSAxMi43NjAzWk00IDEyLjU1NjlDNCAxMy45ODAzIDUuNjA4OSAxNC44MDgyIDYuNzY3MTcgMTMuOTgwOUw4LjI2NzE3IDEyLjkwOTVDOC43MjcwNiAxMi41ODEgOSAxMi4wNTA2IDkgMTEuNDg1NFY5LjVIMTIuMTg4NEMxMy45Nzc1IDkuNSAxNS4yOTAzIDcuODE4NjggMTQuODU2MyA2LjA4MzAzTDEzLjg1NjMgMi4wODMwM0MxMy41NTAzIDAuODU4ODE2IDEyLjQ1MDMgMCAxMS4xODg0IDBIMC43NUgwVjAuNzVWOC43NVY5LjVIMC43NUgzLjc1QzMuODg4MDcgOS41IDQgOS42MTE5MyA0IDkuNzVWMTIuNTU2OVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxhWzBdPXIpOnI9YVswXSxhWzFdIT09ZSk/KG89KDAsYi5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNsYXNzTmFtZTpcInRodW1icy1kb3duLWljb25cIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0XyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdGsoZSx0LG4scixvLGEsaSl7dHJ5e3ZhciBsPWVbYV0oaSkscz1sLnZhbHVlfWNhdGNoKGUpe24oZSk7cmV0dXJufWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gdEUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHRqKGUpe3ZhciB0LG4scj1lLmVycm9yQ29kZSxvPWUuY2xhc3NOYW1lLGE9KHQ9KDAseC51c2VTdGF0ZSkoe30pLG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB0XyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB0XyhlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksaT1hWzBdLGw9YVsxXSxzPWlbcl0sYz1wcm9jZXNzLmVudi5fX05FWFRfVEVMRU1FVFJZX0RJU0FCTEVELHU9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fSh0aGlzLGZ1bmN0aW9uKHQpe3N3aXRjaCh0LmxhYmVsKXtjYXNlIDA6bChmdW5jdGlvbih0KXt2YXIgbixvO3JldHVybiBuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt0RShlLHQsblt0XSl9KX1yZXR1cm4gZX0oe30sdCksbz1udWxsIT0obz10RSh7fSxyLGUpKT9vOnt9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sZSkpfSksbn0pLHQubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHQudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCxmZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2Vycm9yX2ZlZWRiYWNrP1wiKS5jb25jYXQobmV3IFVSTFNlYXJjaFBhcmFtcyh7ZXJyb3JDb2RlOnIsd2FzSGVscGZ1bDplLnRvU3RyaW5nKCl9KSkpXTtjYXNlIDI6cmV0dXJuIHQuc2VudCgpLm9rfHxjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHJlY29yZCBmZWVkYmFjayBvbiB0aGUgc2VydmVyLlwiKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVjb3JkIGZlZWRiYWNrOlwiLHQuc2VudCgpKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbyl7dmFyIGE9dC5hcHBseShlLG4pO2Z1bmN0aW9uIGkoZSl7dGsoYSxyLG8saSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7dGsoYSxyLG8saSxsLFwidGhyb3dcIixlKX1pKHZvaWQgMCl9KX0pKCl9LFtyXSk7cmV0dXJuKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTplRyhcImVycm9yLWZlZWRiYWNrXCIsbykscm9sZTpcInJlZ2lvblwiLFwiYXJpYS1sYWJlbFwiOlwiRXJyb3IgZmVlZGJhY2tcIixjaGlsZHJlbjp2b2lkIDAhPT1zPygwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwiZXJyb3ItZmVlZGJhY2stdGhhbmtzXCIscm9sZTpcInN0YXR1c1wiLFwiYXJpYS1saXZlXCI6XCJwb2xpdGVcIixjaGlsZHJlbjpcIlRoYW5rcyBmb3IgeW91ciBmZWVkYmFjayFcIn0pOigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGIuanN4KShcInBcIix7Y2hpbGRyZW46KDAsYi5qc3gpKFwiYVwiLHtocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL3RlbGVtZXRyeSNlcnJvci1mZWVkYmFja1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIix0YXJnZXQ6XCJfYmxhbmtcIixjaGlsZHJlbjpcIldhcyB0aGlzIGhlbHBmdWw/XCJ9KX0pLCgwLGIuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZGlzYWJsZWRcIjpjP1widHJ1ZVwiOnZvaWQgMCxcImFyaWEtbGFiZWxcIjpcIk1hcmsgYXMgaGVscGZ1bFwiLG9uQ2xpY2s6Yz92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gdSghMCl9LGNsYXNzTmFtZTplRyhcImZlZWRiYWNrLWJ1dHRvblwiLCEwPT09cyYmXCJ2b3RlZFwiKSx0aXRsZTpjP1wiRmVlZGJhY2sgZGlzYWJsZWQgZHVlIHRvIHNldHRpbmcgTkVYVF9URUxFTUVUUllfRElTQUJMRURcIjp2b2lkIDAsdHlwZTpcImJ1dHRvblwiLGNoaWxkcmVuOigwLGIuanN4KSh0dyx7XCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSl9KSwoMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWRpc2FibGVkXCI6Yz9cInRydWVcIjp2b2lkIDAsXCJhcmlhLWxhYmVsXCI6XCJNYXJrIGFzIG5vdCBoZWxwZnVsXCIsb25DbGljazpjP3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiB1KCExKX0sY2xhc3NOYW1lOmVHKFwiZmVlZGJhY2stYnV0dG9uXCIsITE9PT1zJiZcInZvdGVkXCIpLHRpdGxlOmM/XCJGZWVkYmFjayBkaXNhYmxlZCBkdWUgdG8gc2V0dGluZyBORVhUX1RFTEVNRVRSWV9ESVNBQkxFRFwiOnZvaWQgMCx0eXBlOlwiYnV0dG9uXCIsY2hpbGRyZW46KDAsYi5qc3gpKHRDLHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCIsc3R5bGU6e3RyYW5zbGF0ZTpcIjFweCAxcHhcIn19KX0pXX0pfSl9ZnVuY3Rpb24gdFMoZSl7dmFyIHQsbixyPSgwLEEuYykoNCksbz1lLmVycm9yQ29kZTtyZXR1cm4gclswXSE9PW8/KHQ9bz8oMCxiLmpzeCkodGose2NsYXNzTmFtZTpcImVycm9yLWZlZWRiYWNrXCIsZXJyb3JDb2RlOm99KTpudWxsLHJbMF09byxyWzFdPXQpOnQ9clsxXSxyWzJdIT09dD8obj0oMCxiLmpzeCkoXCJmb290ZXJcIix7XCJkYXRhLW5leHRqcy1lcnJvci1vdmVybGF5LWZvb3RlclwiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktZm9vdGVyXCIsY2hpbGRyZW46dH0pLHJbMl09dCxyWzNdPW4pOm49clszXSxufXZhciB0Tz1cIlxcbiAgLmVycm9yLW92ZXJsYXktZm9vdGVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcbiAgICBnYXA6IDhweDtcXG4gICAgcGFkZGluZzogMTJweDtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgfVxcblxcbiAgLmVycm9yLWZlZWRiYWNrIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuXFxuICAgIHAge1xcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFwiLmNvbmNhdChcIlxcbiAgLmVycm9yLWZlZWRiYWNrIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICB9XFxuXFxuICAuZXJyb3ItZmVlZGJhY2stdGhhbmtzIHtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcGFkZGluZy1yaWdodDogNHB4OyAvKiBUbyBtYXRjaCB0aGUgNHB4IGlubmVyIHBhZGRpbmcgb2YgdGhlIHRodW1icyB1cCBhbmQgZG93biBpY29ucyAqL1xcbiAgfVxcblxcbiAgLmZlZWRiYWNrLWJ1dHRvbiB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZCk7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTI0KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0xMDApO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTIwMCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5mZWVkYmFjay1idXR0b25bYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcXG4gICAgb3BhY2l0eTogMC43O1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgfVxcblxcbiAgLmZlZWRiYWNrLWJ1dHRvbi52b3RlZCB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMjAwKTtcXG4gIH1cXG5cXG4gIC50aHVtYnMtdXAtaWNvbixcXG4gIC50aHVtYnMtZG93bi1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgfVxcblwiLFwiXFxuXCIpO2Z1bmN0aW9uIHRCKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB0UChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdEIoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdEIoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gdEkoZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoMTIpLGw9ZS5lcnJvck1lc3NhZ2Uscz10UCgoMCx4LnVzZVN0YXRlKSghMSksMiksYz1zWzBdLHU9c1sxXSxkPXRQKCgwLHgudXNlU3RhdGUpKCExKSwyKSxmPWRbMF0scD1kWzFdLGg9KDAseC51c2VSZWYpKG51bGwpO2lbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD1mdW5jdGlvbigpe2guY3VycmVudCYmcChoLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0PjIwMCl9LGlbMF09dCk6dD1pWzBdLGlbMV0hPT1sPyhuPVtsXSxpWzFdPWwsaVsyXT1uKTpuPWlbMl0sKDAseC51c2VMYXlvdXRFZmZlY3QpKHQsbik7dmFyIG09XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzYyBcIi5jb25jYXQoZiYmIWM/XCJ0cnVuY2F0ZWRcIjpcIlwiKTtyZXR1cm4gaVszXSE9PWx8fGlbNF0hPT1tPyhyPSgwLGIuanN4KShcInBcIix7cmVmOmgsaWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLGNsYXNzTmFtZTptLGNoaWxkcmVuOmx9KSxpWzNdPWwsaVs0XT1tLGlbNV09cik6cj1pWzVdLGlbNl0hPT1jfHxpWzddIT09Zj8obz1mJiYhYyYmKDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19ncmFkaWVudF9vdmVybGF5XCJ9KSwoMCxiLmpzeCkoXCJidXR0b25cIix7b25DbGljazpmdW5jdGlvbigpe3JldHVybiB1KCEwKX0sY2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2V4cGFuZF9idXR0b25cIixcImFyaWEtZXhwYW5kZWRcIjpjLFwiYXJpYS1jb250cm9sc1wiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2NcIixjaGlsZHJlbjpcIlNob3cgTW9yZVwifSldfSksaVs2XT1jLGlbN109ZixpWzhdPW8pOm89aVs4XSxpWzldIT09cnx8aVsxMF0hPT1vPyhhPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX3dyYXBwZXJcIixjaGlsZHJlbjpbcixvXX0pLGlbOV09cixpWzEwXT1vLGlbMTFdPWEpOmE9aVsxMV0sYX1mdW5jdGlvbiB0eihlKXt2YXIgdCxuPSgwLEEuYykoMikscj1lLmVycm9yVHlwZTtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKFwic3BhblwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLGNsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLGNoaWxkcmVuOnJ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB0VChlKXt2YXIgdCxuLHI9KDAsQS5jKSg0KSxvPWUudGl0bGUsYT1lLmNsYXNzTmFtZTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk05LjI0OTk2IDEyLjA2MDhMOC43MTk2MyAxMS41MzA0TDUuODk2NDEgOC43MDcyMkM1LjUwNTg4IDguMzE2NyA1LjUwNTg4IDcuNjgzNTMgNS44OTY0MSA3LjI5MzAxTDguNzE5NjMgNC40Njk3OEw5LjI0OTk2IDMuOTM5NDVMMTAuMzEwNiA1LjAwMDExTDkuNzgwMjkgNS41MzA0NEw3LjMxMDYyIDguMDAwMTFMOS43ODAyOSAxMC40Njk4TDEwLjMxMDYgMTEuMDAwMUw5LjI0OTk2IDEyLjA2MDhaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PWF8fHJbMl0hPT1vPyhuPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXCJhcmlhLWxhYmVsXCI6byxjbGFzc05hbWU6YSxjaGlsZHJlbjp0fSksclsxXT1hLHJbMl09byxyWzNdPW4pOm49clszXSxufWZ1bmN0aW9uIHREKGUpe3ZhciB0LG4scj0oMCxBLmMpKDQpLG89ZS50aXRsZSxhPWUuY2xhc3NOYW1lO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTYuNzUwMTEgMy45Mzk0NUw3LjI4MDQ0IDQuNDY5NzhMMTAuMTAzNyA3LjI5MzAxQzEwLjQ5NDIgNy42ODM1MyAxMC40OTQyIDguMzE2NyAxMC4xMDM3IDguNzA3MjJMNy4yODA0NCAxMS41MzA0TDYuNzUwMTEgMTIuMDYwOEw1LjY4OTQ1IDExLjAwMDFMNi4yMTk3OCAxMC40Njk4TDguNjg5NDUgOC4wMDAxMUw2LjIxOTc4IDUuNTMwNDRMNS42ODk0NSA1LjAwMDExTDYuNzUwMTEgMy45Mzk0NVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09YXx8clsyXSE9PW8/KG49KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjbGFzc05hbWU6YSxcImFyaWEtbGFiZWxcIjpvLGNoaWxkcmVuOnR9KSxyWzFdPWEsclsyXT1vLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gdEwoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHROKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdj0oMCxBLmMpKDQwKSx3PWUucnVudGltZUVycm9ycyxDPWUuYWN0aXZlSWR4LF89ZS5vbkFjdGl2ZUluZGV4Q2hhbmdlO3ZbMF0hPT1DfHx2WzFdIT09Xz8ocj1mdW5jdGlvbigpe3JldHVybigwLHguc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe0M+MCYmXyhNYXRoLm1heCgwLEMtMSkpfSl9LHZbMF09Qyx2WzFdPV8sdlsyXT1yKTpyPXZbMl07dmFyIGs9cjt2WzNdIT09Q3x8dls0XSE9PV98fHZbNV0hPT13Lmxlbmd0aD8obz1mdW5jdGlvbigpe3JldHVybigwLHguc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe0M8dy5sZW5ndGgtMSYmXyhNYXRoLm1heCgwLE1hdGgubWluKHcubGVuZ3RoLTEsQysxKSkpfSl9LHZbM109Qyx2WzRdPV8sdls1XT13Lmxlbmd0aCx2WzZdPW8pOm89dls2XTt2YXIgRT1vLGo9KDAseC51c2VSZWYpKG51bGwpLFM9KDAseC51c2VSZWYpKG51bGwpLE89KHQ9KDAseC51c2VTdGF0ZSkobnVsbCksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRMKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRMKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxCPU9bMF0sUD1PWzFdO3ZbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbihlKXtQKGUpfSx2WzddPWEpOmE9dls3XTt2YXIgST1hO3ZbOF0hPT1FfHx2WzldIT09a3x8dlsxMF0hPT1CPyhpPWZ1bmN0aW9uKCl7aWYobnVsbCE9Qil7dmFyIGU9Qi5nZXRSb290Tm9kZSgpLHQ9c2VsZi5kb2N1bWVudCxuPWZ1bmN0aW9uKGUpe1wiQXJyb3dMZWZ0XCI9PT1lLmtleT8oZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksayYmaygpKTpcIkFycm93UmlnaHRcIj09PWUua2V5JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksRSYmRSgpKX07cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixuKSxlIT09dCYmdC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLG4pLGZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLG4pLGUhPT10JiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsbil9fX0sbD1bQixFLGtdLHZbOF09RSx2WzldPWssdlsxMF09Qix2WzExXT1pLHZbMTJdPWwpOihpPXZbMTFdLGw9dlsxMl0pLCgwLHgudXNlRWZmZWN0KShpLGwpLHZbMTNdIT09Q3x8dlsxNF0hPT1CfHx2WzE1XSE9PXcubGVuZ3RoPyhzPWZ1bmN0aW9uKCl7aWYobnVsbCE9Qil7dmFyIGUsdCxuPUIuZ2V0Um9vdE5vZGUoKTtpZihlPW4sbnVsbCE9KHQ9U2hhZG93Um9vdCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLmhhc0luc3RhbmNlXT8hIXRbU3ltYm9sLmhhc0luc3RhbmNlXShlKTplIGluc3RhbmNlb2YgdCl7dmFyIHI9bi5hY3RpdmVFbGVtZW50OzA9PT1DP2ouY3VycmVudCYmcj09PWouY3VycmVudCYmai5jdXJyZW50LmJsdXIoKTpDPT09dy5sZW5ndGgtMSYmUy5jdXJyZW50JiZyPT09Uy5jdXJyZW50JiZTLmN1cnJlbnQuYmx1cigpfX19LGM9W0IsQyx3Lmxlbmd0aF0sdlsxM109Qyx2WzE0XT1CLHZbMTVdPXcubGVuZ3RoLHZbMTZdPXMsdlsxN109Yyk6KHM9dlsxNl0sYz12WzE3XSksKDAseC51c2VFZmZlY3QpKHMsYyk7dmFyIHo9MD09PUMsVD0wPT09Qzt2WzE4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLGIuanN4KSh0VCx7dGl0bGU6XCJwcmV2aW91c1wiLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b24taWNvblwifSksdlsxOF09dSk6dT12WzE4XSx2WzE5XSE9PWt8fHZbMjBdIT09enx8dlsyMV0hPT1UPyhkPSgwLGIuanN4KShcImJ1dHRvblwiLHtyZWY6aix0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6eixcImFyaWEtZGlzYWJsZWRcIjpULG9uQ2xpY2s6ayxcImRhdGEtbmV4dGpzLWRpYWxvZy1lcnJvci1wcmV2aW91c1wiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b25cIixjaGlsZHJlbjp1fSksdlsxOV09ayx2WzIwXT16LHZbMjFdPVQsdlsyMl09ZCk6ZD12WzIyXTt2YXIgRD1DKzE7dlsyM10hPT1DfHx2WzI0XSE9PUQ/KGY9KDAsYi5qc3hzKShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctZXJyb3ItaW5kZXhcIjpDLGNoaWxkcmVuOltELFwiL1wiXX0pLHZbMjNdPUMsdlsyNF09RCx2WzI1XT1mKTpmPXZbMjVdO3ZhciBMPXcubGVuZ3RofHwxO3ZbMjZdIT09TD8ocD0oMCxiLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWhlYWRlci10b3RhbC1jb3VudFwiOiEwLGNoaWxkcmVuOkx9KSx2WzI2XT1MLHZbMjddPXApOnA9dlsyN10sdlsyOF0hPT1mfHx2WzI5XSE9PXA/KGg9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXBhZ2luYXRpb24tY291bnRcIixjaGlsZHJlbjpbZixwXX0pLHZbMjhdPWYsdlsyOV09cCx2WzMwXT1oKTpoPXZbMzBdO3ZhciBOPUM+PXcubGVuZ3RoLTEsUj1DPj13Lmxlbmd0aC0xO3JldHVybiB2WzMxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhtPSgwLGIuanN4KSh0RCx7dGl0bGU6XCJuZXh0XCIsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvbi1pY29uXCJ9KSx2WzMxXT1tKTptPXZbMzFdLHZbMzJdIT09RXx8dlszM10hPT1OfHx2WzM0XSE9PVI/KGc9KDAsYi5qc3gpKFwiYnV0dG9uXCIse3JlZjpTLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpOLFwiYXJpYS1kaXNhYmxlZFwiOlIsb25DbGljazpFLFwiZGF0YS1uZXh0anMtZGlhbG9nLWVycm9yLW5leHRcIjohMCxjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXBhZ2luYXRpb24tYnV0dG9uXCIsY2hpbGRyZW46bX0pLHZbMzJdPUUsdlszM109Tix2WzM0XT1SLHZbMzVdPWcpOmc9dlszNV0sdlszNl0hPT1kfHx2WzM3XSE9PWh8fHZbMzhdIT09Zz8oeT0oMCxiLmpzeHMpKFwibmF2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbiBkaWFsb2ctZXhjbHVkZS1jbG9zaW5nLWZyb20tb3V0c2lkZS1jbGlja1wiLHJlZjpJLGNoaWxkcmVuOltkLGgsZ119KSx2WzM2XT1kLHZbMzddPWgsdlszOF09Zyx2WzM5XT15KTp5PXZbMzldLHl9ZnVuY3Rpb24gdFIoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwiY2lyY2xlXCIse2N4OlwiN1wiLGN5OlwiN1wiLHI6XCI1LjVcIixzdHJva2VXaWR0aDpcIjNcIn0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxiLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksYVsxXT1lLGFbMl09byk6bz1hWzJdLG99ZnVuY3Rpb24gdE0oZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoMzEpLGw9ZS52ZXJzaW9uSW5mbyxzPWUuYnVuZGxlck5hbWUsYz1sLnN0YWxlbmVzcztpZihpWzBdIT09c3x8aVsxXSE9PWN8fGlbMl0hPT1sKXt2PVN5bWJvbC5mb3IoXCJyZWFjdC5lYXJseV9yZXR1cm5fc2VudGluZWxcIik7bjp7dmFyIHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbnN0YWxsZWQsbj1lLnN0YWxlbmVzcyxyPWUuZXhwZWN0ZWQsbz1cIlwiLGE9XCJcIixpPVwiXCIsbD1cIk5leHQuanMgXCIuY29uY2F0KHQpO3N3aXRjaChuKXtjYXNlXCJuZXdlci10aGFuLW5wbVwiOmNhc2VcImZyZXNoXCI6bz1sLGE9XCJMYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24gaXMgZGV0ZWN0ZWQgKFwiLmNvbmNhdCh0LFwiKS5cIiksaT1cImZyZXNoXCI7YnJlYWs7Y2FzZVwic3RhbGUtcGF0Y2hcIjpjYXNlXCJzdGFsZS1taW5vclwiOm89XCJcIi5jb25jYXQobCxcIiAoc3RhbGUpXCIpLGE9XCJUaGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gKFwiLmNvbmNhdChyLFwiKSBhdmFpbGFibGUsIHVwZ3JhZGUgcmVjb21tZW5kZWQhIFwiKSxpPVwic3RhbGVcIjticmVhaztjYXNlXCJzdGFsZS1tYWpvclwiOm89XCJcIi5jb25jYXQobCxcIiAob3V0ZGF0ZWQpXCIpLGE9XCJBbiBvdXRkYXRlZCB2ZXJzaW9uIGRldGVjdGVkIChsYXRlc3QgaXMgXCIuY29uY2F0KHIsXCIpLCB1cGdyYWRlIGlzIGhpZ2hseSByZWNvbW1lbmRlZCFcIiksaT1cIm91dGRhdGVkXCI7YnJlYWs7Y2FzZVwic3RhbGUtcHJlcmVsZWFzZVwiOm89XCJcIi5jb25jYXQobCxcIiAoc3RhbGUpXCIpLGE9XCJUaGVyZSBpcyBhIG5ld2VyIGNhbmFyeSB2ZXJzaW9uIChcIi5jb25jYXQocixcIikgYXZhaWxhYmxlLCBwbGVhc2UgdXBncmFkZSEgXCIpLGk9XCJzdGFsZVwiO2JyZWFrO2Nhc2VcInVua25vd25cIjpvPVwiXCIuY29uY2F0KGwsXCIgKHVua25vd24pXCIpLGE9XCJObyBOZXh0LmpzIHZlcnNpb24gZGF0YSB3YXMgZm91bmQuXCIsaT1cInVua25vd25cIn1yZXR1cm57dGV4dDpvLGluZGljYXRvckNsYXNzOmksdGl0bGU6YX19KGwpLGQ9dS50ZXh0LGY9dS5pbmRpY2F0b3JDbGFzcyxwPXUudGl0bGU7aWYoeD1kLHc9cCxtPVwiVHVyYm9wYWNrXCI9PT1zLGMuc3RhcnRzV2l0aChcInN0YWxlXCIpKXt2YXIgaCxtLGcseSx2LHgsdyxDLF8saz1tJiZcInR1cmJvcGFjay10ZXh0XCI7aVsxMF0hPT1rPyhDPWVHKGspLGlbMTBdPWssaVsxMV09Qyk6Qz1pWzExXSxpWzEyXSE9PXN8fGlbMTNdIT09Qz8oXz0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpDLGNoaWxkcmVuOnN9KSxpWzEyXT1zLGlbMTNdPUMsaVsxNF09Xyk6Xz1pWzE0XSx2PSgwLGIuanN4cykoXCJhXCIse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMgZGlhbG9nLWV4Y2x1ZGUtY2xvc2luZy1mcm9tLW91dHNpZGUtY2xpY2tcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsaHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3ZlcnNpb24tc3RhbGVuZXNzXCIsY2hpbGRyZW46WygwLGIuanN4KSh0Uix7Y2xhc3NOYW1lOmVHKFwidmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yXCIsZil9KSwoMCxiLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtdmVyc2lvbi1jaGVja2VyXCI6ITAsdGl0bGU6dyxjaGlsZHJlbjp4fSksX119KTticmVhayBufXk9XCJuZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzIGRpYWxvZy1leGNsdWRlLWNsb3NpbmctZnJvbS1vdXRzaWRlLWNsaWNrXCIsaD10UixnPWVHKFwidmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yXCIsZil9aVswXT1zLGlbMV09YyxpWzJdPWwsaVszXT1oLGlbNF09bSxpWzVdPWcsaVs2XT15LGlbN109dixpWzhdPXgsaVs5XT13fWVsc2UgaD1pWzNdLG09aVs0XSxnPWlbNV0seT1pWzZdLHY9aVs3XSx4PWlbOF0sdz1pWzldO2lmKHYhPT1TeW1ib2wuZm9yKFwicmVhY3QuZWFybHlfcmV0dXJuX3NlbnRpbmVsXCIpKXJldHVybiB2O2lbMTVdIT09aHx8aVsxNl0hPT1nPyh0PSgwLGIuanN4KShoLHtjbGFzc05hbWU6Z30pLGlbMTVdPWgsaVsxNl09ZyxpWzE3XT10KTp0PWlbMTddLGlbMThdIT09eHx8aVsxOV0hPT13PyhuPSgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy12ZXJzaW9uLWNoZWNrZXJcIjohMCx0aXRsZTp3LGNoaWxkcmVuOnh9KSxpWzE4XT14LGlbMTldPXcsaVsyMF09bik6bj1pWzIwXTt2YXIgRT1tJiZcInR1cmJvcGFjay10ZXh0XCI7cmV0dXJuIGlbMjFdIT09RT8ocj1lRyhFKSxpWzIxXT1FLGlbMjJdPXIpOnI9aVsyMl0saVsyM10hPT1zfHxpWzI0XSE9PXI/KG89KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6cixjaGlsZHJlbjpzfSksaVsyM109cyxpWzI0XT1yLGlbMjVdPW8pOm89aVsyNV0saVsyNl0hPT15fHxpWzI3XSE9PXR8fGlbMjhdIT09bnx8aVsyOV0hPT1vPyhhPSgwLGIuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTp5LGNoaWxkcmVuOlt0LG4sb119KSxpWzI2XT15LGlbMjddPXQsaVsyOF09bixpWzI5XT1vLGlbMzBdPWEpOmE9aVszMF0sYX1mdW5jdGlvbiB0WihlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoMTEpLGk9ZS5ydW50aW1lRXJyb3JzLGw9ZS5hY3RpdmVJZHgscz1lLnNldEFjdGl2ZUluZGV4LGM9ZS52ZXJzaW9uSW5mbyx1PXByb2Nlc3MuZW52Ll9fTkVYVF9CVU5ETEVSfHxcIldlYnBhY2tcIjthWzBdIT09aT8odD1udWxsIT1pP2k6W10sYVswXT1pLGFbMV09dCk6dD1hWzFdO3ZhciBkPW51bGwhPWw/bDowLGY9bnVsbCE9cz9zOnRVO3JldHVybiBhWzJdIT09dHx8YVszXSE9PWR8fGFbNF0hPT1mPyhuPSgwLGIuanN4KSh0Rix7c2lkZTpcImxlZnRcIixjaGlsZHJlbjooMCxiLmpzeCkodE4se3J1bnRpbWVFcnJvcnM6dCxhY3RpdmVJZHg6ZCxvbkFjdGl2ZUluZGV4Q2hhbmdlOmZ9KX0pLGFbMl09dCxhWzNdPWQsYVs0XT1mLGFbNV09bik6bj1hWzVdLGFbNl0hPT1jPyhyPWMmJigwLGIuanN4KSh0Rix7c2lkZTpcInJpZ2h0XCIsY2hpbGRyZW46KDAsYi5qc3gpKHRNLHt2ZXJzaW9uSW5mbzpjLGJ1bmRsZXJOYW1lOnV9KX0pLGFbNl09YyxhWzddPXIpOnI9YVs3XSxhWzhdIT09bnx8YVs5XSE9PXI/KG89KDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XCI6ITAsY2hpbGRyZW46W24scl19KSxhWzhdPW4sYVs5XT1yLGFbMTBdPW8pOm89YVsxMF0sb31mdW5jdGlvbiB0VSgpe31mdW5jdGlvbiB0RihlKXt2YXIgdCxuLHI9KDAsQS5jKSg0KSxvPWUuY2hpbGRyZW4sYT1lLnNpZGUsaT12b2lkIDA9PT1hP1wibGVmdFwiOmE7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkodHEse30pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1vfHxyWzJdIT09aT8obj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktbm90Y2hcIixcImRhdGEtc2lkZVwiOmksY2hpbGRyZW46W28sdF19KSxyWzFdPW8sclsyXT1pLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gdHEoKXt2YXIgZSx0LG4scj0oMCxBLmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9e21hc2tUeXBlOlwiYWxwaGFcIn0sclswXT1lKTplPXJbMF0sclsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4cykoXCJtYXNrXCIse2lkOlwiZXJyb3Jfb3ZlcmxheV9uYXZfbWFzazBfMjY2N18xNDY4N1wiLHN0eWxlOmUsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCItMVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wiLGNoaWxkcmVuOlsoMCxiLmpzeHMpKFwibWFza1wiLHtpZDpcImVycm9yX292ZXJsYXlfbmF2X3BhdGhfMV9vdXRzaWRlXzFfMjY2N18xNDY4N1wiLG1hc2tVbml0czpcInVzZXJTcGFjZU9uVXNlXCIseDpcIjBcIix5OlwiLTFcIix3aWR0aDpcIjYwXCIsaGVpZ2h0OlwiNDNcIixmaWxsOlwiYmxhY2tcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwicmVjdFwiLHtmaWxsOlwid2hpdGVcIix5OlwiLTFcIix3aWR0aDpcIjYwXCIsaGVpZ2h0OlwiNDNcIn0pLCgwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xIDBMOC4wNzgzIDBDMTUuNzcyIDAgMjIuNzgzNiA0LjQxMzI0IDI2LjExMSAxMS4zNTAxTDM0Ljg4ODkgMjkuNjQ5OEMzOC4yMTY0IDM2LjU4NjggNDUuMjI4IDQxIDUyLjkyMTcgNDFINjBIMUwxIDBaXCJ9KV19KSwoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMSAwTDguMDc4MyAwQzE1Ljc3MiAwIDIyLjc4MzYgNC40MTMyNCAyNi4xMTEgMTEuMzUwMUwzNC44ODg5IDI5LjY0OThDMzguMjE2NCAzNi41ODY4IDQ1LjIyOCA0MSA1Mi45MjE3IDQxSDYwSDFMMSAwWlwiLGZpbGw6XCJ3aGl0ZVwifSksKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEgMFYtMUgwVjBMMSAwWk0xIDQxSDBWNDJIMVY0MVpNMzQuODg4OSAyOS42NDk4TDMzLjk4NzMgMzAuMDgyM0wzNC44ODg5IDI5LjY0OThaTTI2LjExMSAxMS4zNTAxTDI3LjAxMjcgMTAuOTE3N0wyNi4xMTEgMTEuMzUwMVpNMSAxSDguMDc4M1YtMUgxVjFaTTYwIDQwSDFWNDJINjBWNDBaTTIgNDFWMEwwIDBMMCA0MUgyWk0yNS4yMDk0IDExLjc4MjZMMzMuOTg3MyAzMC4wODIzTDM1Ljc5MDYgMjkuMjE3NEwyNy4wMTI3IDEwLjkxNzdMMjUuMjA5NCAxMS43ODI2Wk01Mi45MjE3IDQySDYwVjQwSDUyLjkyMTdWNDJaTTMzLjk4NzMgMzAuMDgyM0MzNy40ODExIDM3LjM2NjEgNDQuODQzMyA0MiA1Mi45MjE3IDQyVjQwQzQ1LjYxMjcgNDAgMzguOTUxNyAzNS44MDc0IDM1Ljc5MDYgMjkuMjE3NEwzMy45ODczIDMwLjA4MjNaTTguMDc4MyAxQzE1LjM4NzMgMSAyMi4wNDgzIDUuMTkyNTcgMjUuMjA5NCAxMS43ODI2TDI3LjAxMjcgMTAuOTE3N0MyMy41MTg4IDMuNjMzOSAxNi4xNTY3IC0xIDguMDc4MyAtMVYxWlwiLGZpbGw6XCJibGFja1wiLG1hc2s6XCJ1cmwoI2Vycm9yX292ZXJsYXlfbmF2X3BhdGhfMV9vdXRzaWRlXzFfMjY2N18xNDY4NylcIn0pXX0pLHJbMV09dCk6dD1yWzFdLHJbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxiLmpzeHMpKFwic3ZnXCIse3dpZHRoOlwiNjBcIixoZWlnaHQ6XCI0MlwiLHZpZXdCb3g6XCIwIDAgNjAgNDJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LW5vdGNoLXRhaWxcIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOlwibm9uZVwiLGNoaWxkcmVuOlt0LCgwLGIuanN4cykoXCJnXCIse21hc2s6XCJ1cmwoI2Vycm9yX292ZXJsYXlfbmF2X21hc2swXzI2NjdfMTQ2ODcpXCIsY2hpbGRyZW46WygwLGIuanN4cykoXCJtYXNrXCIse2lkOlwiZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8zX291dHNpZGVfMl8yNjY3XzE0Njg3XCIsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiLTFcIix5OlwiMC4wMjQ0MTQxXCIsd2lkdGg6XCI2MFwiLGhlaWdodDpcIjQzXCIsZmlsbDpcImJsYWNrXCIsY2hpbGRyZW46WygwLGIuanN4KShcInJlY3RcIix7ZmlsbDpcIndoaXRlXCIseDpcIi0xXCIseTpcIjAuMDI0NDE0MVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wifSksKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUg3LjA3ODNDMTQuNzcyIDEuMDI0NDEgMjEuNzgzNiA1LjQzNzY1IDI1LjExMSAxMi4zNzQ2TDMzLjg4ODkgMzAuNjc0M0MzNy4yMTY0IDM3LjYxMTIgNDQuMjI4IDQyLjAyNDQgNTEuOTIxNyA0Mi4wMjQ0SDU5SDBMMCAxLjAyNDQxWlwifSldfSksKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUg3LjA3ODNDMTQuNzcyIDEuMDI0NDEgMjEuNzgzNiA1LjQzNzY1IDI1LjExMSAxMi4zNzQ2TDMzLjg4ODkgMzAuNjc0M0MzNy4yMTY0IDM3LjYxMTIgNDQuMjI4IDQyLjAyNDQgNTEuOTIxNyA0Mi4wMjQ0SDU5SDBMMCAxLjAyNDQxWlwiLGZpbGw6XCJ2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKVwifSksKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTAgMS4wMjQ0MUwwIDAuMDI0NDE0MUgtMVYxLjAyNDQxSDBaTTAgNDIuMDI0NEgtMVY0My4wMjQ0SDBMMCA0Mi4wMjQ0Wk0zMy44ODg5IDMwLjY3NDNMMzIuOTg3MyAzMS4xMDY4TDMzLjg4ODkgMzAuNjc0M1pNMjUuMTExIDEyLjM3NDZMMjYuMDEyNyAxMS45NDIxTDI1LjExMSAxMi4zNzQ2Wk0wIDIuMDI0NDFINy4wNzgzVjAuMDI0NDE0MUgwTDAgMi4wMjQ0MVpNNTkgNDEuMDI0NEgwTDAgNDMuMDI0NEg1OVY0MS4wMjQ0Wk0xIDQyLjAyNDRMMSAxLjAyNDQxSC0xTC0xIDQyLjAyNDRIMVpNMjQuMjA5NCAxMi44MDcxTDMyLjk4NzMgMzEuMTA2OEwzNC43OTA2IDMwLjI0MThMMjYuMDEyNyAxMS45NDIxTDI0LjIwOTQgMTIuODA3MVpNNTEuOTIxNyA0My4wMjQ0SDU5VjQxLjAyNDRINTEuOTIxN1Y0My4wMjQ0Wk0zMi45ODczIDMxLjEwNjhDMzYuNDgxMSAzOC4zOTA1IDQzLjg0MzMgNDMuMDI0NCA1MS45MjE3IDQzLjAyNDRWNDEuMDI0NEM0NC42MTI3IDQxLjAyNDQgMzcuOTUxNyAzNi44MzE4IDM0Ljc5MDYgMzAuMjQxOEwzMi45ODczIDMxLjEwNjhaTTcuMDc4MyAyLjAyNDQxQzE0LjM4NzMgMi4wMjQ0MSAyMS4wNDgzIDYuMjE2OTkgMjQuMjA5NCAxMi44MDcxTDI2LjAxMjcgMTEuOTQyMUMyMi41MTg4IDQuNjU4MzEgMTUuMTU2NyAwLjAyNDQxNDEgNy4wNzgzIDAuMDI0NDE0MVYyLjAyNDQxWlwiLGZpbGw6XCJ2YXIoLS1zdHJva2UtY29sb3IpXCIsbWFzazpcInVybCgjZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8zX291dHNpZGVfMl8yNjY3XzE0Njg3KVwifSldfSldfSksclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB0SChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIHRWPVtcIltkYXRhLW5leHQtbWFya11cIixcIltkYXRhLWlzc3Vlcy1vcGVuXVwiLFwiI25leHRqcy1kZXYtdG9vbHMtbWVudVwiLFwiW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XVwiLFwiW2RhdGEtaW5mby1wb3BvdmVyXVwiLFwiW2RhdGEtbmV4dGpzLWRldnRvb2xzLXBhbmVsLW92ZXJsYXldXCIsXCJbZGF0YS1uZXh0anMtZGV2dG9vbHMtcGFuZWwtZm9vdGVyXVwiLFwiW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktZm9vdGVyXVwiXSx0JD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkPWUuY2hpbGRyZW4sZj1lLmNsYXNzTmFtZSxwPWUub25DbG9zZSxoPWVbXCJhcmlhLWxhYmVsbGVkYnlcIl0sbT1lW1wiYXJpYS1kZXNjcmliZWRieVwiXSxnPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCIsXCJvbkNsb3NlXCIsXCJhcmlhLWxhYmVsbGVkYnlcIixcImFyaWEtZGVzY3JpYmVkYnlcIl0pLHk9eC51c2VSZWYobnVsbCksdj0odD14LnVzZVN0YXRlKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuaGFzRm9jdXMoKT9cImRpYWxvZ1wiOnZvaWQgMCksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRIKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRIKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSx3PXZbMF0sQz12WzFdO3JldHVybiByPXkuY3VycmVudCxvPXRWLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxudWxsPT1wP3ZvaWQgMDpwKCl9LChzPSgwLEEuYykoNSkpWzBdIT09b3x8c1sxXSE9PXJ8fHNbMl0hPT1hPyhpPWZ1bmN0aW9uKCl7aWYobnVsbCE9ciYmbnVsbCE9YSl7dmFyIGU9ZnVuY3Rpb24oZSl7ISghcnx8ci5jb250YWlucyhlLnRhcmdldCkpJiYoby5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlLnRhcmdldC5jbG9zZXN0KHQpfSl8fGEoZSkpfSx0PXIuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGUpLHQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsZSx7cGFzc2l2ZTohMX0pLGZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsZSl9fX0sbD1bYSxyLG9dLHNbMF09byxzWzFdPXIsc1syXT1hLHNbM109aSxzWzRdPWwpOihpPXNbM10sbD1zWzRdKSx4LnVzZUVmZmVjdChpLGwpLHgudXNlRWZmZWN0KGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXtDKGRvY3VtZW50Lmhhc0ZvY3VzKCk/XCJkaWFsb2dcIjp2b2lkIDApfTtpZihudWxsIT15LmN1cnJlbnQpcmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIixlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIixlKSxmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIixlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJsdXJcIixlKX19LFtdKSx4LnVzZUVmZmVjdChmdW5jdGlvbigpe3ZhciBlLHQsbj15LmN1cnJlbnQscj1udWxsPT1uP3ZvaWQgMDpuLmdldFJvb3ROb2RlKCksbz0oZT1yLG51bGwhPSh0PVNoYWRvd1Jvb3QpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5oYXNJbnN0YW5jZV0/ISF0W1N5bWJvbC5oYXNJbnN0YW5jZV0oZSk6ZSBpbnN0YW5jZW9mIHQpP251bGw9PXI/dm9pZCAwOnIuYWN0aXZlRWxlbWVudDpudWxsO3JldHVybiBudWxsPT1ufHxuLmZvY3VzKCksZnVuY3Rpb24oKXtudWxsPT1ufHxuLmJsdXIoKSxudWxsPT1vfHxvLmZvY3VzKCl9fSxbXSksKDAsYi5qc3gpKFwiZGl2XCIsKGM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7cmVmOnksdGFiSW5kZXg6LTEsXCJkYXRhLW5leHRqcy1kaWFsb2dcIjohMCxcImRhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudFwiOiEwLHJvbGU6dyxcImFyaWEtbGFiZWxsZWRieVwiOmgsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6bSxcImFyaWEtbW9kYWxcIjpcInRydWVcIixjbGFzc05hbWU6ZixvbktleURvd246ZnVuY3Rpb24oZSl7XCJFc2NhcGVcIj09PWUua2V5JiYobnVsbD09cHx8cCgpKX19LGcpLHU9dT17Y2hpbGRyZW46ZH0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYyxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh1KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh1KSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodSxlKSl9KSxjKSl9O2Z1bmN0aW9uIHRXKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYz0oMCxBLmMpKDEyKTtyZXR1cm4oY1swXSE9PWU/KGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJvbkNsb3NlXCIsXCJmb290ZXJcIl0pLHI9ZS5jaGlsZHJlbixhPWUub25DbG9zZSxvPWUuZm9vdGVyLGNbMF09ZSxjWzFdPXIsY1syXT1vLGNbM109YSxjWzRdPWkpOihyPWNbMV0sbz1jWzJdLGE9Y1szXSxpPWNbNF0pLGNbNV0hPT1yfHxjWzZdIT09YXx8Y1s3XSE9PWkpPyhsPSgwLGIuanN4KSh0JCwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImFyaWEtbGFiZWxsZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsXCIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktZGlhbG9nLXNjcm9sbFwiLG9uQ2xvc2U6YX0saSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxjWzVdPXIsY1s2XT1hLGNbN109aSxjWzhdPWwpOmw9Y1s4XSxjWzldIT09b3x8Y1sxMF0hPT1sPyhzPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1kaWFsb2ctY29udGFpbmVyXCIsY2hpbGRyZW46W2wsb119KSxjWzldPW8sY1sxMF09bCxjWzExXT1zKTpzPWNbMTFdLHN9ZnVuY3Rpb24gdFkoZSl7dmFyIHQsbixyLG89KDAsQS5jKSgyKTtyZXR1cm4gb1swXSE9PWU/KHI9KDAsYi5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXCI6ITB9LGUpLG49bj17Y2hpbGRyZW46ZS5jaGlsZHJlbn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksb1swXT1lLG9bMV09cik6cj1vWzFdLHJ9ZnVuY3Rpb24gdEsoZSl7dmFyIHQsbj0oMCxBLmMpKDIpLHI9ZS5jaGlsZHJlbjtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKHRZLHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXJcIixjaGlsZHJlbjpyfSksblswXT1yLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gdFgoZSl7dmFyIHQsbj0oMCxBLmMpKDIpLHI9ZS5jaGlsZHJlbjtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKGVXLHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5XCIsY2hpbGRyZW46cn0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fXZhciB0Rz0wLHRRPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9KDAsQS5jKSg5KTtyZXR1cm4oc1swXSE9PWU/KGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNsYXNzTmFtZVwiLFwiY2hpbGRyZW5cIl0pLG89ZS5jbGFzc05hbWUscj1lLmNoaWxkcmVuLHNbMF09ZSxzWzFdPXIsc1syXT1vLHNbM109YSk6KHI9c1sxXSxvPXNbMl0sYT1zWzNdKSxzWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9W10sc1s0XT1pKTppPXNbNF0seC51c2VFZmZlY3QodDAsaSksc1s1XSE9PXJ8fHNbNl0hPT1vfHxzWzddIT09YSk/KGw9KDAsYi5qc3gpKFwiZGl2XCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheVwiOiEwLGNsYXNzTmFtZTpvfSxhKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLHNbNV09cixzWzZdPW8sc1s3XT1hLHNbOF09bCk6bD1zWzhdLGx9O2Z1bmN0aW9uIHRKKCl7c2V0VGltZW91dChmdW5jdGlvbigpezAhPT10RyYmMD09LS10RyYmKHZvaWQgMCE9PXQmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10LHQ9dm9pZCAwKSx2b2lkIDAhPT1uJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1uLG49dm9pZCAwKSl9KX1mdW5jdGlvbiB0MCgpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoISh0RysrPjApKXt2YXIgZT13aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7ZT4wJiYodD1kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCxkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1cIlwiLmNvbmNhdChlLFwicHhcIikpLG49ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCJ9fSksdEp9ZnVuY3Rpb24gdDEoKXt2YXIgZSx0LG49KGU9W1wiXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgcGFkZGluZzogaW5pdGlhbDtcXG4gICAgdG9wOiAxMHZoO1xcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiB0MT1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIHQyKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDYpO3JldHVybihpWzBdIT09ZT8obz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2hpbGRyZW5cIl0pLHI9ZS5jaGlsZHJlbixpWzBdPWUsaVsxXT1yLGlbMl09byk6KHI9aVsxXSxvPWlbMl0pLGlbM10hPT1yfHxpWzRdIT09byk/KGE9KDAsYi5qc3gpKHRRLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sbyksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxpWzNdPXIsaVs0XT1vLGlbNV09YSk6YT1pWzVdLGF9dmFyIHQ0PWVzKHQxKCkpO2Z1bmN0aW9uIHQ1KGUpe3ZhciB0LG4scixvPSgwLEEuYykoNCksYT1NYXRoLm1pbihlLmVycm9yQ291bnQtZS5hY3RpdmVJZHgtMSwyKTtyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllciBlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0xXCIsY2hpbGRyZW46XCIxXCJ9KSxuPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllciBlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0yXCIsY2hpbGRyZW46XCIyXCJ9KSxvWzBdPXQsb1sxXT1uKToodD1vWzBdLG49b1sxXSksb1syXSE9PWE/KHI9KDAsYi5qc3gpKFwiZGl2XCIse1wiYXJpYS1oaWRkZW5cIjohMCxjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFja1wiLGNoaWxkcmVuOigwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stc3RhY2tcIixcImRhdGEtc3RhY2stY291bnRcIjphLGNoaWxkcmVuOlt0LG5dfSl9KSxvWzJdPWEsb1szXT1yKTpyPW9bM10scn1mdW5jdGlvbiB0MyhlKXt2YXIgdCxuPSgwLEEuYykoMikscj1lLmVudmlyb25tZW50TmFtZTtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWVudmlyb25tZW50LW5hbWUtbGFiZWxcIjohMCxjaGlsZHJlbjpyfSksblswXT1yLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gdDYoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHQ5KGUpe3ZhciB0LG4scj1udWxsPT1lP3ZvaWQgMDplLmdldFJvb3ROb2RlKCk7cmV0dXJuKHQ9cixudWxsIT0obj1TaGFkb3dSb290KSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbltTeW1ib2wuaGFzSW5zdGFuY2VdPyEhbltTeW1ib2wuaGFzSW5zdGFuY2VdKHQpOnQgaW5zdGFuY2VvZiBuKT9udWxsPT1yP3ZvaWQgMDpyLmFjdGl2ZUVsZW1lbnQ6bnVsbH1mdW5jdGlvbiB0OChlLHQsbixyLG8pe3ZhciBhLGksbD0oMCxBLmMpKDcpO2xbMF0hPT1ufHxsWzFdIT09cnx8bFsyXSE9PW98fGxbM10hPT1lfHxsWzRdIT09dD8oYT1mdW5jdGlvbigpe2lmKG4pe3ZhciBhLGk9b3x8KG51bGw9PShhPWUuY3VycmVudCk/dm9pZCAwOmEub3duZXJEb2N1bWVudCksbD1mdW5jdGlvbihuKXt2YXIgbyxhLGk9bi50YXJnZXQ7IShlLmN1cnJlbnQmJmUuY3VycmVudC5jb250YWlucyhpKSkmJihudWxsIT0obz1lLmN1cnJlbnQpJiZvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpJiZuLmNsaWVudFg+PWUuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LTEwJiZuLmNsaWVudFg8PWUuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCsxMCYmbi5jbGllbnRZPj1lLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLTEwJiZuLmNsaWVudFk8PWUuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20rMTB8fG51bGwhPShhPXQuY3VycmVudCkmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkmJm4uY2xpZW50WD49dC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtMTAmJm4uY2xpZW50WDw9dC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KzEwJiZuLmNsaWVudFk+PXQuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtMTAmJm4uY2xpZW50WTw9dC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSsxMHx8cihcIm91dHNpZGVcIikpfSxzPWZ1bmN0aW9uKGUpe1wiRXNjYXBlXCI9PT1lLmtleSYmcihcImVzY2FwZVwiKX07cmV0dXJuIG51bGw9PWl8fGkuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGwpLG51bGw9PWl8fGkuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixzKSxmdW5jdGlvbigpe251bGw9PWl8fGkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGwpLG51bGw9PWl8fGkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixzKX19fSxpPVtuLHIsbyxlLHRdLGxbMF09bixsWzFdPXIsbFsyXT1vLGxbM109ZSxsWzRdPXQsbFs1XT1hLGxbNl09aSk6KGE9bFs1XSxpPWxbNl0pLCgwLHgudXNlRWZmZWN0KShhLGkpfXZhciB0Nz1cImN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMSlcIixuZT0oMCx4LmZvcndhcmRSZWYpKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPSgwLEEuYykoOSksYT1lLnN0b3AsaT1lLmJsdXIsbD1lLnNpZGUscz1lLnN0eWxlLGM9ZS5oZWlnaHQsdT1cIlwiLmNvbmNhdChjLFwicHhcIik7b1swXSE9PWl8fG9bMV0hPT1hfHxvWzJdIT09c3x8b1szXSE9PXU/KG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCItLXN0b3BcIjphLFwiLS1ibHVyXCI6aSxcIi0taGVpZ2h0XCI6dX0scyksb1swXT1pLG9bMV09YSxvWzJdPXMsb1szXT11LG9bNF09bik6bj1vWzRdO3ZhciBkPW47cmV0dXJuIG9bNV0hPT10fHxvWzZdIT09bHx8b1s3XSE9PWQ/KHI9KDAsYi5qc3gpKFwiZGl2XCIse3JlZjp0LFwiYXJpYS1oaWRkZW5cIjohMCxcImRhdGEtbmV4dGpzLXNjcm9sbC1mYWRlclwiOiEwLGNsYXNzTmFtZTpcIm5leHRqcy1zY3JvbGwtZmFkZXJcIixcImRhdGEtc2lkZVwiOmwsc3R5bGU6ZH0pLG9bNV09dCxvWzZdPWwsb1s3XT1kLG9bOF09cik6cj1vWzhdLHJ9KTtmdW5jdGlvbiBudChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbm4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG50KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG50KGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfXZhciBucj0oMCx4LmZvcndhcmRSZWYpKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LEMsXyxrPSgwLEEuYykoMTMpO2tbMF0hPT1lPyh2PWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwibWVhc3VyZVwiXSksZz1lLmNoaWxkcmVuLHk9ZS5tZWFzdXJlLGtbMF09ZSxrWzFdPWcsa1syXT15LGtbM109dik6KGc9a1sxXSx5PWtbMl0sdj1rWzNdKTt2YXIgRT1ubigoMCx4LnVzZVN0YXRlKShudWxsKSwyKSxqPUVbMF0sUz1FWzFdLE89bm4oKG49aixyPXksbD0oMCxBLmMpKDcpLGM9KHM9bm4oKDAseC51c2VTdGF0ZSkoMCksMikpWzBdLHU9c1sxXSxmPShkPW5uKCgwLHgudXNlU3RhdGUpKCEwKSwyKSlbMF0scD1kWzFdLGxbMF0hPT1ufHxsWzFdIT09cj8obz1mdW5jdGlvbigpe2lmKHImJm4pe3ZhciBlLHQ9bmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uKHQpe3ZhciBuPW5uKHQsMSlbMF0uY29udGVudFJlY3Q7Y2xlYXJUaW1lb3V0KGUpLGU9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtwKCExKX0sMTAwKSx1KG4uaGVpZ2h0KX0pO3JldHVybiB0Lm9ic2VydmUobiksZnVuY3Rpb24oKXtyZXR1cm4gdC5kaXNjb25uZWN0KCl9fX0sYT1bcixuXSxsWzBdPW4sbFsxXT1yLGxbMl09byxsWzNdPWEpOihvPWxbMl0sYT1sWzNdKSwoMCx4LnVzZUVmZmVjdCkobyxhKSxsWzRdIT09Y3x8bFs1XSE9PWY/KGk9W2MsZl0sbFs0XT1jLGxbNV09ZixsWzZdPWkpOmk9bFs2XSxpKSwyKSxCPU9bMF0sUD1PWzFdP1wiYXV0b1wiOkI7cmV0dXJuKGtbNF0hPT1QPyh3PXtoZWlnaHQ6UCx0cmFuc2l0aW9uOlwiaGVpZ2h0IDI1MG1zIHZhcigtLXRpbWluZy1zd2lmdClcIn0sa1s0XT1QLGtbNV09dyk6dz1rWzVdLGtbNl0hPT1nPyhDPSgwLGIuanN4KShcImRpdlwiLHtyZWY6UyxjaGlsZHJlbjpnfSksa1s2XT1nLGtbN109Qyk6Qz1rWzddLGtbOF0hPT12fHxrWzldIT09dHx8a1sxMF0hPT13fHxrWzExXSE9PUMpPyhfPSgwLGIuanN4KShcImRpdlwiLChoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sdiksbT1tPXtyZWY6dCxzdHlsZTp3LGNoaWxkcmVuOkN9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGgsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobSkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobSkpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGgsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sZSkpfSksaCkpLGtbOF09dixrWzldPXQsa1sxMF09dyxrWzExXT1DLGtbMTJdPV8pOl89a1sxMl0sX30pO2Z1bmN0aW9uIG5vKGUpe3ZhciB0LG4scixvPSgwLEEuYykoNik7b1swXSE9PWU/KG49ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImZpeGVkXCJdKSx0PWUuZml4ZWQsb1swXT1lLG9bMV09dCxvWzJdPW4pOih0PW9bMV0sbj1vWzJdKTt2YXIgYT0hIXR8fHZvaWQgMDtyZXR1cm4gb1szXSE9PW58fG9bNF0hPT1hPyhyPSgwLGIuanN4KShcImRpdlwiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXCI6ITAsXCJkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3AtZml4ZWRcIjphfSxuKSksb1szXT1uLG9bNF09YSxvWzVdPXIpOnI9b1s1XSxyfWZ1bmN0aW9uIG5hKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBuaShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gbmwoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIG5zKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuYShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuYShlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBuYyhlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsdyxDLF8sayxFLGosUz0oMCxBLmMpKDY1KSxPPWUuZXJyb3JNZXNzYWdlLEI9ZS5lcnJvclR5cGUsUD1lLmNoaWxkcmVuLEk9ZS5lcnJvckNvZGUsej1lLmVycm9yQ291bnQsVD1lLmVycm9yLEQ9ZS5kZWJ1Z0luZm8sTD1lLmlzQnVpbGRFcnJvcixOPWUub25DbG9zZSxSPWUudmVyc2lvbkluZm8sTT1lLnJ1bnRpbWVFcnJvcnMsWj1lLmFjdGl2ZUlkeCxVPWUuc2V0QWN0aXZlSW5kZXgsRj1lLmlzVHVyYm9wYWNrLHE9ZS5kaWFsb2dSZXNpemVyUmVmLEg9ZS5nZW5lcmF0ZUVycm9ySW5mbyxWPWUucmVuZGVyZWQsJD1lLnRyYW5zaXRpb25EdXJhdGlvbk1zLFc9dm9pZCAwPT09Vnx8VixZPVwiXCIuY29uY2F0KCQsXCJtc1wiKTtTWzBdIT09WT8ocj17XCItLXRyYW5zaXRpb24tZHVyYXRpb25cIjpZfSxTWzBdPVksU1sxXT1yKTpyPVNbMV07dmFyIEs9cjtTWzJdIT09V3x8U1szXSE9PUs/KG89e1wiZGF0YS1yZW5kZXJlZFwiOlcsc3R5bGU6S30sU1syXT1XLFNbM109SyxTWzRdPW8pOm89U1s0XTt2YXIgWD1vLEc9bnMoeC51c2VTdGF0ZSghISQpLDIpLFE9R1swXSxKPUdbMV0sZWU9eC51c2VSZWYobnVsbCksZXQ9ISFJLGVuPXgudXNlUmVmKG51bGwpO3Q9ZW4sbj1XLCgwLHgudXNlRWZmZWN0KShmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGUpe2lmKFwiVGFiXCI9PT1lLmtleSYmbnVsbCE9PXIpe3ZhciB0LG4sbyxhPShuPSh0PXIucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknKSk/W3RbMF0sdFt0Lmxlbmd0aC0xXV06W10sbz0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KG4pfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KG4sMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHQ2KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHQ2KGUsdCl9fShuLG8pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxpPWFbMF0sbD1hWzFdLHM9dDkocik7ZS5zaGlmdEtleT9zPT09aSYmKG51bGw9PWx8fGwuZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCkpOnM9PT1sJiYobnVsbD09aXx8aS5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSl9fSxyPW51bGwsbz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYocj10LmN1cnJlbnQsbiludWxsPT1yfHxyLmZvY3VzKCksbnVsbD09cnx8ci5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpO2Vsc2UgdDkocil9KTtyZXR1cm4gZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQobyksbnVsbD09cnx8ci5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpfX0sW25dKSxTWzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9ZnVuY3Rpb24oZSl7aWYoZWUuY3VycmVudCl7dmFyIHQsbixyPSh0PWUuY3VycmVudFRhcmdldC5zY3JvbGxUb3AvMTcsTWF0aC5taW4oTWF0aC5tYXgodCwobj1ucyhbMCwxXSwyKSlbMF0pLG5bMV0pKTtlZS5jdXJyZW50LnN0eWxlLm9wYWNpdHk9U3RyaW5nKHIpfX0sU1s1XT1hKTphPVNbNV07dmFyIGVyPWE7U1s2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPWZ1bmN0aW9uKGUpe3ZhciB0PWUucHJvcGVydHlOYW1lLG49ZS50YXJnZXQ7XCJzY2FsZVwiPT09dCYmbj09PWVuLmN1cnJlbnQmJkooITEpfSxTWzZdPWkpOmk9U1s2XTt2YXIgZW89aTtTWzddIT09TD8obD0oMCxiLmpzeCkobm8se2ZpeGVkOkx9KSxTWzddPUwsU1s4XT1sKTpsPVNbOF0sU1s5XSE9PVp8fFNbMTBdIT09Rnx8U1sxMV0hPT1NfHxTWzEyXSE9PVV8fFNbMTNdIT09Uj8ocz0oMCxiLmpzeCkodFose3J1bnRpbWVFcnJvcnM6TSxhY3RpdmVJZHg6WixzZXRBY3RpdmVJbmRleDpVLHZlcnNpb25JbmZvOlIsaXNUdXJib3BhY2s6Rn0pLFNbOV09WixTWzEwXT1GLFNbMTFdPU0sU1sxMl09VSxTWzEzXT1SLFNbMTRdPXMpOnM9U1sxNF0sU1sxNV0hPT1JfHxTWzE2XSE9PWV0PyhjPWV0JiYoMCxiLmpzeCkodFMse2Vycm9yQ29kZTpJfSksU1sxNV09SSxTWzE2XT1ldCxTWzE3XT1jKTpjPVNbMTddO3ZhciBlYT0hUTtTWzE4XSE9PUI/KHU9KDAsYi5qc3gpKHR6LHtlcnJvclR5cGU6Qn0pLFNbMThdPUIsU1sxOV09dSk6dT1TWzE5XSxTWzIwXSE9PVQuZW52aXJvbm1lbnROYW1lPyhkPVQuZW52aXJvbm1lbnROYW1lJiYoMCxiLmpzeCkodDMse2Vudmlyb25tZW50TmFtZTpULmVudmlyb25tZW50TmFtZX0pLFNbMjBdPVQuZW52aXJvbm1lbnROYW1lLFNbMjFdPWQpOmQ9U1syMV0sU1syMl0hPT11fHxTWzIzXSE9PWQ/KGY9KDAsYi5qc3hzKShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1lcnJvci1sYWJlbC1ncm91cFwiOiEwLGNoaWxkcmVuOlt1LGRdfSksU1syMl09dSxTWzIzXT1kLFNbMjRdPWYpOmY9U1syNF0sU1syNV0hPT1EfHxTWzI2XSE9PVR8fFNbMjddIT09SD8ocD0oMCxiLmpzeCkodHgse2Vycm9yOlQsZGVidWdJbmZvOkQsZ2VuZXJhdGVFcnJvckluZm86SH0pLFNbMjVdPUQsU1syNl09VCxTWzI3XT1ILFNbMjhdPXApOnA9U1syOF0sU1syOV0hPT1JfHxTWzMwXSE9PWZ8fFNbMzFdIT09cD8oaD0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fZXJyb3JfdGl0bGVcIixcImRhdGEtbmV4dGpzLWVycm9yLWNvZGVcIjpJLGNoaWxkcmVuOltmLHBdfSksU1syOV09SSxTWzMwXT1mLFNbMzFdPXAsU1szMl09aCk6aD1TWzMyXSxTWzMzXSE9PU8/KG09KDAsYi5qc3gpKHRJLHtlcnJvck1lc3NhZ2U6T30pLFNbMzNdPU8sU1szNF09bSk6bT1TWzM0XSxTWzM1XSE9PWh8fFNbMzZdIT09bT8oZz0oMCxiLmpzeHMpKHRLLHtjaGlsZHJlbjpbaCxtXX0pLFNbMzVdPWgsU1szNl09bSxTWzM3XT1nKTpnPVNbMzddLFNbMzhdIT09UD8oeT0oMCxiLmpzeCkodFgse2NoaWxkcmVuOlB9KSxTWzM4XT1QLFNbMzldPXkpOnk9U1szOV0sU1s0MF0hPT1nfHxTWzQxXSE9PXk/KHY9KDAsYi5qc3hzKShlWSx7Y2hpbGRyZW46W2cseV19KSxTWzQwXT1nLFNbNDFdPXksU1s0Ml09dik6dj1TWzQyXSxTWzQzXSE9PXF8fFNbNDRdIT09ZWF8fFNbNDVdIT09dj8odz0oMCxiLmpzeCkobnIse3JlZjpxLG1lYXN1cmU6ZWEsXCJkYXRhLW5leHRqcy1kaWFsb2ctc2l6ZXJcIjohMCxjaGlsZHJlbjp2fSksU1s0M109cSxTWzQ0XT1lYSxTWzQ1XT12LFNbNDZdPXcpOnc9U1s0Nl07dmFyIGVpPW51bGwhPVo/WjowO3JldHVybiBTWzQ3XSE9PXp8fFNbNDhdIT09ZWk/KEM9KDAsYi5qc3gpKHQ1LHtlcnJvckNvdW50OnosYWN0aXZlSWR4OmVpfSksU1s0N109eixTWzQ4XT1laSxTWzQ5XT1DKTpDPVNbNDldLFNbNTBdIT09ZXR8fFNbNTFdIT09Tnx8U1s1Ml0hPT1jfHxTWzUzXSE9PXd8fFNbNTRdIT09Qz8oXz0oMCxiLmpzeHMpKHRXLHtvbkNsb3NlOk4sXCJkYXRhLWhhcy1mb290ZXJcIjpldCxvblNjcm9sbDplcixmb290ZXI6YyxjaGlsZHJlbjpbdyxDXX0pLFNbNTBdPWV0LFNbNTFdPU4sU1s1Ml09YyxTWzUzXT13LFNbNTRdPUMsU1s1NV09Xyk6Xz1TWzU1XSxTWzU2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhrPSgwLGIuanN4KShuZSx7cmVmOmVlLHNpZGU6XCJ0b3BcIixzdG9wOlwiNTAlXCIsYmx1cjpcIjRweFwiLGhlaWdodDo0OH0pLFNbNTZdPWspOms9U1s1Nl0sU1s1N10hPT1YfHxTWzU4XSE9PV98fFNbNTldIT09cz8oRT0oMCxiLmpzeHMpKFwiZGl2XCIsbmwobmkoe1wiZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RcIjohMCxvblRyYW5zaXRpb25FbmQ6ZW8scmVmOmVufSxYKSx7Y2hpbGRyZW46W3MsXyxrXX0pKSxTWzU3XT1YLFNbNThdPV8sU1s1OV09cyxTWzYwXT1FKTpFPVNbNjBdLFNbNjFdIT09WHx8U1s2Ml0hPT1FfHxTWzYzXSE9PWw/KGo9KDAsYi5qc3hzKSh0MixubChuaSh7fSxYKSx7Y2hpbGRyZW46W2wsRV19KSksU1s2MV09WCxTWzYyXT1FLFNbNjNdPWwsU1s2NF09aik6aj1TWzY0XSxqfXZhciBudT1cIlxcbiAgXCIuY29uY2F0KHQ0LFwiXFxuICBcIikuY29uY2F0KFwiXFxuICAuZXJyb3Itb3ZlcmxheS1kaWFsb2ctY29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBib3JkZXI6IHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKSB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpO1xcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWVudSk7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LWRpYWxvZy1zY3JvbGwge1xcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICB9XFxuXCIsXCJcXG4gIFwiKS5jb25jYXQoXCJcXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gaDEge1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMjApO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBtYXJnaW46IGNhbGMoMTZweCAqIDEuNSkgMDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRpdGxlLWgxKTtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgc21hbGwge1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0xKTtcXG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHNtYWxsID4gc3BhbiB7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gZGl2ID4gc21hbGwge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG1hcmdpbi10b3A6IDRweDtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBwID4gYSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXJcXG4gICAgPiAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci12ZXJzaW9uLXN0YXR1cyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAxNnB4O1xcbiAgICByaWdodDogMTZweDtcXG4gIH1cXG5cIixcIlxcbiAgXCIpLmNvbmNhdChcIlwiLFwiXFxuXFxuICBcIikuY29uY2F0KFwiXFxuICBbZGF0YS1uZXh0anMtZXJyb3Itb3ZlcmxheS1uYXZdIHtcXG4gICAgLS1zdHJva2UtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgLS1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgd2lkdGg6IDEwMCU7XFxuXFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgei1pbmRleDogMjtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gICAgdHJhbnNsYXRlOiB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpIHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCk7XFxuICAgIG1heC13aWR0aDogdmFyKC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoKTtcXG5cXG4gICAgLmVycm9yLW92ZXJsYXktbm90Y2gge1xcbiAgICAgIHRyYW5zbGF0ZTogY2FsYyh2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpICogLTEpO1xcbiAgICAgIHdpZHRoOiBhdXRvO1xcbiAgICAgIGhlaWdodDogdmFyKC0tbmV4dC1kaWFsb2ctbm90Y2gtaGVpZ2h0KTtcXG4gICAgICBwYWRkaW5nOiAxMnB4O1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xcbiAgICAgIGJvcmRlcjogdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zdHJva2UtY29sb3IpO1xcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcblxcbiAgICAgICZbZGF0YS1zaWRlPSdsZWZ0J10ge1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cykgMCAwIDA7XFxuXFxuICAgICAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsIHtcXG4gICAgICAgICAgcmlnaHQ6IC01NHB4O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgPiAqOm5vdCguZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsKSB7XFxuICAgICAgICAgIG1hcmdpbi1yaWdodDogLTEwcHg7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgICZbZGF0YS1zaWRlPSdyaWdodCddIHtcXG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKSAwIDA7XFxuXFxuICAgICAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsIHtcXG4gICAgICAgICAgbGVmdDogLTU0cHg7XFxuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgPiAqOm5vdCguZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsKSB7XFxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMTJweDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgLmVycm9yLW92ZXJsYXktbm90Y2gtdGFpbCB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IGNhbGModmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSAqIC0xKTtcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAgICAgei1pbmRleDogLTE7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAgIFtkYXRhLW5leHRqcy1lcnJvci1vdmVybGF5LW5hdl0ge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cykgdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKSAwIDA7XFxuICAgICAgYm9yZGVyOiB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLXN0cm9rZS1jb2xvcik7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpO1xcbiAgICAgIFxcbiAgICAgIC5lcnJvci1vdmVybGF5LW5vdGNoIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XFxuICAgICAgICBib3JkZXI6IDA7XFxuXFxuICAgICAgICAmW2RhdGEtc2lkZT1cXFwibGVmdFxcXCJdLCAmW2RhdGEtc2lkZT1cXFwicmlnaHRcXFwiXSB7XFxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsIHtcXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cIixcIlxcbiAgXCIpLmNvbmNhdChcIlxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbCB7XFxuICAgIHBhZGRpbmc6IDJweCA2cHg7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcmVkLTEwMCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1yZWQtOTAwKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgfVxcblwiLFwiXFxuICBcIikuY29uY2F0KFwiXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX3dyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB9XFxuXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2Mge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1yZWQtOTAwKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjMycHg7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xcbiAgfVxcblxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjLnRydW5jYXRlZCB7XFxuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19ncmFkaWVudF9vdmVybGF5IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICBoZWlnaHQ6IDg1cHg7XFxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcXG4gICAgICAxODBkZWcsXFxuICAgICAgcmdiYSgyNTAsIDI1MCwgMjUwLCAwKSAwJSxcXG4gICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCkgMTAwJVxcbiAgICApO1xcbiAgfVxcblxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19leHBhbmRfYnV0dG9uIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDEwcHg7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XFxuICAgIGJveC1zaGFkb3c6XFxuICAgICAgMHB4IDJweCAycHggdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0xMDApLFxcbiAgICAgIDBweCA4cHggOHB4IC04cHggdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0xMDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTMpO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xcbiAgfVxcblxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19leHBhbmRfYnV0dG9uOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgfVxcblwiLFwiXFxuICBcIikuY29uY2F0KFwiXFxuICAuZXJyb3Itb3ZlcmxheS10b29sYmFyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZ2FwOiA2cHg7XFxuICB9XFxuXFxuICAubm9kZWpzLWluc3BlY3Rvci1idXR0b24sXFxuICAuY29weS1lcnJvci1idXR0b24sXFxuICAuZG9jcy1saW5rLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yOCk7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yOCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21hbGwpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTQpO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICB9XFxuXFxuICAgICY6bm90KDpkaXNhYmxlZCk6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMTAwKTtcXG4gICAgfVxcblxcbiAgICAmOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0yMDApO1xcbiAgICB9XFxuXFxuICAgICY6ZGlzYWJsZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS10b29sYmFyLWJ1dHRvbi1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gIH1cXG5cIixcIlxcblxcbiAgW2RhdGEtbmV4dGpzLWVycm9yLWxhYmVsLWdyb3VwXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogOHB4O1xcbiAgfVxcblwiKTtmdW5jdGlvbiBuZCgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIHRvcDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgLyogc2Vjb25kYXJ5IHotaW5kZXgsIC0xIHRoYW4gdG9hc3Qgei1pbmRleCAqL1xcbiAgICB6LWluZGV4OiAyMTQ3NDgzNjQ2O1xcblxcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHBhZGRpbmc6IDEwdmggMTVweCAwO1xcbiAgfVxcblxcbiAgQG1lZGlhIChtYXgtaGVpZ2h0OiA4MTJweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgICBwYWRkaW5nOiAxNXB4IDE1cHggMDtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcF0ge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIHRvcDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2Ryb3ApO1xcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICAgIHotaW5kZXg6IC0xO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcC1maXhlZF0ge1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn12YXIgbmY9ZXMobmQoKSk7ZnVuY3Rpb24gbnAoZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoOSksbD1lLmZpbGUscz1lLmxvY2F0aW9uLGM9bnVsbCE9KHQ9bnVsbD09cz92b2lkIDA6cy5saW5lKT90OjEsdT1udWxsIT0obj1udWxsPT1zP3ZvaWQgMDpzLmNvbHVtbik/bjoxO2lbMF0hPT1sfHxpWzFdIT09Y3x8aVsyXSE9PXU/KHI9e2ZpbGU6bCxsaW5lMTpjLGNvbHVtbjE6dX0saVswXT1sLGlbMV09YyxpWzJdPXUsaVszXT1yKTpyPWlbM107dmFyIGQ9ZVMociksZj1zP1wiOlwiLmNvbmNhdChzLmxpbmUsXCI6XCIpLmNvbmNhdChzLmNvbHVtbik6bnVsbDtyZXR1cm4gaVs0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLGIuanN4cykoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIn0pLCgwLGIuanN4KShcInBvbHlsaW5lXCIse3BvaW50czpcIjE1IDMgMjEgMyAyMSA5XCJ9KSwoMCxiLmpzeCkoXCJsaW5lXCIse3gxOlwiMTBcIix5MTpcIjE0XCIseDI6XCIyMVwiLHkyOlwiM1wifSldfSksaVs0XT1vKTpvPWlbNF0saVs1XSE9PWx8fGlbNl0hPT1kfHxpWzddIT09Zj8oYT0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmtcIjohMCxcImRhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rLWltcG9ydC10cmFjZVwiOiEwLHJvbGU6XCJsaW5rXCIsb25DbGljazpkLHRpdGxlOlwiQ2xpY2sgdG8gb3BlbiBpbiB5b3VyIGVkaXRvclwiLGNoaWxkcmVuOltsLGYsb119KSxpWzVdPWwsaVs2XT1kLGlbN109ZixpWzhdPWEpOmE9aVs4XSxhfWZ1bmN0aW9uIG5oKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgbm09ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZD1lLmNvbnRlbnQsZj14LnVzZU1lbW8oZnVuY3Rpb24oKXt2YXIgZSx0LG47cmV0dXJuIHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUuc2hpZnQoKTtpZighcilyZXR1cm4gbnVsbDt2YXIgbz0odD1yLnNwbGl0KFwiOlwiLDMpLG49MyxmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDMpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuaChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuaChlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksYT1vWzBdLGk9b1sxXSxsPW9bMl0scz1OdW1iZXIoaSksYz1OdW1iZXIobCksdT0hTnVtYmVyLmlzTmFOKHMpJiYhTnVtYmVyLmlzTmFOKGMpO3JldHVybntmaWxlTmFtZTp1P2E6cixsb2NhdGlvbjp1P3tsaW5lMTpzLGNvbHVtbjE6Y306dm9pZCAwfX0oZT1kLnNwbGl0KFwiXFxuXCIpKSxuPWZ1bmN0aW9uKGUpe2lmKGUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4vUmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3I6Ly50ZXN0KGUpfSl8fGUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4vSW1wb3J0IHRyYWNlIGZvciByZXF1ZXN0ZWQgbW9kdWxlOi8udGVzdChlKX0pKXtmb3IodmFyIHQ9W107Ly4rXFwuLisvLnRlc3QoZVtlLmxlbmd0aC0xXSkmJiFlW2UubGVuZ3RoLTFdLmluY2x1ZGVzKFwiOlwiKTspe3ZhciBuPWUucG9wKCkudHJpbSgpO3QudW5zaGlmdChuKX1yZXR1cm4gdH1yZXR1cm5bXX0oZSkse2ZpbGU6dCxzb3VyY2U6ZS5qb2luKFwiXFxuXCIpLGltcG9ydFRyYWNlRmlsZXM6bn19LFtkXSkscD1mLmZpbGUsaD1mLnNvdXJjZSxtPWYuaW1wb3J0VHJhY2VGaWxlcyxnPXgudXNlTWVtbyhmdW5jdGlvbigpe3JldHVybiBlVSgpLmFuc2lUb0pzb24oaCx7anNvbjohMCx1c2VfY2xhc3NlczohMCxyZW1vdmVfZW1wdHk6ITB9KX0sW2hdKTtjb25zb2xlLmxvZyh7ZmlsZTpwfSk7dmFyIHk9ZVMoe2ZpbGU6bnVsbD09cD92b2lkIDA6cC5maWxlTmFtZSxsaW5lMTpudWxsIT0oaT1udWxsPT1wfHxudWxsPT0odD1wLmxvY2F0aW9uKT92b2lkIDA6dC5saW5lMSk/aToxLGNvbHVtbjE6bnVsbCE9KGw9bnVsbD09cHx8bnVsbD09KG49cC5sb2NhdGlvbik/dm9pZCAwOm4uY29sdW1uMSk/bDoxfSksdj17ZmlsZTpudWxsIT0ocz1udWxsPT1wP3ZvaWQgMDpwLmZpbGVOYW1lKT9zOm51bGwsbWV0aG9kTmFtZTpcIlwiLGFyZ3VtZW50czpbXSxsaW5lMTpudWxsIT0oYz1udWxsPT1wfHxudWxsPT0ocj1wLmxvY2F0aW9uKT92b2lkIDA6ci5saW5lMSk/YzpudWxsLGNvbHVtbjE6bnVsbCE9KHU9bnVsbD09cHx8bnVsbD09KG89cC5sb2NhdGlvbik/dm9pZCAwOm8uY29sdW1uMSk/dTpudWxsfSxBPW51bGw9PXZ8fG51bGw9PShhPXYuZmlsZSk/dm9pZCAwOmEuc3BsaXQoXCIuXCIpLnBvcCgpO3JldHVybigwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jb2RlZnJhbWVcIjohMCxjaGlsZHJlbjpbKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtaGVhZGVyXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWxpbmtcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixjaGlsZHJlbjooMCxiLmpzeCkoZVQse2xhbmc6QX0pfSksKDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtdGV4dFwiOiEwLGNoaWxkcmVuOmVqKHYpfSksKDAsYi5qc3gpKFwiYnV0dG9uXCIse1wiYXJpYS1sYWJlbFwiOlwiT3BlbiBpbiBlZGl0b3JcIixcImRhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rLXNvdXJjZS1maWxlXCI6ITAsb25DbGljazp5LGNoaWxkcmVuOigwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1pY29uXCIsXCJkYXRhLWljb25cIjpcInJpZ2h0XCIsY2hpbGRyZW46KDAsYi5qc3gpKGVJLHt3aWR0aDoxNixoZWlnaHQ6MTZ9KX0pfSldfSl9KSwoMCxiLmpzeCkoXCJwcmVcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1wcmVcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtbGluZXNcIixjaGlsZHJlbjpbZy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxiLmpzeCkoXCJzcGFuXCIse3N0eWxlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe2NvbG9yOmUuZmc/XCJ2YXIoLS1jb2xvci1cIi5jb25jYXQoZS5mZyxcIilcIik6dm9pZCAwfSxcImJvbGRcIj09PWUuZGVjb3JhdGlvbj97Zm9udFdlaWdodDo1MDB9OlwiaXRhbGljXCI9PT1lLmRlY29yYXRpb24/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp2b2lkIDApLGNoaWxkcmVuOigwLGIuanN4KShldix7dGV4dDplLmNvbnRlbnR9KX0sXCJ0ZXJtaW5hbC1lbnRyeS1cIi5jb25jYXQodCkpfSksbS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuKDAsYi5qc3gpKG5wLHtpc1NvdXJjZUZpbGU6ITEsZmlsZTplfSxlKX0pXX0pfSldfSl9LG5nPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3BsaXQoXCJcXG5cIik7cmV0dXJuIGVxKCkodFsxXXx8XCJcIikucmVwbGFjZSgvXkVycm9yOiAvLFwiXCIpfSxueT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkPSgwLEEuYykoMTkpO2RbMF0hPT1lPyhvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJtZXNzYWdlXCJdKSxyPWUubWVzc2FnZSxkWzBdPWUsZFsxXT1yLGRbMl09byk6KHI9ZFsxXSxvPWRbMl0pLGRbM10hPT1yPyhhPUVycm9yKHIpLGRbM109cixkWzRdPWEpOmE9ZFs0XTt2YXIgZj1hO2RbNV0hPT1yPyhsPW5nKHIpfHxcIkZhaWxlZCB0byBjb21waWxlXCIsZFs1XT1yLGRbNl09bCk6bD1kWzZdLGk9bCxkWzddIT09aXx8ZFs4XSE9PXJ8fGRbOV0hPT1vLnZlcnNpb25JbmZvLmluc3RhbGxlZD8ocz1mdW5jdGlvbigpe3ZhciBlPVtdO2lmKGUucHVzaChcIiMjIEVycm9yIFR5cGVcXG5CdWlsZCBFcnJvclwiKSxpJiZlLnB1c2goXCIjIyBFcnJvciBNZXNzYWdlXFxuXCIuY29uY2F0KGkpKSxyKXt2YXIgdD1lcSgpKHIpO2UucHVzaChcIiMjIEJ1aWxkIE91dHB1dFxcblwiLmNvbmNhdCh0KSl9cmV0dXJuXCJcIi5jb25jYXQoZS5qb2luKFwiXFxuXFxuXCIpLFwiXFxuXFxuTmV4dC5qcyB2ZXJzaW9uOiBcIikuY29uY2F0KG8udmVyc2lvbkluZm8uaW5zdGFsbGVkLFwiIChcIikuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9CVU5ETEVSLFwiKVxcblwiKX0sZFs3XT1pLGRbOF09cixkWzldPW8udmVyc2lvbkluZm8uaW5zdGFsbGVkLGRbMTBdPXMpOnM9ZFsxMF07dmFyIHA9cztyZXR1cm4oZFsxMV0hPT1yPyhjPSgwLGIuanN4KShubSx7Y29udGVudDpyfSksZFsxMV09cixkWzEyXT1jKTpjPWRbMTJdLGRbMTNdIT09Znx8ZFsxNF0hPT1pfHxkWzE1XSE9PXB8fGRbMTZdIT09b3x8ZFsxN10hPT1jKT8odT0oMCxiLmpzeCkobmMsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7ZXJyb3JUeXBlOlwiQnVpbGQgRXJyb3JcIixlcnJvck1lc3NhZ2U6aSxvbkNsb3NlOm52LGVycm9yOmYsZ2VuZXJhdGVFcnJvckluZm86cH0sbyksbj1uPXtjaGlsZHJlbjpjfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxkWzEzXT1mLGRbMTRdPWksZFsxNV09cCxkWzE2XT1vLGRbMTddPWMsZFsxOF09dSk6dT1kWzE4XSx1fTtmdW5jdGlvbiBudigpe312YXIgbmI9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmPSgwLEEuYykoMjYpLHA9ZS5mcmFtZSxoPW51bGwhPSh0PXAub3JpZ2luYWxTdGFja0ZyYW1lKT90OnAuc291cmNlU3RhY2tGcmFtZSxtPSEhcC5vcmlnaW5hbENvZGVGcmFtZTtmWzBdIT09aHx8ZlsxXSE9PW0/KG49bT97ZmlsZTpoLmZpbGUsbGluZTE6bnVsbCE9KHI9aC5saW5lMSk/cjoxLGNvbHVtbjE6bnVsbCE9KG89aC5jb2x1bW4xKT9vOjF9OnZvaWQgMCxmWzBdPWgsZlsxXT1tLGZbMl09bik6bj1mWzJdO3ZhciBnPWVTKG4pO2ZbM10hPT1oPyhhPWVqKGgpLGZbM109aCxmWzRdPWEpOmE9Zls0XTt2YXIgeT1hO2lmKCF5KXJldHVybiBudWxsO3ZhciB2PSFtO3JldHVybiBmWzVdIT09aC5tZXRob2ROYW1lPyhpPSgwLGIuanN4KShldix7dGV4dDpoLm1ldGhvZE5hbWV9KSxmWzVdPWgubWV0aG9kTmFtZSxmWzZdPWkpOmk9Zls2XSxmWzddIT09aC5tZXRob2ROYW1lfHxmWzhdIT09bXx8Zls5XSE9PWc/KGw9bSYmKDAsYi5qc3gpKFwiYnV0dG9uXCIse29uQ2xpY2s6ZyxjbGFzc05hbWU6XCJvcGVuLWluLWVkaXRvci1idXR0b25cIixcImFyaWEtbGFiZWxcIjpcIk9wZW4gXCIuY29uY2F0KGgubWV0aG9kTmFtZSxcIiBpbiBlZGl0b3JcIiksY2hpbGRyZW46KDAsYi5qc3gpKGVJLHt3aWR0aDoxNixoZWlnaHQ6MTZ9KX0pLGZbN109aC5tZXRob2ROYW1lLGZbOF09bSxmWzldPWcsZlsxMF09bCk6bD1mWzEwXSxmWzExXSE9PXAuZXJyb3J8fGZbMTJdIT09cC5yZWFzb24/KHM9cC5lcnJvcj8oMCxiLmpzeCkoXCJidXR0b25cIix7Y2xhc3NOYW1lOlwic291cmNlLW1hcHBpbmctZXJyb3ItYnV0dG9uXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmVycm9yKHAucmVhc29uKX0sdGl0bGU6XCJTb3VyY2VtYXBwaW5nIGZhaWxlZC4gQ2xpY2sgdG8gbG9nIGNhdXNlIG9mIGVycm9yLlwiLGNoaWxkcmVuOigwLGIuanN4KShleix7d2lkdGg6MTYsaGVpZ2h0OjE2fSl9KTpudWxsLGZbMTFdPXAuZXJyb3IsZlsxMl09cC5yZWFzb24sZlsxM109cyk6cz1mWzEzXSxmWzE0XSE9PWl8fGZbMTVdIT09bHx8ZlsxNl0hPT1zPyhjPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY2FsbC1zdGFjay1mcmFtZS1tZXRob2QtbmFtZVwiLGNoaWxkcmVuOltpLGwsc119KSxmWzE0XT1pLGZbMTVdPWwsZlsxNl09cyxmWzE3XT1jKTpjPWZbMTddLGZbMThdIT09eXx8ZlsxOV0hPT1tPyh1PSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiY2FsbC1zdGFjay1mcmFtZS1maWxlLXNvdXJjZVwiLFwiZGF0YS1oYXMtc291cmNlXCI6bSxjaGlsZHJlbjp5fSksZlsxOF09eSxmWzE5XT1tLGZbMjBdPXUpOnU9ZlsyMF0sZlsyMV0hPT1wLmlnbm9yZWR8fGZbMjJdIT09dnx8ZlsyM10hPT1jfHxmWzI0XSE9PXU/KGQ9KDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVcIjohMCxcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWUtbm8tc291cmNlXCI6dixcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWUtaWdub3JlZFwiOnAuaWdub3JlZCxjaGlsZHJlbjpbYyx1XX0pLGZbMjFdPXAuaWdub3JlZCxmWzIyXT12LGZbMjNdPWMsZlsyNF09dSxmWzI1XT1kKTpkPWZbMjVdLGR9O2Z1bmN0aW9uIG5BKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOC43MDcyMiAyLjM5NjQxQzguMzE2NyAyLjAwNTg4IDcuNjgzNTMgMi4wMDU4OCA3LjI5MzAxIDIuMzk2NDFMNC40Njk3OCA1LjIxOTYzTDMuOTM5NDUgNS43NDk5Nkw1LjAwMDExIDYuODEwNjJMNS41MzA0NCA2LjI4MDI5TDguMDAwMTEgMy44MTA2MkwxMC40Njk4IDYuMjgwMjlMMTEuMDAwMSA2LjgxMDYyTDEyLjA2MDggNS43NDk5NkwxMS41MzA0IDUuMjE5NjNMOC43MDcyMiAyLjM5NjQxWk01LjUzMDQ0IDkuNzE5NjNMNS4wMDAxMSA5LjE4OTNMMy45Mzk0NSAxMC4yNUw0LjQ2OTc4IDEwLjc4MDNMNy4yOTMwMSAxMy42MDM1QzcuNjgzNTMgMTMuOTk0IDguMzE2NyAxMy45OTQgOC43MDcyMiAxMy42MDM1TDExLjUzMDQgMTAuNzgwM0wxMi4wNjA4IDEwLjI1TDExLjAwMDEgOS4xODkzTDEwLjQ2OTggOS43MTk2M0w4LjAwMDExIDEyLjE4OTNMNS41MzA0NCA5LjcxOTYzWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBueCgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWNvbnRhaW5lcl0ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIG1hcmdpbi10b3A6IDhweDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWhlYWRlcl0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIG1pbi1oZWlnaHQ6IHZhcigtLXNpemUtMjgpO1xcbiAgICBwYWRkaW5nOiA4cHggOHB4IDEycHggNHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLXRpdGxlXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuXFxuICAgIG1hcmdpbjogMDtcXG5cXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1jb3VudF0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjApO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgICBnYXA6IDRweDtcXG5cXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTExKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcblxcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1pZ25vcmVkLWxpc3QtdG9nZ2xlLWJ1dHRvbl0ge1xcbiAgICBhbGw6IHVuc2V0O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDZweDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICAgIHBhZGRpbmc6IDRweCA2cHg7XFxuICAgIG1hcmdpbi1yaWdodDogLTZweDtcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNTBtcyBlYXNlO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgfVxcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBueD1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIG53KGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLEEuYykoMTcpLHM9ZS5mcmFtZXMsYz1lLmlzSWdub3JlTGlzdE9wZW4sdT1lLmlnbm9yZWRGcmFtZXNUYWxseSxkPWUub25Ub2dnbGVJZ25vcmVMaXN0O3JldHVybiBsWzBdIT09cy5sZW5ndGg/KHQ9KDAsYi5qc3hzKShcInBcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLXRpdGxlXCI6ITAsY2hpbGRyZW46W1wiQ2FsbCBTdGFjayBcIiwoMCxiLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1jb3VudFwiOiEwLGNoaWxkcmVuOnMubGVuZ3RofSldfSksbFswXT1zLmxlbmd0aCxsWzFdPXQpOnQ9bFsxXSxsWzJdIT09dXx8bFszXSE9PWN8fGxbNF0hPT1kPyhuPXU+MCYmKDAsYi5qc3hzKShcImJ1dHRvblwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2staWdub3JlZC1saXN0LXRvZ2dsZS1idXR0b25cIjpjLG9uQ2xpY2s6ZCxjaGlsZHJlbjpbXCJcIi5jb25jYXQoYz9cIkhpZGVcIjpcIlNob3dcIixcIiBcIikuY29uY2F0KHUsXCIgaWdub3JlLWxpc3RlZCBmcmFtZShzKVwiKSwoMCxiLmpzeCkobkEse30pXX0pLGxbMl09dSxsWzNdPWMsbFs0XT1kLGxbNV09bik6bj1sWzVdLGxbNl0hPT10fHxsWzddIT09bj8ocj0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1oZWFkZXJcIjohMCxjaGlsZHJlbjpbdCxuXX0pLGxbNl09dCxsWzddPW4sbFs4XT1yKTpyPWxbOF0sbFs5XSE9PXN8fGxbMTBdIT09Yz8obFsxMl0hPT1jPyhhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIWUuaWdub3JlZHx8Yz8oMCxiLmpzeCkobmIse2ZyYW1lOmV9LHQpOm51bGx9LGxbMTJdPWMsbFsxM109YSk6YT1sWzEzXSxvPXMubWFwKGEpLGxbOV09cyxsWzEwXT1jLGxbMTFdPW8pOm89bFsxMV0sbFsxNF0hPT1yfHxsWzE1XSE9PW8/KGk9KDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stY29udGFpbmVyXCI6ITAsY2hpbGRyZW46W3Isb119KSxsWzE0XT1yLGxbMTVdPW8sbFsxNl09aSk6aT1sWzE2XSxpfXZhciBuQz1lcyhueCgpKTtmdW5jdGlvbiBuXyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbmsoZSl7dmFyIHQsbixyPWUuZnJhbWVzLG89ZS5kaWFsb2dSZXNpemVyUmVmLGE9KDAseC51c2VSZWYpKE5hTiksaT0odD0oMCx4LnVzZVN0YXRlKSghMSksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG5fKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5fKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxsPWlbMF0scz1pWzFdLGM9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiByLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlKyArISF0Lmlnbm9yZWR9LDApfSxbcl0pO3JldHVybigwLGIuanN4KShudyx7ZnJhbWVzOnIsaXNJZ25vcmVMaXN0T3BlbjpsLG9uVG9nZ2xlSWdub3JlTGlzdDpmdW5jdGlvbigpe3ZhciBlPW51bGw9PW8/dm9pZCAwOm8uY3VycmVudDtpZihlKXt2YXIgdD0obnVsbD09ZT92b2lkIDA6ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkuaGVpZ2h0O2EuY3VycmVudHx8KGEuY3VycmVudD10KSxsPyhlLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChhLmN1cnJlbnQsXCJweFwiKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsZnVuY3Rpb24gdCgpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIix0KSxzKCExKX0pKTpzKCEwKX19LGlnbm9yZWRGcmFtZXNUYWxseTpjfSl9ZnVuY3Rpb24gbkUoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSg4KTtsWzBdIT09ZT8ocj12b2lkIDA9PT1lP3t9OmUsbFswXT1lLGxbMV09cik6cj1sWzFdO3ZhciBzPXIuY29sbGFwc2VkO3JldHVybihsWzJdIT09cz8obz1cImJvb2xlYW5cIj09dHlwZW9mIHM/e3N0eWxlOnt0cmFuc2Zvcm06cz92b2lkIDA6XCJyb3RhdGUoOTBkZWcpXCJ9fTp7fSxsWzJdPXMsbFszXT1vKTpvPWxbM10sbFs0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPSgwLGIuanN4KShcInBhdGhcIix7c3R5bGU6e2ZpbGw6XCJ2YXIoLS1jb2xvci1mb250KVwifSxmaWxsUnVsZTpcImV2ZW5vZGRcIixkOlwibTYuNzUgMy45NC41My41MyAyLjgyNCAyLjgyM2ExIDEgMCAwIDEgMCAxLjQxNEw3LjI4IDExLjUzbC0uNTMuNTNMNS42OSAxMWwuNTMtLjUzTDguNjkgOCA2LjIyIDUuNTMgNS42OSA1bDEuMDYtMS4wNlpcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pLGxbNF09YSk6YT1sWzRdLGxbNV0hPT1zfHxsWzZdIT09byk/KGk9KDAsYi5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWNoZXZyb24taWNvblwiOiEwLFwiZGF0YS1jb2xsYXBzZWRcIjpzLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJub25lXCJ9LG8pLG49bj17Y2hpbGRyZW46YX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksbFs1XT1zLGxbNl09byxsWzddPWkpOmk9bFs3XSxpfWZ1bmN0aW9uIG5qKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBuUyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbmooZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbmooZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbk8oZSl7dmFyIHQsbixyLG8sYSxpLGwscz0oMCxBLmMpKDE1KSxjPWUucmVhY3RPdXRwdXRDb21wb25lbnREaWZmLHU9blMoKDAseC51c2VTdGF0ZSkoITApLDIpLGQ9dVswXSxmPXVbMV07c1swXSE9PWM/KG49W10sYy5zcGxpdChcIlxcblwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIHIsbyxhPVwiK1wiPT09ZVswXXx8XCItXCI9PT1lWzBdLGk9XCI+XCI9PT1lWzBdLGw9YXx8aSxzPWw/ZVswXTpcIlwiLGM9bD9lLmluZGV4T2Yocyk6LTEsdT1uUyhsP1tlLnNsaWNlKDAsYyksZS5zbGljZShjKzEpXTpbZSxcIlwiXSwyKSxkPXVbMF0sZj11WzFdO2E/bi5wdXNoKCgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmVcIjohMCxcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmZcIjpcIitcIj09PXM/XCJhZGRcIjpcInJlbW92ZVwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJzcGFuXCIse2NoaWxkcmVuOltkLCgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnblwiOiEwLGNoaWxkcmVuOnN9KSxmLFwiXFxuXCJdfSl9LFwiY29tcC1kaWZmXCIrdCkpOm4ucHVzaCgoMCxiLmpzeHMpKFwic3BhblwiLChyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lXCI6ITB9LGk/e1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZlwiOlwiZXJyb3JcIn06dm9pZCAwKSxvPW89e2NoaWxkcmVuOltkLCgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnblwiOiEwLGNoaWxkcmVuOnN9KSxmLFwiXFxuXCJdfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhyLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG8pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGUpKX0pLHIpLFwiY29tcC1kaWZmXCIrdCkpfSksc1swXT1jLHNbMV09bik6bj1zWzFdLHQ9bjt2YXIgcD0hZDtyZXR1cm4gc1syXSE9PWQ/KHI9ZnVuY3Rpb24oKXtyZXR1cm4gZighZCl9LG89KDAsYi5qc3gpKG5FLHtjb2xsYXBzZWQ6ZH0pLHNbMl09ZCxzWzNdPXIsc1s0XT1vKToocj1zWzNdLG89c1s0XSksc1s1XSE9PXB8fHNbNl0hPT1yfHxzWzddIT09bz8oYT0oMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWV4cGFuZGVkXCI6cCxcImFyaWEtbGFiZWxcIjpcImNvbXBsZXRlIENvbXBvbmVudCBTdGFja1wiLFwiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1jb2xsYXBzZS1idXR0b25cIjohMCxvbkNsaWNrOnIsY2hpbGRyZW46b30pLHNbNV09cCxzWzZdPXIsc1s3XT1vLHNbOF09YSk6YT1zWzhdLHNbOV0hPT10PyhpPSgwLGIuanN4KShcInByZVwiLHtjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2NvbXBvbmVudC1zdGFja1wiLGNoaWxkcmVuOigwLGIuanN4KShcImNvZGVcIix7Y2hpbGRyZW46dH0pfSksc1s5XT10LHNbMTBdPWkpOmk9c1sxMF0sc1sxMV0hPT1kfHxzWzEyXSE9PWF8fHNbMTNdIT09aT8obD0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbFwiOiEwLFwiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1jb2xsYXBzZVwiOmQsY2hpbGRyZW46W2EsaV19KSxzWzExXT1kLHNbMTJdPWEsc1sxM109aSxzWzE0XT1sKTpsPXNbMTRdLGx9dmFyIG5CPVN5bWJvbC5mb3IoXCJOZXh0anNFcnJvclwiKTtmdW5jdGlvbiBuUChlKXtyZXR1cm4gZVtuQl18fG51bGx9ZnVuY3Rpb24gbkkoZSx0LG4scixvLGEsaSl7dHJ5e3ZhciBsPWVbYV0oaSkscz1sLnZhbHVlfWNhdGNoKGUpe24oZSk7cmV0dXJufWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gbnooZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixvKXt2YXIgYT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gaShlKXtuSShhLHIsbyxpLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtuSShhLHIsbyxpLGwsXCJ0aHJvd1wiLGUpfWkodm9pZCAwKX0pfX1mdW5jdGlvbiBuVChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gbkQoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIG5MKGUsdCl7dmFyIG4scixvLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX0saT1PYmplY3QuY3JlYXRlKChcImZ1bmN0aW9uXCI9PXR5cGVvZiBJdGVyYXRvcj9JdGVyYXRvcjpPYmplY3QpLnByb3RvdHlwZSk7cmV0dXJuIGkubmV4dD1sKDApLGkudGhyb3c9bCgxKSxpLnJldHVybj1sKDIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiBsKGwpe3JldHVybiBmdW5jdGlvbihzKXt2YXIgYz1bbCxzXTtpZihuKXRocm93IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpJiYoaT0wLGNbMF0mJihhPTApKSxhOyl0cnl7aWYobj0xLHImJihvPTImY1swXT9yLnJldHVybjpjWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsY1sxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoYz1bMiZjWzBdLG8udmFsdWVdKSxjWzBdKXtjYXNlIDA6Y2FzZSAxOm89YzticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6Y1sxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9Y1sxXSxjPVswXTtjb250aW51ZTtjYXNlIDc6Yz1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG89KG89YS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSkmJig2PT09Y1swXXx8Mj09PWNbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWNbMF0mJighb3x8Y1sxXT5vWzBdJiZjWzFdPG9bM10pKXthLmxhYmVsPWNbMV07YnJlYWt9aWYoNj09PWNbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89YzticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGMpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1jPXQuY2FsbChlLGEpfWNhdGNoKGUpe2M9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZjWzBdKXRocm93IGNbMV07cmV0dXJue3ZhbHVlOmNbMF0/Y1sxXTp2b2lkIDAsZG9uZTohMH19fX12YXIgbk49ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuW107aWYoXCJ1c2VcImluIHgpe3ZhciB0PWUuZnJhbWVzO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgRXJyb3IoXCJJbnZhcmlhbnQ6IGZyYW1lcyBtdXN0IGJlIGEgZnVuY3Rpb24gd2hlbiB0aGUgUmVhY3QgdmVyc2lvbiBoYXMgUmVhY3QudXNlLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuXCIpO3JldHVybiB4LnVzZSh0KCkpfWlmKCFBcnJheS5pc0FycmF5KGUuZnJhbWVzKSl0aHJvdyBFcnJvcihcIkludmFyaWFudDogZnJhbWVzIG11c3QgYmUgYW4gYXJyYXkgd2hlbiB0aGUgUmVhY3QgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIFJlYWN0LnVzZS4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzLlwiKTtyZXR1cm4gZS5mcmFtZXN9O2Z1bmN0aW9uIG5SKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDgpLGw9ZS5lcnJvcixzPWUuZGlhbG9nUmVzaXplclJlZixjPW5OKGwpLHU9Yy5maW5kSW5kZXgobk0pO3JldHVybiB0PW51bGwhPShuPWNbdV0pP246bnVsbCxpWzBdIT09dD8ocj10JiYoMCxiLmpzeCkoZSQse3N0YWNrRnJhbWU6dC5vcmlnaW5hbFN0YWNrRnJhbWUsY29kZUZyYW1lOnQub3JpZ2luYWxDb2RlRnJhbWV9KSxpWzBdPXQsaVsxXT1yKTpyPWlbMV0saVsyXSE9PXN8fGlbM10hPT1jPyhvPWMubGVuZ3RoPjAmJigwLGIuanN4KShuayx7ZGlhbG9nUmVzaXplclJlZjpzLGZyYW1lczpjfSksaVsyXT1zLGlbM109YyxpWzRdPW8pOm89aVs0XSxpWzVdIT09cnx8aVs2XSE9PW8/KGE9KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbcixvXX0pLGlbNV09cixpWzZdPW8saVs3XT1hKTphPWlbN10sYX1mdW5jdGlvbiBuTShlKXtyZXR1cm4hZS5pZ25vcmVkJiYhIWUub3JpZ2luYWxDb2RlRnJhbWUmJiEhZS5vcmlnaW5hbFN0YWNrRnJhbWV9dmFyIG5aPVwiXFxuICBcIi5jb25jYXQoXCJcXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sXSB7XFxuICAgIHBhZGRpbmc6IDhweCAwO1xcbiAgICBtYXJnaW46IDhweCAwO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN5bnRheC1jb25zdGFudCk7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjMzZW07IC8qIDE2cHggaW4gMTJweCBmb250IHNpemUgKi9cXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmVdIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xcbiAgICBsaW5lLWhlaWdodDogY2FsYyg1IC8gMyk7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0nZXJyb3InXSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFtYmVyLTEwMCk7XFxuICAgIGJveC1zaGFkb3c6IDJweCAwIDAgMCB2YXIoLS1jb2xvci1hbWJlci05MDApIGluc2V0O1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWNvbGxhcHNlLWJ1dHRvbl0ge1xcbiAgICBhbGw6IHVuc2V0O1xcbiAgICBtYXJnaW4tbGVmdDogMTJweDtcXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgfVxcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J2FkZCddIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JlZW4tMzAwKTtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmUtc2lnbl0ge1xcbiAgICBtYXJnaW4tbGVmdDogY2FsYygyNHB4ICogLTEpO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0nYWRkJ11cXG4gICAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi05MDApO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J3JlbW92ZSddIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcmVkLTMwMCk7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0ncmVtb3ZlJ11cXG4gICAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1yZWQtOTAwKTtcXG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMjRweCAqIC0xKTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAyNHB4O1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmY9J2Vycm9yJ11cXG4gICAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xcbiAgfVxcbiAgXFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0taGludF0ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgIGZvbnQtc2l6ZTogMDtcXG4gICAgaGVpZ2h0OiAwO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLXRhZy1hZGphY2VudD0nZmFsc2UnXSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnRzLTEpO1xcbiAgfVxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fY29tcG9uZW50LXN0YWNrIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtY29sbGFwc2U9J3RydWUnXVxcbiAgICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19jb21wb25lbnQtc3RhY2tcXG4gICAgY29kZSB7XFxuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xcbiAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJnYmEoMCwwLDAsMCkgMCUsYmxhY2sgMTAlKTtcXG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XFxuICB9XFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19jb21wb25lbnQtc3RhY2sgY29kZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xcbiAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcXG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtLWRpZmZdIHtcXG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG4gIC5lcnJvci1vdmVybGF5LWh5ZHJhdGlvbi1lcnJvci1kaWZmLXBsdXMtaWNvbiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmVlbi05MDApO1xcbiAgfVxcbiAgLmVycm9yLW92ZXJsYXktaHlkcmF0aW9uLWVycm9yLWRpZmYtbWludXMtaWNvbiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1yZWQtOTAwKTtcXG4gIH1cXG5cIixcIlxcblwiKTtmdW5jdGlvbiBuVShlKXtyZXR1cm4gZSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD9cInN5bWJvbFwiOnR5cGVvZiBlfWZ1bmN0aW9uIG5GKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBucShlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwiaHR0cHM6Ly9uZXh0anMub3JnXCIpfWZ1bmN0aW9uIG5IKGUpe3ZhciB0LG49KDAsQS5jKSgyKSxyPWUubWVzc2FnZTtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKGV2LHt0ZXh0OnIsbWF0Y2hlcjpucX0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIG5WKGUpe3ZhciB0LG4scj0oMCxBLmMpKDUpLG89ZS5lcnJvcixhPVwiZW52aXJvbm1lbnROYW1lXCJpbiBvP28uZW52aXJvbm1lbnROYW1lOlwiXCIsaT1hP1wiWyBcIi5jb25jYXQoYSxcIiBdIFwiKTpcIlwiLGw9by5tZXNzYWdlO3JldHVybiBsLnN0YXJ0c1dpdGgoaSkmJihyWzBdIT09aS5sZW5ndGh8fHJbMV0hPT1sPyh0PWwuc2xpY2UoaS5sZW5ndGgpLHJbMF09aS5sZW5ndGgsclsxXT1sLHJbMl09dCk6dD1yWzJdLGw9dCksclszXSE9PWw/KG49KDAsYi5qc3gpKGIuRnJhZ21lbnQse2NoaWxkcmVuOigwLGIuanN4KShldix7dGV4dDpsLG1hdGNoZXI6bnF9KX0pLHJbM109bCxyWzRdPW4pOm49cls0XSxufXZhciBuJD17aHlkcmF0aW9uV2FybmluZzpudWxsLG5vdGVzOm51bGwscmVhY3RPdXRwdXRDb21wb25lbnREaWZmOm51bGx9O2Z1bmN0aW9uIG5XKGUpe3ZhciB0LG4scj1lLmdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzLG89ZS5ydW50aW1lRXJyb3JzLGE9ZS5kZWJ1Z0luZm8saT1lLm9uQ2xvc2UsbD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHNcIixcInJ1bnRpbWVFcnJvcnNcIixcImRlYnVnSW5mb1wiLFwib25DbG9zZVwiXSkscz0oMCx4LnVzZVJlZikobnVsbCksYz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG09KDAsQS5jKSgxNyksZz1lLnJ1bnRpbWVFcnJvcnMseT1lLmdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzLHY9KGE9KDAseC51c2VTdGF0ZSkoMCksaT0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGEpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGEsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG5GKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5GKGUsdCl9fShhLGkpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxiPXZbMF0sdz12WzFdO3M9MD09PWcubGVuZ3RoO3ZhciBDPSh0PW51bGw9PShjPW51bGwhPSh1PWdbYl0pP3U6bnVsbCk/dm9pZCAwOmMuZXJyb3Isbj15LCgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10KXJldHVybiBuJDt2YXIgZSxyLG8sYT1uKHQpO2lmKG51bGwhPT1hKXJldHVybntoeWRyYXRpb25XYXJuaW5nOm51bGwhPShyPWEud2FybmluZyk/cjpudWxsLG5vdGVzOm51bGwscmVhY3RPdXRwdXRDb21wb25lbnREaWZmOm51bGwhPShvPWEucmVhY3RPdXRwdXRDb21wb25lbnREaWZmKT9vOm51bGx9O2lmKCEodGcoKGU9dCkubWVzc2FnZSl8fC9IeWRyYXRpb24gZmFpbGVkIGJlY2F1c2UgdGhlIHNlcnZlciByZW5kZXJlZCAodGV4dHxIVE1MKSBkaWRuJ3QgbWF0Y2ggdGhlIGNsaWVudFxcLi8udGVzdChlLm1lc3NhZ2UpfHwvQSB0cmVlIGh5ZHJhdGVkIGJ1dCBzb21lIGF0dHJpYnV0ZXMgb2YgdGhlIHNlcnZlciByZW5kZXJlZCBIVE1MIGRpZG4ndCBtYXRjaCB0aGUgY2xpZW50IHByb3BlcnRpZXMuLy50ZXN0KGUubWVzc2FnZSkpKXJldHVybiBuJDt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLm1lc3NhZ2U7aWYodGcodCkpe3ZhciBuPXR1KHQuc3BsaXQoXCJcXG5cXG5cIiksMikscj1uWzBdLG89blsxXSxhPSh2b2lkIDA9PT1vP1wiXCI6bykudHJpbSgpO3JldHVybnttZXNzYWdlOlwiXCI9PT1hP3QudHJpbSgpOnIudHJpbSgpLGRpZmY6YSxub3RlczpudWxsfX12YXIgaT10dSh0LnNwbGl0KFwiXCIuY29uY2F0KHRwKSksMiksbD1pWzBdLHM9aVsxXSxjPWwudHJpbSgpO2lmKHZvaWQgMCE9PXMmJnMubGVuZ3RoPjEpe3ZhciB1PVtdO3Muc3BsaXQoXCJcXG5cIikuZm9yRWFjaChmdW5jdGlvbihlKXtcIlwiIT09ZS50cmltKCkmJihlLnRyaW0oKS5zdGFydHNXaXRoKFwiYXQgXCIpfHx1LnB1c2goZSkpfSk7dmFyIGQ9dGQoYy5zcGxpdChcIlxcblxcblwiKSksZj1kWzBdLHA9ZC5zbGljZSgxKTtyZXR1cm57bWVzc2FnZTpmLGRpZmY6dS5qb2luKFwiXFxuXCIpLG5vdGVzOnAuam9pbihcIlxcblxcblwiKXx8bnVsbH19dmFyIGg9dGQoYy5zcGxpdChcIlxcblxcblwiKSk7cmV0dXJue21lc3NhZ2U6aFswXSxkaWZmOm51bGwsbm90ZXM6aC5zbGljZSgxKS5qb2luKFwiXFxuXFxuXCIpfX0odCksbD1pLm1lc3NhZ2Uscz1pLm5vdGVzLGM9aS5kaWZmO3JldHVybiBudWxsPT09bD9uJDp7aHlkcmF0aW9uV2FybmluZzpsLG5vdGVzOnMscmVhY3RPdXRwdXRDb21wb25lbnREaWZmOmN9fSxbdCxuXSkpO2lmKHN8fCFjKXJldHVybiBtWzBdIT09Ynx8bVsxXSE9PXM/KGQ9e2lzTG9hZGluZzpzLGFjdGl2ZUlkeDpiLHNldEFjdGl2ZUluZGV4OncsYWN0aXZlRXJyb3I6bnVsbCxlcnJvckRldGFpbHM6bnVsbCxlcnJvckNvZGU6bnVsbCxlcnJvclR5cGU6bnVsbCxub3RlczpudWxsLGh5ZHJhdGlvbldhcm5pbmc6bnVsbH0sbVswXT1iLG1bMV09cyxtWzJdPWQpOmQ9bVsyXSxkO3ZhciBfPWMuZXJyb3I7bVszXSE9PV8/KGY9KHZvaWQgMD09PShsPV8pP1widW5kZWZpbmVkXCI6blUobCkpPT09XCJvYmplY3RcIiYmbnVsbCE9PWwmJlwiX19ORVhUX0VSUk9SX0NPREVcImluIGwmJlwic3RyaW5nXCI9PXR5cGVvZiBsLl9fTkVYVF9FUlJPUl9DT0RFP2wuX19ORVhUX0VSUk9SX0NPREU6KHZvaWQgMD09PWw/XCJ1bmRlZmluZWRcIjpuVShsKSk9PT1cIm9iamVjdFwiJiZudWxsIT09bCYmXCJkaWdlc3RcImluIGwmJlwic3RyaW5nXCI9PXR5cGVvZiBsLmRpZ2VzdD9sLmRpZ2VzdC5zcGxpdChcIkBcIikuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydHNXaXRoKFwiRVwiKX0pOnZvaWQgMCxtWzNdPV8sbVs0XT1mKTpmPW1bNF07dmFyIGs9ZjttWzVdIT09Yy50eXBlfHxtWzZdIT09Xz8ocj1fLHA9XCJyZWNvdmVyYWJsZVwiPT09KG89Yy50eXBlKT9cIlJlY292ZXJhYmxlIFwiLmNvbmNhdChyLm5hbWUpOlwiY29uc29sZVwiPT09bz9cIkNvbnNvbGUgXCIuY29uY2F0KHIubmFtZSk6XCJSdW50aW1lIFwiLmNvbmNhdChyLm5hbWUpLG1bNV09Yy50eXBlLG1bNl09XyxtWzddPXApOnA9bVs3XTt2YXIgRT1wLGo9Qy5ub3RlcyxTPUMuaHlkcmF0aW9uV2FybmluZztyZXR1cm4gbVs4XSE9PWN8fG1bOV0hPT1ifHxtWzEwXSE9PWt8fG1bMTFdIT09Q3x8bVsxMl0hPT1FfHxtWzEzXSE9PVN8fG1bMTRdIT09c3x8bVsxNV0hPT1qPyhoPXtpc0xvYWRpbmc6cyxhY3RpdmVJZHg6YixzZXRBY3RpdmVJbmRleDp3LGFjdGl2ZUVycm9yOmMsZXJyb3JEZXRhaWxzOkMsZXJyb3JDb2RlOmssZXJyb3JUeXBlOkUsbm90ZXM6aixoeWRyYXRpb25XYXJuaW5nOlN9LG1bOF09YyxtWzldPWIsbVsxMF09ayxtWzExXT1DLG1bMTJdPUUsbVsxM109UyxtWzE0XT1zLG1bMTVdPWosbVsxNl09aCk6aD1tWzE2XSxofSh7cnVudGltZUVycm9yczpvLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOnJ9KSx1PWMuaXNMb2FkaW5nLGQ9Yy5lcnJvckNvZGUsZj1jLmVycm9yVHlwZSxwPWMubm90ZXMsaD1jLmh5ZHJhdGlvbldhcm5pbmcsbT1jLmFjdGl2ZUlkeCxnPWMuZXJyb3JEZXRhaWxzLHk9Yy5hY3RpdmVFcnJvcix2PWMuc2V0QWN0aXZlSW5kZXgsdz1uTih5KSxDPSgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXt2YXIgZSx0PXcuZmluZEluZGV4KGZ1bmN0aW9uKGUpe3JldHVybiFlLmlnbm9yZWQmJiEhZS5vcmlnaW5hbENvZGVGcmFtZSYmISFlLm9yaWdpbmFsU3RhY2tGcmFtZX0pO3JldHVybiBudWxsIT0oZT13W3RdKT9lOm51bGx9LFt3XSksXz0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe2lmKCF5KXJldHVyblwiXCI7dmFyIGU9W107ZiYmZS5wdXNoKFwiIyMgRXJyb3IgVHlwZVxcblwiLmNvbmNhdChmKSk7dmFyIHQ9eS5lcnJvcixuPXQubWVzc2FnZTtpZihcImVudmlyb25tZW50TmFtZVwiaW4gdCYmdC5lbnZpcm9ubWVudE5hbWUpe3ZhciByPVwiWyBcIi5jb25jYXQodC5lbnZpcm9ubWVudE5hbWUsXCIgXSBcIik7bi5zdGFydHNXaXRoKHIpJiYobj1uLnNsaWNlKHIubGVuZ3RoKSl9aWYobiYmZS5wdXNoKFwiIyMgRXJyb3IgTWVzc2FnZVxcblwiLmNvbmNhdChuKSksdy5sZW5ndGg+MCl7dmFyIG89dy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuaWdub3JlZH0pO2lmKG8ubGVuZ3RoPjApe3ZhciBhPW8ubWFwKGZ1bmN0aW9uKGUpe2lmKGUub3JpZ2luYWxTdGFja0ZyYW1lKXt2YXIgdD1lLm9yaWdpbmFsU3RhY2tGcmFtZSxuPXQubWV0aG9kTmFtZSxyPXQuZmlsZSxvPXQubGluZTEsYT10LmNvbHVtbjE7cmV0dXJuXCIgICAgYXQgXCIuY29uY2F0KG4sXCIgKFwiKS5jb25jYXQocixcIjpcIikuY29uY2F0KG8sXCI6XCIpLmNvbmNhdChhLFwiKVwiKX1pZihlLnNvdXJjZVN0YWNrRnJhbWUpe3ZhciBpPWUuc291cmNlU3RhY2tGcmFtZSxsPWkubWV0aG9kTmFtZSxzPWkuZmlsZSxjPWkubGluZTEsdT1pLmNvbHVtbjE7cmV0dXJuXCIgICAgYXQgXCIuY29uY2F0KGwsXCIgKFwiKS5jb25jYXQocyxcIjpcIikuY29uY2F0KGMsXCI6XCIpLmNvbmNhdCh1LFwiKVwiKX1yZXR1cm5cIlwifSkuZmlsdGVyKEJvb2xlYW4pO2EubGVuZ3RoPjAmJmUucHVzaChcIlxcblwiLmNvbmNhdChhLmpvaW4oXCJcXG5cIikpKX19aWYobnVsbD09Qz92b2lkIDA6Qy5vcmlnaW5hbENvZGVGcmFtZSl7dmFyIGk9ZXEoKShlSChDLm9yaWdpbmFsQ29kZUZyYW1lKSk7ZS5wdXNoKFwiIyMgQ29kZSBGcmFtZVxcblwiLmNvbmNhdChpKSl9cmV0dXJuXCJcIi5jb25jYXQoZS5qb2luKFwiXFxuXFxuXCIpLFwiXFxuXFxuTmV4dC5qcyB2ZXJzaW9uOiBcIikuY29uY2F0KGwudmVyc2lvbkluZm8uaW5zdGFsbGVkLFwiIChcIikuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9CVU5ETEVSLFwiKVxcblwiKX0sW3ksZixDLHcsbC52ZXJzaW9uSW5mb10pO2lmKHUpcmV0dXJuKDAsYi5qc3gpKHRRLHtjaGlsZHJlbjooMCxiLmpzeCkobm8se30pfSk7aWYoIXkpcmV0dXJuIG51bGw7dmFyIGs9eS5lcnJvcixFPVtcInNlcnZlclwiLFwiZWRnZS1zZXJ2ZXJcIl0uaW5jbHVkZXMoblAoayl8fFwiXCIpO3JldHVybigwLGIuanN4cykobmMsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7ZXJyb3JDb2RlOmQsZXJyb3JUeXBlOmYsZXJyb3JNZXNzYWdlOmg/KDAsYi5qc3gpKG5ILHttZXNzYWdlOmh9KTooMCxiLmpzeCkoblYse2Vycm9yOmt9KSxvbkNsb3NlOkU/dm9pZCAwOmksZGVidWdJbmZvOmEsZXJyb3I6ayxydW50aW1lRXJyb3JzOm8sYWN0aXZlSWR4Om0sc2V0QWN0aXZlSW5kZXg6dixkaWFsb2dSZXNpemVyUmVmOnMsZ2VuZXJhdGVFcnJvckluZm86X30sbCksbj1uPXtjaGlsZHJlbjpbKDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LW5vdGVzLWNvbnRhaW5lclwiLGNoaWxkcmVuOltwPygwLGIuanN4KShiLkZyYWdtZW50LHtjaGlsZHJlbjooMCxiLmpzeCkoXCJwXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19ub3Rlc1wiLGNsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbm90ZXNcIixjaGlsZHJlbjpwfSl9KTpudWxsLGg/KDAsYi5qc3gpKFwicFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbGlua1wiLGNsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbGlua1wiLGNoaWxkcmVuOigwLGIuanN4KShldix7dGV4dDpcIlNlZSBtb3JlIGluZm8gaGVyZTogXCIuY29uY2F0KHRoKX0pfSk6bnVsbF19KSxnLnJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZj8oMCxiLmpzeCkobk8se3JlYWN0T3V0cHV0Q29tcG9uZW50RGlmZjpnLnJlYWN0T3V0cHV0Q29tcG9uZW50RGlmZnx8XCJcIn0pOm51bGwsKDAsYi5qc3gpKHguU3VzcGVuc2Use2ZhbGxiYWNrOigwLGIuanN4KShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWVycm9yLXN1c3BlbmRlZFwiOiEwfSksY2hpbGRyZW46KDAsYi5qc3gpKG5SLHtlcnJvcjp5LGRpYWxvZ1Jlc2l6ZXJSZWY6c30seS5pZC50b1N0cmluZygpKX0pXX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSl9ZnVuY3Rpb24gblkoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LHgsdz0oMCxBLmMpKDE5KTtyZXR1cm4od1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwicGFnZXNcIn0pLHdbMF09cik6cj13WzBdLHdbMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz0oMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJUdXJib3BhY2sgaXMgYW4gaW5jcmVtZW50YWwgYnVuZGxlciBvcHRpbWl6ZWQgZm9yIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQsIHdyaXR0ZW4gaW4gUnVzdCwgYW5kIGJ1aWx0IGludG8gTmV4dC5qcy4gVHVyYm9wYWNrIGNhbiBiZSB1c2VkIGluIE5leHQuanMgaW4gYm90aCB0aGVcIixcIiBcIixyLFwiIGFuZFwiLFwiIFwiLCgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwiYXBwXCJ9KSxcIiBkaXJlY3RvcmllcyBmb3IgZmFzdGVyIGxvY2FsIGRldmVsb3BtZW50LlwiXX0pLHdbMV09byk6bz13WzFdLHdbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJUbyBlbmFibGUgVHVyYm9wYWNrLCB1c2UgdGhlXCIsXCIgXCIsKDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCItLXR1cmJvcGFja1wifSksXCIgZmxhZyB3aGVuIHJ1bm5pbmcgdGhlIE5leHQuanMgZGV2ZWxvcG1lbnQgc2VydmVyLlwiXX0pLHdbMl09YSk6YT13WzJdLHdbM10hPT1lKT8oaT0oMCxiLmpzeHMpKFwiYXJ0aWNsZVwiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWFydGljbGVcIn0sZSksbj1uPXtjaGlsZHJlbjpbbyxhXX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksd1szXT1lLHdbNF09aSk6aT13WzRdLHdbNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obD0oMCxiLmpzeCkoZTYse2FjdGlvbkxhYmVsOlwiQ29weSBOZXh0LmpzIFR1cmJvcGFjayBDb21tYW5kXCIsc3VjY2Vzc0xhYmVsOlwiTmV4dC5qcyBUdXJib3BhY2sgQ29tbWFuZCBDb3BpZWRcIixjb250ZW50OlwiLS10dXJib3BhY2tcIixjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb3B5LWJ1dHRvblwifSksd1s1XT1sKTpsPXdbNV0sd1s2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhzPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpcIiAgXCJ9KSxjPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpcIntcIn0pLHdbNl09cyx3WzddPWMpOihzPXdbNl0sYz13WzddKSx3WzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpbXCIgIFwiLCgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleVwiLGNoaWxkcmVuOidcInNjcmlwdHNcIid9KSxcIjogXCIsXCJ7XCJdfSksd1s4XT11KTp1PXdbOF0sd1s5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleVwiLGNoaWxkcmVuOidcImRldlwiJ30pLHdbOV09ZCk6ZD13WzldLHdbMTBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGY9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmUgZGV2LXRvb2xzLWluZm8taGlnaGxpZ2h0XCIsY2hpbGRyZW46W1wiICAgIFwiLGQsXCI6XCIsXCIgXCIsKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24tdmFsdWVcIixjaGlsZHJlbjonXCJuZXh0IGRldiAtLXR1cmJvcGFja1wiJ30pLFwiLFwiXX0pLHdbMTBdPWYpOmY9d1sxMF0sd1sxMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocD0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXlcIixjaGlsZHJlbjonXCJidWlsZFwiJ30pLHdbMTFdPXApOnA9d1sxMV0sd1sxMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaD0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOltcIiAgICBcIixwLFwiOlwiLFwiIFwiLCgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLXZhbHVlXCIsY2hpbGRyZW46J1wibmV4dCBidWlsZFwiJ30pLFwiLFwiXX0pLHdbMTJdPWgpOmg9d1sxMl0sd1sxM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obT0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXlcIixjaGlsZHJlbjonXCJzdGFydFwiJ30pLHdbMTNdPW0pOm09d1sxM10sd1sxNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZz0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOltcIiAgICBcIixtLFwiOlwiLFwiIFwiLCgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLXZhbHVlXCIsY2hpbGRyZW46J1wibmV4dCBzdGFydFwiJ30pLFwiLFwiXX0pLHdbMTRdPWcpOmc9d1sxNF0sd1sxNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oeT0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXlcIixjaGlsZHJlbjonXCJsaW50XCInfSksd1sxNV09eSk6eT13WzE1XSx3WzE2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh2PSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWNvbnRhaW5lclwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9ja1wiLGNoaWxkcmVuOltsLCgwLGIuanN4KShcInByZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLXByZVwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJjb2RlXCIse2NoaWxkcmVuOltzLGMsdSxmLGgsZywoMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOltcIiAgICBcIix5LFwiOlwiLFwiIFwiLCgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLXZhbHVlXCIsY2hpbGRyZW46J1wibmV4dCBsaW50XCInfSldfSksKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOlwiICB9XCJ9KSwoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46XCJ9XCJ9KSwoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46XCIgIFwifSldfSl9KV19KX0pLHdbMTZdPXYpOnY9d1sxNl0sd1sxN10hPT1pPyh4PSgwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46W2ksdl19KSx3WzE3XT1pLHdbMThdPXgpOng9d1sxOF0seH1mdW5jdGlvbiBuSyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gblgoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIG5HKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb31mdW5jdGlvbiBuUShlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCxBLmMpKDEwKTtsWzBdIT09ZT8odD1uRyhlLFtcInJvdXRlclR5cGVcIl0pLG49ZS5yb3V0ZXJUeXBlLGxbMF09ZSxsWzFdPXQsbFsyXT1uKToodD1sWzFdLG49bFsyXSksbFszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIlRoZSBwYXRoXCIsXCIgXCIsKDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSksXCIgXCIsJ2lzIG1hcmtlZCBhcyBcInN0YXRpY1wiIHNpbmNlIGl0IHdpbGwgYmUgcHJlcmVuZGVyZWQgZHVyaW5nIHRoZSBidWlsZCB0aW1lLiddfSksbFszXT1yKTpyPWxbM107dmFyIHM9XCJwYWdlc1wiPT09bj9cImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL3BhZ2VzL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9pbmNyZW1lbnRhbC1zdGF0aWMtcmVnZW5lcmF0aW9uXCI6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL2luY3JlbWVudGFsLXN0YXRpYy1yZWdlbmVyYXRpb25cIjtyZXR1cm4gbFs0XSE9PXM/KG89KDAsYi5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiV2l0aCBTdGF0aWMgUmVuZGVyaW5nLCByb3V0ZXMgYXJlIHJlbmRlcmVkIGF0IGJ1aWxkIHRpbWUsIG9yIGluIHRoZSBiYWNrZ3JvdW5kIGFmdGVyXCIsXCIgXCIsKDAsYi5qc3gpKFwiYVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1saW5rXCIsaHJlZjpzLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixjaGlsZHJlbjpcImRhdGEgcmV2YWxpZGF0aW9uXCJ9KSxcIi5cIl19KSxsWzRdPXMsbFs1XT1vKTpvPWxbNV0sbFs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPSgwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46XCJTdGF0aWMgcmVuZGVyaW5nIGlzIHVzZWZ1bCB3aGVuIGEgcm91dGUgaGFzIGRhdGEgdGhhdCBpcyBub3QgcGVyc29uYWxpemVkIHRvIHRoZSB1c2VyIGFuZCBjYW4gYmUga25vd24gYXQgYnVpbGQgdGltZSwgc3VjaCBhcyBhIHN0YXRpYyBibG9nIHBvc3Qgb3IgYSBwcm9kdWN0IHBhZ2UuXCJ9KSxsWzZdPWEpOmE9bFs2XSxsWzddIT09dHx8bFs4XSE9PW8/KGk9KDAsYi5qc3hzKShcImFydGljbGVcIixuWChuSyh7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tYXJ0aWNsZVwifSx0KSx7Y2hpbGRyZW46W3IsbyxhXX0pKSxsWzddPXQsbFs4XT1vLGxbOV09aSk6aT1sWzldLGl9ZnVuY3Rpb24gbkooZSl7dmFyIHQsbixyLG8sYSxpLGwscz0oMCxBLmMpKDExKTtyZXR1cm4gc1swXSE9PWU/KHQ9bkcoZSxbXCJyb3V0ZXJUeXBlXCJdKSxuPWUucm91dGVyVHlwZSxzWzBdPWUsc1sxXT10LHNbMl09bik6KHQ9c1sxXSxuPXNbMl0pLHNbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjp3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9KSxzWzNdPXIpOnI9c1szXSxzWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89KDAsYi5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiVGhlIHBhdGhcIixcIiBcIixyLFwiIFwiLCdpcyBtYXJrZWQgYXMgXCJkeW5hbWljXCIgc2luY2UgaXQgd2lsbCBiZSByZW5kZXJlZCBmb3IgZWFjaCB1c2VyIGF0JyxcIiBcIiwoMCxiLmpzeCkoXCJzdHJvbmdcIix7Y2hpbGRyZW46XCJyZXF1ZXN0IHRpbWVcIn0pLFwiLlwiXX0pLGE9KDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpcIkR5bmFtaWMgcmVuZGVyaW5nIGlzIHVzZWZ1bCB3aGVuIGEgcm91dGUgaGFzIGRhdGEgdGhhdCBpcyBwZXJzb25hbGl6ZWQgdG8gdGhlIHVzZXIgb3IgaGFzIGluZm9ybWF0aW9uIHRoYXQgY2FuIG9ubHkgYmUga25vd24gYXQgcmVxdWVzdCB0aW1lLCBzdWNoIGFzIGNvb2tpZXMgb3IgdGhlIFVSTCdzIHNlYXJjaCBwYXJhbXMuXCJ9KSxzWzRdPW8sc1s1XT1hKToobz1zWzRdLGE9c1s1XSksc1s2XSE9PW4/KGk9XCJwYWdlc1wiPT09bj8oMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYWdyYXBoXCIsY2hpbGRyZW46W1wiRXhwb3J0aW5nIHRoZVwiLFwiIFwiLCgwLGIuanN4KShcImFcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tbGlua1wiLGhyZWY6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvZ2V0LXNlcnZlci1zaWRlLXByb3BzXCIsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOlwiZ2V0U2VydmVyU2lkZVByb3BzXCJ9KSxcIiBcIixcImZ1bmN0aW9uIHdpbGwgb3B0IHRoZSByb3V0ZSBpbnRvIGR5bmFtaWMgcmVuZGVyaW5nLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBzZXJ2ZXIgb24gZXZlcnkgcmVxdWVzdC5cIl19KTooMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJEdXJpbmcgcmVuZGVyaW5nLCBpZiBhXCIsXCIgXCIsKDAsYi5qc3gpKFwiYVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1saW5rXCIsaHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyNkeW5hbWljLWFwaXNcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46XCJEeW5hbWljIEFQSVwifSksXCIgXCIsXCJvciBhXCIsXCIgXCIsKDAsYi5qc3gpKFwiYVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1saW5rXCIsaHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9mZXRjaFwiLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixjaGlsZHJlbjpcImZldGNoXCJ9KSxcIiBcIixcIm9wdGlvbiBvZlwiLFwiIFwiLCgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwieyBjYWNoZTogJ25vLXN0b3JlJyB9XCJ9KSxcIiBcIixcImlzIGRpc2NvdmVyZWQsIE5leHQuanMgd2lsbCBzd2l0Y2ggdG8gZHluYW1pY2FsbHkgcmVuZGVyaW5nIHRoZSB3aG9sZSByb3V0ZS5cIl19KSxzWzZdPW4sc1s3XT1pKTppPXNbN10sc1s4XSE9PXR8fHNbOV0hPT1pPyhsPSgwLGIuanN4cykoXCJhcnRpY2xlXCIsblgobksoe2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWFydGljbGVcIn0sdCkse2NoaWxkcmVuOltvLGEsaV19KSksc1s4XT10LHNbOV09aSxzWzEwXT1sKTpsPXNbMTBdLGx9dmFyIG4wPXtwYWdlczp7c3RhdGljOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvcGFnZXMvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc3RhdGljLXNpdGUtZ2VuZXJhdGlvblwiLGR5bmFtaWM6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItc2lkZS1yZW5kZXJpbmdcIn0sYXBwOntzdGF0aWM6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMjc3RhdGljLXJlbmRlcmluZy1kZWZhdWx0XCIsZHluYW1pYzpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyNkeW5hbWljLXJlbmRlcmluZ1wifX07ZnVuY3Rpb24gbjEoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDgpO3JldHVybiBhWzBdIT09ZT8obj1uRyhlLFtcInJvdXRlclR5cGVcIixcImlzU3RhdGljUm91dGVcIl0pLHI9ZS5yb3V0ZXJUeXBlLHQ9ZS5pc1N0YXRpY1JvdXRlLGFbMF09ZSxhWzFdPXQsYVsyXT1uLGFbM109cik6KHQ9YVsxXSxuPWFbMl0scj1hWzNdKSxhWzRdIT09dHx8YVs1XSE9PW58fGFbNl0hPT1yPyhvPXQ/KDAsYi5qc3gpKG5RLG5LKHtyb3V0ZXJUeXBlOnJ9LG4pKTooMCxiLmpzeCkobkosbksoe3JvdXRlclR5cGU6cn0sbikpLGFbNF09dCxhWzVdPW4sYVs2XT1yLGFbN109byk6bz1hWzddLG99ZnVuY3Rpb24gbjIoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJub25lXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsZDpcIm0uMTkxIDIuMDYzLjU2LjQ5OCAxMy41IDEyIC41NjEuNDk4Ljk5Ny0xLjEyMS0uNTYtLjQ5OC0xLjgxLTEuNjA4IDIuODgtMy4zNDJ2LS45OGwtMy4yMDQtMy43MkMxMC42NDUuOTIzIDYuMzY1LjY4NiAzLjU5NCAzLjA4TDEuNzQ4IDEuNDQgMS4xODguOTQuMTkgMi4wNjNaTTE0Ljc2MSA4bC0yLjQ0MiAyLjgzNi0xLjY1LTEuNDY2YTMuMDAxIDMuMDAxIDAgMCAwLTQuMzQyLTMuODZsLTEuNi0xLjQyMmE1LjI1MyA1LjI1MyAwIDAgMSA3LjI1MS42ODJMMTQuNzYgOFpNNy41MjYgNi41NzZsMS45NDIgMS43MjdhMS40OTkgMS40OTkgMCAwIDAtMS45NDItMS43MjdabS03Ljg0NS45MzUgMS43MjItMiAxLjEzNy45NzlMMS4yNCA4bDIuNzgyIDMuMjNBNS4yNSA1LjI1IDAgMCAwIDkuOSAxMi43MDNsLjU0IDEuNGE2Ljc1MSA2Ljc1MSAwIDAgMS03LjU1NS0xLjg5MkwtLjMxOCA4LjQ5di0uOThaXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gbjQoKXt2YXIgZSx0LG49KDAsQS5jKSgyKTtyZXR1cm4gblswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcImdcIix7Y2xpcFBhdGg6XCJ1cmwoI2xpZ2h0X2ljb25fY2xpcF9wYXRoKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNOC43NS43NVYwaC0xLjV2MmgxLjVWLjc1Wk0zLjI2IDQuMzJsLS41My0uNTMtLjM1NC0uMzUzLS41My0uNTMgMS4wNi0xLjA2MS41My41My4zNTQuMzU0LjUzLjUzLTEuMDYgMS4wNlptOC40Mi0xLjA2LjUzLS41My4zNTMtLjM1NC41My0uNTMgMS4wNjEgMS4wNi0uNTMuNTMtLjM1NC4zNTQtLjUzLjUzLTEuMDYtMS4wNlpNOCAxMS4yNWEzLjI1IDMuMjUgMCAxIDAgMC02LjUgMy4yNSAzLjI1IDAgMCAwIDAgNi41Wm0wIDEuNWE0Ljc1IDQuNzUgMCAxIDAgMC05LjUgNC43NSA0Ljc1IDAgMCAwIDAgOS41Wm02LTUuNWgydjEuNWgtMnYtMS41Wm0tMTMuMjUgMEgwdjEuNWgydi0xLjVILjc1Wm0xLjYyIDUuMzItLjUzLjUzIDEuMDYgMS4wNi41My0uNTMuMzU0LS4zNTMuNTMtLjUzLTEuMDYtMS4wNjEtLjUzLjUzLS4zNTQuMzU0Wm0xMC4yIDEuMDYuNTMuNTMgMS4wNi0xLjA2LS41My0uNTMtLjM1NC0uMzU0LS41My0uNTMtMS4wNiAxLjA2LjUzLjUzLjM1My4zNTRaTTguNzUgMTR2MmgtMS41di0yaDEuNVpcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pfSksblswXT1lKTplPW5bMF0sblsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4cykoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjBcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLGNoaWxkcmVuOltlLCgwLGIuanN4KShcImRlZnNcIix7Y2hpbGRyZW46KDAsYi5qc3gpKFwiY2xpcFBhdGhcIix7aWQ6XCJsaWdodF9pY29uX2NsaXBfcGF0aFwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGQ6XCJNMCAwaDE2djE2SDB6XCJ9KX0pfSldfSksblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiBuNSgpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHtcImRhdGEtdGVzdGlkXCI6XCJnZWlzdC1pY29uXCIsaGVpZ2h0OlwiMTZcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLHdpZHRoOlwiMTZcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMS41IDguMDAwMDVDMS41IDUuNTMwODkgMi45OTE5OCAzLjQwOTMyIDUuMTIzNDkgMi40ODg4OUM0Ljg4MTM2IDMuMTk4NTggNC43NSAzLjk1OTM2IDQuNzUgNC43NTAxQzQuNzUgOC42MTYwOSA3Ljg4NDAxIDExLjc1MDEgMTEuNzUgMTEuNzUwMUMxMS44OTk1IDExLjc1MDEgMTIuMDQ4IDExLjc0NTQgMTIuMTk1MyAxMS43MzYxQzExLjA5NTUgMTMuMTE2NCA5LjQwMDQ3IDE0LjAwMDEgNy41IDE0LjAwMDFDNC4xODYyOSAxNC4wMDAxIDEuNSAxMS4zMTM4IDEuNSA4LjAwMDA1Wk02LjQxNzA2IDAuNTc3NzU5QzIuNzg3ODQgMS4xMDMxIDAgNC4yMjUzNiAwIDguMDAwMDVDMCAxMi4xNDIyIDMuMzU3ODYgMTUuNTAwMSA3LjUgMTUuNTAwMUMxMC41Nzk4IDE1LjUwMDEgMTMuMjI0NCAxMy42NDM4IDE0LjM3OTIgMTAuOTkyMUwxMy40NTg4IDkuOTc5N0MxMi45MjE4IDEwLjE1NSAxMi4zNDc4IDEwLjI1MDEgMTEuNzUgMTAuMjUwMUM4LjcxMjQzIDEwLjI1MDEgNi4yNSA3Ljc4NzY3IDYuMjUgNC43NTAxQzYuMjUgMy42MzQzMSA2LjU4MTQ2IDIuNTk4MjMgNy4xNTExMSAxLjczMjE3TDYuNDE3MDYgMC41Nzc3NTlaTTEzLjI1IDFWMS43NVYyLjc1TDE0LjI1IDIuNzVIMTVWNC4yNUgxNC4yNUgxMy4yNVY1LjI1VjZIMTEuNzVWNS4yNVY0LjI1SDEwLjc1TDEwIDQuMjVWMi43NUgxMC43NUwxMS43NSAyLjc1VjEuNzVWMUgxMy4yNVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gbjMoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMCAyYTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMXY4LjVhMSAxIDAgMCAxLTEgMUg4Ljc1djNoMS43NVYxNmgtNXYtMS41aDEuNzV2LTNIMWExIDEgMCAwIDEtMS0xVjJabTEuNS41VjEwaDEzVjIuNWgtMTNaXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gbjYoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG45KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxuNyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG44KGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBuNihlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxuNyhlKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbjcoZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbjYoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbjYoZSx0KX19ZnVuY3Rpb24gcmUoKXt2YXIgZSx0LG49KGU9W1wiXFxuICAuc2hvcnRjdXQtcmVjb3JkZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XFxuXFxuICAgIC5zaG9ydGN1dC1yZWNvcmRlci1idXR0b24ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBnYXA6IDRweDtcXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgICAgIHBhZGRpbmc6IDZweCA4cHg7XFxuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpO1xcblxcbiAgICAgICZbZGF0YS1oYXMtc2hvcnRjdXQ9J3RydWUnXSB7XFxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuXFxuICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgICY6aG92ZXIge1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTYwMCk7XFxuICAgICAgfVxcblxcbiAgICAgICY6OnBsYWNlaG9sZGVyIHtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgICAgfVxcblxcbiAgICAgICZbZGF0YS1wcmlzdGluZT0nZmFsc2UnXTo6cGxhY2Vob2xkZXIge1xcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAga2JkIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcXG4gICAgICBtaW4td2lkdGg6IDIwcHg7XFxuICAgICAgaGVpZ2h0OiAyMHB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuXFxuICAgICAgJltkYXRhLXN5bWJvbD0nZmFsc2UnXSB7XFxuICAgICAgICBwYWRkaW5nOiAwIDRweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnNob3J0Y3V0LXJlY29yZGVyLWNsZWFyLWJ1dHRvbiB7XFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICAgIHdpZHRoOiAyMHB4O1xcbiAgICAgIGhlaWdodDogMjBweDtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KTtcXG5cXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcXG4gICAgICB9XFxuXFxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgIH1cXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgd2lkdGg6IDE0cHg7XFxuICAgICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuc2hvcnRjdXQtcmVjb3JkZXIta2V5cyB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiAycHg7XFxuICB9XFxuXFxuICAuc2hvcnRjdXQtcmVjb3JkZXItdG9vbHRpcCB7XFxuICAgIC0tZ2FwOiA4cHg7XFxuICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IGNhbGMoMTAwJSArIHZhcigtLWdhcCkpO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHNjYWxlOiAwLjk2O1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgdHJhbnNpdGlvbjpcXG4gICAgICBvcGFjaXR5IDE1MG1zIHZhcigtLXRpbWluZy1zd2lmdCksXFxuICAgICAgc2NhbGUgMTUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KTtcXG5cXG4gICAgJltkYXRhLXNob3c9J3RydWUnXSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICBzY2FsZTogMTtcXG4gICAgfVxcblxcbiAgICBzdmcge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICAgICAgYm90dG9tOiAtNnB4O1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAuc2hvcnRjdXQtcmVjb3JkZXItc3RhdHVzIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgZ2FwOiA2cHg7XFxuICAgIH1cXG5cXG4gICAgLnNob3J0Y3V0LXJlY29yZGVyLXN0YXR1cy1pY29uIHtcXG4gICAgICB3aWR0aDogN3B4O1xcbiAgICAgIGhlaWdodDogN3B4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgICBmbGV4LXNocmluazogMDtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1yZWQtNzAwKTtcXG5cXG4gICAgICAmW2RhdGEtc3VjY2Vzcz0ndHJ1ZSddIHtcXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZWVuLTcwMCk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHJlPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59dmFyIHJ0PVtcIk1ldGFcIixcIkNvbnRyb2xcIixcIkN0cmxcIixcIkFsdFwiLFwiT3B0aW9uXCIsXCJTaGlmdFwiXTtmdW5jdGlvbiBybihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoPSgwLEEuYykoMzMpLG09ZS52YWx1ZSxnPWUub25DaGFuZ2UseT1uOSgoMCx4LnVzZVN0YXRlKSghMCksMiksdj15WzBdLHc9eVsxXSxDPW45KCgwLHgudXNlU3RhdGUpKCExKSwyKSxfPUNbMF0saz1DWzFdO2hbMF0hPT1tPyh0PW51bGwhPW0/bTpbXSxoWzBdPW0saFsxXT10KTp0PWhbMV07dmFyIEU9bjkoKDAseC51c2VTdGF0ZSkodCksMiksaj1FWzBdLFM9RVsxXSxPPW45KCgwLHgudXNlU3RhdGUpKCExKSwyKSxCPU9bMF0sUD1PWzFdLEk9KDAseC51c2VSZWYpKG51bGwpLHo9KDAseC51c2VSZWYpKG51bGwpLFQ9ISFtfHxqLmxlbmd0aD4wO2hbMl0hPT1nfHxoWzNdIT09dnx8aFs0XSE9PV8/KG49ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT16LmN1cnJlbnQmJlwiVGFiXCIhPT1lLmtleSl7SS5jdXJyZW50JiZjbGVhclRpbWVvdXQoSS5jdXJyZW50KSxffHxrKCEwKSx2JiYoUyhbXSksdyghMSkpO3ZhciB0PWZ1bmN0aW9uKGUpe0kuY3VycmVudD13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1AoITApLGcoZS5qb2luKFwiK1wiKSksSS5jdXJyZW50PXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ayghMSl9LDFlMyl9LDE4MCl9O2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLFMoZnVuY3Rpb24obil7aWYobi5pbmNsdWRlcyhlLmNvZGUpfHxuLmluY2x1ZGVzKGUua2V5KSlyZXR1cm4gbjtpZighcnQuaW5jbHVkZXMoZS5rZXkpKXt2YXIgcj1uLmZpbmRJbmRleChyYSk7aWYoLTEhPT1yKXt2YXIgbz1uOChuKTtyZXR1cm4gb1tyXT1lLmNvZGUsdChvKSxvfXZhciBhPW44KG4pLmNvbmNhdChbZS5jb2RlXSk7cmV0dXJuIHQoYSksYX1mb3IodmFyIGk9bjgobiksbD1ydC5pbmRleE9mKGUua2V5KSxzPTAsYz0wO2M8aS5sZW5ndGg7YysrKWlmKHJ0LmluY2x1ZGVzKGlbY10pKXtpZihsPHJ0LmluZGV4T2YoaVtjXSkpe3M9YzticmVha31zPWMrMX1lbHNlIGJyZWFrO3JldHVybiBpLnNwbGljZShzLDAsZS5rZXkpLHQoaSksaX0pfX0saFsyXT1nLGhbM109dixoWzRdPV8saFs1XT1uKTpuPWhbNV07dmFyIEQ9bjtoWzZdIT09Zz8ocj1mdW5jdGlvbigpe3ZhciBlO251bGw9PShlPXouY3VycmVudCl8fGUuZm9jdXMoKSxTKFtdKSxQKCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ayghMCl9KSxnKG51bGwpfSxoWzZdPWcsaFs3XT1yKTpyPWhbN107dmFyIEw9cjtoWzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89ZnVuY3Rpb24oKXtQKCExKSxrKCExKSx3KCEwKX0saFs4XT1vKTpvPWhbOF07dmFyIE49bztoWzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9ZnVuY3Rpb24oKXt2YXIgZTtJLmN1cnJlbnQmJmNsZWFyVGltZW91dChJLmN1cnJlbnQpLGsoITApLG51bGw9PShlPXouY3VycmVudCl8fGUuZm9jdXMoKX0saFs5XT1hKTphPWhbOV07dmFyIFI9YTtoWzEwXSE9PVR8fGhbMTFdIT09aj8oaT1UPygwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci1rZXlzXCIsY2hpbGRyZW46ai5tYXAocm8pfSk6XCJSZWNvcmQgU2hvcnRjdXRcIixoWzEwXT1ULGhbMTFdPWosaFsxMl09aSk6aT1oWzEyXSxoWzEzXSE9PUx8fGhbMTRdIT09VD8obD1UJiYoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXItY2xlYXItYnV0dG9uXCIscm9sZTpcImJ1dHRvblwiLG9uQ2xpY2s6TCxvbkZvY3VzOnJyLG9uS2V5RG93bjpmdW5jdGlvbihlKXsoXCJFbnRlclwiPT09ZS5rZXl8fFwiIFwiPT09ZS5rZXkpJiYoTCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfSxcImFyaWEtbGFiZWxcIjpcIkNsZWFyIHNob3J0Y3V0XCIsdGFiSW5kZXg6MCxjaGlsZHJlbjooMCxiLmpzeCkocmMse30pfSksaFsxM109TCxoWzE0XT1ULGhbMTVdPWwpOmw9aFsxNV0saFsxNl0hPT1EfHxoWzE3XSE9PVR8fGhbMThdIT09aXx8aFsxOV0hPT1sPyhzPSgwLGIuanN4cykoXCJidXR0b25cIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXItYnV0dG9uXCIscmVmOnosb25DbGljazpSLG9uRm9jdXM6UixvbkJsdXI6TixvbktleURvd246RCxcImRhdGEtaGFzLXNob3J0Y3V0XCI6VCxcImRhdGEtc2hvcnRjdXQtcmVjb3JkZXJcIjpcInRydWVcIixjaGlsZHJlbjpbaSxsXX0pLGhbMTZdPUQsaFsxN109VCxoWzE4XT1pLGhbMTldPWwsaFsyMF09cyk6cz1oWzIwXSxoWzIxXSE9PUI/KGM9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLXN0YXR1cy1pY29uXCIsXCJkYXRhLXN1Y2Nlc3NcIjpCfSksaFsyMV09QixoWzIyXT1jKTpjPWhbMjJdO3ZhciBNPUI/XCJTaG9ydGN1dCBzZXRcIjpcIlJlY29yZGluZ1wiO3JldHVybiBoWzIzXSE9PU18fGhbMjRdIT09Yz8odT0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLXN0YXR1c1wiLGNoaWxkcmVuOltjLE1dfSksaFsyM109TSxoWzI0XT1jLGhbMjVdPXUpOnU9aFsyNV0saFsyNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZD0oMCxiLmpzeCkocmkse30pLGhbMjZdPWQpOmQ9aFsyNl0saFsyN10hPT1ffHxoWzI4XSE9PXU/KGY9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci10b29sdGlwXCIsXCJkYXRhLXNob3dcIjpfLGNoaWxkcmVuOlt1LGRdfSksaFsyN109XyxoWzI4XT11LGhbMjldPWYpOmY9aFsyOV0saFszMF0hPT1mfHxoWzMxXSE9PXM/KHA9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlclwiLGNoaWxkcmVuOltzLGZdfSksaFszMF09ZixoWzMxXT1zLGhbMzJdPXApOnA9aFszMl0scH1mdW5jdGlvbiBycihlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBybyhlKXtyZXR1cm4oMCxiLmpzeCkocmwse2NoaWxkcmVuOmV9LGUpfWZ1bmN0aW9uIHJhKGUpe3JldHVybiFydC5pbmNsdWRlcyhlKX1mdW5jdGlvbiByaSgpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHtmaWxsOlwibm9uZVwiLGhlaWdodDpcIjZcIix2aWV3Qm94OlwiMCAwIDE0IDZcIix3aWR0aDpcIjE0XCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xMy44Mjg0IDBIMC4xNzE1N0MwLjcwMjAwMyAwIDEuMjEwNzEgMC4yMTA3MTQgMS41ODU3OCAwLjU4NTc4N0w1LjU4NTc4IDQuNTg1NzlDNi4zNjY4MyA1LjM2Njg0IDcuNjMzMTYgNS4zNjY4MyA4LjQxNDIxIDQuNTg1NzlMMTIuNDE0MiAwLjU4NTc4NkMxMi43ODkzIDAuMjEwNzE0IDEzLjI5OCAwIDEzLjgyODQgMFpcIixmaWxsOlwidmFyKC0tYmFja2dyb3VuZClcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBybChlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoOSksaT1lLmNoaWxkcmVuO2FbMF0hPT1pPyh0PWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJNZXRhXCI6cmV0dXJuKDAsYi5qc3gpKHJzLHt9KTtjYXNlXCJBbHRcIjpjYXNlXCJPcHRpb25cIjpyZXR1cm5cIuKMpVwiO2Nhc2VcIkNvbnRyb2xcIjpjYXNlXCJDdHJsXCI6cmV0dXJuXCJDdHJsXCI7Y2FzZVwiU2hpZnRcIjpyZXR1cm5cIuKHp1wiO2Nhc2VcIkVudGVyXCI6cmV0dXJuXCLij45cIjtjYXNlXCJFc2NhcGVcIjpjYXNlXCJFc2NcIjpyZXR1cm5cIkVzY1wiO2Nhc2VcIiBcIjpjYXNlXCJTcGFjZVwiOmNhc2VcIlNwYWNlYmFyXCI6cmV0dXJuXCJTcGFjZVwiO2Nhc2VcIkFycm93VXBcIjpyZXR1cm5cIuKGkVwiO2Nhc2VcIkFycm93RG93blwiOnJldHVyblwi4oaTXCI7Y2FzZVwiQXJyb3dMZWZ0XCI6cmV0dXJuXCLihpBcIjtjYXNlXCJBcnJvd1JpZ2h0XCI6cmV0dXJuXCLihpJcIjtjYXNlXCJUYWJcIjpyZXR1cm5cIlRhYlwiO2Nhc2VcIkJhY2tzcGFjZVwiOnJldHVyblwi4oyrXCI7Y2FzZVwiRGVsZXRlXCI6cmV0dXJuXCLijKZcIjtkZWZhdWx0OmlmKDE9PT1pLmxlbmd0aClyZXR1cm4gaS50b1VwcGVyQ2FzZSgpO3JldHVybiBpfX0sYVswXT1pLGFbMV09dCk6dD1hWzFdO3ZhciBsPXQ7aWYoYVsyXSE9PWl8fGFbM10hPT1sKXt2YXIgcz1sKGkpO249XCJzdHJpbmdcIj09dHlwZW9mIHMmJjE9PT1zLmxlbmd0aCxyPWZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXJldHVybiBlO3ZhciB0PXtNaW51czpcIi1cIixFcXVhbDpcIj1cIixCcmFja2V0TGVmdDpcIltcIixCcmFja2V0UmlnaHQ6XCJdXCIsQmFja3NsYXNoOlwiXFxcXFwiLFNlbWljb2xvbjpcIjtcIixRdW90ZTpcIidcIixDb21tYTpcIixcIixQZXJpb2Q6XCIuXCIsQmFja3F1b3RlOlwiYFwiLFNwYWNlOlwiIFwiLFNsYXNoOlwiL1wiLEludGxCYWNrc2xhc2g6XCJcXFxcXCJ9O3JldHVybiB0W2VdP3RbZV06L15LZXkoW0EtWl0pJC8udGVzdChlKT9lLnJlcGxhY2UoL15LZXkvLFwiXCIpOi9eRGlnaXQoWzAtOV0pJC8udGVzdChlKT9lLnJlcGxhY2UoL15EaWdpdC8sXCJcIik6L15OdW1wYWQoWzAtOV0pJC8udGVzdChlKT9lLnJlcGxhY2UoL15OdW1wYWQvLFwiXCIpOlwiTnVtcGFkQWRkXCI9PT1lP1wiK1wiOlwiTnVtcGFkU3VidHJhY3RcIj09PWU/XCItXCI6XCJOdW1wYWRNdWx0aXBseVwiPT09ZT9cIipcIjpcIk51bXBhZERpdmlkZVwiPT09ZT9cIi9cIjpcIk51bXBhZERlY2ltYWxcIj09PWU/XCIuXCI6XCJOdW1wYWRFbnRlclwiPT09ZT9cIkVudGVyXCI6ZX0ocyksYVsyXT1pLGFbM109bCxhWzRdPW4sYVs1XT1yfWVsc2Ugbj1hWzRdLHI9YVs1XTtyZXR1cm4gYVs2XSE9PW58fGFbN10hPT1yPyhvPSgwLGIuanN4KShcImtiZFwiLHtcImRhdGEtc3ltYm9sXCI6bixjaGlsZHJlbjpyfSksYVs2XT1uLGFbN109cixhWzhdPW8pOm89YVs4XSxvfWZ1bmN0aW9uIHJzKCl7dmFyIGUsdCxuLHIsbyxhPSgwLEEuYykoNiksaT1uOSgoMCx4LnVzZVN0YXRlKShcIlxceGEwXCIpLDIpLGw9aVswXSxzPWlbMV07YVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPXJkKC9eTWFjLyl8fHJkKC9eaVBob25lLyl8fHJkKC9eaVBhZC8pfHxyZCgvXk1hYy8pJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM+MSxhWzBdPWUpOmU9YVswXTt2YXIgYz1lO3JldHVybiBhWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9ZnVuY3Rpb24oKXshMD09PWMmJnMoXCLijJhcIiksITE9PT1jJiZzKFwiQ3RybFwiKX0sbj1bY10sYVsxXT10LGFbMl09bik6KHQ9YVsxXSxuPWFbMl0pLCgwLHgudXNlRWZmZWN0KSh0LG4pLGFbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj17bWluV2lkdGg6XCIxZW1cIixkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9LGFbM109cik6cj1hWzNdLGFbNF0hPT1sPyhvPSgwLGIuanN4KShcInNwYW5cIix7c3R5bGU6cixjaGlsZHJlbjpsfSksYVs0XT1sLGFbNV09byk6bz1hWzVdLG99ZnVuY3Rpb24gcmMoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7aGVpZ2h0OlwiMTZcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLHdpZHRoOlwiMTZcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTIuNDY5NyAxMy41MzAzTDEzIDE0LjA2MDdMMTQuMDYwNyAxM0wxMy41MzAzIDEyLjQ2OTdMOS4wNjA2NSA3Ljk5OTk5TDEzLjUzMDMgMy41MzAzMkwxNC4wNjA3IDIuOTk5OTlMMTMgMS45MzkzM0wxMi40Njk3IDIuNDY5NjZMNy45OTk5OSA2LjkzOTMzTDMuNTMwMzIgMi40Njk2NkwyLjk5OTk5IDEuOTM5MzNMMS45MzkzMyAyLjk5OTk5TDIuNDY5NjYgMy41MzAzMkw2LjkzOTMzIDcuOTk5OTlMMi40Njk2NiAxMi40Njk3TDEuOTM5MzMgMTNMMi45OTk5OSAxNC4wNjA3TDMuNTMwMzIgMTMuNTMwM0w3Ljk5OTk5IDkuMDYwNjVMMTIuNDY5NyAxMy41MzAzWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX12YXIgcnU9ZXMocmUoKSk7ZnVuY3Rpb24gcmQoZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmbnVsbCE9d2luZG93Lm5hdmlnYXRvcj9lLnRlc3Qod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSk6dm9pZCAwfWZ1bmN0aW9uIHJmKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBycChlLHQsbixyLG8sYSxpKXt0cnl7dmFyIGw9ZVthXShpKSxzPWwudmFsdWV9Y2F0Y2goZSl7bihlKTtyZXR1cm59bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgcmg9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vZGlzdC9jb21waWxlZC96b2QvaW5kZXguY2pzXCIpLHJtPXJoLnoub2JqZWN0KHt0aGVtZTpyaC56LmVudW0oW1wibGlnaHRcIixcImRhcmtcIixcInN5c3RlbVwiXSkub3B0aW9uYWwoKSxkaXNhYmxlRGV2SW5kaWNhdG9yOnJoLnouYm9vbGVhbigpLm9wdGlvbmFsKCksZGV2VG9vbHNQb3NpdGlvbjpyaC56LmVudW0oW1widG9wLWxlZnRcIixcInRvcC1yaWdodFwiLFwiYm90dG9tLWxlZnRcIixcImJvdHRvbS1yaWdodFwiXSkub3B0aW9uYWwoKSxkZXZUb29sc1BhbmVsUG9zaXRpb246cmguei5yZWNvcmQocmguei5zdHJpbmcoKSxyaC56LmVudW0oW1widG9wLWxlZnRcIixcInRvcC1yaWdodFwiLFwiYm90dG9tLWxlZnRcIixcImJvdHRvbS1yaWdodFwiXSkpLm9wdGlvbmFsKCksZGV2VG9vbHNQYW5lbFNpemU6cmguei5yZWNvcmQocmguei5zdHJpbmcoKSxyaC56Lm9iamVjdCh7d2lkdGg6cmguei5udW1iZXIoKSxoZWlnaHQ6cmguei5udW1iZXIoKX0pKS5vcHRpb25hbCgpLHNjYWxlOnJoLnoubnVtYmVyKCkub3B0aW9uYWwoKSxoaWRlU2hvcnRjdXQ6cmguei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCl9KTtmdW5jdGlvbiByZyhlKXtyZXR1cm4gZSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD9cInN5bWJvbFwiOnR5cGVvZiBlfXZhciByeT17fSxydj1udWxsO2Z1bmN0aW9uIHJiKCl7aWYoMCE9PU9iamVjdC5rZXlzKHJ5KS5sZW5ndGgpe3ZhciBlPUpTT04uc3RyaW5naWZ5KHJ5KTtyeT17fSxmZXRjaChcIi9fX25leHRqc19kZXZ0b29sc19jb25maWdcIix7bWV0aG9kOlwiUE9TVFwiLGhlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCJ9LGJvZHk6ZSxrZWVwYWxpdmU6ITB9KS5jYXRjaChmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIHNhdmUgY29uZmlnOlwiLHtkYXRhOmUsZXJyb3I6dH0pfSl9fWZ1bmN0aW9uIHJBKGUpe3ZhciB0PXJtLnNhZmVQYXJzZShlKTtpZighdC5zdWNjZXNzKXJldHVybiB2b2lkIGNvbnNvbGUud2FybihcIltOZXh0LmpzIERldlRvb2xzXSBJbnZhbGlkIGNvbmZpZyBwYXRjaDpcIix0LmVycm9yLm1lc3NhZ2UpO3J5PWZ1bmN0aW9uIGUodCxuKXtpZighbnx8KHZvaWQgMD09PW4/XCJ1bmRlZmluZWRcIjpyZyhuKSkhPT1cIm9iamVjdFwifHxBcnJheS5pc0FycmF5KG4pfHwhdHx8KHZvaWQgMD09PXQ/XCJ1bmRlZmluZWRcIjpyZyh0KSkhPT1cIm9iamVjdFwifHxBcnJheS5pc0FycmF5KHQpKXJldHVybiBuO3ZhciByPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sdCk7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb10saT10W29dO3ZvaWQgMCE9PWEmJihhJiYodm9pZCAwPT09YT9cInVuZGVmaW5lZFwiOnJnKGEpKT09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KGEpJiZpJiYodm9pZCAwPT09aT9cInVuZGVmaW5lZFwiOnJnKGkpKT09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KGkpP3Jbb109ZShpLGEpOnJbb109YSl9cmV0dXJuIHJ9KHJ5LGUpLHJ2JiZjbGVhclRpbWVvdXQocnYpLHJ2PXNldFRpbWVvdXQocmIsMTIwKX1mdW5jdGlvbiByeChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gcncoKXt2YXIgZSx0LG49KGU9W1wiXFxuICAucHJlZmVyZW5jZXMtY29udGFpbmVyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuXFxuICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcXG4gICAgLnByZWZlcmVuY2VzLWNvbnRhaW5lciB7XFxuICAgICAgd2lkdGg6IDQ4MHB4O1xcbiAgICB9XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1zZWN0aW9uOmZpcnN0LWNoaWxkIHtcXG4gICAgcGFkZGluZy10b3A6IDA7XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1zZWN0aW9uIHtcXG4gICAgcGFkZGluZzogMTJweCAwO1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogMjRweDtcXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLXNlY3Rpb246bGFzdC1jaGlsZCB7XFxuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1oZWFkZXIge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICBmbGV4OiAxO1xcbiAgfVxcblxcbiAgLnByZWZlcmVuY2UtaGVhZGVyIGxhYmVsIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLWRlc2NyaXB0aW9uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLnNlbGVjdC1idXR0b24sXFxuICAuYWN0aW9uLWJ1dHRvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogOHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMTUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KTtcXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICAgIH1cXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMTRweDtcXG4gICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5zZWxlY3QtYnV0dG9uIHtcXG4gICAgJjpmb2N1cy13aXRoaW4ge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcbiAgICB9XFxuXFxuICAgIHNlbGVjdCB7XFxuICAgICAgYWxsOiB1bnNldDtcXG4gICAgfVxcblxcbiAgICBvcHRpb24ge1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnByZWZlcmVuY2Utc2VjdGlvbiBidXR0b246ZGlzYWJsZWQge1xcbiAgICBvcGFjaXR5OiAwLjY7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxuXFxuICA6Z2xvYmFsKC5pY29uKSB7XFxuICAgIHdpZHRoOiAxOHB4O1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIGNvbG9yOiAjNjY2O1xcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBydz1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIHJDKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LEMsXyxrLEUsaixTLEIsUCxJLHosVCxELEwsTixSLE0sWixVLEYscSxILFYsJCxXLFk9KDAsQS5jKSg2NSksSz1lLnRoZW1lLFg9ZS5oaWRlLEc9ZS5oaWRlU2hvcnRjdXQsUT1lLnNldEhpZGVTaG9ydGN1dCxKPWUuc2NhbGUsZWU9ZS5zZXRQb3NpdGlvbixldD1lLnNldFNjYWxlLGVuPWUucG9zaXRpb24sZXI9KG89KHQ9KDAseC51c2VTdGF0ZSkoITEpLG49MixyPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJmKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJmKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKVswXSxhPXJbMV0se3Jlc3RhcnRTZXJ2ZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmludmFsaWRhdGVQZXJzaXN0ZW50Q2FjaGU7cmV0dXJuKHQ9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbyxpLGw7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX0saT1PYmplY3QuY3JlYXRlKChcImZ1bmN0aW9uXCI9PXR5cGVvZiBJdGVyYXRvcj9JdGVyYXRvcjpPYmplY3QpLnByb3RvdHlwZSk7cmV0dXJuIGkubmV4dD1sKDApLGkudGhyb3c9bCgxKSxpLnJldHVybj1sKDIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiBsKGwpe3JldHVybiBmdW5jdGlvbihzKXt2YXIgYz1bbCxzXTtpZihuKXRocm93IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpJiYoaT0wLGNbMF0mJihhPTApKSxhOyl0cnl7aWYobj0xLHImJihvPTImY1swXT9yLnJldHVybjpjWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsY1sxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoYz1bMiZjWzBdLG8udmFsdWVdKSxjWzBdKXtjYXNlIDA6Y2FzZSAxOm89YzticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6Y1sxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9Y1sxXSxjPVswXTtjb250aW51ZTtjYXNlIDc6Yz1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG89KG89YS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSkmJig2PT09Y1swXXx8Mj09PWNbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWNbMF0mJighb3x8Y1sxXT5vWzBdJiZjWzFdPG9bM10pKXthLmxhYmVsPWNbMV07YnJlYWt9aWYoNj09PWNbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89YzticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGMpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1jPXQuY2FsbChlLGEpfWNhdGNoKGUpe2M9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZjWzBdKXRocm93IGNbMV07cmV0dXJue3ZhbHVlOmNbMF0/Y1sxXTp2b2lkIDAsZG9uZTohMH19fX0odGhpcyxmdW5jdGlvbihzKXtzd2l0Y2gocy5sYWJlbCl7Y2FzZSAwOmEoITApLGU9bj9cIi9fX25leHRqc19yZXN0YXJ0X2Rldj9pbnZhbGlkYXRlUGVyc2lzdGVudENhY2hlPTFcIjpcIi9fX25leHRqc19yZXN0YXJ0X2RldlwiLHQ9ITEscy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcy50cnlzLnB1c2goWzEsMTEsMTIsMTNdKSxbNCxmZXRjaChcIi9fX25leHRqc19zZXJ2ZXJfc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuanNvbigpfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5leGVjdXRpb25JZH0pLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLmxvZyhcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gZmV0Y2ggc2VydmVyIHN0YXR1cyB3aGlsZSByZXN0YXJ0aW5nIGRldiBzZXJ2ZXIuXCIsZSksbnVsbH0pXTtjYXNlIDI6aWYoIShyPXMuc2VudCgpKSlyZXR1cm4gY29uc29sZS5sb2coXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIGdldCB0aGUgY3VycmVudCBzZXJ2ZXIgZXhlY3V0aW9uIElEIHdoaWxlIHJlc3RhcnRpbmcgZGV2IHNlcnZlci5cIiksWzJdO3JldHVybls0LGZldGNoKGUse21ldGhvZDpcIlBPU1RcIn0pXTtjYXNlIDM6aWYoIShvPXMuc2VudCgpKS5vaylyZXR1cm4gY29uc29sZS5sb2coXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIGZldGNoIHJlc3RhcnQgc2VydmVyIGVuZHBvaW50LiBTdGF0dXM6XCIsby5zdGF0dXMpLFsyXTtpPTAscy5sYWJlbD00O2Nhc2UgNDppZighKGk8MTApKXJldHVyblszLDEwXTtyZXR1cm5bNCxuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLDFlMyl9KV07Y2FzZSA1OnMuc2VudCgpLHMubGFiZWw9NjtjYXNlIDY6cmV0dXJuIHMudHJ5cy5wdXNoKFs2LDgsLDldKSxbNCxmZXRjaChcIi9fX25leHRqc19zZXJ2ZXJfc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuanNvbigpfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5leGVjdXRpb25JZH0pXTtjYXNlIDc6aWYobD1zLnNlbnQoKSxyIT09bClyZXR1cm4gdD0hMCx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCksWzJdO3JldHVyblszLDldO2Nhc2UgODpyZXR1cm4gcy5zZW50KCksWzMsOV07Y2FzZSA5OnJldHVybiBpKyssWzMsNF07Y2FzZSAxMDpyZXR1cm4gY29uc29sZS5sb2coXCJbTmV4dC5qcyBEZXZUb29sc10gRmFpbGVkIHRvIHJlc3RhcnQgc2VydmVyLiBFeGhhdXN0ZWQgYWxsIHBvbGxpbmcgYXR0ZW1wdHMuXCIpLFsyXTtjYXNlIDExOnJldHVybiBjb25zb2xlLmxvZyhcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gcmVzdGFydCBzZXJ2ZXIuXCIscy5zZW50KCkpLFsyXTtjYXNlIDEyOnJldHVybiB0fHxhKCExKSxbN107Y2FzZSAxMzpyZXR1cm5bMl19fSl9LGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixvKXt2YXIgYT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gaShlKXtycChhLHIsbyxpLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtycChhLHIsbyxpLGwsXCJ0aHJvd1wiLGUpfWkodm9pZCAwKX0pfSkoKX0saXNQZW5kaW5nOm99KSxlbz1lci5yZXN0YXJ0U2VydmVyLGVhPWVyLmlzUGVuZGluZyxlaT1kYSgpLnNoYWRvd1Jvb3Q7WVswXSE9PWVpLmhvc3Q/KGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZWkuaG9zdDtpZihcInN5c3RlbVwiPT09ZS50YXJnZXQudmFsdWUpe3QuY2xhc3NMaXN0LnJlbW92ZShcImRhcmtcIiksdC5jbGFzc0xpc3QucmVtb3ZlKFwibGlnaHRcIiksckEoe3RoZW1lOlwic3lzdGVtXCJ9KTtyZXR1cm59XCJkYXJrXCI9PT1lLnRhcmdldC52YWx1ZT8odC5jbGFzc0xpc3QuYWRkKFwiZGFya1wiKSx0LmNsYXNzTGlzdC5yZW1vdmUoXCJsaWdodFwiKSxyQSh7dGhlbWU6XCJkYXJrXCJ9KSk6KHQuY2xhc3NMaXN0LnJlbW92ZShcImRhcmtcIiksdC5jbGFzc0xpc3QuYWRkKFwibGlnaHRcIiksckEoe3RoZW1lOlwibGlnaHRcIn0pKX0sWVswXT1laS5ob3N0LFlbMV09aSk6aT1ZWzFdO3ZhciBlbD1pO1lbMl0hPT1lZT8obD1mdW5jdGlvbihlKXtlZShlLnRhcmdldC52YWx1ZSksckEoe2RldlRvb2xzUG9zaXRpb246ZS50YXJnZXQudmFsdWV9KX0sWVsyXT1lZSxZWzNdPWwpOmw9WVszXTt2YXIgZXM9bDtZWzRdIT09ZXQ/KHM9ZnVuY3Rpb24oZSl7dmFyIHQ9TnVtYmVyKGUudGFyZ2V0LnZhbHVlKTtldCh0KSxyQSh7c2NhbGU6dH0pfSxZWzRdPWV0LFlbNV09cyk6cz1ZWzVdO3ZhciBlYz1zO3JldHVybiBZWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGM9KDAsYi5qc3gpKFwiaDJcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tc2VjdGlvbi10aXRsZVwiLGNoaWxkcmVuOlwiR2VuZXJhbFwifSksWVs2XT1jKTpjPVlbNl0sWVs3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh1PSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwibGFiZWxcIix7aHRtbEZvcjpcInRoZW1lXCIsY2hpbGRyZW46XCJUaGVtZVwifSksKDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJTZWxlY3QgeW91ciB0aGVtZSBwcmVmZXJlbmNlLlwifSldfSksWVs3XT11KTp1PVlbN10sWVs4XSE9PUs/KGQ9KDAsYi5qc3gpKHJFLHt0aGVtZTpLfSksWVs4XT1LLFlbOV09ZCk6ZD1ZWzldLFlbMTBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHA9KDAsYi5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwic3lzdGVtXCIsY2hpbGRyZW46XCJTeXN0ZW1cIn0pLGg9KDAsYi5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwibGlnaHRcIixjaGlsZHJlbjpcIkxpZ2h0XCJ9KSxmPSgwLGIuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcImRhcmtcIixjaGlsZHJlbjpcIkRhcmtcIn0pLFlbMTBdPWYsWVsxMV09cCxZWzEyXT1oKTooZj1ZWzEwXSxwPVlbMTFdLGg9WVsxMl0pLFlbMTNdIT09ZWx8fFlbMTRdIT09ZHx8WVsxNV0hPT1LPyhtPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W3UsKDAsYi5qc3hzKShyayx7aWQ6XCJ0aGVtZVwiLG5hbWU6XCJ0aGVtZVwiLHByZWZpeDpkLHZhbHVlOkssb25DaGFuZ2U6ZWwsY2hpbGRyZW46W3AsaCxmXX0pXX0pLFlbMTNdPWVsLFlbMTRdPWQsWVsxNV09SyxZWzE2XT1tKTptPVlbMTZdLFlbMTddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGc9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJsYWJlbFwiLHtodG1sRm9yOlwicG9zaXRpb25cIixjaGlsZHJlbjpcIlBvc2l0aW9uXCJ9KSwoMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIkFkanVzdCB0aGUgcGxhY2VtZW50IG9mIHlvdXIgZGV2IHRvb2xzLlwifSldfSksWVsxN109Zyk6Zz1ZWzE3XSxZWzE4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh5PSgwLGIuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcImJvdHRvbS1sZWZ0XCIsY2hpbGRyZW46XCJCb3R0b20gTGVmdFwifSksdj0oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJib3R0b20tcmlnaHRcIixjaGlsZHJlbjpcIkJvdHRvbSBSaWdodFwifSksdz0oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJ0b3AtbGVmdFwiLGNoaWxkcmVuOlwiVG9wIExlZnRcIn0pLEM9KDAsYi5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwidG9wLXJpZ2h0XCIsY2hpbGRyZW46XCJUb3AgUmlnaHRcIn0pLFlbMThdPXksWVsxOV09dixZWzIwXT13LFlbMjFdPUMpOih5PVlbMThdLHY9WVsxOV0sdz1ZWzIwXSxDPVlbMjFdKSxZWzIyXSE9PWVzfHxZWzIzXSE9PWVuPyhfPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W2csKDAsYi5qc3hzKShyayx7aWQ6XCJwb3NpdGlvblwiLG5hbWU6XCJwb3NpdGlvblwiLHZhbHVlOmVuLG9uQ2hhbmdlOmVzLGNoaWxkcmVuOlt5LHYsdyxDXX0pXX0pLFlbMjJdPWVzLFlbMjNdPWVuLFlbMjRdPV8pOl89WVsyNF0sWVsyNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaz0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLGIuanN4KShcImxhYmVsXCIse2h0bWxGb3I6XCJzaXplXCIsY2hpbGRyZW46XCJTaXplXCJ9KSwoMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIkFkanVzdCB0aGUgc2l6ZSBvZiB5b3VyIGRldiB0b29scy5cIn0pXX0pLFlbMjVdPWspOms9WVsyNV0sWVsyNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oRT1PYmplY3QuZW50cmllcyhPKS5tYXAocl8pLFlbMjZdPUUpOkU9WVsyNl0sWVsyN10hPT1lY3x8WVsyOF0hPT1KPyhqPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W2ssKDAsYi5qc3gpKHJrLHtpZDpcInNpemVcIixuYW1lOlwic2l6ZVwiLHZhbHVlOkosb25DaGFuZ2U6ZWMsY2hpbGRyZW46RX0pXX0pLFlbMjddPWVjLFlbMjhdPUosWVsyOV09aik6aj1ZWzI5XSxZWzMwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhTPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwibGFiZWxcIix7aWQ6XCJoaWRlLWRldi10b29sc1wiLGNoaWxkcmVuOlwiSGlkZSBEZXYgVG9vbHMgZm9yIHRoaXMgc2Vzc2lvblwifSksKDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJIaWRlIERldiBUb29scyB1bnRpbCB5b3UgcmVzdGFydCB5b3VyIGRldiBzZXJ2ZXIsIG9yIDEgZGF5LlwifSldfSksWVszMF09Uyk6Uz1ZWzMwXSxZWzMxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhCPSgwLGIuanN4KShuMix7fSksUD0oMCxiLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOlwiSGlkZVwifSksWVszMV09QixZWzMyXT1QKTooQj1ZWzMxXSxQPVlbMzJdKSxZWzMzXSE9PVg/KEk9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbUywoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1jb250cm9sXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImJ1dHRvblwiLHtcImFyaWEtZGVzY3JpYmVkYnlcIjpcImhpZGUtZGV2LXRvb2xzXCIsbmFtZTpcImhpZGUtZGV2LXRvb2xzXCIsXCJkYXRhLWhpZGUtZGV2LXRvb2xzXCI6ITAsY2xhc3NOYW1lOlwiYWN0aW9uLWJ1dHRvblwiLG9uQ2xpY2s6WCxjaGlsZHJlbjpbQixQXX0pfSldfSksWVszM109WCxZWzM0XT1JKTpJPVlbMzRdLFlbMzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHo9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJsYWJlbFwiLHtpZDpcImhpZGUtZGV2LXRvb2xzXCIsY2hpbGRyZW46XCJIaWRlIERldiBUb29scyBzaG9ydGN1dFwifSksKDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJTZXQgYSBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXQgdG8gdG9nZ2xlIHZpc2liaWxpdHkuXCJ9KV19KSxZWzM1XT16KTp6PVlbMzVdLFlbMzZdIT09Rz8oVD1udWxsIT0oRD1udWxsPT1HP3ZvaWQgMDpHLnNwbGl0KFwiK1wiKSk/RDpudWxsLFlbMzZdPUcsWVszN109VCk6VD1ZWzM3XSxZWzM4XSE9PVF8fFlbMzldIT09VD8oTD0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOlt6LCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWNvbnRyb2xcIixjaGlsZHJlbjooMCxiLmpzeCkocm4se3ZhbHVlOlQsb25DaGFuZ2U6UX0pfSldfSksWVszOF09USxZWzM5XT1ULFlbNDBdPUwpOkw9WVs0MF0sWVs0MV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oTj0oMCxiLmpzeCkoXCJsYWJlbFwiLHtjaGlsZHJlbjpcIkRpc2FibGUgRGV2IFRvb2xzIGZvciB0aGlzIHByb2plY3RcIn0pLFlbNDFdPU4pOk49WVs0MV0sWVs0Ml09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oUj0oMCxiLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcImRldkluZGljYXRvcnM6IGZhbHNlXCJ9KSxZWzQyXT1SKTpSPVlbNDJdLFlbNDNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KE09KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbTiwoMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46W1wiVG8gZGlzYWJsZSB0aGlzIFVJIGNvbXBsZXRlbHksIHNldFwiLFwiIFwiLFIsXCIgXCIsXCJpbiB5b3VyIFwiLCgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwibmV4dC5jb25maWdcIn0pLFwiIFwiLFwiZmlsZS5cIl19KV19KX0pLFlbNDNdPU0pOk09WVs0M10sWVs0NF0hPT1tfHxZWzQ1XSE9PV98fFlbNDZdIT09anx8WVs0N10hPT1JfHxZWzQ4XSE9PUw/KFo9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlcy1jb250YWluZXJcIixjaGlsZHJlbjpbbSxfLGosSSxMLE1dfSksWVs0NF09bSxZWzQ1XT1fLFlbNDZdPWosWVs0N109SSxZWzQ4XT1MLFlbNDldPVopOlo9WVs0OV0sWVs1MF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oVT0oMCxiLmpzeCkoXCJoMlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1zZWN0aW9uLXRpdGxlXCIsY2hpbGRyZW46XCJEZXZlbG9wbWVudCBTZXJ2ZXJcIn0pLFlbNTBdPVUpOlU9WVs1MF0sWVs1MV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oRj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLGIuanN4KShcImxhYmVsXCIse2lkOlwicmVzdGFydC1kZXYtc2VydmVyXCIsY2hpbGRyZW46XCJSZXN0YXJ0IERldiBTZXJ2ZXJcIn0pLCgwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiUmVzdGFydHMgdGhlIGRldmVsb3BtZW50IHNlcnZlciB3aXRob3V0IG5lZWRpbmcgdG8gbGVhdmUgdGhlIGJyb3dzZXIuXCJ9KV19KSxZWzUxXT1GKTpGPVlbNTFdLFlbNTJdIT09ZW8/KHE9ZnVuY3Rpb24oKXtyZXR1cm4gZW8oe2ludmFsaWRhdGVQZXJzaXN0ZW50Q2FjaGU6ITF9KX0sWVs1Ml09ZW8sWVs1M109cSk6cT1ZWzUzXSxZWzU0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhIPSgwLGIuanN4KShcInNwYW5cIix7Y2hpbGRyZW46XCJSZXN0YXJ0XCJ9KSxZWzU0XT1IKTpIPVlbNTRdLFlbNTVdIT09ZWF8fFlbNTZdIT09cT8oVj0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZXMtY29udGFpbmVyXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbRiwoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1jb250cm9sXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwiYnV0dG9uXCIse1wiYXJpYS1kZXNjcmliZWRieVwiOlwicmVzdGFydC1kZXYtc2VydmVyXCIsdGl0bGU6XCJSZXN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIHdpdGhvdXQgbmVlZGluZyB0byBsZWF2ZSB0aGUgYnJvd3Nlci5cIixuYW1lOlwicmVzdGFydC1kZXYtc2VydmVyXCIsXCJkYXRhLXJlc3RhcnQtZGV2LXNlcnZlclwiOiEwLGNsYXNzTmFtZTpcImFjdGlvbi1idXR0b25cIixvbkNsaWNrOnEsZGlzYWJsZWQ6ZWEsY2hpbGRyZW46SH0pfSldfSl9KSxZWzU1XT1lYSxZWzU2XT1xLFlbNTddPVYpOlY9WVs1N10sWVs1OF0hPT1lYXx8WVs1OV0hPT1lbz8oJD1wcm9jZXNzLmVudi5fX05FWFRfQlVORExFUl9IQVNfUEVSU0lTVEVOVF9DQUNIRT8oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZXMtY29udGFpbmVyXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbKDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJsYWJlbFwiLHtpZDpcInJlc2V0LWJ1bmRsZXItY2FjaGVcIixjaGlsZHJlbjpcIlJlc2V0IEJ1bmRsZXIgQ2FjaGVcIn0pLCgwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiQ2xlYXJzIHRoZSBidW5kbGVyIGNhY2hlIGFuZCByZXN0YXJ0cyB0aGUgZGV2IHNlcnZlci4gSGVscGZ1bCBpZiB5b3UgYXJlIHNlZWluZyBzdGFsZSBlcnJvcnMgb3IgY2hhbmdlcyBhcmUgbm90IGFwcGVhcmluZy5cIn0pXX0pLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWNvbnRyb2xcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJyZXNldC1idW5kbGVyLWNhY2hlXCIsdGl0bGU6XCJDbGVhcnMgdGhlIGJ1bmRsZXIgY2FjaGUgYW5kIHJlc3RhcnRzIHRoZSBkZXYgc2VydmVyLiBIZWxwZnVsIGlmIHlvdSBhcmUgc2VlaW5nIHN0YWxlIGVycm9ycyBvciBjaGFuZ2VzIGFyZSBub3QgYXBwZWFyaW5nLlwiLG5hbWU6XCJyZXNldC1idW5kbGVyLWNhY2hlXCIsXCJkYXRhLXJlc2V0LWJ1bmRsZXItY2FjaGVcIjohMCxjbGFzc05hbWU6XCJhY3Rpb24tYnV0dG9uXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBlbyh7aW52YWxpZGF0ZVBlcnNpc3RlbnRDYWNoZTohMH0pfSxkaXNhYmxlZDplYSxjaGlsZHJlbjooMCxiLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOlwiUmVzZXQgQ2FjaGVcIn0pfSl9KV19KX0pOm51bGwsWVs1OF09ZWEsWVs1OV09ZW8sWVs2MF09JCk6JD1ZWzYwXSxZWzYxXSE9PVp8fFlbNjJdIT09Vnx8WVs2M10hPT0kPyhXPSgwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46W2MsWixVLFYsJF19KSxZWzYxXT1aLFlbNjJdPVYsWVs2M109JCxZWzY0XT1XKTpXPVlbNjRdLFd9ZnVuY3Rpb24gcl8oZSl7dmFyIHQsbixyPShuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odD1lKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByeChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByeChlLHQpfX0odCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksbz1yWzBdLGE9clsxXTtyZXR1cm4oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6YSxjaGlsZHJlbjpvfSxvKX1mdW5jdGlvbiByayhlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGM9KDAsQS5jKSgxMSk7cmV0dXJuKGNbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwicHJlZml4XCJdKSxyPWUuY2hpbGRyZW4sbz1lLnByZWZpeCxjWzBdPWUsY1sxXT1yLGNbMl09byxjWzNdPWEpOihyPWNbMV0sbz1jWzJdLGE9Y1szXSksY1s0XSE9PXJ8fGNbNV0hPT1hKT8oaT0oMCxiLmpzeCkoXCJzZWxlY3RcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGEpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksY1s0XT1yLGNbNV09YSxjWzZdPWkpOmk9Y1s2XSxjWzddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9KDAsYi5qc3gpKHJTLHt9KSxjWzddPWwpOmw9Y1s3XSxjWzhdIT09b3x8Y1s5XSE9PWk/KHM9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWxlY3QtYnV0dG9uXCIsY2hpbGRyZW46W28saSxsXX0pLGNbOF09byxjWzldPWksY1sxMF09cyk6cz1jWzEwXSxzfWZ1bmN0aW9uIHJFKGUpe3ZhciB0LG4scixvPSgwLEEuYykoMyk7c3dpdGNoKGUudGhlbWUpe2Nhc2VcInN5c3RlbVwiOnJldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKG4zLHt9KSxvWzBdPXQpOnQ9b1swXSx0O2Nhc2VcImRhcmtcIjpyZXR1cm4gb1sxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4KShuNSx7fSksb1sxXT1uKTpuPW9bMV0sbjtjYXNlXCJsaWdodFwiOnJldHVybiBvWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKG40LHt9KSxvWzJdPXIpOnI9b1syXSxyO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciByaj1lcyhydygpKTtmdW5jdGlvbiByUygpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsXCJhcmlhLWhpZGRlblwiOiEwLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xNC4wNjA3IDUuNDk5OTlMMTMuNTMwMyA2LjAzMDMyTDguNzA3MSAxMC44NTM1QzguMzE2NTggMTEuMjQ0MSA3LjY4MzQxIDExLjI0NDEgNy4yOTI4OSAxMC44NTM1TDIuNDY5NjYgNi4wMzAzMkwxLjkzOTMzIDUuNDk5OTlMMi45OTk5OSA0LjQzOTMzTDMuNTMwMzIgNC45Njk2Nkw3Ljk5OTk5IDkuNDM5MzNMMTIuNDY5NyA0Ljk2OTY2TDEzIDQuNDM5MzNMMTQuMDYwNyA1LjQ5OTk5WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiByTygpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIFtkYXRhLW5leHRqcy1pc3N1ZS1mZWVkYmFjay1idXR0b24tZ3JvdXBdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbWFsbCk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtaXNzdWUtZmVlZGJhY2stYnV0dG9uLWdyb3VwXSBidXR0b24ge1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWlzc3VlLWZlZWRiYWNrLWJ1dHRvbi1ncm91cF0gYnV0dG9uOmZpcnN0LWNoaWxkIHtcXG4gICAgcGFkZGluZzogNHB4IDNweCA0cHggNXB4O1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpIDAgMCB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWlzc3VlLWZlZWRiYWNrLWJ1dHRvbi1ncm91cF0gYnV0dG9uOmxhc3QtY2hpbGQge1xcbiAgICBwYWRkaW5nOiA0cHggNXB4IDRweCAzcHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tcm91bmRlZC1mdWxsKSB2YXIoLS1yb3VuZGVkLWZ1bGwpIDA7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtaXNzdWUtZmVlZGJhY2stc2VwYXJhdG9yXSB7XFxuICAgIHdpZHRoOiAxcHg7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiByTz1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciByQj1lcyhyTygpKTtmdW5jdGlvbiByUCgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgIFwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiByUD1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIHJJKCl7cmV0dXJuKDAsYi5qc3gpKFwic3R5bGVcIix7Y2hpbGRyZW46ZXMoclAoKSxcIlxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIH1cXG4gIH1cXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbjpkaXNhYmxlZCB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gIH1cXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbi0taW5pdGlhbDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gIH1cXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbi0tZXJyb3I6bm90KDpkaXNhYmxlZCksXFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b24tLWVycm9yOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcXG4gIH1cXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbi0tc3VjY2Vzczpub3QoOmRpc2FibGVkKSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWdyZWVuKTtcXG4gIH1cXG5cIiwnXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZS1uby1zb3VyY2VdIHtcXG4gICAgcGFkZGluZzogNnB4IDhweDtcXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xcblxcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lLW5vLXNvdXJjZV06bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZS1pZ25vcmVkPVwidHJ1ZVwiXSB7XFxuICAgIG9wYWNpdHk6IDAuNjtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSB7XFxuICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXG4gICAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XFxuICAgIC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7XFxuICAgIC1tcy11c2VyLXNlbGVjdDogdGV4dDtcXG5cXG4gICAgcGFkZGluZzogNnB4IDhweDtcXG5cXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZyk7XFxuICB9XFxuXFxuICAuY2FsbC1zdGFjay1mcmFtZS1tZXRob2QtbmFtZSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogNHB4O1xcblxcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTZweCk7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2cHgpO1xcbiAgICB9XFxuICB9XFxuXFxuICAub3Blbi1pbi1lZGl0b3ItYnV0dG9uLCAuc291cmNlLW1hcHBpbmctZXJyb3ItYnV0dG9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICB9XFxuICB9XFxuXFxuICAuY2FsbC1zdGFjay1mcmFtZS1maWxlLXNvdXJjZSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG4gIH1cXG4nLG5DLFwiXFxuICBbZGF0YS1uZXh0anMtZW52aXJvbm1lbnQtbmFtZS1sYWJlbF0ge1xcbiAgICBwYWRkaW5nOiAycHggNnB4O1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbWQtMik7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgfVxcblwiLG5mLGVYLG51LHRPLFwiXFxuICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zdGFjay1sYXllci1oZWlnaHQpO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC14bCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gICAgdHJhbnNpdGlvbjpcXG4gICAgICB0cmFuc2xhdGUgMzUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KSxcXG4gICAgICBib3gtc2hhZG93IDM1MG1zIHZhcigtLXRpbWluZy1zd2lmdCk7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMSB7XFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1zaXplLTI0KSk7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMiB7XFxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1zaXplLTQ4KSk7XFxuICAgIHotaW5kZXg6IC0xO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAtMXB4O1xcbiAgICBoZWlnaHQ6IDA7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLXN0YWNrIHtcXG4gICAgLS1zdGFjay1sYXllci1oZWlnaHQ6IDQ0cHg7XFxuICAgIC0tc3RhY2stbGF5ZXItaGVpZ2h0LWhhbGY6IGNhbGModmFyKC0tc3RhY2stbGF5ZXItaGVpZ2h0KSAvIDIpO1xcbiAgICAtLXN0YWNrLWxheWVyLXRyaW06IDEzcHg7XFxuICAgIC0tc2hhZG93OiAwcHggMC45MjVweCAwLjkyNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDIpLFxcbiAgICAgIDBweCAzLjdweCA3LjRweCAtMy43cHggcmdiYSgwLCAwLCAwLCAwLjA0KSxcXG4gICAgICAwcHggMTQuOHB4IDIyLjJweCAtNy40cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcXG5cXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlciBjZW50ZXI7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHotaW5kZXg6IC0xO1xcbiAgICBtYXgtd2lkdGg6IHZhcigtLW5leHQtZGlhbG9nLW1heC13aWR0aCk7XFxuXFxuICAgIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllciB7XFxuICAgICAgZ3JpZC1hcmVhOiAxIC8gMTtcXG4gICAgICAvKiBIaWRlICovXFxuICAgICAgdHJhbnNsYXRlOiAwIGNhbGModmFyKC0tc3RhY2stbGF5ZXItaGVpZ2h0KSAqIC0xKTtcXG4gICAgfVxcblxcbiAgICAmW2RhdGEtc3RhY2stY291bnQ9JzEnXSxcXG4gICAgJltkYXRhLXN0YWNrLWNvdW50PScyJ10ge1xcbiAgICAgIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0xIHtcXG4gICAgICAgIHRyYW5zbGF0ZTogMFxcbiAgICAgICAgICBjYWxjKHZhcigtLXN0YWNrLWxheWVyLWhlaWdodC1oYWxmKSAqIC0xIC0gdmFyKC0tc3RhY2stbGF5ZXItdHJpbSkpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmW2RhdGEtc3RhY2stY291bnQ9JzInXSB7XFxuICAgICAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTIge1xcbiAgICAgICAgdHJhbnNsYXRlOiAwIGNhbGModmFyKC0tc3RhY2stbGF5ZXItdHJpbSkgKiAtMSAqIDIpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvKiBPbmx5IHRoZSBib3R0b20gc3RhY2sgc2hvdWxkIGhhdmUgdGhlIHNoYWRvdyAqL1xcbiAgICAmW2RhdGEtc3RhY2stY291bnQ9JzEnXSAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMSB7XFxuICAgICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93KTtcXG4gICAgfVxcblxcbiAgICAmW2RhdGEtc3RhY2stY291bnQ9JzInXSB7XFxuICAgICAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTIge1xcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cIixcIlxcbiAgLmVycm9yLW92ZXJsYXktcGFnaW5hdGlvbiB7XFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICAgIHdpZHRoOiBmaXQtY29udGVudDtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LXBhZ2luYXRpb24tY291bnQge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LXBhZ2luYXRpb24tYnV0dG9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTI0KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xcbiAgICBmbGV4LXNocmluazogMDtcXG5cXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG5cXG4gICAgJjpub3QoOmRpc2FibGVkKTphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gICAgfVxcblxcbiAgICAmOmRpc2FibGVkIHtcXG4gICAgICBvcGFjaXR5OiAwLjU7XFxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b24taWNvbiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgfVxcblwiLCdcXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIHtcXG4gICAgLS1jb2RlLWZyYW1lLXBhZGRpbmc6IDEycHg7XFxuICAgIC0tY29kZS1mcmFtZS1saW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWNvZGUtZnJhbWUtbGluZS1oZWlnaHQpO1xcbiAgICBtYXJnaW46IDhweCAwO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1saW5rLFxcbiAgLmNvZGUtZnJhbWUtcHJlIHtcXG4gICAgcGFkZGluZzogdmFyKC0tY29kZS1mcmFtZS1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWxpbmsgc3ZnIHtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1saW5lcyB7XFxuICAgIG1pbi13aWR0aDogbWF4LWNvbnRlbnQ7XFxuICB9XFxuXFxuICAuY29kZS1mcmFtZS1saW5rIFtkYXRhLXRleHRdIHtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gICAgbWFyZ2luOiBhdXRvIDZweDtcXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWhlYWRlciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDEwMG1zIGVhc2Utb3V0O1xcbiAgICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIH1cXG5cXG4gIFtkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGluay1zb3VyY2UtZmlsZV0ge1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIG1hcmdpbjogLTRweCAwIC00cHggYXV0bztcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXTo6c2VsZWN0aW9uLFxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gKjo6c2VsZWN0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1zZWxlY3Rpb24pO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gKjpub3QoYSkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lLWxpbmVdW2RhdGEtbmV4dGpzLWNvZGVmcmFtZS1saW5lLS1lcnJvcmVkPVwidHJ1ZVwiXSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgaXNvbGF0aW9uOiBpc29sYXRlO1xcblxcbiAgICA+IHNwYW4geyBcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgei1pbmRleDogMTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgY29udGVudDogXCJcIjtcXG4gICAgICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tY29kZS1mcmFtZS1wYWRkaW5nKSAqIDIpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tY29kZS1mcmFtZS1saW5lLWhlaWdodCk7XFxuICAgICAgbGVmdDogY2FsYygtMSAqIHZhcigtLWNvZGUtZnJhbWUtcGFkZGluZykpO1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXJlZC0yMDApO1xcbiAgICAgIGJveC1zaGFkb3c6IDJweCAwIDAgMCB2YXIoLS1jb2xvci1yZWQtOTAwKSBpbnNldDtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIH1cXG4gIH1cXG5cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gKiB7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWxpbmsge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG91dGxpbmU6IDA7XFxuICB9XFxuICAuY29kZS1mcmFtZS1saW5rIFtkYXRhLWljb249XFwncmlnaHRcXCddIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSBkaXYgPiBwcmUge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSBzdmcge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgfVxcbicsXCJcXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF06OnNlbGVjdGlvbixcXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gKjo6c2VsZWN0aW9uIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1zZWxlY3Rpb24pO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSA+IGRpdiA+IHAge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSA+IGRpdiA+IHA6aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdIGRpdiA+IHByZSB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIH1cXG5cIixcIlxcbiAgW2RhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rXSBzdmcge1xcbiAgICB3aWR0aDogYXV0bztcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE0KTtcXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcXG4gIH1cXG4gIFtkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGlua10ge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICB9XFxuICBbZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmtdOmhvdmVyIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbiAgfVxcbiAgW2RhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rLWltcG9ydC10cmFjZV0ge1xcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcXG4gIH1cXG5cIixcIlwiLFwiXFxuICAubmV4dGpzLWVycm9yLXdpdGgtc3RhdGljIHtcXG4gICAgYm90dG9tOiBjYWxjKDE2cHggKiA0LjUpO1xcbiAgfVxcbiAgcC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2xpbmsge1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgfVxcbiAgcC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX25vdGVzIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN0YWNrLW5vdGVzKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5ID4gaDI6bm90KDpmaXJzdC1jaGlsZCkge1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKDE2cHggKyA4cHgpO1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHkgPiBoMiB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10aXRsZS1jb2xvcik7XFxuICAgIG1hcmdpbi1ib3R0b206IDhweDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTIwKTtcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudCB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudDpob3ZlciB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1lcnJvcnMgPiBzdmcge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtaGlkZS1idXR0b24ge1xcbiAgICBtYXJnaW4tbGVmdDogMjRweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XFxuICAgIG9wYWNpdHk6IDAuNztcXG4gIH1cXG4gIC5uZXh0anMtdG9hc3QtaGlkZS1idXR0b246aG92ZXIge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbiAgLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fZXJyb3JfdGl0bGUge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XFxuICB9XFxuICAuZXJyb3Itb3ZlcmxheS1ub3Rlcy1jb250YWluZXIge1xcbiAgICBtYXJnaW46IDhweCAycHg7XFxuICB9XFxuICAuZXJyb3Itb3ZlcmxheS1ub3Rlcy1jb250YWluZXIgcCB7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG4gIH1cXG5cIixuWixcIlxcbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA0cHg7XFxuXFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yNik7XFxuICAgIHBhZGRpbmc6IDZweCA4cHggNnB4IDZweDtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbWFsbCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gIH1cXG5cXG4gIGEubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci12ZXJzaW9uLXN0YXR1cyB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICB9XFxuICB9XFxuXFxuICAudmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yLmZyZXNoIHtcXG4gICAgZmlsbDogdmFyKC0tY29sb3ItZ3JlZW4tODAwKTtcXG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1ncmVlbi0zMDApO1xcbiAgfVxcbiAgLnZlcnNpb24tc3RhbGVuZXNzLWluZGljYXRvci5zdGFsZSB7XFxuICAgIGZpbGw6IHZhcigtLWNvbG9yLWFtYmVyLTgwMCk7XFxuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYW1iZXItMzAwKTtcXG4gIH1cXG4gIC52ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3Iub3V0ZGF0ZWQge1xcbiAgICBmaWxsOiB2YXIoLS1jb2xvci1yZWQtODAwKTtcXG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1yZWQtMzAwKTtcXG4gIH1cXG4gIC52ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3IudW5rbm93biB7XFxuICAgIGZpbGw6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcXG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XFxuICB9XFxuXFxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci12ZXJzaW9uLXN0YXR1cyA+IC50dXJib3BhY2stdGV4dCB7XFxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcXG4gICAgICB0byByaWdodCxcXG4gICAgICB2YXIoLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQpIDAlLFxcbiAgICAgIHZhcigtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWUpIDEwMCVcXG4gICAgKTtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcXG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgfVxcblwiLFwiXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICAgIHBhZGRpbmc6IDJweCA0cHg7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEzKTtcXG4gICAgd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlcztcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWNvbnRhaW5lciB7XFxuICAgIHBhZGRpbmc6IDZweDtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gICAgbWluLXdpZHRoOiAzMjZweDtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLXByZSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb3B5LWJ1dHRvbiB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHJpZ2h0OiA4cHg7XFxuICAgIHRvcDogOHB4O1xcbiAgICBwYWRkaW5nOiA0cHg7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTI0KTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIHBhZGRpbmc6IDAgMTZweDtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmUuZGV2LXRvb2xzLWluZm8taGlnaGxpZ2h0IHtcXG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ibHVlLTkwMCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJsdWUtNDAwKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5IHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN5bnRheC1rZXl3b3JkKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24tdmFsdWUge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3ludGF4LWxpbmspO1xcbiAgfVxcblwiLFwiXCIscmosJ1xcbiAgLm5leHRqcy1zY3JvbGwtZmFkZXIge1xcbiAgICAtLWJsdXI6IDFweDtcXG4gICAgLS1zdG9wOiAyNSU7XFxuICAgIC0taGVpZ2h0OiAxNTBweDtcXG4gICAgLS1jb2xvci1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogdmFyKC0taGVpZ2h0KTtcXG4gICAgbGVmdDogMDtcXG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKHZhcigtLWJsdXIpKTtcXG5cXG4gICAgJltkYXRhLXNpZGU9XCJ0b3BcIl0ge1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCB0cmFuc3BhcmVudCwgdmFyKC0tY29sb3ItYmcpKTtcXG4gICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jb2xvci1iZykgdmFyKC0tc3RvcCksIHRyYW5zcGFyZW50KTtcXG4gICAgfVxcbiAgfVxcbicsckIscnUpfSl9ZnVuY3Rpb24gcnooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJUKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByeihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByeihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiByRChlLHQpe3ZhciBuLHIsbyxhLGk9KDAsQS5jKSgxMCksbD12b2lkIDAhPT1lJiZlO2lbMF0hPT10PyhuPXZvaWQgMD09PXQ/e306dCxpWzBdPXQsaVsxXT1uKTpuPWlbMV07dmFyIHM9bixjPXJUKCgwLHgudXNlU3RhdGUpKGwpLDIpLHU9Y1swXSxkPWNbMV0sZj1yVCgoMCx4LnVzZVN0YXRlKSghMSksMikscD1mWzBdLGg9ZlsxXSxtPXMuZW50ZXJEZWxheSxnPXMuZXhpdERlbGF5LHk9dm9pZCAwPT09bT8xOm0sdj12b2lkIDA9PT1nPzA6ZztyZXR1cm4gaVsyXSE9PWx8fGlbM10hPT15fHxpWzRdIT09dj8ocj1mdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIGw/KGQoITApLHk8PTA/aCghMCk6ZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aCghMCl9LHkpKTooaCghMSksdjw9MD9kKCExKTp0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkKCExKX0sdikpLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGUpLGNsZWFyVGltZW91dCh0KX19LG89W2wseSx2XSxpWzJdPWwsaVszXT15LGlbNF09dixpWzVdPXIsaVs2XT1vKToocj1pWzVdLG89aVs2XSksKDAseC51c2VFZmZlY3QpKHIsbyksaVs3XSE9PXV8fGlbOF0hPT1wPyhhPXttb3VudGVkOnUscmVuZGVyZWQ6cH0saVs3XT11LGlbOF09cCxpWzldPWEpOmE9aVs5XSxhfWZ1bmN0aW9uIHJMKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiByTihlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gclIoZSl7dmFyIHQsbixyLG8sYSxpLGwscz0oMCxBLmMpKDE4KSxjPWUuc3RhdGUsdT1lLmRpc3BhdGNoLGQ9ZS5nZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlscyxmPWUucnVudGltZUVycm9ycyxwPWUuZXJyb3JDb3VudCxoPSEhcHJvY2Vzcy5lbnYuVFVSQk9QQUNLO3NbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17ZXhpdERlbGF5OjIwMH0sc1swXT10KTp0PXNbMF07dmFyIG09ckQoYy5pc0Vycm9yT3ZlcmxheU9wZW4sdCksZz1tLm1vdW50ZWQseT1tLnJlbmRlcmVkO3NbMV0hPT1wfHxzWzJdIT09eXx8c1szXSE9PWMudmVyc2lvbkluZm8/KG49e3JlbmRlcmVkOnksdHJhbnNpdGlvbkR1cmF0aW9uTXM6MjAwLGlzVHVyYm9wYWNrOmgsdmVyc2lvbkluZm86Yy52ZXJzaW9uSW5mbyxlcnJvckNvdW50OnB9LHNbMV09cCxzWzJdPXksc1szXT1jLnZlcnNpb25JbmZvLHNbNF09bik6bj1zWzRdO3ZhciB2PW47cmV0dXJuIG51bGwhPT1jLmJ1aWxkRXJyb3I/KHNbNV0hPT12fHxzWzZdIT09Yy5idWlsZEVycm9yPyhyPSgwLGIuanN4KShueSxyTihyTCh7fSx2KSx7bWVzc2FnZTpjLmJ1aWxkRXJyb3IscmVuZGVyZWQ6ITB9KSksc1s1XT12LHNbNl09Yy5idWlsZEVycm9yLHNbN109cik6cj1zWzddLHIpOmYubGVuZ3RoP2c/KHNbMTBdIT09dT8oaT1mdW5jdGlvbigpe3Uoe3R5cGU6Rn0pfSxzWzEwXT11LHNbMTFdPWkpOmk9c1sxMV0sc1sxMl0hPT12fHxzWzEzXSE9PWR8fHNbMTRdIT09Znx8c1sxNV0hPT1jLmRlYnVnSW5mb3x8c1sxNl0hPT1pPyhsPSgwLGIuanN4KShuVyxyTihyTCh7fSx2KSx7ZGVidWdJbmZvOmMuZGVidWdJbmZvLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOmQscnVudGltZUVycm9yczpmLG9uQ2xvc2U6aX0pKSxzWzEyXT12LHNbMTNdPWQsc1sxNF09ZixzWzE1XT1jLmRlYnVnSW5mbyxzWzE2XT1pLHNbMTddPWwpOmw9c1sxN10sbCk6KHNbOV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxiLmpzeCkoeC5TdXNwZW5zZSx7fSksc1s5XT1hKTphPXNbOV0sYSk6KHNbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz0oMCxiLmpzeCkoeC5TdXNwZW5zZSx7fSksc1s4XT1vKTpvPXNbOF0sbyl9ZnVuY3Rpb24gck0oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJaKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiByVShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7clooZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gckYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJNKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJNKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfXZhciBycT1mdW5jdGlvbihlKXt2YXIgdCxuLHI9KDAsQS5jKSg0KTtyZXR1cm4gZS5zdGF0ZS5idWlsZEVycm9yPyhyWzBdIT09ZT8odD0oMCxiLmpzeCkoclYsclUoe30sZSkpLHJbMF09ZSxyWzFdPXQpOnQ9clsxXSx0KTooclsyXSE9PWU/KG49KDAsYi5qc3gpKHJILHJVKHt9LGUpKSxyWzJdPWUsclszXT1uKTpuPXJbM10sbil9LHJIPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDEyKSxsPWUuY2hpbGRyZW4scz1lLnN0YXRlLGM9ZS5pc0FwcERpcix1PXMuZXJyb3JzO2lbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17fSxpWzBdPXQpOnQ9aVswXTt2YXIgZD1yRigoMCx4LnVzZVN0YXRlKSh0KSwyKSxmPWRbMF0scD1kWzFdO2lmKGlbMV0hPT11fHxpWzJdIT09Zil7Zm9yKHZhciBoPVtdLG09bnVsbCxnPTA7Zzx1Lmxlbmd0aDsrK2cpe3ZhciB5PXVbZ10sdj15LmlkO2lmKHYgaW4gZil7aC5wdXNoKGZbdl0pO2NvbnRpbnVlfW09eTticmVha31uPVtoLG1dLGlbMV09dSxpWzJdPWYsaVszXT1ufWVsc2Ugbj1pWzNdO3ZhciBiPXJGKG4sMiksdz1iWzBdLEM9YlsxXTtpWzRdIT09Y3x8aVs1XSE9PUM/KHI9ZnVuY3Rpb24oKXtpZihudWxsIT1DKXt2YXIgZSx0LG49ITA7cmV0dXJuKGU9Qyx0PWMsbnooZnVuY3Rpb24oKXt2YXIgbixyLG87cmV0dXJuIG5MKHRoaXMsZnVuY3Rpb24oYSl7c3dpdGNoKGEubGFiZWwpe2Nhc2UgMDp2YXIgaSxsO2lmKG49e2lkOmUuaWQscnVudGltZTohMCxlcnJvcjplLmVycm9yLHR5cGU6ZS50eXBlfSwhKFwidXNlXCJpbiB4KSlyZXR1cm5bMywxXTtyZXR1cm5bMixuRChuVCh7fSxuKSx7ZnJhbWVzOihsPShpPWZ1bmN0aW9uKCl7cmV0dXJuIG56KGZ1bmN0aW9uKCl7cmV0dXJuIG5MKHRoaXMsZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxlRShlLmZyYW1lcyxuUChlLmVycm9yKSx0KV07Y2FzZSAxOnJldHVyblsyLG4uc2VudCgpXX19KX0pKCl9KSgpLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KX0pXTtjYXNlIDE6cmV0dXJuIHI9W25UKHt9LG4pXSxvPXt9LFs0LGVFKGUuZnJhbWVzLG5QKGUuZXJyb3IpLHQpXTtjYXNlIDI6cmV0dXJuWzIsbkQuYXBwbHkodm9pZCAwLHIuY29uY2F0KFsoby5mcmFtZXM9YS5zZW50KCksbyldKSldO2Nhc2UgMzpyZXR1cm5bMl19fSl9KSgpKS50aGVuKGZ1bmN0aW9uKGUpe24mJnAoZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm4gbj1yVSh7fSx0KSxyPW51bGwhPShyPXJaKHt9LGUuaWQsZSkpP3I6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSxufSl9KSxmdW5jdGlvbigpe249ITF9fX0sbz1bQyxjXSxpWzRdPWMsaVs1XT1DLGlbNl09cixpWzddPW8pOihyPWlbNl0sbz1pWzddKSwoMCx4LnVzZUVmZmVjdCkocixvKTt2YXIgXz11Lmxlbmd0aDtyZXR1cm4gaVs4XSE9PWx8fGlbOV0hPT13fHxpWzEwXSE9PV8/KGE9bCh7cnVudGltZUVycm9yczp3LHRvdGFsRXJyb3JDb3VudDpffSksaVs4XT1sLGlbOV09dyxpWzEwXT1fLGlbMTFdPWEpOmE9aVsxMV0sYX0sclY9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsZS5jaGlsZHJlbikoe3J1bnRpbWVFcnJvcnM6W10sdG90YWxFcnJvckNvdW50OjF9KX07ZnVuY3Rpb24gciQoKXt2YXIgZSx0LG49KDAsQS5jKSg0KSxyPWRhKCksbz1yLnNoYWRvd1Jvb3QsYT1yLnN0YXRlO3JldHVybiBuWzBdIT09b3x8blsxXSE9PWEuc2NhbGU/KGU9ZnVuY3Rpb24oKXsobnVsbD09bz92b2lkIDA6by5ob3N0KSYmby5ob3N0LnN0eWxlLnNldFByb3BlcnR5KFwiLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlXCIsU3RyaW5nKGEuc2NhbGV8fDEpKX0sdD1bbyxhLnNjYWxlXSxuWzBdPW8sblsxXT1hLnNjYWxlLG5bMl09ZSxuWzNdPXQpOihlPW5bMl0sdD1uWzNdKSwoMCx4LnVzZUxheW91dEVmZmVjdCkoZSx0KSxudWxsfXZhciByVz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtaW5kaWNhdG9yL2RldnRvb2xzLWluZGljYXRvci5jc3NcIiksclk9e307ZnVuY3Rpb24gcksoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJYKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByRyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gclgoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gclgoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gclEoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJKKGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgzKTtyZXR1cm4oYVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0zLjA4ODg5IDExLjgzODRMMi42MjQ4NiAxMi4zMDI0TDEuNjk2NzggMTEuMzc0NEwyLjE2MDgyIDEwLjkxMDNMNi4wNzE3OCA2Ljk5OTM3TDIuMTYwODIgMy4wODg0MUwxLjY5Njc4IDIuNjI0MzdMMi42MjQ4NiAxLjY5NjI5TDMuMDg4ODkgMi4xNjAzM0w2Ljk5OTg2IDYuMDcxMjlMMTAuOTEwOCAyLjE2MDMzTDExLjM3NDkgMS42OTYyOUwxMi4zMDI5IDIuNjI0MzdMMTEuODM4OSAzLjA4ODQxTDcuOTI3OTMgNi45OTkzN0wxMS44Mzg5IDEwLjkxMDNMMTIuMzAyOSAxMS4zNzQ0TDExLjM3NDkgMTIuMzAyNEwxMC45MTA4IDExLjgzODRMNi45OTk4NiA3LjkyNzQ0TDMuMDg4ODkgMTEuODM4NFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxhWzBdPXIpOnI9YVswXSxhWzFdIT09ZSk/KG89KDAsYi5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxlKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGFbMV09ZSxhWzJdPW8pOm89YVsyXSxvfWZ1bmN0aW9uIHIwKGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgzKTtyZXR1cm4oYVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0zLjk4MDcxIDEuMTI1TDEuMTI1IDMuOTgwNzFMMS4xMjUgOC4wMTkyOUwzLjk4MDcxIDEwLjg3NUg4LjAxOTI5TDEwLjg3NSA4LjAxOTI5VjMuOTgwNzFMOC4wMTkyOSAxLjEyNUgzLjk4MDcxWk0zLjgyNTM4IDBDMy42MjY0NyAwIDMuNDM1NyAwLjA3OTAxNzYgMy4yOTUwNSAwLjIxOTY3TDAuMjE5NjcgMy4yOTUwNUMwLjA3OTAxNzYgMy40MzU3IDAgMy42MjY0NyAwIDMuODI1MzhWOC4xNzQ2MkMwIDguMzczNTMgMC4wNzkwMTc4IDguNTY0MyAwLjIxOTY3IDguNzA0OTVMMy4yOTUwNSAxMS43ODAzQzMuNDM1NyAxMS45MjEgMy42MjY0NyAxMiAzLjgyNTM4IDEySDguMTc0NjJDOC4zNzM1MyAxMiA4LjU2NDMgMTEuOTIxIDguNzA0OTUgMTEuNzgwM0wxMS43ODAzIDguNzA0OTVDMTEuOTIxIDguNTY0MyAxMiA4LjM3MzUzIDEyIDguMTc0NjJWMy44MjUzOEMxMiAzLjYyNjQ3IDExLjkyMSAzLjQzNTcgMTEuNzgwMyAzLjI5NTA1TDguNzA0OTUgMC4yMTk2N0M4LjU2NDMgMC4wNzkwMTc3IDguMzczNTMgMCA4LjE3NDYyIDBIMy44MjUzOFpNNi41NjI1IDIuODEyNVYzLjM3NVY2VjYuNTYyNUg1LjQzNzVWNlYzLjM3NVYyLjgxMjVINi41NjI1Wk02IDlDNi40MTQyMSA5IDYuNzUgOC42NjQyMSA2Ljc1IDguMjVDNi43NSA3LjgzNTc5IDYuNDE0MjEgNy41IDYgNy41QzUuNTg1NzkgNy41IDUuMjUgNy44MzU3OSA1LjI1IDguMjVDNS4yNSA4LjY2NDIxIDUuNTg1NzkgOSA2IDlaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLGIuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCIxMlwiLHZpZXdCb3g6XCIwIDAgMTIgMTJcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31yWS5zdHlsZVRhZ1RyYW5zZm9ybT1oKCksclkuc2V0QXR0cmlidXRlcz11KCksclkuaW5zZXJ0PXMoKSxyWS5kb21BUEk9aSgpLHJZLmluc2VydFN0eWxlRWxlbWVudD1mKCksbygpKHJXLlosclkpLHJXLlomJnJXLloubG9jYWxzJiZyVy5aLmxvY2Fsczt2YXIgcjE9KDAseC5jcmVhdGVDb250ZXh0KShudWxsKSxyMj1mdW5jdGlvbigpe3JldHVybigwLHgudXNlQ29udGV4dCkocjEpfTtmdW5jdGlvbiByNChlKXtyZXR1cm4gb0ErMzYvZS5zY2FsZSs5fWZ1bmN0aW9uIHI1KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiByMyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gcjYoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIHI5KGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb31mdW5jdGlvbiByOChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gcjUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gcjUoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gcjcoKXt2YXIgZSx0LG49KGU9W1wiXFxuICAgICAgICAgIFtkYXRhLW5leHQtYmFkZ2Utcm9vdF0ge1xcbiAgICAgICAgICAgIC0tdGltaW5nOiBjdWJpYy1iZXppZXIoMC4yMywgMC44OCwgMC4yNiwgMC45Mik7XFxuICAgICAgICAgICAgLS1kdXJhdGlvbi1sb25nOiAyNTBtcztcXG4gICAgICAgICAgICAtLWNvbG9yLW91dGVyLWJvcmRlcjogIzE3MTcxNztcXG4gICAgICAgICAgICAtLWNvbG9yLWlubmVyLWJvcmRlcjogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNCk7XFxuICAgICAgICAgICAgLS1jb2xvci1ob3Zlci1hbHBoYS1zdWJ0bGU6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTMpO1xcbiAgICAgICAgICAgIC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMik7XFxuICAgICAgICAgICAgLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvci0yOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjI1KTtcXG4gICAgICAgICAgICAtLW1hcmstc2l6ZTogY2FsYyh2YXIoLS1zaXplKSAtIHZhcigtLXNpemUtMikgKiAyKTtcXG5cXG4gICAgICAgICAgICAtLWZvY3VzLWNvbG9yOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XFxuICAgICAgICAgICAgLS1mb2N1cy1yaW5nOiAycHggc29saWQgdmFyKC0tZm9jdXMtY29sb3IpO1xcblxcbiAgICAgICAgICAgICY6aGFzKFtkYXRhLW5leHQtYmFkZ2VdW2RhdGEtZXJyb3I9J3RydWUnXSkge1xcbiAgICAgICAgICAgICAgLS1mb2N1cy1jb2xvcjogI2ZmZjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtZGlzYWJsZWQtaWNvbl0ge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtbmV4dC1iYWRnZV0ge1xcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zaXplKTtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUpO1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6XFxuICAgICAgICAgICAgICAwIDAgMCAxcHggdmFyKC0tY29sb3Itb3V0ZXItYm9yZGVyKSxcXG4gICAgICAgICAgICAgIGluc2V0IDAgMCAwIDFweCB2YXIoLS1jb2xvci1pbm5lci1ib3JkZXIpLFxcbiAgICAgICAgICAgICAgMHB4IDE2cHggMzJweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XFxuICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDQ4cHgpO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIHNjYWxlOiAxO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IHNjYWxlLCBib3gtc2hhZG93LCB3aWR0aCwgYmFja2dyb3VuZDtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uOlxcbiAgICAgICAgICAgICAgc2NhbGUgdmFyKC0tZHVyYXRpb24tc2hvcnQpIHZhcigtLXRpbWluZyksXFxuICAgICAgICAgICAgICB3aWR0aCB2YXIoLS1kdXJhdGlvbi1sb25nKSB2YXIoLS10aW1pbmcpLFxcbiAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1sb25nKSB2YXIoLS10aW1pbmcpLFxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1zaG9ydCkgZWFzZTtcXG5cXG4gICAgICAgICAgICAmOmFjdGl2ZVtkYXRhLWVycm9yPSdmYWxzZSddIHtcXG4gICAgICAgICAgICAgIHNjYWxlOiAwLjk1O1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmW2RhdGEtYW5pbWF0ZT0ndHJ1ZSddOm5vdCg6aG92ZXIpIHtcXG4gICAgICAgICAgICAgIHNjYWxlOiAxLjAyO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmW2RhdGEtZXJyb3I9J2ZhbHNlJ106aGFzKFtkYXRhLW5leHQtbWFya106Zm9jdXMtdmlzaWJsZSkge1xcbiAgICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogM3B4O1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmW2RhdGEtZXJyb3I9J3RydWUnXSB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjY2EyYTMwO1xcbiAgICAgICAgICAgICAgLS1jb2xvci1pbm5lci1ib3JkZXI6ICNlNTQ4NGQ7XFxuXFxuICAgICAgICAgICAgICBbZGF0YS1uZXh0LW1hcmtdIHtcXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3IpO1xcbiAgICAgICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMHB4O1xcblxcbiAgICAgICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgICAgICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yLTIpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICZbZGF0YS1lcnJvci1leHBhbmRlZD0nZmFsc2UnXVtkYXRhLWVycm9yPSd0cnVlJ10gfiBbZGF0YS1kb3RdIHtcXG4gICAgICAgICAgICAgIHNjYWxlOiAxO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICA+IGRpdiB7XFxuICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXMtY29sbGFwc2VdOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlc106aGFzKFtkYXRhLWlzc3Vlcy1vcGVuXTpmb2N1cy12aXNpYmxlKSB7XFxuICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtZG90XSB7XFxuICAgICAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNpemUtOCk7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTgpO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHZhcigtLWNvbG9yLW91dGVyLWJvcmRlcik7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgICB0b3A6IDJweDtcXG4gICAgICAgICAgICByaWdodDogMHB4O1xcbiAgICAgICAgICAgIHNjYWxlOiAwO1xcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHNjYWxlIDIwMG1zIHZhcigtLXRpbWluZyk7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tZHVyYXRpb24tc2hvcnQpO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlc10ge1xcbiAgICAgICAgICAgIC0tcGFkZGluZy1sZWZ0OiA4cHg7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBnYXA6IDJweDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMzIpO1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1zaG9ydCkgZWFzZTtcXG5cXG4gICAgICAgICAgICAmOmhhcyhbZGF0YS1pc3N1ZXMtb3Blbl06aG92ZXIpIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJjpoYXMoW2RhdGEtaXNzdWVzLWNvbGxhcHNlXSkge1xcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1wYWRkaW5nLWxlZnQpIC8gMik7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIFtkYXRhLWNyb3NzXSB7XFxuICAgICAgICAgICAgICB0cmFuc2xhdGU6IDBweCAtMXB4O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXMtb3Blbl0ge1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMyk7XFxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBnYXA6IDJweDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0zNik7XFxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgICAgICAgICB6LWluZGV4OiAyO1xcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuXFxuICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgICAgICAgIG91dGxpbmU6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb2xsYXBzZV0ge1xcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTI0KTtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1zaG9ydCkgZWFzZTtcXG5cXG4gICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtY3Jvc3NdIHtcXG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcXG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xMik7XFxuICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTEyKTtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1uZXh0LW1hcmtdIHtcXG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tbWFyay1zaXplKTtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLW1hcmstc2l6ZSk7XFxuICAgICAgICAgICAgbWFyZ2luOiAwIDJweDtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLWxvbmcpIHZhcigtLXRpbWluZyk7XFxuXFxuICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgICAgICAgIG91dGxpbmU6IDA7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaG92ZXItYWxwaGEtc3VidGxlKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgc3ZnIHtcXG4gICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xcbiAgICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNpemUtNDApO1xcbiAgICAgICAgICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTQwKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWFuaW1hdGlvbl0ge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgICAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlciBjZW50ZXI7XFxuICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcXG5cXG4gICAgICAgICAgICAmW2RhdGEtYW5pbWF0ZT0nZmFsc2UnXSB7XFxuICAgICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZXhpdF0sXFxuICAgICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZW50ZXJdIHtcXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwbXM7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgID4gKiB7XFxuICAgICAgICAgICAgICBncmlkLWFyZWE6IDEgLyAxO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZXhpdF0ge1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlT3V0IDMwMG1zIHZhcigtLXRpbWluZykgZm9yd2FyZHM7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1lbnRlcl0ge1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMzAwbXMgdmFyKC0tdGltaW5nKSBmb3J3YXJkcztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LXBsdXJhbF0ge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICAgICAgICAmW2RhdGEtYW5pbWF0ZT0ndHJ1ZSddIHtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluIDMwMG1zIHZhcigtLXRpbWluZykgZm9yd2FyZHM7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIC5wYXRoMCB7XFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBkcmF3MCAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIC5wYXRoMSB7XFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBkcmF3MSAxLjVzIGVhc2Utb3V0IGluZmluaXRlO1xcbiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4zcztcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICAucGF1c2VkIHtcXG4gICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XFxuICAgICAgICAgICAgMCUge1xcbiAgICAgICAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAgICAgICAgIGZpbHRlcjogYmx1cigycHgpO1xcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDEwMCUge1xcbiAgICAgICAgICAgICAgb3BhY2l0eTogMTtcXG4gICAgICAgICAgICAgIGZpbHRlcjogYmx1cigwcHgpO1xcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBAa2V5ZnJhbWVzIGZhZGVPdXQge1xcbiAgICAgICAgICAgIDAlIHtcXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMHB4KTtcXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgMTAwJSB7XFxuICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KTtcXG4gICAgICAgICAgICAgIGZpbHRlcjogYmx1cigycHgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBAa2V5ZnJhbWVzIGRyYXcwIHtcXG4gICAgICAgICAgICAwJSxcXG4gICAgICAgICAgICAyNSUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0yOS42O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAyNSUsXFxuICAgICAgICAgICAgNTAlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICA1MCUsXFxuICAgICAgICAgICAgNzUlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICA3NSUsXFxuICAgICAgICAgICAgMTAwJSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMjkuNjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgQGtleWZyYW1lcyBkcmF3MSB7XFxuICAgICAgICAgICAgMCUsXFxuICAgICAgICAgICAgMjAlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTEuNjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgMjAlLFxcbiAgICAgICAgICAgIDUwJSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgNTAlLFxcbiAgICAgICAgICAgIDc1JSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgNzUlLFxcbiAgICAgICAgICAgIDEwMCUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDExLjY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikge1xcbiAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1leGl0XSxcXG4gICAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtZW50ZXJdLFxcbiAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1wbHVyYWxdIHtcXG4gICAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMG1zICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICBcIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gcjc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiBvZShlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsdyxDLF8sayxFLGosUyxPLEIsUCxJLHosVCxELEwsTixSLE0sWixxLEgsViwkLFcsWT0oMCxBLmMpKDQwKTtZWzBdIT09ZT8oRD1yOShlLFtcIm9uVHJpZ2dlckNsaWNrXCJdKSxMPWUub25UcmlnZ2VyQ2xpY2ssWVswXT1lLFlbMV09RCxZWzJdPUwpOihEPVlbMV0sTD1ZWzJdKTt2YXIgSz1kYSgpLFg9Sy5zdGF0ZSxHPUsuZGlzcGF0Y2gsUT11NCgpLnRvdGFsRXJyb3JDb3VudCxKPTM2L1guc2NhbGUsZWU9cjIoKSxldD1lZS5wYW5lbCxlbj1lZS50cmlnZ2VyUmVmLGVyPWVlLnNldFBhbmVsLGVvPVwicGFuZWwtc2VsZWN0b3JcIj09PWV0LGVhPVE+MCxlaT1yOCgoMCx4LnVzZVN0YXRlKShlYSksMiksZWw9ZWlbMF0sZWM9ZWlbMV0sZXU9cjgoKDAseC51c2VTdGF0ZSkoZWEpLDIpLGVkPWV1WzBdLGVmPWV1WzFdO2VkIT09ZWEmJihlZihlYSksZWMoZWEpKTt2YXIgZXA9cjgoKDAseC51c2VTdGF0ZSkoITEpLDIpLGVoPWVwWzBdLGVtPWVwWzFdLGVnPSh0PVEsbj0xNTAsYT0oMCxBLmMpKDQpLGk9bixsPSgwLHgudXNlUmVmKShudWxsKSxkPShzPSgwLHgudXNlU3RhdGUpKCExKSxjPTIsdT1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShzKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShzLDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBySyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBySyhlLHQpfX0ocyxjKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSlbMF0sZj11WzFdLGFbMF0hPT1pfHxhWzFdIT09dD8ocj1mdW5jdGlvbigpe2lmKHQ+MCl7dmFyIGU9bC5jdXJyZW50P0RhdGUubm93KCktbC5jdXJyZW50Oi0xO2lmKGwuY3VycmVudD1EYXRlLm5vdygpLCEoZTw9aSkpe2YoITApO3ZhciBuPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZighMSl9LGkpO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChuKX19fX0sbz1bdCxpXSxhWzBdPWksYVsxXT10LGFbMl09cixhWzNdPW8pOihyPWFbMl0sbz1hWzNdKSwoMCx4LnVzZUVmZmVjdCkocixvKSxkKSxleT0oMCx4LnVzZVJlZikobnVsbCksZXY9KHA9ZXksZz0oMCxBLmMpKDQpLHY9KHk9ckcoKDAseC51c2VTdGF0ZSkoMCksMikpWzBdLHc9eVsxXSxnWzBdIT09cC5jdXJyZW50PyhoPWZ1bmN0aW9uKCl7dmFyIGU9cC5jdXJyZW50O2lmKGUpe3ZhciB0PW5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbihlKXt3KHJHKGUsMSlbMF0uY29udGVudFJlY3Qud2lkdGgpfSk7cmV0dXJuIHQub2JzZXJ2ZShlKSxmdW5jdGlvbigpe3JldHVybiB0LmRpc2Nvbm5lY3QoKX19fSxnWzBdPXAuY3VycmVudCxnWzFdPWgpOmg9Z1sxXSxnWzJdIT09cD8obT1bcF0sZ1syXT1wLGdbM109bSk6bT1nWzNdLCgwLHgudXNlRWZmZWN0KShoLG0pLHYpLGViPShDPVguYnVpbGRpbmdJbmRpY2F0b3J8fFgucmVuZGVyaW5nSW5kaWNhdG9yLEU9KDAsQS5jKSg0KSxqPTc1MCxQPShTPSgwLHgudXNlU3RhdGUpKCExKSxPPTIsQj1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShTKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShTLDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByUShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByUShlLHQpfX0oUyxPKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSlbMF0sST1CWzFdLHo9KDAseC51c2VSZWYpKG51bGwpLFQ9KDAseC51c2VSZWYpKG51bGwpLEVbMF0hPT1qfHxFWzFdIT09Qz8oXz1mdW5jdGlvbigpe2lmKFQuY3VycmVudCYmKGNsZWFyVGltZW91dChULmN1cnJlbnQpLFQuY3VycmVudD1udWxsKSxDKW51bGw9PT16LmN1cnJlbnQmJih6LmN1cnJlbnQ9RGF0ZS5ub3coKSksSSghMCk7ZWxzZSBpZihudWxsPT09ei5jdXJyZW50KUkoITEpO2Vsc2V7dmFyIGU9RGF0ZS5ub3coKS16LmN1cnJlbnQsdD1qKk1hdGguY2VpbChlL2opLWU7dD4wP1QuY3VycmVudD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SSghMSksei5jdXJyZW50PW51bGx9LHQpOihJKCExKSx6LmN1cnJlbnQ9bnVsbCl9cmV0dXJuIGZ1bmN0aW9uKCl7VC5jdXJyZW50JiZjbGVhclRpbWVvdXQoVC5jdXJyZW50KX19LGs9W0Msal0sRVswXT1qLEVbMV09QyxFWzJdPV8sRVszXT1rKTooXz1FWzJdLGs9RVszXSksKDAseC51c2VFZmZlY3QpKF8sayksUCksZUE9ZWx8fFguZGlzYWJsZURldkluZGljYXRvcixleD0wPT09ZXY/XCJhdXRvXCI6ZXYsZXc9XCJcIi5jb25jYXQoSixcInB4XCIpLGVDPVguZGlzYWJsZURldkluZGljYXRvciYmKCFlYXx8ZWgpP1wibm9uZVwiOlwiYmxvY2tcIjtZWzNdIT09ZXd8fFlbNF0hPT1lQz8oTj17XCItLXNpemVcIjpldyxcIi0tZHVyYXRpb24tc2hvcnRcIjpcIlwiLmNvbmNhdCgxNTAsXCJtc1wiKSxkaXNwbGF5OmVDfSxZWzNdPWV3LFlbNF09ZUMsWVs1XT1OKTpOPVlbNV07dmFyIGVfPU47cmV0dXJuIFlbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oUj0oMCxiLmpzeCkoXCJzdHlsZVwiLHtjaGlsZHJlbjplcyhyNygpKX0pLFlbNl09Uik6Uj1ZWzZdLFlbN10hPT1leD8oTT17d2lkdGg6ZXh9LFlbN109ZXgsWVs4XT1NKTpNPVlbOF0sWVs5XSE9PUR8fFlbMTBdIT09ZWJ8fFlbMTFdIT09ZW98fFlbMTJdIT09THx8WVsxM10hPT1YLmJ1aWxkaW5nSW5kaWNhdG9yfHxZWzE0XSE9PVguZGlzYWJsZURldkluZGljYXRvcnx8WVsxNV0hPT1lbj8oWj0hWC5kaXNhYmxlRGV2SW5kaWNhdG9yJiYoMCxiLmpzeCkoXCJidXR0b25cIixyNihyMyh7aWQ6XCJuZXh0LWxvZ29cIixyZWY6ZW4sXCJkYXRhLW5leHQtbWFya1wiOiEwLFwiZGF0YS1uZXh0LW1hcmstbG9hZGluZ1wiOmViLG9uQ2xpY2s6TCxkaXNhYmxlZDpYLmRpc2FibGVEZXZJbmRpY2F0b3IsXCJhcmlhLWhhc3BvcHVwXCI6XCJtZW51XCIsXCJhcmlhLWV4cGFuZGVkXCI6ZW8sXCJhcmlhLWNvbnRyb2xzXCI6XCJuZXh0anMtZGV2LXRvb2xzLW1lbnVcIixcImFyaWEtbGFiZWxcIjpcIlwiLmNvbmNhdChlbz9cIkNsb3NlXCI6XCJPcGVuXCIsXCIgTmV4dC5qcyBEZXYgVG9vbHNcIiksXCJkYXRhLW5leHRqcy1kZXYtdG9vbHMtYnV0dG9uXCI6ITB9LEQpLHtjaGlsZHJlbjooMCxiLmpzeCkob24se2lzTG9hZGluZzplYixpc0RldkJ1aWxkaW5nOlguYnVpbGRpbmdJbmRpY2F0b3J9KX0pKSxZWzldPUQsWVsxMF09ZWIsWVsxMV09ZW8sWVsxMl09TCxZWzEzXT1YLmJ1aWxkaW5nSW5kaWNhdG9yLFlbMTRdPVguZGlzYWJsZURldkluZGljYXRvcixZWzE1XT1lbixZWzE2XT1aKTpaPVlbMTZdLFlbMTddIT09R3x8WVsxOF0hPT1lQXx8WVsxOV0hPT1lZ3x8WVsyMF0hPT1lcnx8WVsyMV0hPT1YLmJ1aWxkRXJyb3J8fFlbMjJdIT09WC5kaXNhYmxlRGV2SW5kaWNhdG9yfHxZWzIzXSE9PVguaXNFcnJvck92ZXJsYXlPcGVufHxZWzI0XSE9PVF8fFlbMjVdIT09ZW4/KHE9ZUEmJigwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLWlzc3Vlc1wiOiEwLGNoaWxkcmVuOlsoMCxiLmpzeHMpKFwiYnV0dG9uXCIse1wiZGF0YS1pc3N1ZXMtb3BlblwiOiEwLFwiYXJpYS1sYWJlbFwiOlwiT3BlbiBpc3N1ZXMgb3ZlcmxheVwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtpZihYLmlzRXJyb3JPdmVybGF5T3BlbilyZXR1cm4gdm9pZCBHKHt0eXBlOkZ9KTtHKHt0eXBlOlV9KSxlcihudWxsKX0sY2hpbGRyZW46W1guZGlzYWJsZURldkluZGljYXRvciYmKDAsYi5qc3gpKFwiZGl2XCIse1wiZGF0YS1kaXNhYmxlZC1pY29uXCI6ITAsY2hpbGRyZW46KDAsYi5qc3gpKHIwLHt9KX0pLCgwLGIuanN4KShvdCx7YW5pbWF0ZTplZyxcImRhdGEtaXNzdWVzLWNvdW50LWFuaW1hdGlvblwiOiEwLGNoaWxkcmVuOlF9LFEpLFwiIFwiLCgwLGIuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46W1wiSXNzdWVcIixRPjEmJigwLGIuanN4KShcInNwYW5cIix7XCJhcmlhLWhpZGRlblwiOiEwLFwiZGF0YS1pc3N1ZXMtY291bnQtcGx1cmFsXCI6ITAsXCJkYXRhLWFuaW1hdGVcIjplZyYmMj09PVEsY2hpbGRyZW46XCJzXCJ9KV19KV19KSwhWC5idWlsZEVycm9yJiYoMCxiLmpzeCkoXCJidXR0b25cIix7XCJkYXRhLWlzc3Vlcy1jb2xsYXBzZVwiOiEwLFwiYXJpYS1sYWJlbFwiOlwiQ29sbGFwc2UgaXNzdWVzIGJhZGdlXCIsb25DbGljazpmdW5jdGlvbigpe3ZhciBlO1guZGlzYWJsZURldkluZGljYXRvcj9lbSghMCk6ZWMoITEpLG51bGw9PShlPWVuLmN1cnJlbnQpfHxlLmZvY3VzKCl9LGNoaWxkcmVuOigwLGIuanN4KShySix7XCJkYXRhLWNyb3NzXCI6ITB9KX0pXX0pLFlbMTddPUcsWVsxOF09ZUEsWVsxOV09ZWcsWVsyMF09ZXIsWVsyMV09WC5idWlsZEVycm9yLFlbMjJdPVguZGlzYWJsZURldkluZGljYXRvcixZWzIzXT1YLmlzRXJyb3JPdmVybGF5T3BlbixZWzI0XT1RLFlbMjVdPWVuLFlbMjZdPXEpOnE9WVsyNl0sWVsyN10hPT1afHxZWzI4XSE9PXE/KEg9KDAsYi5qc3hzKShcImRpdlwiLHtyZWY6ZXksY2hpbGRyZW46W1oscV19KSxZWzI3XT1aLFlbMjhdPXEsWVsyOV09SCk6SD1ZWzI5XSxZWzMwXSE9PWVhfHxZWzMxXSE9PWVBfHxZWzMyXSE9PWVnfHxZWzMzXSE9PU18fFlbMzRdIT09SD8oVj0oMCxiLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHQtYmFkZ2VcIjohMCxcImRhdGEtZXJyb3JcIjplYSxcImRhdGEtZXJyb3ItZXhwYW5kZWRcIjplQSxcImRhdGEtYW5pbWF0ZVwiOmVnLHN0eWxlOk0sY2hpbGRyZW46SH0pLFlbMzBdPWVhLFlbMzFdPWVBLFlbMzJdPWVnLFlbMzNdPU0sWVszNF09SCxZWzM1XT1WKTpWPVlbMzVdLFlbMzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KCQ9KDAsYi5qc3gpKFwiZGl2XCIse1wiYXJpYS1oaWRkZW5cIjohMCxcImRhdGEtZG90XCI6ITB9KSxZWzM2XT0kKTokPVlbMzZdLFlbMzddIT09Vnx8WVszOF0hPT1lXz8oVz0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0LWJhZGdlLXJvb3RcIjohMCxzdHlsZTplXyxjaGlsZHJlbjpbUixWLCRdfSksWVszN109VixZWzM4XT1lXyxZWzM5XT1XKTpXPVlbMzldLFd9ZnVuY3Rpb24gb3QoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSgxMyk7bFswXSE9PWU/KG49cjkoZSxbXCJjaGlsZHJlblwiLFwiYW5pbWF0ZVwiXSksdD1lLmNoaWxkcmVuLHI9ZS5hbmltYXRlLGxbMF09ZSxsWzFdPXQsbFsyXT1uLGxbM109cik6KHQ9bFsxXSxuPWxbMl0scj1sWzNdKTt2YXIgcz12b2lkIDA9PT1yfHxyLGM9dC0xO3JldHVybiBsWzRdIT09Yz8obz0oMCxiLmpzeCkoXCJkaXZcIix7XCJhcmlhLWhpZGRlblwiOiEwLFwiZGF0YS1pc3N1ZXMtY291bnQtZXhpdFwiOiEwLGNoaWxkcmVuOmN9KSxsWzRdPWMsbFs1XT1vKTpvPWxbNV0sbFs2XSE9PXQ/KGE9KDAsYi5qc3gpKFwiZGl2XCIse1wiZGF0YS1pc3N1ZXMtY291bnRcIjohMCxcImRhdGEtaXNzdWVzLWNvdW50LWVudGVyXCI6ITAsY2hpbGRyZW46dH0pLGxbNl09dCxsWzddPWEpOmE9bFs3XSxsWzhdIT09c3x8bFs5XSE9PW58fGxbMTBdIT09b3x8bFsxMV0hPT1hPyhpPSgwLGIuanN4cykoXCJkaXZcIixyNihyMyh7fSxuKSx7XCJkYXRhLWFuaW1hdGVcIjpzLGNoaWxkcmVuOltvLGFdfSkpLGxbOF09cyxsWzldPW4sbFsxMF09byxsWzExXT1hLGxbMTJdPWkpOmk9bFsxMl0saX1mdW5jdGlvbiBvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGM9KDAsQS5jKSgxOSksdT1lLmlzTG9hZGluZyxkPWUuaXNEZXZCdWlsZGluZz9cInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiOlwid2hpdGVcIixmPXU/XCJwYXRoMFwiOlwicGF1c2VkXCI7Y1swXSE9PWY/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtjbGFzc05hbWU6ZixkOlwiTTEzLjMgMTUuMiBMMi4zNCAxIFYxMi42XCIsZmlsbDpcIm5vbmVcIixzdHJva2U6XCJ1cmwoI25leHRfbG9nb19wYWludDBfbGluZWFyXzEzNTdfMTA4NTMpXCIsc3Ryb2tlV2lkdGg6XCIxLjg2XCIsbWFzazpcInVybCgjbmV4dF9sb2dvX21hc2swKVwiLHN0cm9rZURhc2hhcnJheTpcIjI5LjZcIixzdHJva2VEYXNob2Zmc2V0OlwiMjkuNlwifSksY1swXT1mLGNbMV09dCk6dD1jWzFdO3ZhciBwPXU/XCJwYXRoMVwiOlwicGF1c2VkXCI7cmV0dXJuIGNbMl0hPT1wPyhuPSgwLGIuanN4KShcInBhdGhcIix7Y2xhc3NOYW1lOnAsZDpcIk0xMS44MjUgMS41IFYxMy4xXCIsc3Ryb2tlV2lkdGg6XCIxLjg2XCIsc3Ryb2tlOlwidXJsKCNuZXh0X2xvZ29fcGFpbnQxX2xpbmVhcl8xMzU3XzEwODUzKVwiLHN0cm9rZURhc2hhcnJheTpcIjExLjZcIixzdHJva2VEYXNob2Zmc2V0OlwiMTEuNlwifSksY1syXT1wLGNbM109bik6bj1jWzNdLGNbNF0hPT10fHxjWzVdIT09bj8ocj0oMCxiLmpzeHMpKFwiZ1wiLHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoOC41LCAxMylcIixjaGlsZHJlbjpbdCxuXX0pLGNbNF09dCxjWzVdPW4sY1s2XT1yKTpyPWNbNl0sY1s3XSE9PWQ/KG89KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibmV4dF9sb2dvX3BhaW50MF9saW5lYXJfMTM1N18xMDg1M1wiLHgxOlwiOS45NTU1NVwiLHkxOlwiMTEuMTIyNlwiLHgyOlwiMTUuNDc3OFwiLHkyOlwiMTcuOTY3MVwiLGdyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJzdG9wXCIse3N0b3BDb2xvcjpkfSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIwLjYwNDA3MlwiLHN0b3BDb2xvcjpkLHN0b3BPcGFjaXR5OlwiMFwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIxXCIsc3RvcENvbG9yOmQsc3RvcE9wYWNpdHk6XCIwXCJ9KV19KSxjWzddPWQsY1s4XT1vKTpvPWNbOF0sY1s5XSE9PWQ/KGE9KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibmV4dF9sb2dvX3BhaW50MV9saW5lYXJfMTM1N18xMDg1M1wiLHgxOlwiMTEuODIyMlwiLHkxOlwiMS40MDAzOVwiLHgyOlwiMTEuNzkxXCIseTI6XCI5LjYyNTQyXCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7c3RvcENvbG9yOmR9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6ZCxzdG9wT3BhY2l0eTpcIjBcIn0pXX0pLGNbOV09ZCxjWzEwXT1hKTphPWNbMTBdLGNbMTFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9KDAsYi5qc3hzKShcIm1hc2tcIix7aWQ6XCJuZXh0X2xvZ29fbWFzazBcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwicmVjdFwiLHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsZmlsbDpcIndoaXRlXCJ9KSwoMCxiLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiNVwiLGhlaWdodDpcIjEuNVwiLGZpbGw6XCJibGFja1wifSldfSksY1sxMV09aSk6aT1jWzExXSxjWzEyXSE9PW98fGNbMTNdIT09YT8obD0oMCxiLmpzeHMpKFwiZGVmc1wiLHtjaGlsZHJlbjpbbyxhLGldfSksY1sxMl09byxjWzEzXT1hLGNbMTRdPWwpOmw9Y1sxNF0sY1sxNV0hPT11fHxjWzE2XSE9PXJ8fGNbMTddIT09bD8ocz0oMCxiLmpzeHMpKFwic3ZnXCIse3dpZHRoOlwiNDBcIixoZWlnaHQ6XCI0MFwiLHZpZXdCb3g6XCIwIDAgNDAgNDBcIixmaWxsOlwibm9uZVwiLFwiZGF0YS1uZXh0LW1hcmstbG9hZGluZ1wiOnUsY2hpbGRyZW46W3IsbF19KSxjWzE1XT11LGNbMTZdPXIsY1sxN109bCxjWzE4XT1zKTpzPWNbMThdLHN9dmFyIG9yPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLGksbCxzLGMsdSxkPSgwLEEuYykoMTUpO3JldHVybihkWzBdIT09ZT8obD1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wib25DbGlja1wiLFwiY2hpbGRyZW5cIixcImNsYXNzTmFtZVwiXSksaT1lLm9uQ2xpY2ssbz1lLmNoaWxkcmVuLGE9ZS5jbGFzc05hbWUsZFswXT1lLGRbMV09byxkWzJdPWEsZFszXT1pLGRbNF09bCk6KG89ZFsxXSxhPWRbMl0saT1kWzNdLGw9ZFs0XSksZFs1XSE9PWk/KHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0LmNsb3Nlc3QoXCJhXCIpfHxlLnByZXZlbnREZWZhdWx0KCksbnVsbD09aT92b2lkIDA6aSgpfSxkWzVdPWksZFs2XT1zKTpzPWRbNl0sZFs3XSE9PWE/KGM9ZUcoXCJuZXh0anMtdG9hc3RcIixhKSxkWzddPWEsZFs4XT1jKTpjPWRbOF0sZFs5XSE9PW98fGRbMTBdIT09bHx8ZFsxMV0hPT10fHxkWzEyXSE9PXN8fGRbMTNdIT09Yyk/KHU9KDAsYi5qc3gpKFwiZGl2XCIsKG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSxsKSxyPXI9e3JlZjp0LG9uQ2xpY2s6cyxjbGFzc05hbWU6YyxjaGlsZHJlbjpvfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHIpKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pLG4pKSxkWzldPW8sZFsxMF09bCxkWzExXT10LGRbMTJdPXMsZFsxM109YyxkWzE0XT11KTp1PWRbMTRdLHV9KTtmdW5jdGlvbiBvbyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9dmFyIG9hPSgwLHguY3JlYXRlQ29udGV4dCkobnVsbCk7ZnVuY3Rpb24gb2koZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuZGlzYWJsZWQscj12b2lkIDAhPT1uJiZuLG89KDAseC51c2VSZWYpKG5ldyBTZXQpLGE9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7by5jdXJyZW50LmFkZChlKX0sW10pLGk9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7by5jdXJyZW50LmRlbGV0ZShlKX0sW10pLGw9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybntyZWdpc3RlcjphLHVucmVnaXN0ZXI6aSxoYW5kbGVzOm8uY3VycmVudCxkaXNhYmxlZDpyfX0sW2EsaSxyXSk7cmV0dXJuKDAsYi5qc3gpKG9hLlByb3ZpZGVyLHt2YWx1ZTpsLGNoaWxkcmVuOnR9KX1mdW5jdGlvbiBvbCgpe3JldHVybigwLHgudXNlQ29udGV4dCkob2EpfWZ1bmN0aW9uIG9zKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZj0oMCxBLmMpKDE5KTtmWzBdIT09ZT8obz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2hpbGRyZW5cIixcInJlZlwiXSkscj1lLmNoaWxkcmVuLGE9ZS5yZWYsZlswXT1lLGZbMV09cixmWzJdPW8sZlszXT1hKToocj1mWzFdLG89ZlsyXSxhPWZbM10pO3ZhciBwPSgwLHgudXNlUmVmKShudWxsKSxoPW9sKCk7Zls0XSE9PWE/KGk9ZnVuY3Rpb24oZSl7aWYocC5jdXJyZW50PW51bGwhPWU/ZTpudWxsLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEpYShlKTtlbHNle3ZhciB0O2EmJih2b2lkIDA9PT1hP1widW5kZWZpbmVkXCI6KHQ9YSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2w/XCJzeW1ib2xcIjp0eXBlb2YgdCk9PVwib2JqZWN0XCImJihhLmN1cnJlbnQ9ZSl9fSxmWzRdPWEsZls1XT1pKTppPWZbNV07dmFyIG09aTtmWzZdIT09aD8obD1mdW5jdGlvbigpe2lmKGgmJnAuY3VycmVudCYmIWguZGlzYWJsZWQpe3ZhciBlPXAuY3VycmVudDtyZXR1cm4gaC5yZWdpc3RlcihlKSxmdW5jdGlvbigpe3JldHVybiBoLnVucmVnaXN0ZXIoZSl9fX0scz1baF0sZls2XT1oLGZbN109bCxmWzhdPXMpOihsPWZbN10scz1mWzhdKSwoMCx4LnVzZUVmZmVjdCkobCxzKTt2YXIgZz0obnVsbD09aD92b2lkIDA6aC5kaXNhYmxlZCk/XCJkZWZhdWx0XCI6XCJncmFiXCI7cmV0dXJuKGZbOV0hPT1vLnN0eWxlPyhjPW8uc3R5bGV8fHt9LGZbOV09by5zdHlsZSxmWzEwXT1jKTpjPWZbMTBdLGZbMTFdIT09Z3x8ZlsxMl0hPT1jPyh1PW9vKHtjdXJzb3I6Z30sYyksZlsxMV09ZyxmWzEyXT1jLGZbMTNdPXUpOnU9ZlsxM10sZlsxNF0hPT1yfHxmWzE1XSE9PW98fGZbMTZdIT09bXx8ZlsxN10hPT11KT8oZD0oMCxiLmpzeCkoXCJkaXZcIiwodD1vbyh7cmVmOm19LG8pLG49bj17c3R5bGU6dSxjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxmWzE0XT1yLGZbMTVdPW8sZlsxNl09bSxmWzE3XT11LGZbMThdPWQpOmQ9ZlsxOF0sZH1mdW5jdGlvbiBvYyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gb3UoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIG9kKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBvZihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99ZnVuY3Rpb24gb3AoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG9jKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fG9oKGUpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBvaChlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvYyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvYyhlLHQpfX1mdW5jdGlvbiBvbShlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscD0oMCxBLmMpKDE4KTtwWzBdIT09ZT8ocz1vZihlLFtcImNoaWxkcmVuXCIsXCJwYWRkaW5nXCIsXCJwb3NpdGlvblwiLFwic2V0UG9zaXRpb25cIixcIm9uRHJhZ1N0YXJ0XCIsXCJkcmFnSGFuZGxlU2VsZWN0b3JcIixcImRpc2FibGVEcmFnXCIsXCJhdm9pZFpvbmVcIl0pLHI9ZS5jaGlsZHJlbixsPWUucGFkZGluZyxvPWUucG9zaXRpb24sYz1lLnNldFBvc2l0aW9uLGk9ZS5vbkRyYWdTdGFydCxhPWUuZHJhZ0hhbmRsZVNlbGVjdG9yLHU9ZS5kaXNhYmxlRHJhZyxuPWUuYXZvaWRab25lLHBbMF09ZSxwWzFdPW4scFsyXT1yLHBbM109byxwWzRdPWEscFs1XT1pLHBbNl09bCxwWzddPXMscFs4XT1jLHBbOV09dSk6KG49cFsxXSxyPXBbMl0sbz1wWzNdLGE9cFs0XSxpPXBbNV0sbD1wWzZdLHM9cFs3XSxjPXBbOF0sdT1wWzldKTt2YXIgaD1mdW5jdGlvbihlKXt2YXIgdD0oMCx4LnVzZVJlZikobnVsbCksbj0oMCx4LnVzZVJlZikoe3N0YXRlOlwiaWRsZVwifSkscj0oMCx4LnVzZVJlZikobnVsbCksbz0oMCx4LnVzZVJlZikoe3g6MCx5OjB9KSxhPSgwLHgudXNlUmVmKSh7eDowLHk6MH0pLGk9KDAseC51c2VSZWYpKDApLGw9KDAseC51c2VSZWYpKFtdKSxzPSgwLHgudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7dmFyIGUsbztcImRyYWdcIj09PW4uY3VycmVudC5zdGF0ZSYmKG51bGw9PShvPXQuY3VycmVudCl8fG8ucmVsZWFzZVBvaW50ZXJDYXB0dXJlKG4uY3VycmVudC5wb2ludGVySWQpKSxuLmN1cnJlbnQ9XCJkcmFnXCI9PT1uLmN1cnJlbnQuc3RhdGU/e3N0YXRlOlwiZHJhZy1lbmRcIn06e3N0YXRlOlwiaWRsZVwifSxudWxsIT09ci5jdXJyZW50JiYoci5jdXJyZW50KCksci5jdXJyZW50PW51bGwpLGwuY3VycmVudD1bXSxudWxsPT0oZT10LmN1cnJlbnQpfHxlLmNsYXNzTGlzdC5yZW1vdmUoXCJkZXYtdG9vbHMtZ3JhYmJpbmdcIiksZG9jdW1lbnQuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInVzZXItc2VsZWN0XCIpLGRvY3VtZW50LmJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCItd2Via2l0LXVzZXItc2VsZWN0XCIpfSxbXSk7ZnVuY3Rpb24gYyhlKXt0LmN1cnJlbnQmJihhLmN1cnJlbnQ9ZSx0LmN1cnJlbnQuc3R5bGUudHJhbnNsYXRlPVwiXCIuY29uY2F0KGUueCxcInB4IFwiKS5jb25jYXQoZS55LFwicHhcIikpfWZ1bmN0aW9uIHUobil7dmFyIHI9dC5jdXJyZW50O251bGwhPT1yJiYoci5zdHlsZS50cmFuc2l0aW9uPVwidHJhbnNsYXRlIDQ5MS4yMm1zIHZhcigtLXRpbWluZy1ib3VuY2UpXCIsci5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLGZ1bmN0aW9uIHQobyl7aWYoXCJ0cmFuc2xhdGVcIj09PW8ucHJvcGVydHlOYW1lKXt2YXIgaTtudWxsPT0oaT1lLm9uQW5pbWF0aW9uRW5kKXx8aS5jYWxsKGUsbiksYS5jdXJyZW50PXt4OjAseTowfSxyLnN0eWxlLnRyYW5zaXRpb249XCJcIixyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsdCl9fSksYyhuLnRyYW5zbGF0aW9uKSl9ZnVuY3Rpb24gZChlKXtpZihcImRyYWctZW5kXCI9PT1uLmN1cnJlbnQuc3RhdGUpe3ZhciByO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLG4uY3VycmVudD17c3RhdGU6XCJpZGxlXCJ9LG51bGw9PShyPXQuY3VycmVudCl8fHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZCl9fWZ1bmN0aW9uIGYocil7aWYoXCJwcmVzc1wiPT09bi5jdXJyZW50LnN0YXRlKXt2YXIgcyx1LGQsZixwPXIuY2xpZW50WC1vLmN1cnJlbnQueCxoPXIuY2xpZW50WS1vLmN1cnJlbnQueTtNYXRoLnNxcnQocCpwK2gqaCk+PWUudGhyZXNob2xkJiYobi5jdXJyZW50PXtzdGF0ZTpcImRyYWdcIixwb2ludGVySWQ6ci5wb2ludGVySWR9LG51bGw9PSh1PXQuY3VycmVudCl8fHUuc2V0UG9pbnRlckNhcHR1cmUoci5wb2ludGVySWQpLG51bGw9PShkPXQuY3VycmVudCl8fGQuY2xhc3NMaXN0LmFkZChcImRldi10b29scy1ncmFiYmluZ1wiKSxkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9XCJub25lXCIsZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PVwibm9uZVwiLG51bGw9PShmPWUub25EcmFnU3RhcnQpfHxmLmNhbGwoZSkpfWlmKFwiZHJhZ1wiPT09bi5jdXJyZW50LnN0YXRlKXt2YXIgbT17eDpyLmNsaWVudFgseTpyLmNsaWVudFl9LGc9bS54LW8uY3VycmVudC54LHk9bS55LW8uY3VycmVudC55O28uY3VycmVudD1tLGMoe3g6YS5jdXJyZW50LngrZyx5OmEuY3VycmVudC55K3l9KTt2YXIgdj1EYXRlLm5vdygpO3YtaS5jdXJyZW50Pj0xMCYmKGwuY3VycmVudD1vcChsLmN1cnJlbnQuc2xpY2UoLTUpKS5jb25jYXQoW3twb3NpdGlvbjptLHRpbWVzdGFtcDp2fV0pKSxpLmN1cnJlbnQ9dixudWxsPT0ocz1lLm9uRHJhZyl8fHMuY2FsbChlLGEuY3VycmVudCl9fWZ1bmN0aW9uIHAoKXt2YXIgdCxuPWZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPDIpcmV0dXJue3g6MCx5OjB9O3ZhciB0PWVbMF0sbj1lW2UubGVuZ3RoLTFdLHI9bi50aW1lc3RhbXAtdC50aW1lc3RhbXA7cmV0dXJuIDA9PT1yP3t4OjAseTowfTp7eDoxZTMqKChuLnBvc2l0aW9uLngtdC5wb3NpdGlvbi54KS9yKSx5OjFlMyooKG4ucG9zaXRpb24ueS10LnBvc2l0aW9uLnkpL3IpfX0obC5jdXJyZW50KTtzKCksbnVsbD09KHQ9ZS5vbkRyYWdFbmQpfHx0LmNhbGwoZSxhLmN1cnJlbnQsbil9cmV0dXJuKDAseC51c2VMYXlvdXRFZmZlY3QpKGZ1bmN0aW9uKCl7ZS5kaXNhYmxlZCYmcygpfSxbcyxlLmRpc2FibGVkXSksZS5kaXNhYmxlZD97cmVmOnQsYW5pbWF0ZTp1fTp7cmVmOnQsb25Qb2ludGVyRG93bjpmdW5jdGlvbihhKXt2YXIgaTswPT09YS5idXR0b24mJmZ1bmN0aW9uKG4pe2lmKCFufHwhdC5jdXJyZW50KXJldHVybiEwO2lmKGUuaGFuZGxlcyYmZS5oYW5kbGVzLnNpemU+MCl7Zm9yKHZhciByPW47ciYmciE9PXQuY3VycmVudDspe2lmKGUuaGFuZGxlcy5oYXMocikpcmV0dXJuITA7cj1yLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9cmV0dXJuIWUuZHJhZ0hhbmRsZVNlbGVjdG9yfHxudWxsIT09bi5jbG9zZXN0KGUuZHJhZ0hhbmRsZVNlbGVjdG9yKX0oYS50YXJnZXQpJiYoby5jdXJyZW50PXt4OmEuY2xpZW50WCx5OmEuY2xpZW50WX0sbi5jdXJyZW50PXtzdGF0ZTpcInByZXNzXCJ9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIixmKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLHApLG51bGwhPT1yLmN1cnJlbnQmJihyLmN1cnJlbnQoKSxyLmN1cnJlbnQ9bnVsbCksci5jdXJyZW50PWZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLGYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIscCl9LG51bGw9PShpPXQuY3VycmVudCl8fGkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZCkpfSxhbmltYXRlOnV9fSh7ZGlzYWJsZWQ6dm9pZCAwIT09dSYmdSxoYW5kbGVzOm51bGw9PSh0PW9sKCkpP3ZvaWQgMDp0LmhhbmRsZXMsdGhyZXNob2xkOjUsb25EcmFnU3RhcnQ6aSxvbkRyYWdFbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgcixhLGkscyxjLHUsZCxmLHAsaCx5LHYsYixBLHgsdyxDLF87aWYoMD09PU1hdGguc3FydChlLngqZS54K2UueSplLnkpKXtudWxsPT0ocj1tLmN1cnJlbnQpfHxyLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwidHJhbnNsYXRlXCIpO3JldHVybn1nKChiPShhPXt4OmUueCtveSh0LngpLHk6ZS55K295KHQueSl9KS54LEE9YS55LHc9T2JqZWN0LmVudHJpZXMoeD0oYz0yKmwsdT0obnVsbD09KGk9bS5jdXJyZW50KT92b2lkIDA6aS5vZmZzZXRXaWR0aCl8fDAsZD0obnVsbD09KHM9bS5jdXJyZW50KT92b2lkIDA6cy5vZmZzZXRIZWlnaHQpfHwwLGY9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGg9KHA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbmNsdWRlcyhcInJpZ2h0XCIpLHI9ZS5pbmNsdWRlcyhcImJvdHRvbVwiKSxvPXQ/d2luZG93LmlubmVyV2lkdGgtZi1jLXU6MCxhPXI/d2luZG93LmlubmVySGVpZ2h0LWMtZDowO2lmKG4mJm4uY29ybmVyPT09ZSl7dmFyIGk9bi5zcXVhcmUrbi5wYWRkaW5nO3I/YS09aTphKz1pfXJldHVybnt4Om8seTphfX0pKG8pLHtcInRvcC1sZWZ0XCI6KHk9ZnVuY3Rpb24oZSl7cmV0dXJue3g6ZS54LWgueCx5OmUueS1oLnl9fSkocChcInRvcC1sZWZ0XCIpKSxcInRvcC1yaWdodFwiOnkocChcInRvcC1yaWdodFwiKSksXCJib3R0b20tbGVmdFwiOnkocChcImJvdHRvbS1sZWZ0XCIpKSxcImJvdHRvbS1yaWdodFwiOnkocChcImJvdHRvbS1yaWdodFwiKSl9KSkubWFwKGZ1bmN0aW9uKGUpe3ZhciB0LG4scj0obj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQ9ZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8b2godCxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSksbz1yWzBdLGE9clsxXTtyZXR1cm57a2V5Om8sZGlzdGFuY2U6TWF0aC5zcXJ0KE1hdGgucG93KGItYS54LDIpK01hdGgucG93KEEtYS55LDIpKX19KSxDPSh2PU1hdGgpLm1pbi5hcHBseSh2LG9wKHcubWFwKG9nKSkpLChfPXcuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXN0YW5jZT09PUN9KSk/e3RyYW5zbGF0aW9uOnhbXy5rZXldLGNvcm5lcjpfLmtleX06e2Nvcm5lcjpvLHRyYW5zbGF0aW9uOnhbb119KSl9LG9uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29ybmVyO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZTtudWxsPT0oZT1tLmN1cnJlbnQpfHxlLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwidHJhbnNsYXRlXCIpLGModCl9KX0sZHJhZ0hhbmRsZVNlbGVjdG9yOmF9KSxtPWgucmVmLGc9aC5hbmltYXRlLHk9b2YoaCxbXCJyZWZcIixcImFuaW1hdGVcIl0pO3JldHVybiBwWzEwXSE9PXMuc3R5bGU/KGQ9b3Uoe3RvdWNoQWN0aW9uOlwibm9uZVwiLHVzZXJTZWxlY3Q6XCJub25lXCIsV2Via2l0VXNlclNlbGVjdDpcIm5vbmVcIn0scy5zdHlsZSkscFsxMF09cy5zdHlsZSxwWzExXT1kKTpkPXBbMTFdLHBbMTJdIT09cnx8cFsxM10hPT15fHxwWzE0XSE9PXN8fHBbMTVdIT09bXx8cFsxNl0hPT1kPyhmPSgwLGIuanN4KShcImRpdlwiLG9kKG91KG9kKG91KHt9LHMpLHtyZWY6bX0pLHkpLHtzdHlsZTpkLGNoaWxkcmVuOnJ9KSkscFsxMl09cixwWzEzXT15LHBbMTRdPXMscFsxNV09bSxwWzE2XT1kLHBbMTddPWYpOmY9cFsxN10sZn1mdW5jdGlvbiBvZyhlKXtyZXR1cm4gZS5kaXN0YW5jZX1mdW5jdGlvbiBveShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Ljk5OTtyZXR1cm4gZS8xZTMqdC8oMS10KX1mdW5jdGlvbiBvdihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gb2IoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBvQT0yMDtmdW5jdGlvbiBveCgpe3ZhciBlLHQsbixyLG8sYSxpLGwscyxjPSgwLEEuYykoMjApLHU9ZGEoKSxkPXUuc3RhdGUsZj11LmRpc3BhdGNoLHA9cjIoKSxoPXAucGFuZWwsbT1wLnNldFBhbmVsLGc9cC5zZXRTZWxlY3RlZEluZGV4LHk9b3coKTtjWzBdIT09ZC5kZXZUb29sc1Bvc2l0aW9uPyhuPWQuZGV2VG9vbHNQb3NpdGlvbi5zcGxpdChcIi1cIiwyKSxjWzBdPWQuZGV2VG9vbHNQb3NpdGlvbixjWzFdPW4pOm49Y1sxXTt2YXIgdj0odD0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGU9bil8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb3YoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb3YoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLHg9dlswXSx3PXZbMV07Y1syXSE9PXd8fGNbM10hPT14PyhvYihvPXtcIi0tYW5pbWF0ZS1vdXQtZHVyYXRpb24tbXNcIjpcIlwiLmNvbmNhdCgyMDAsXCJtc1wiKSxcIi0tYW5pbWF0ZS1vdXQtdGltaW5nLWZ1bmN0aW9uXCI6dDcsYm94U2hhZG93Olwibm9uZVwifSx4LFwiXCIuY29uY2F0KG9BLFwicHhcIikpLG9iKG8sdyxcIlwiLmNvbmNhdChvQSxcInB4XCIpKSxyPW8sY1syXT13LGNbM109eCxjWzRdPXIpOnI9Y1s0XTt2YXIgQz1yLF89bnVsbCE9PWg7cmV0dXJuIGNbNV0hPT1mfHxjWzZdIT09eT8oYT1mdW5jdGlvbihlKXtmKHt0eXBlOlksZGV2VG9vbHNQb3NpdGlvbjplfSksckEoe2RldlRvb2xzUG9zaXRpb246ZX0pLHkoZSl9LGNbNV09ZixjWzZdPXksY1s3XT1hKTphPWNbN10sY1s4XSE9PWh8fGNbOV0hPT1tfHxjWzEwXSE9PWc/KGk9KDAsYi5qc3gpKG9lLHtvblRyaWdnZXJDbGljazpmdW5jdGlvbigpe3ZhciBlPVwicGFuZWwtc2VsZWN0b3JcIj09PWg/bnVsbDpcInBhbmVsLXNlbGVjdG9yXCI7aWYobShlKSwhZSlyZXR1cm4gdm9pZCBnKC0xKX19KSxjWzhdPWgsY1s5XT1tLGNbMTBdPWcsY1sxMV09aSk6aT1jWzExXSxjWzEyXSE9PWQuZGV2VG9vbHNQb3NpdGlvbnx8Y1sxM10hPT1ffHxjWzE0XSE9PWF8fGNbMTVdIT09aT8obD0oMCxiLmpzeCkob20se2Rpc2FibGVEcmFnOl8scGFkZGluZzpvQSxwb3NpdGlvbjpkLmRldlRvb2xzUG9zaXRpb24sc2V0UG9zaXRpb246YSxjaGlsZHJlbjppfSksY1sxMl09ZC5kZXZUb29sc1Bvc2l0aW9uLGNbMTNdPV8sY1sxNF09YSxjWzE1XT1pLGNbMTZdPWwpOmw9Y1sxNl0sY1sxN10hPT1DfHxjWzE4XSE9PWw/KHM9KDAsYi5qc3gpKG9yLHtpZDpcImRldnRvb2xzLWluZGljYXRvclwiLFwiZGF0YS1uZXh0anMtdG9hc3RcIjohMCxzdHlsZTpDLGNoaWxkcmVuOmx9KSxjWzE3XT1DLGNbMThdPWwsY1sxOV09cyk6cz1jWzE5XSxzfXZhciBvdz1mdW5jdGlvbigpe3ZhciBlLHQ9KDAsQS5jKSgzKSxuPWRhKCkscj1uLnN0YXRlLG89bi5kaXNwYXRjaDtyZXR1cm4gdFswXSE9PW98fHRbMV0hPT1yLmRldlRvb2xzUGFuZWxQb3NpdGlvbj8oZT1mdW5jdGlvbihlKXtvKHt0eXBlOkssZGV2VG9vbHNQYW5lbFBvc2l0aW9uOmUsa2V5OmV0fSk7dmFyIHQ9T2JqZWN0LmtleXMoci5kZXZUb29sc1BhbmVsUG9zaXRpb24pLmZpbHRlcihvQyksbj1vYih7fSxldCxlKTt0LmZvckVhY2goZnVuY3Rpb24odCl7byh7dHlwZTpLLGRldlRvb2xzUGFuZWxQb3NpdGlvbjplLGtleTp0fSksblt0XT1lfSksckEoe2RldlRvb2xzUGFuZWxQb3NpdGlvbjpufSl9LHRbMF09byx0WzFdPXIuZGV2VG9vbHNQYW5lbFBvc2l0aW9uLHRbMl09ZSk6ZT10WzJdLGV9O2Z1bmN0aW9uIG9DKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoUSl9ZnVuY3Rpb24gb18oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG9rKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBvRShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7b2soZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gb2ooZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIG9TKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvXyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvXyhlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX12YXIgb089KDAseC5jcmVhdGVDb250ZXh0KSh7fSk7ZnVuY3Rpb24gb0IoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCxBLmMpKDM3KTtoWzBdIT09ZT8oYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiaW5kZXhcIixcImxhYmVsXCIsXCJ2YWx1ZVwiLFwib25DbGlja1wiLFwiaHJlZlwiXSksbj1lLmluZGV4LHI9ZS5sYWJlbCxpPWUudmFsdWUsbz1lLm9uQ2xpY2ssdD1lLmhyZWYsaFswXT1lLGhbMV09dCxoWzJdPW4saFszXT1yLGhbNF09byxoWzVdPWEsaFs2XT1pKToodD1oWzFdLG49aFsyXSxyPWhbM10sbz1oWzRdLGE9aFs1XSxpPWhbNl0pO3ZhciBtPVwiZnVuY3Rpb25cIj09dHlwZW9mIG98fFwic3RyaW5nXCI9PXR5cGVvZiB0LGc9KDAseC51c2VDb250ZXh0KShvTykseT1nLmNsb3NlTWVudSx2PWcuc2VsZWN0ZWRJbmRleCx3PWcuc2V0U2VsZWN0ZWRJbmRleCxDPXY9PT1uO2hbN10hPT15fHxoWzhdIT09dHx8aFs5XSE9PW18fGhbMTBdIT09bz8obD1mdW5jdGlvbigpe20mJihudWxsPT1vfHxvKCksbnVsbD09eXx8eSgpLHQmJndpbmRvdy5vcGVuKHQsXCJfYmxhbmtcIixcIm5vb3BlbmVyLCBub3JlZmVycmVyXCIpKX0saFs3XT15LGhbOF09dCxoWzldPW0saFsxMF09byxoWzExXT1sKTpsPWhbMTFdO3ZhciBfPWw7aFsxMl0hPT1ufHxoWzEzXSE9PW18fGhbMTRdIT09dnx8aFsxNV0hPT13PyhzPWZ1bmN0aW9uKCl7bSYmdm9pZCAwIT09biYmdiE9PW4mJncobil9LGhbMTJdPW4saFsxM109bSxoWzE0XT12LGhbMTVdPXcsaFsxNl09cyk6cz1oWzE2XSxoWzE3XSE9PXc/KGM9ZnVuY3Rpb24oKXtyZXR1cm4gdygtMSl9LGhbMTddPXcsaFsxOF09Yyk6Yz1oWzE4XSxoWzE5XSE9PV8/KHU9ZnVuY3Rpb24oZSl7KFwiRW50ZXJcIj09PWUua2V5fHxcIiBcIj09PWUua2V5KSYmXygpfSxoWzE5XT1fLGhbMjBdPXUpOnU9aFsyMF07dmFyIGs9bT9cIm1lbnVpdGVtXCI6dm9pZCAwLEU9Qz8wOi0xO3JldHVybiBoWzIxXSE9PXI/KGQ9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLWxhYmVsXCIsY2hpbGRyZW46cn0pLGhbMjFdPXIsaFsyMl09ZCk6ZD1oWzIyXSxoWzIzXSE9PWk/KGY9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLXZhbHVlXCIsY2hpbGRyZW46aX0pLGhbMjNdPWksaFsyNF09Zik6Zj1oWzI0XSxoWzI1XSE9PV98fGhbMjZdIT09bnx8aFsyN10hPT1hfHxoWzI4XSE9PUN8fGhbMjldIT09c3x8aFszMF0hPT1jfHxoWzMxXSE9PXV8fGhbMzJdIT09a3x8aFszM10hPT1FfHxoWzM0XSE9PWR8fGhbMzVdIT09Zj8ocD0oMCxiLmpzeHMpKFwiZGl2XCIsb2oob0Uoe2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItaXRlbVwiLFwiZGF0YS1pbmRleFwiOm4sXCJkYXRhLXNlbGVjdGVkXCI6QyxvbkNsaWNrOl8sb25Nb3VzZU1vdmU6cyxvbk1vdXNlTGVhdmU6YyxvbktleURvd246dSxyb2xlOmssdGFiSW5kZXg6RX0sYSkse2NoaWxkcmVuOltkLGZdfSkpLGhbMjVdPV8saFsyNl09bixoWzI3XT1hLGhbMjhdPUMsaFsyOV09cyxoWzMwXT1jLGhbMzFdPXUsaFszMl09ayxoWzMzXT1FLGhbMzRdPWQsaFszNV09ZixoWzM2XT1wKTpwPWhbMzZdLHB9dmFyIG9QPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jbG9zZU9uQ2xpY2tPdXRzaWRlLHI9dm9pZCAwPT09bnx8bixvPWUuaXRlbXMsYT1kYSgpLnN0YXRlLGk9cjIoKSxsPWkuc2V0UGFuZWwscz1pLnRyaWdnZXJSZWYsYz1pLnNldFNlbGVjdGVkSW5kZXgsdT1pLnNlbGVjdGVkSW5kZXgsZD11WCgpLm1vdW50ZWQsZj1vUyhhLmRldlRvb2xzUG9zaXRpb24uc3BsaXQoXCItXCIsMiksMikscD1mWzBdLGg9ZlsxXSxtPSgwLHgudXNlUmVmKShudWxsKTt0OChtLHMsciYmZCxmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZVwiZXNjYXBlXCI6bChudWxsKSxjKC0xKTtyZXR1cm47Y2FzZVwib3V0c2lkZVwiOmlmKCFyKXJldHVybjtsKG51bGwpLGMoLTEpO3JldHVybjtkZWZhdWx0OnJldHVybiBudWxsfX0pLCgwLHgudXNlTGF5b3V0RWZmZWN0KShmdW5jdGlvbigpe3ZhciBlO251bGw9PShlPW0uY3VycmVudCl8fGUuZm9jdXMoKSxvRCh7aW5kZXg6LTE9PT11P1wiZmlyc3RcIjp1LG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KX0sW10pO3ZhciBnPXI0KGEpLHk9b1MoYS5kZXZUb29sc1Bvc2l0aW9uLnNwbGl0KFwiLVwiLDIpLDIpLHY9eVswXSxBPXlbMV0sdz1wPT09diYmaD09PUE/ZzpvQSxDPShvayh0PXt9LHAsXCJcIi5jb25jYXQodyxcInB4XCIpKSxvayh0LGgsXCJcIi5jb25jYXQob0EsXCJweFwiKSksb2sodCxcInRvcFwiPT09cD9cImJvdHRvbVwiOlwidG9wXCIsXCJhdXRvXCIpLG9rKHQsXCJsZWZ0XCI9PT1oP1wicmlnaHRcIjpcImxlZnRcIixcImF1dG9cIiksdCksXz1vLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSxrPV8uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmZvb3Rlcn0pLEU9Xy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9vdGVyfSk7cmV0dXJuKDAsYi5qc3gpKFwiZGl2XCIse3JlZjptLG9uS2V5RG93bjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9Xy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DbGlja30pLmxlbmd0aDtzd2l0Y2goZS5rZXkpe2Nhc2VcIkFycm93RG93blwiOm9EKHtpbmRleDp1Pj10LTE/MDp1KzEsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pO2JyZWFrO2Nhc2VcIkFycm93VXBcIjpvRCh7aW5kZXg6dTw9MD90LTE6dS0xLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KTticmVhaztjYXNlXCJIb21lXCI6b0Qoe2luZGV4OlwiZmlyc3RcIixtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSk7YnJlYWs7Y2FzZVwiRW5kXCI6b0Qoe2luZGV4OlwibGFzdFwiLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KTticmVhaztjYXNlXCJuXCI6ZS5jdHJsS2V5JiZvRCh7aW5kZXg6dT49dC0xPzA6dSsxLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KTticmVhaztjYXNlXCJwXCI6ZS5jdHJsS2V5JiZvRCh7aW5kZXg6dTw9MD90LTE6dS0xLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KX19LGlkOlwibmV4dGpzLWRldi10b29scy1tZW51XCIscm9sZTpcIm1lbnVcIixkaXI6XCJsdHJcIixcImFyaWEtb3JpZW50YXRpb25cIjpcInZlcnRpY2FsXCIsXCJhcmlhLWxhYmVsXCI6XCJOZXh0LmpzIERldiBUb29scyBJdGVtc1wiLHRhYkluZGV4Oi0xLHN0eWxlOm9FKHtvdXRsaW5lOjAsV2Via2l0Rm9udFNtb290aGluZzpcImFudGlhbGlhc2VkXCIsZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIsYWxpZ25JdGVtczpcImZsZXgtc3RhcnRcIixiYWNrZ3JvdW5kOlwidmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApXCIsYmFja2dyb3VuZENsaXA6XCJwYWRkaW5nLWJveFwiLGJveFNoYWRvdzpcInZhcigtLXNoYWRvdy1tZW51KVwiLGJvcmRlclJhZGl1czpcInZhcigtLXJvdW5kZWQteGwpXCIscG9zaXRpb246XCJmaXhlZFwiLGZvbnRGYW1pbHk6XCJ2YXIoLS1mb250LXN0YWNrLXNhbnMpXCIsekluZGV4OlwidmFyKC0tdG9wLXotaW5kZXgpXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixvcGFjaXR5OjEsbWluV2lkdGg6XCIyNDhweFwiLHRyYW5zaXRpb246XCJvcGFjaXR5IHZhcigtLWFuaW1hdGUtb3V0LWR1cmF0aW9uLW1zKSB2YXIoLS1hbmltYXRlLW91dC10aW1pbmctZnVuY3Rpb24pXCIsYm9yZGVyOlwiMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKVwifSxDKSxjaGlsZHJlbjooMCxiLmpzeHMpKG9PLHt2YWx1ZTp7c2VsZWN0ZWRJbmRleDp1LHNldFNlbGVjdGVkSW5kZXg6Y30sY2hpbGRyZW46WygwLGIuanN4KShcImRpdlwiLHtzdHlsZTp7cGFkZGluZzpcIjZweFwiLHdpZHRoOlwiMTAwJVwifSxjaGlsZHJlbjprLm1hcChmdW5jdGlvbihlLHQpe3JldHVybigwLGIuanN4KShvQixvRSh7dGl0bGU6ZS50aXRsZSxsYWJlbDplLmxhYmVsLHZhbHVlOmUudmFsdWUsb25DbGljazplLm9uQ2xpY2ssaW5kZXg6ZS5vbkNsaWNrP29JKGssdCk6dm9pZCAwfSxlLmF0dHJpYnV0ZXMpLGUubGFiZWwpfSl9KSwoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci1mb290ZXJcIixjaGlsZHJlbjpFLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybigwLGIuanN4KShvQixvaihvRSh7dGl0bGU6ZS50aXRsZSxsYWJlbDplLmxhYmVsLHZhbHVlOmUudmFsdWUsb25DbGljazplLm9uQ2xpY2t9LGUuYXR0cmlidXRlcykse2luZGV4OmUub25DbGljaz9vSShFLHQpKyhuPWspLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkNsaWNrfSkubGVuZ3RoOnZvaWQgMH0pLGUubGFiZWwpfSl9KV19KX0pfTtmdW5jdGlvbiBvSShlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPD10JiZyPGUubGVuZ3RoO3IrKylpZihlW3JdLm9uQ2xpY2spe2lmKHI9PT10KXJldHVybiBuO24rK31yZXR1cm4gbn1mdW5jdGlvbiBveihlKXt2YXIgdCxuLHI9KDAsQS5jKSg0KSxvPWUuY2hpbGRyZW4sYT1vPjA7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnQtaW5kaWNhdG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09b3x8clsyXSE9PWE/KG49KDAsYi5qc3hzKShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudFwiLFwiZGF0YS1oYXMtaXNzdWVzXCI6YSxjaGlsZHJlbjpbdCxvXX0pLHJbMV09byxyWzJdPWEsclszXT1uKTpuPXJbM10sbn1mdW5jdGlvbiBvVCgpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiIzY2NlwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNS41MDAxMSAxLjkzOTQ1TDYuMDMwNDQgMi40Njk3OEwxMC44NTM3IDcuMjkzQzExLjI0NDIgNy42ODM1MyAxMS4yNDQyIDguMzE2NjkgMTAuODUzNyA4LjcwNzIyTDYuMDMwNDQgMTMuNTMwNEw1LjUwMDExIDE0LjA2MDhMNC40Mzk0NSAxMy4wMDAxTDQuOTY5NzggMTIuNDY5OEw5LjQzOTQ1IDguMDAwMTFMNC45Njk3OCAzLjUzMDQ0TDQuNDM5NDUgMy4wMDAxMUw1LjUwMDExIDEuOTM5NDVaXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gb0QoZSl7dmFyIHQsbj1lLmluZGV4LHI9ZS5tZW51UmVmLG89ZS5zZXRTZWxlY3RlZEluZGV4O2lmKFwiZmlyc3RcIj09PW4pcmV0dXJuIHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlLHQ9bnVsbD09KGU9ci5jdXJyZW50KT92b2lkIDA6ZS5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT1cIm1lbnVpdGVtXCJdJyk7dCYmb0Qoe2luZGV4Ok51bWJlcih0WzBdLmdldEF0dHJpYnV0ZShcImRhdGEtaW5kZXhcIikpLG1lbnVSZWY6cixzZXRTZWxlY3RlZEluZGV4Om99KX0pO2lmKFwibGFzdFwiPT09bilyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGUsdD1udWxsPT0oZT1yLmN1cnJlbnQpP3ZvaWQgMDplLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwibWVudWl0ZW1cIl0nKTt0JiZvRCh7aW5kZXg6dC5sZW5ndGgtMSxtZW51UmVmOnIsc2V0U2VsZWN0ZWRJbmRleDpvfSl9KTt2YXIgYT1udWxsPT0odD1yLmN1cnJlbnQpP3ZvaWQgMDp0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWluZGV4PVwiJy5jb25jYXQobiwnXCJdJykpO2EmJihvKG4pLG51bGw9PWF8fGEuZm9jdXMoKSl9ZnVuY3Rpb24gb0woZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBvTj0oMCx4LmNyZWF0ZUNvbnRleHQpKG51bGwpLG9SPWZ1bmN0aW9uKGUpe3ZhciB0PS45NSp3aW5kb3cuaW5uZXJXaWR0aCxuPS45NSp3aW5kb3cuaW5uZXJIZWlnaHQ7cmV0dXJue3dpZHRoOk1hdGgubWluKHQsTWF0aC5tYXgoZS5taW5XaWR0aCxlLndpZHRoKSksaGVpZ2h0Ok1hdGgubWluKG4sTWF0aC5tYXgoZS5taW5IZWlnaHQsZS5oZWlnaHQpKX19LG9NPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHM9ZS52YWx1ZSxjPWUuY2hpbGRyZW4sdT1udWxsIT0oYT1zLm1pbldpZHRoKT9hOjEwMCxkPW51bGwhPShpPXMubWluSGVpZ2h0KT9pOjgwLGY9cy5tYXhXaWR0aCxwPXMubWF4SGVpZ2h0LGg9KHQ9KDAseC51c2VTdGF0ZSkobnVsbCksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9MKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9MKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxtPWhbMF0sZz1oWzFdLHk9bnVsbCE9KGw9cy5zdG9yYWdlS2V5KT9sOmVlLHY9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oKXtpZihzLnJlc2l6ZVJlZi5jdXJyZW50JiZudWxsPT09bSl7dmFyIGU9cy5kZXZUb29sc1BhbmVsU2l6ZVt5XTtpZihlKXt2YXIgdCxuLHI9b1IoKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSxlKSxuPW49e21pbldpZHRoOm51bGwhPXU/dToxMDAsbWluSGVpZ2h0Om51bGwhPWQ/ZDo4MH0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksbz1yLmhlaWdodCxhPXIud2lkdGg7cmV0dXJuIHMucmVzaXplUmVmLmN1cnJlbnQuc3R5bGUud2lkdGg9XCJcIi5jb25jYXQoYSxcInB4XCIpLHMucmVzaXplUmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KG8sXCJweFwiKSwhMH19fSxbcy5yZXNpemVSZWYsbSx5LHUsZCxzLmRldlRvb2xzUGFuZWxTaXplXSk7cmV0dXJuKDAseC51c2VMYXlvdXRFZmZlY3QpKGZ1bmN0aW9uKCl7dmFyIGU7aWYoIXYoKSYmcy5yZXNpemVSZWYuY3VycmVudCYmKG51bGw9PShlPXMuaW5pdGlhbFNpemUpP3ZvaWQgMDplLmhlaWdodCkmJnMuaW5pdGlhbFNpemUud2lkdGgpe3ZhciB0PW9SKHtoZWlnaHQ6cy5pbml0aWFsU2l6ZS5oZWlnaHQsd2lkdGg6cy5pbml0aWFsU2l6ZS53aWR0aCxtaW5XaWR0aDpudWxsIT11P3U6MTAwLG1pbkhlaWdodDpudWxsIT1kP2Q6ODB9KSxuPXQuaGVpZ2h0LHI9dC53aWR0aDtzLnJlc2l6ZVJlZi5jdXJyZW50LnN0eWxlLndpZHRoPVwiXCIuY29uY2F0KHIsXCJweFwiKSxzLnJlc2l6ZVJlZi5jdXJyZW50LnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChuLFwicHhcIil9fSxbXSksKDAseC51c2VMYXlvdXRFZmZlY3QpKGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdiksZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix2KX19LFt2LG51bGw9PShyPXMuaW5pdGlhbFNpemUpP3ZvaWQgMDpyLmhlaWdodCxudWxsPT0obz1zLmluaXRpYWxTaXplKT92b2lkIDA6by53aWR0aCxzLnJlc2l6ZVJlZl0pLCgwLGIuanN4KShvTi5Qcm92aWRlcix7dmFsdWU6e3Jlc2l6ZVJlZjpzLnJlc2l6ZVJlZixtaW5XaWR0aDp1LG1pbkhlaWdodDpkLG1heFdpZHRoOmYsbWF4SGVpZ2h0OnAsZHJhZ2dpbmdEaXJlY3Rpb246bSxzZXREcmFnZ2luZ0RpcmVjdGlvbjpnLHN0b3JhZ2VLZXk6eX0sY2hpbGRyZW46Y30pfSxvWj1mdW5jdGlvbigpe3ZhciBlPSgwLHgudXNlQ29udGV4dCkob04pO2lmKCFlKXRocm93IEVycm9yKFwidXNlUmVzaXplIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBSZXNpemUgcHJvdmlkZXJcIik7cmV0dXJuIGV9LG9VPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1wYW5lbC9yZXNpemUvcmVzaXplLWhhbmRsZS5jc3NcIiksb0Y9e307ZnVuY3Rpb24gb3EoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfW9GLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxvRi5zZXRBdHRyaWJ1dGVzPXUoKSxvRi5pbnNlcnQ9cygpLG9GLmRvbUFQST1pKCksb0YuaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkob1UuWixvRiksb1UuWiYmb1UuWi5sb2NhbHMmJm9VLloubG9jYWxzO3ZhciBvSD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkPSgwLEEuYykoMzIpLGY9ZS5kaXJlY3Rpb24scD1lLnBvc2l0aW9uLGg9b1ooKSxtPWgucmVzaXplUmVmLGc9aC5taW5XaWR0aCx5PWgubWluSGVpZ2h0LHY9aC5tYXhXaWR0aCx3PWgubWF4SGVpZ2h0LEM9aC5zdG9yYWdlS2V5LF89aC5kcmFnZ2luZ0RpcmVjdGlvbixrPWguc2V0RHJhZ2dpbmdEaXJlY3Rpb247ZFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sZFswXT1yKTpyPWRbMF07dmFyIEU9KHQ9KDAseC51c2VTdGF0ZSkociksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9xKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9xKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxqPUVbMF0sUz1FWzFdO2RbMV0hPT1tLmN1cnJlbnQ/KG89ZnVuY3Rpb24oKXtpZihtLmN1cnJlbnQpe3ZhciBlPW0uY3VycmVudCx0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpO1Moe3RvcDpwYXJzZUZsb2F0KHQuYm9yZGVyVG9wV2lkdGgpfHwwLHJpZ2h0OnBhcnNlRmxvYXQodC5ib3JkZXJSaWdodFdpZHRoKXx8MCxib3R0b206cGFyc2VGbG9hdCh0LmJvcmRlckJvdHRvbVdpZHRoKXx8MCxsZWZ0OnBhcnNlRmxvYXQodC5ib3JkZXJMZWZ0V2lkdGgpfHwwfSl9fSxkWzFdPW0uY3VycmVudCxkWzJdPW8pOm89ZFsyXSxkWzNdIT09bT8oYT1bbV0sZFszXT1tLGRbNF09YSk6YT1kWzRdLCgwLHgudXNlTGF5b3V0RWZmZWN0KShvLGEpLGRbNV0hPT1mfHxkWzZdIT09d3x8ZFs3XSE9PXZ8fGRbOF0hPT15fHxkWzldIT09Z3x8ZFsxMF0hPT1tLmN1cnJlbnR8fGRbMTFdIT09a3x8ZFsxMl0hPT1DPyhpPWZ1bmN0aW9uKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSxtLmN1cnJlbnQpe2soZik7dmFyIHQ9bS5jdXJyZW50LG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWUuY2xpZW50WCxvPWUuY2xpZW50WSxhPWZ1bmN0aW9uKGUpe3ZhciBhPW9WKGYsZS5jbGllbnRYLXIsZS5jbGllbnRZLW8sbixnLHksdix3KSxpPWEubmV3V2lkdGgsbD1hLm5ld0hlaWdodDt2b2lkIDAhPT1pJiYodC5zdHlsZS53aWR0aD1cIlwiLmNvbmNhdChpLFwicHhcIikpLHZvaWQgMCE9PWwmJih0LnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChsLFwicHhcIikpfSxpPWZ1bmN0aW9uKCl7aWYoayhudWxsKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsYSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixpKSxtLmN1cnJlbnQpe3ZhciBlLHQsbixyPW0uY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIud2lkdGgsbD1yLmhlaWdodDtyQSh7ZGV2VG9vbHNQYW5lbFNpemU6KGU9e30sdD1DLG49e3dpZHRoOm8saGVpZ2h0Omx9LHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGUpfSl9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsYSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixpKX19LGRbNV09ZixkWzZdPXcsZFs3XT12LGRbOF09eSxkWzldPWcsZFsxMF09bS5jdXJyZW50LGRbMTFdPWssZFsxMl09QyxkWzEzXT1pKTppPWRbMTNdO3ZhciBPPWk7aWYoISghcC5zcGxpdChcIi1cIikuaW5jbHVkZXMoZikmJighZi5pbmNsdWRlcyhcIi1cIil8fGY9PT1vJChwKSkpKXJldHVybiBudWxsO3ZhciBCPWoubGVmdCtqLnJpZ2h0LFA9ai50b3Arai5ib3R0b207ZFsxNF0hPT1mPyhsPWYuaW5jbHVkZXMoXCItXCIpLGRbMTRdPWYsZFsxNV09bCk6bD1kWzE1XTt2YXIgST1sLHo9XCJyZXNpemUtY29udGFpbmVyIFwiLmNvbmNhdChmLFwiIFwiKS5jb25jYXQoXyYmXyE9PWY/XCJuby1ob3ZlclwiOlwiXCIpO3JldHVybiBkWzE2XSE9PU98fGRbMTddIT09ej8ocz0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnosb25Nb3VzZURvd246T30pLGRbMTZdPU8sZFsxN109eixkWzE4XT1zKTpzPWRbMThdLGRbMTldIT09ai5ib3R0b218fGRbMjBdIT09ai5sZWZ0fHxkWzIxXSE9PWoucmlnaHR8fGRbMjJdIT09ai50b3B8fGRbMjNdIT09Znx8ZFsyNF0hPT1ffHxkWzI1XSE9PUl8fGRbMjZdIT09Qnx8ZFsyN10hPT1QPyhjPSFJJiYoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVzaXplLWxpbmUgXCIuY29uY2F0KGYsXCIgXCIpLmNvbmNhdChfPT09Zj9cImRyYWdnaW5nXCI6XCJcIiksc3R5bGU6e1wiLS1ib3JkZXItaG9yaXpvbnRhbFwiOlwiXCIuY29uY2F0KEIsXCJweFwiKSxcIi0tYm9yZGVyLXZlcnRpY2FsXCI6XCJcIi5jb25jYXQoUCxcInB4XCIpLFwiLS1ib3JkZXItdG9wXCI6XCJcIi5jb25jYXQoai50b3AsXCJweFwiKSxcIi0tYm9yZGVyLXJpZ2h0XCI6XCJcIi5jb25jYXQoai5yaWdodCxcInB4XCIpLFwiLS1ib3JkZXItYm90dG9tXCI6XCJcIi5jb25jYXQoai5ib3R0b20sXCJweFwiKSxcIi0tYm9yZGVyLWxlZnRcIjpcIlwiLmNvbmNhdChqLmxlZnQsXCJweFwiKX19KSxkWzE5XT1qLmJvdHRvbSxkWzIwXT1qLmxlZnQsZFsyMV09ai5yaWdodCxkWzIyXT1qLnRvcCxkWzIzXT1mLGRbMjRdPV8sZFsyNV09SSxkWzI2XT1CLGRbMjddPVAsZFsyOF09Yyk6Yz1kWzI4XSxkWzI5XSE9PXN8fGRbMzBdIT09Yz8odT0oMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOltzLGNdfSksZFsyOV09cyxkWzMwXT1jLGRbMzFdPXUpOnU9ZFszMV0sdX0sb1Y9ZnVuY3Rpb24oZSx0LG4scixvLGEsaSxsKXt2YXIgcz1udWxsIT1pP2k6Ljk1KndpbmRvdy5pbm5lcldpZHRoLGM9bnVsbCE9bD9sOi45NSp3aW5kb3cuaW5uZXJIZWlnaHQ7c3dpdGNoKGUpe2Nhc2VcInJpZ2h0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoK3QpKSxuZXdIZWlnaHQ6ci5oZWlnaHR9O2Nhc2VcImxlZnRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgtdCkpLG5ld0hlaWdodDpyLmhlaWdodH07Y2FzZVwiYm90dG9tXCI6cmV0dXJue25ld1dpZHRoOnIud2lkdGgsbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodCtuKSl9O2Nhc2VcInRvcFwiOnJldHVybntuZXdXaWR0aDpyLndpZHRoLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQtbikpfTtjYXNlXCJ0b3AtbGVmdFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aC10KSksbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodC1uKSl9O2Nhc2VcInRvcC1yaWdodFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aCt0KSksbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodC1uKSl9O2Nhc2VcImJvdHRvbS1sZWZ0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoLXQpKSxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0K24pKX07Y2FzZVwiYm90dG9tLXJpZ2h0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoK3QpKSxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0K24pKX07ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIG8kKGUpe3N3aXRjaChlKXtjYXNlXCJ0b3AtbGVmdFwiOnJldHVyblwiYm90dG9tLXJpZ2h0XCI7Y2FzZVwidG9wLXJpZ2h0XCI6cmV0dXJuXCJib3R0b20tbGVmdFwiO2Nhc2VcImJvdHRvbS1sZWZ0XCI6cmV0dXJuXCJ0b3AtcmlnaHRcIjtjYXNlXCJib3R0b20tcmlnaHRcIjpyZXR1cm5cInRvcC1sZWZ0XCI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIG9XPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvcGFuZWwvZHluYW1pYy1wYW5lbC5jc3NcIiksb1k9e307ZnVuY3Rpb24gb0soZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG9YKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBvRyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7b1goZSx0LG5bdF0pfSl9cmV0dXJuIGV9ZnVuY3Rpb24gb1EoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9LKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9LKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG9KKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIndpZHRoXCI7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixuLnN0eWxlLnZpc2liaWxpdHk9XCJoaWRkZW5cIixcIndpZHRoXCI9PT10P24uc3R5bGUud2lkdGg9ZTpuLnN0eWxlLmhlaWdodD1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobik7dmFyIHI9XCJ3aWR0aFwiPT09dD9uLm9mZnNldFdpZHRoOm4ub2Zmc2V0SGVpZ2h0O3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pLHJ9ZnVuY3Rpb24gbzAoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGc9ZS5oZWFkZXIseT1lLmNoaWxkcmVuLHY9ZS5kcmFnZ2FibGUsdz12b2lkIDAhPT12JiZ2LEM9ZS5zaXplQ29uZmlnLF89dm9pZCAwPT09Qz97a2luZDpcInJlc2l6YWJsZVwiLG1pbldpZHRoOjQwMCxtaW5IZWlnaHQ6MzUwLG1heFdpZHRoOjFlMyxtYXhIZWlnaHQ6MWUzLGluaXRpYWxTaXplOntoZWlnaHQ6NDAwLHdpZHRoOjUwMH19OkMsaz1lLmNsb3NlT25DbGlja091dHNpZGUsRT12b2lkIDAhPT1rJiZrLGo9ZS5zaGFyZVBhbmVsU2l6ZUdsb2JhbGx5LFM9ZS5zaGFyZVBhbmVsUG9zaXRpb25HbG9iYWxseSxPPWUuY29udGFpbmVyUHJvcHMsQj1yMigpLnNldFBhbmVsLFA9dVgoKSxJPVAubmFtZSx6PVAubW91bnRlZCxUPXZvaWQgMD09PWp8fGo/ZWU6XCJcIi5jb25jYXQoSixcIl9cIikuY29uY2F0KEkpLEQ9dm9pZCAwPT09U3x8Uz9ldDpcIlwiLmNvbmNhdChRLFwiX1wiKS5jb25jYXQoSSksTD1kYSgpLE49TC5kaXNwYXRjaCxSPUwuc3RhdGUsTT1udWxsIT0oaD1SLmRldlRvb2xzUGFuZWxQb3NpdGlvbltEXSk/aDpSLmRldlRvb2xzUG9zaXRpb24sWj1vUShNLnNwbGl0KFwiLVwiLDIpLDIpLFU9WlswXSxGPVpbMV0scT0oMCx4LnVzZVJlZikobnVsbCk7dDgocSxyMigpLnRyaWdnZXJSZWYseixmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZVwiZXNjYXBlXCI6cmV0dXJuIHZvaWQgQihcInBhbmVsLXNlbGVjdG9yXCIpO2Nhc2VcIm91dHNpZGVcIjpFJiZCKFwicGFuZWwtc2VsZWN0b3JcIik7cmV0dXJuO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSk7dmFyIEg9cjQoUiksVj1vUShSLmRldlRvb2xzUG9zaXRpb24uc3BsaXQoXCItXCIsMiksMiksJD1WWzBdLFc9VlsxXSxZPVU9PT0kJiZGPT09Vz9IOm9BLFg9KG9YKG09e30sVSxcIlwiLmNvbmNhdChZLFwicHhcIikpLG9YKG0sRixcIlwiLmNvbmNhdChvQSxcInB4XCIpKSxvWChtLFwidG9wXCI9PT1VP1wiYm90dG9tXCI6XCJ0b3BcIixcImF1dG9cIiksb1gobSxcImxlZnRcIj09PUY/XCJyaWdodFwiOlwibGVmdFwiLFwiYXV0b1wiKSxtKSxHPVwicmVzaXphYmxlXCI9PT1fLmtpbmQsZW49KHQ9Rz9fLm1pbldpZHRoOnZvaWQgMCxuPUc/Xy5taW5IZWlnaHQ6dm9pZCAwLHI9Rz9fLm1heFdpZHRoOnZvaWQgMCxvPUc/Xy5tYXhIZWlnaHQ6dm9pZCAwLChzPSgwLEEuYykoMTEpKVswXSE9PW98fHNbMV0hPT1yfHxzWzJdIT09bnx8c1szXSE9PXQ/KGE9ZnVuY3Rpb24oKXtyZXR1cm57bWluV2lkdGg6dD9vSih0LFwid2lkdGhcIik6dm9pZCAwLG1pbkhlaWdodDpuP29KKG4sXCJoZWlnaHRcIik6dm9pZCAwLG1heFdpZHRoOnI/b0oocixcIndpZHRoXCIpOnZvaWQgMCxtYXhIZWlnaHQ6bz9vSihvLFwiaGVpZ2h0XCIpOnZvaWQgMH19LHNbMF09byxzWzFdPXIsc1syXT1uLHNbM109dCxzWzRdPWEpOmE9c1s0XSx1PShjPW9RKCgwLHgudXNlU3RhdGUpKGEpLDIpKVswXSxkPWNbMV0sc1s1XSE9PW98fHNbNl0hPT1yfHxzWzddIT09bnx8c1s4XSE9PXQ/KGk9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe2Qoe21pbldpZHRoOnQ/b0oodCxcIndpZHRoXCIpOnZvaWQgMCxtaW5IZWlnaHQ6bj9vSihuLFwiaGVpZ2h0XCIpOnZvaWQgMCxtYXhXaWR0aDpyP29KKHIsXCJ3aWR0aFwiKTp2b2lkIDAsbWF4SGVpZ2h0Om8/b0oobyxcImhlaWdodFwiKTp2b2lkIDB9KX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsZSksZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixlKX19LGw9W3QsbixyLG9dLHNbNV09byxzWzZdPXIsc1s3XT1uLHNbOF09dCxzWzldPWksc1sxMF09bCk6KGk9c1s5XSxsPXNbMTBdKSwoMCx4LnVzZUVmZmVjdCkoaSxsKSx1KSxlcj1lbi5taW5XaWR0aCxlbz1lbi5taW5IZWlnaHQsZWE9ZW4ubWF4V2lkdGgsZWk9ZW4ubWF4SGVpZ2h0LGVsPUk/XCJcIi5jb25jYXQoSixcIl9cIikuY29uY2F0KEkpOmVlLGVzPVIuZGV2VG9vbHNQYW5lbFNpemVbZWxdO3JldHVybigwLGIuanN4KShvTSx7dmFsdWU6e3Jlc2l6ZVJlZjpxLGluaXRpYWxTaXplOlwicmVzaXphYmxlXCI9PT1fLmtpbmQ/Xy5pbml0aWFsU2l6ZTpfLG1pbldpZHRoOmVyLG1pbkhlaWdodDplbyxtYXhXaWR0aDplYSxtYXhIZWlnaHQ6ZWksZGV2VG9vbHNQb3NpdGlvbjpSLmRldlRvb2xzUG9zaXRpb24sZGV2VG9vbHNQYW5lbFNpemU6Ui5kZXZUb29sc1BhbmVsU2l6ZSxzdG9yYWdlS2V5OlR9LGNoaWxkcmVuOigwLGIuanN4KShcImRpdlwiLHt0YWJJbmRleDotMSxyZWY6cSxjbGFzc05hbWU6XCJkeW5hbWljLXBhbmVsLWNvbnRhaW5lclwiLHN0eWxlOm9HKHtcIi0tcGFuZWwtdG9wXCI6WC50b3AsXCItLXBhbmVsLWJvdHRvbVwiOlguYm90dG9tLFwiLS1wYW5lbC1sZWZ0XCI6WC5sZWZ0LFwiLS1wYW5lbC1yaWdodFwiOlgucmlnaHR9LEc/e1wiLS1wYW5lbC1taW4td2lkdGhcIjplcj9cIlwiLmNvbmNhdChlcixcInB4XCIpOnZvaWQgMCxcIi0tcGFuZWwtbWluLWhlaWdodFwiOmVvP1wiXCIuY29uY2F0KGVvLFwicHhcIik6dm9pZCAwLFwiLS1wYW5lbC1tYXgtd2lkdGhcIjplYT9cIlwiLmNvbmNhdChlYSxcInB4XCIpOnZvaWQgMCxcIi0tcGFuZWwtbWF4LWhlaWdodFwiOmVpP1wiXCIuY29uY2F0KGVpLFwicHhcIik6dm9pZCAwfTp7XCItLXBhbmVsLWhlaWdodFwiOlwiXCIuY29uY2F0KGVzP2VzLmhlaWdodDpfLmhlaWdodCxcInB4XCIpLFwiLS1wYW5lbC13aWR0aFwiOlwiXCIuY29uY2F0KGVzP2VzLndpZHRoOl8ud2lkdGgsXCJweFwiKX0pLGNoaWxkcmVuOigwLGIuanN4KShvaSx7ZGlzYWJsZWQ6IXcsY2hpbGRyZW46KDAsYi5qc3gpKG9tLHtkcmFnSGFuZGxlU2VsZWN0b3I6XCIucmVzaXplLWNvbnRhaW5lclwiLGF2b2lkWm9uZTp7Y29ybmVyOlIuZGV2VG9vbHNQb3NpdGlvbixzcXVhcmU6MjUvUi5zY2FsZSxwYWRkaW5nOm9BfSxwYWRkaW5nOm9BLHBvc2l0aW9uOk0sc2V0UG9zaXRpb246ZnVuY3Rpb24oZSl7Tih7dHlwZTpLLGRldlRvb2xzUGFuZWxQb3NpdGlvbjplLGtleTpEfSksXCJyZXNpemFibGVcIj09PV8ua2luZCYmckEoe2RldlRvb2xzUGFuZWxQb3NpdGlvbjpvWCh7fSxELGUpfSl9LHN0eWxlOntvdmVyZmxvdzpcImF1dG9cIix3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCJ9LGRpc2FibGVEcmFnOiF3LGNoaWxkcmVuOigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGIuanN4cykoXCJkaXZcIiwoZj1vRyh7fSxPKSxwPXA9e2NsYXNzTmFtZTpcInBhbmVsLWNvbnRlbnQtY29udGFpbmVyIFwiLmNvbmNhdCgobnVsbD09Tz92b2lkIDA6Ty5jbGFzc05hbWUpfHxcIlwiKSxzdHlsZTpvRyh7fSxudWxsPT1PP3ZvaWQgMDpPLnN0eWxlKSxjaGlsZHJlbjpbKDAsYi5qc3gpKG9zLHtjaGlsZHJlbjpnfSksKDAsYi5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XCI6ITAsY2xhc3NOYW1lOlwiZHJhZ2dhYmxlLWNvbnRlbnRcIixjaGlsZHJlbjp5fSldfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhmLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHApKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHApKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShmLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLGUpKX0pLGYpKSxHJiYoMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOlsoIV8uc2lkZXN8fF8uc2lkZXMuaW5jbHVkZXMoXCJ2ZXJ0aWNhbFwiKSkmJigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJ0b3BcIn0pLCgwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJib3R0b21cIn0pXX0pLCghXy5zaWRlc3x8Xy5zaWRlcy5pbmNsdWRlcyhcImhvcml6b250YWxcIikpJiYoMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxiLmpzeCkob0gse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwicmlnaHRcIn0pLCgwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJsZWZ0XCJ9KV19KSwoIV8uc2lkZXN8fF8uc2lkZXMuaW5jbHVkZXMoXCJkaWFnb25hbFwiKSkmJigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJ0b3AtbGVmdFwifSksKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcInRvcC1yaWdodFwifSksKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcImJvdHRvbS1sZWZ0XCJ9KSwoMCxiLmpzeCkob0gse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwiYm90dG9tLXJpZ2h0XCJ9KV19KV19KV19KX0pfSl9KX0pfW9ZLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxvWS5zZXRBdHRyaWJ1dGVzPXUoKSxvWS5pbnNlcnQ9cygpLG9ZLmRvbUFQST1pKCksb1kuaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkob1cuWixvWSksb1cuWiYmb1cuWi5sb2NhbHMmJm9XLloubG9jYWxzO3ZhciBvMT1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1leHBsb3Jlci5jc3NcIiksbzI9e307ZnVuY3Rpb24gbzQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfW8yLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxvMi5zZXRBdHRyaWJ1dGVzPXUoKSxvMi5pbnNlcnQ9cygpLG8yLmRvbUFQST1pKCksbzIuaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkobzEuWixvMiksbzEuWiYmbzEuWi5sb2NhbHMmJm8xLloubG9jYWxzO3ZhciBvNT1uZXcgU2V0LG8zPXtzdWJzY3JpYmU6ZnVuY3Rpb24oZSl7cmV0dXJuIG81LmFkZChlKSxmdW5jdGlvbigpe3JldHVybiBvNS5kZWxldGUoZSl9fSxnZXRTbmFwc2hvdDpmdW5jdGlvbigpe3JldHVybiBvNy5nZXRSb290KCl9LGdldFNlcnZlclNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG83LmdldFJvb3QoKX19LG82PW8zLnN1YnNjcmliZSxvOT1vMy5nZXRTbmFwc2hvdCxvOD1vMy5nZXRTZXJ2ZXJTbmFwc2hvdCxvNz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldENoYXJhY3RlcnMsbj12b2lkIDA9PT10P2Z1bmN0aW9uKGUpe3JldHVybltlXX06dCxyPWUuY29tcGFyZSxvPXZvaWQgMD09PXI/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR9OnIsYT17dmFsdWU6dm9pZCAwLGNoaWxkcmVuOnt9fTtmdW5jdGlvbiBpKCl7dmFyIGU9ITAsdD0hMSxuPXZvaWQgMDt0cnl7Zm9yKHZhciByLG89bzVbU3ltYm9sLml0ZXJhdG9yXSgpOyEoZT0ocj1vLm5leHQoKSkuZG9uZSk7ZT0hMCkoMCxyLnZhbHVlKSgpfWNhdGNoKGUpe3Q9ITAsbj1lfWZpbmFsbHl7dHJ5e2V8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYodCl0aHJvdyBufX19cmV0dXJue2luc2VydDpmdW5jdGlvbihlKXt2YXIgdD1hLHI9bihlKSxvPSEwLGw9ITEscz12b2lkIDA7dHJ5e2Zvcih2YXIgYyx1PXJbU3ltYm9sLml0ZXJhdG9yXSgpOyEobz0oYz11Lm5leHQoKSkuZG9uZSk7bz0hMCl7dmFyIGQ9Yy52YWx1ZTt0LmNoaWxkcmVuW2RdfHwodC5jaGlsZHJlbltkXT17dmFsdWU6dm9pZCAwLGNoaWxkcmVuOnt9fSksdD10LmNoaWxkcmVuW2RdfX1jYXRjaChlKXtsPSEwLHM9ZX1maW5hbGx5e3RyeXtvfHxudWxsPT11LnJldHVybnx8dS5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgc319dC52YWx1ZT1lLGE9bzQoe30sYSksaSgpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9YSxyPW4oZSksbD1bXSxzPSEwLGM9ITAsdT0hMSxkPXZvaWQgMDt0cnl7Zm9yKHZhciBmLHA9cltTeW1ib2wuaXRlcmF0b3JdKCk7IShjPShmPXAubmV4dCgpKS5kb25lKTtjPSEwKXt2YXIgaD1mLnZhbHVlO2lmKCF0LmNoaWxkcmVuW2hdKXtzPSExO2JyZWFrfWwucHVzaCh0KSx0PXQuY2hpbGRyZW5baF19fWNhdGNoKGUpe3U9ITAsZD1lfWZpbmFsbHl7dHJ5e2N8fG51bGw9PXAucmV0dXJufHxwLnJldHVybigpfWZpbmFsbHl7aWYodSl0aHJvdyBkfX1pZihzJiZvKHQudmFsdWUsZSkpe3QudmFsdWU9dm9pZCAwO2Zvcih2YXIgbT1sLmxlbmd0aC0xO20+PTA7bS0tKXt2YXIgZz1sW21dLHk9clttXTswPT09T2JqZWN0LmtleXMoZy5jaGlsZHJlblt5XS5jaGlsZHJlbikubGVuZ3RoJiZkZWxldGUgZy5jaGlsZHJlblt5XX1hPW80KHt9LGEpLGkoKX19LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYX19fSh7Y29tcGFyZTpmdW5jdGlvbihlLHQpe3JldHVybiEhZSYmISF0JiZlLnBhZ2VQYXRoPT09dC5wYWdlUGF0aCYmZS50eXBlPT09dC50eXBlJiZlLmJvdW5kYXJ5VHlwZT09PXQuYm91bmRhcnlUeXBlfSxnZXRDaGFyYWN0ZXJzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhZ2VQYXRoLnNwbGl0KFwiL1wiKX19KSxhZT1vNy5pbnNlcnQsYXQ9bzcucmVtb3ZlLGFuPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIuY3NzXCIpLGFyPXt9O2FyLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxhci5zZXRBdHRyaWJ1dGVzPXUoKSxhci5pbnNlcnQ9cygpLGFyLmRvbUFQST1pKCksYXIuaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkoYW4uWixhciksYW4uWiYmYW4uWi5sb2NhbHMmJmFuLloubG9jYWxzO2xldCBhbz17fTtmdW5jdGlvbiBhYShlLHQpe2xldCBuPXgudXNlUmVmKGFvKTtyZXR1cm4gbi5jdXJyZW50PT09YW8mJihuLmN1cnJlbnQ9ZSh0KSksbn1sZXQgYWk9W107ZnVuY3Rpb24gYWwoZSl7eC51c2VFZmZlY3QoZSxhaSl9Y2xhc3MgYXN7c3RhdGljIGNyZWF0ZSgpe3JldHVybiBuZXcgYXN9Y3VycmVudElkPTA7c3RhcnQoZSx0KXt0aGlzLmNsZWFyKCksdGhpcy5jdXJyZW50SWQ9c2V0VGltZW91dCgoKT0+e3RoaXMuY3VycmVudElkPTAsdCgpfSxlKX1pc1N0YXJ0ZWQoKXtyZXR1cm4gMCE9PXRoaXMuY3VycmVudElkfWNsZWFyPSgpPT57MCE9PXRoaXMuY3VycmVudElkJiYoY2xlYXJUaW1lb3V0KHRoaXMuY3VycmVudElkKSx0aGlzLmN1cnJlbnRJZD0wKX07ZGlzcG9zZUVmZmVjdD0oKT0+dGhpcy5jbGVhcn1mdW5jdGlvbiBhYygpe2xldCBlPWFhKGFzLmNyZWF0ZSkuY3VycmVudDtyZXR1cm4gYWwoZS5kaXNwb3NlRWZmZWN0KSxlfWxldCBhdT13W2B1c2VJbnNlcnRpb25FZmZlY3Qke01hdGgucmFuZG9tKCkudG9GaXhlZCgxKX1gLnNsaWNlKDAsLTMpXSxhZD1hdSYmYXUhPT14LnVzZUxheW91dEVmZmVjdD9hdTplPT5lKCk7ZnVuY3Rpb24gYWYoZSl7bGV0IHQ9YWEoYXApLmN1cnJlbnQ7cmV0dXJuIHQubmV4dD1lLGFkKHQuZWZmZWN0KSx0LnRyYW1wb2xpbmV9ZnVuY3Rpb24gYXAoKXtsZXQgZT17bmV4dDp2b2lkIDAsY2FsbGJhY2s6YWgsdHJhbXBvbGluZTooLi4udCk9PmUuY2FsbGJhY2s/LiguLi50KSxlZmZlY3Q6KCk9PntlLmNhbGxiYWNrPWUubmV4dH19O3JldHVybiBlfWZ1bmN0aW9uIGFoKCl7fWZ1bmN0aW9uIGFtKHtjb250cm9sbGVkOmUsZGVmYXVsdDp0LG5hbWU6bixzdGF0ZTpyPVwidmFsdWVcIn0pe2xldHtjdXJyZW50Om99PXgudXNlUmVmKHZvaWQgMCE9PWUpLFthLGldPXgudXNlU3RhdGUodCksbD14LnVzZUNhbGxiYWNrKGU9PntvfHxpKGUpfSxbXSk7cmV0dXJuW28/ZTphLGxdfWxldCBhZz17Li4ud30sYXk9MCxhdj1hZy51c2VJZDtmdW5jdGlvbiBhYihlLHQpe2lmKHZvaWQgMCE9PWF2KXtsZXQgbj1hdigpO3JldHVybiBlPz8odD9gJHt0fS0ke259YDpuKX1yZXR1cm4gZnVuY3Rpb24oZSx0PVwibXVpXCIpe2xldFtuLHJdPXgudXNlU3RhdGUoZSksbz1lfHxuO3JldHVybiB4LnVzZUVmZmVjdCgoKT0+e251bGw9PW4mJihheSs9MSxyKGAke3R9LSR7YXl9YCkpfSxbbix0XSksb30oZSx0KX1mdW5jdGlvbiBhQSgpe2xldCBlPW5ldyBNYXA7cmV0dXJue2VtaXQodCxuKXtlLmdldCh0KT8uZm9yRWFjaChlPT5lKG4pKX0sb24odCxuKXtlLmhhcyh0KXx8ZS5zZXQodCxuZXcgU2V0KSxlLmdldCh0KS5hZGQobil9LG9mZih0LG4pe2UuZ2V0KHQpPy5kZWxldGUobil9fX1sZXQgYXg9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50P3gudXNlTGF5b3V0RWZmZWN0OigpPT57fSxhdz14LmNyZWF0ZUNvbnRleHQobnVsbCksYUM9eC5jcmVhdGVDb250ZXh0KG51bGwpLGFfPSgpPT54LnVzZUNvbnRleHQoYXcpPy5pZHx8bnVsbCxhaz0oKT0+eC51c2VDb250ZXh0KGFDKTtmdW5jdGlvbiBhRShlKXtsZXR7Y2hpbGRyZW46dCxpZDpufT1lLHI9YV8oKTtyZXR1cm4oMCxiLmpzeCkoYXcuUHJvdmlkZXIse3ZhbHVlOngudXNlTWVtbygoKT0+KHtpZDpuLHBhcmVudElkOnJ9KSxbbixyXSksY2hpbGRyZW46dH0pfWZ1bmN0aW9uIGFqKGUpe2xldHtjaGlsZHJlbjp0fT1lLG49eC51c2VSZWYoW10pLHI9eC51c2VDYWxsYmFjayhlPT57bi5jdXJyZW50PVsuLi5uLmN1cnJlbnQsZV19LFtdKSxvPXgudXNlQ2FsbGJhY2soZT0+e24uY3VycmVudD1uLmN1cnJlbnQuZmlsdGVyKHQ9PnQhPT1lKX0sW10pLFthXT14LnVzZVN0YXRlKCgpPT5hQSgpKTtyZXR1cm4oMCxiLmpzeCkoYUMuUHJvdmlkZXIse3ZhbHVlOngudXNlTWVtbygoKT0+KHtub2Rlc1JlZjpuLGFkZE5vZGU6cixyZW1vdmVOb2RlOm8sZXZlbnRzOmF9KSxbcixvLGFdKSxjaGlsZHJlbjp0fSl9ZnVuY3Rpb24gYVMoZSl7bGV0e29wZW46dD0hMSxvbk9wZW5DaGFuZ2U6bixlbGVtZW50czpyfT1lLG89YWIoKSxhPXgudXNlUmVmKHt9KSxbaV09eC51c2VTdGF0ZSgoKT0+YUEoKSksbD1udWxsIT1hXygpLFtzLGNdPXgudXNlU3RhdGUoci5yZWZlcmVuY2UpLHU9YWYoKGUsdCxyKT0+e2EuY3VycmVudC5vcGVuRXZlbnQ9ZT90OnZvaWQgMCxpLmVtaXQoXCJvcGVuY2hhbmdlXCIse29wZW46ZSxldmVudDp0LHJlYXNvbjpyLG5lc3RlZDpsfSksbj8uKGUsdCxyKX0pLGQ9eC51c2VNZW1vKCgpPT4oe3NldFBvc2l0aW9uUmVmZXJlbmNlOmN9KSxbXSksZj14LnVzZU1lbW8oKCk9Pih7cmVmZXJlbmNlOnN8fHIucmVmZXJlbmNlfHxudWxsLGZsb2F0aW5nOnIuZmxvYXRpbmd8fG51bGwsZG9tUmVmZXJlbmNlOnIucmVmZXJlbmNlfSksW3Msci5yZWZlcmVuY2Usci5mbG9hdGluZ10pO3JldHVybiB4LnVzZU1lbW8oKCk9Pih7ZGF0YVJlZjphLG9wZW46dCxvbk9wZW5DaGFuZ2U6dSxlbGVtZW50czpmLGV2ZW50czppLGZsb2F0aW5nSWQ6byxyZWZzOmR9KSxbdCx1LGYsaSxvLGRdKX1mdW5jdGlvbiBhTygpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3d9ZnVuY3Rpb24gYUIoZSl7cmV0dXJuIGF6KGUpPyhlLm5vZGVOYW1lfHxcIlwiKS50b0xvd2VyQ2FzZSgpOlwiI2RvY3VtZW50XCJ9ZnVuY3Rpb24gYVAoZSl7dmFyIHQ7cmV0dXJuKG51bGw9PWV8fG51bGw9PSh0PWUub3duZXJEb2N1bWVudCk/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9ZnVuY3Rpb24gYUkoZSl7dmFyIHQ7cmV0dXJuIG51bGw9PSh0PShheihlKT9lLm93bmVyRG9jdW1lbnQ6ZS5kb2N1bWVudCl8fHdpbmRvdy5kb2N1bWVudCk/dm9pZCAwOnQuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIGF6KGUpe3JldHVybiEhYU8oKSYmKGUgaW5zdGFuY2VvZiBOb2RlfHxlIGluc3RhbmNlb2YgYVAoZSkuTm9kZSl9ZnVuY3Rpb24gYVQoZSl7cmV0dXJuISFhTygpJiYoZSBpbnN0YW5jZW9mIEVsZW1lbnR8fGUgaW5zdGFuY2VvZiBhUChlKS5FbGVtZW50KX1mdW5jdGlvbiBhRChlKXtyZXR1cm4hIWFPKCkmJihlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUgaW5zdGFuY2VvZiBhUChlKS5IVE1MRWxlbWVudCl9ZnVuY3Rpb24gYUwoZSl7cmV0dXJuISFhTygpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU2hhZG93Um9vdCYmKGUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgYVAoZSkuU2hhZG93Um9vdCl9bGV0IGFOPW5ldyBTZXQoW1wiaW5saW5lXCIsXCJjb250ZW50c1wiXSk7ZnVuY3Rpb24gYVIoZSl7bGV0e292ZXJmbG93OnQsb3ZlcmZsb3dYOm4sb3ZlcmZsb3dZOnIsZGlzcGxheTpvfT1hSyhlKTtyZXR1cm4vYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdCh0K3IrbikmJiFhTi5oYXMobyl9bGV0IGFNPW5ldyBTZXQoW1widGFibGVcIixcInRkXCIsXCJ0aFwiXSksYVo9W1wiOnBvcG92ZXItb3BlblwiLFwiOm1vZGFsXCJdO2Z1bmN0aW9uIGFVKGUpe3JldHVybiBhWi5zb21lKHQ9Pnt0cnl7cmV0dXJuIGUubWF0Y2hlcyh0KX1jYXRjaChlKXtyZXR1cm4hMX19KX1sZXQgYUY9W1widHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGVcIixcInNjYWxlXCIsXCJyb3RhdGVcIixcInBlcnNwZWN0aXZlXCJdLGFxPVtcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlXCIsXCJzY2FsZVwiLFwicm90YXRlXCIsXCJwZXJzcGVjdGl2ZVwiLFwiZmlsdGVyXCJdLGFIPVtcInBhaW50XCIsXCJsYXlvdXRcIixcInN0cmljdFwiLFwiY29udGVudFwiXTtmdW5jdGlvbiBhVihlKXtsZXQgdD1hJCgpLG49YVQoZSk/YUsoZSk6ZTtyZXR1cm4gYUYuc29tZShlPT4hIW5bZV0mJlwibm9uZVwiIT09bltlXSl8fCEhbi5jb250YWluZXJUeXBlJiZcIm5vcm1hbFwiIT09bi5jb250YWluZXJUeXBlfHwhdCYmISFuLmJhY2tkcm9wRmlsdGVyJiZcIm5vbmVcIiE9PW4uYmFja2Ryb3BGaWx0ZXJ8fCF0JiYhIW4uZmlsdGVyJiZcIm5vbmVcIiE9PW4uZmlsdGVyfHxhcS5zb21lKGU9PihuLndpbGxDaGFuZ2V8fFwiXCIpLmluY2x1ZGVzKGUpKXx8YUguc29tZShlPT4obi5jb250YWlufHxcIlwiKS5pbmNsdWRlcyhlKSl9ZnVuY3Rpb24gYSQoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgQ1NTJiYhIUNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKFwiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcIixcIm5vbmVcIil9bGV0IGFXPW5ldyBTZXQoW1wiaHRtbFwiLFwiYm9keVwiLFwiI2RvY3VtZW50XCJdKTtmdW5jdGlvbiBhWShlKXtyZXR1cm4gYVcuaGFzKGFCKGUpKX1mdW5jdGlvbiBhSyhlKXtyZXR1cm4gYVAoZSkuZ2V0Q29tcHV0ZWRTdHlsZShlKX1mdW5jdGlvbiBhWChlKXtyZXR1cm4gYVQoZSk/e3Njcm9sbExlZnQ6ZS5zY3JvbGxMZWZ0LHNjcm9sbFRvcDplLnNjcm9sbFRvcH06e3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIGFHKGUpe2lmKFwiaHRtbFwiPT09YUIoZSkpcmV0dXJuIGU7bGV0IHQ9ZS5hc3NpZ25lZFNsb3R8fGUucGFyZW50Tm9kZXx8YUwoZSkmJmUuaG9zdHx8YUkoZSk7cmV0dXJuIGFMKHQpP3QuaG9zdDp0fWZ1bmN0aW9uIGFRKGUsdCxuKXt2YXIgcjt2b2lkIDA9PT10JiYodD1bXSksdm9pZCAwPT09biYmKG49ITApO2xldCBvPWZ1bmN0aW9uIGUodCl7bGV0IG49YUcodCk7cmV0dXJuIGFZKG4pP3Qub3duZXJEb2N1bWVudD90Lm93bmVyRG9jdW1lbnQuYm9keTp0LmJvZHk6YUQobikmJmFSKG4pP246ZShuKX0oZSksYT1vPT09KG51bGw9PShyPWUub3duZXJEb2N1bWVudCk/dm9pZCAwOnIuYm9keSksaT1hUChvKTtpZihhKXtsZXQgZT1hSihpKTtyZXR1cm4gdC5jb25jYXQoaSxpLnZpc3VhbFZpZXdwb3J0fHxbXSxhUihvKT9vOltdLGUmJm4/YVEoZSk6W10pfXJldHVybiB0LmNvbmNhdChvLGFRKG8sW10sbikpfWZ1bmN0aW9uIGFKKGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uIGEwKGUpe2xldCB0PWFhKGExLGUpLmN1cnJlbnQ7cmV0dXJuIHQubmV4dD1lLGF4KHQuZWZmZWN0KSx0fWZ1bmN0aW9uIGExKGUpe2xldCB0PXtjdXJyZW50OmUsbmV4dDplLGVmZmVjdDooKT0+e3QuY3VycmVudD10Lm5leHR9fTtyZXR1cm4gdH1sZXQgYTI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvcixhND1mdW5jdGlvbigpe2lmKCFhMilyZXR1cm57cGxhdGZvcm06XCJcIixtYXhUb3VjaFBvaW50czotMX07bGV0IGU9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIGU/LnBsYXRmb3JtP3twbGF0Zm9ybTplLnBsYXRmb3JtLG1heFRvdWNoUG9pbnRzOm5hdmlnYXRvci5tYXhUb3VjaFBvaW50c306e3BsYXRmb3JtOm5hdmlnYXRvci5wbGF0Zm9ybT8/XCJcIixtYXhUb3VjaFBvaW50czpuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM/Py0xfX0oKSxhNT1mdW5jdGlvbigpe2lmKCFhMilyZXR1cm5cIlwiO2xldCBlPW5hdmlnYXRvci51c2VyQWdlbnREYXRhO3JldHVybiBlPy5wbGF0Zm9ybT9lLnBsYXRmb3JtOm5hdmlnYXRvci5wbGF0Zm9ybT8/XCJcIn0oKSxhMz1mdW5jdGlvbigpe2lmKCFhMilyZXR1cm5cIlwiO2xldCBlPW5hdmlnYXRvci51c2VyQWdlbnREYXRhO3JldHVybiBlJiZBcnJheS5pc0FycmF5KGUuYnJhbmRzKT9lLmJyYW5kcy5tYXAoKHticmFuZDplLHZlcnNpb246dH0pPT5gJHtlfS8ke3R9YCkuam9pbihcIiBcIik6bmF2aWdhdG9yLnVzZXJBZ2VudH0oKSxhNj1cInVuZGVmaW5lZFwiIT10eXBlb2YgQ1NTJiYhIUNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKFwiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6bm9uZVwiKSxhOT1cIk1hY0ludGVsXCI9PT1hNC5wbGF0Zm9ybSYmYTQubWF4VG91Y2hQb2ludHM+MXx8L2lQKGhvbmV8YWR8b2QpfGlPUy8udGVzdChhNC5wbGF0Zm9ybSk7YTImJi9maXJlZm94L2kudGVzdChhMyk7bGV0IGE4PWEyJiYvYXBwbGUvaS50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLGE3PWEyJiYvYW5kcm9pZC9pLnRlc3QoYTUpfHwvYW5kcm9pZC9pLnRlc3QoYTMpLGllPWEyJiZhNS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJtYWNcIikmJiFuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMsaXQ9YTMuaW5jbHVkZXMoXCJqc2RvbS9cIik7ZnVuY3Rpb24gaXIoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gaW8oZSl7cmV0dXJuIDA9PT1lLm1veklucHV0U291cmNlJiYhIWUuaXNUcnVzdGVkfHwoYTcmJmUucG9pbnRlclR5cGU/XCJjbGlja1wiPT09ZS50eXBlJiYxPT09ZS5idXR0b25zOjA9PT1lLmRldGFpbCYmIWUucG9pbnRlclR5cGUpfWZ1bmN0aW9uIGlhKGUpe3JldHVybiFpdCYmKCFhNyYmMD09PWUud2lkdGgmJjA9PT1lLmhlaWdodHx8YTcmJjE9PT1lLndpZHRoJiYxPT09ZS5oZWlnaHQmJjA9PT1lLnByZXNzdXJlJiYwPT09ZS5kZXRhaWwmJlwibW91c2VcIj09PWUucG9pbnRlclR5cGV8fGUud2lkdGg8MSYmZS5oZWlnaHQ8MSYmMD09PWUucHJlc3N1cmUmJjA9PT1lLmRldGFpbCYmXCJ0b3VjaFwiPT09ZS5wb2ludGVyVHlwZSl9ZnVuY3Rpb24gaWkoZSx0KXtsZXQgbj1bXCJtb3VzZVwiLFwicGVuXCJdO3JldHVybiB0fHxuLnB1c2goXCJcIix2b2lkIDApLG4uaW5jbHVkZXMoZSl9bGV0IGlsPVwiZGF0YS1iYXNlLXVpLWZvY3VzYWJsZVwiLGlzPVwiYWN0aXZlXCIsaWM9XCJzZWxlY3RlZFwiLGl1PVwiQXJyb3dMZWZ0XCIsaWQ9XCJBcnJvd1JpZ2h0XCIsaXA9XCJBcnJvd1VwXCIsaWg9XCJBcnJvd0Rvd25cIjtmdW5jdGlvbiBpbShlKXtsZXQgdD1lLmFjdGl2ZUVsZW1lbnQ7Zm9yKDt0Py5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IT1udWxsOyl0PXQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O3JldHVybiB0fWZ1bmN0aW9uIGlnKGUsdCl7aWYoIWV8fCF0KXJldHVybiExO2xldCBuPXQuZ2V0Um9vdE5vZGU/LigpO2lmKGUuY29udGFpbnModCkpcmV0dXJuITA7aWYobiYmYUwobikpe2xldCBuPXQ7Zm9yKDtuOyl7aWYoZT09PW4pcmV0dXJuITA7bj1uLnBhcmVudE5vZGV8fG4uaG9zdH19cmV0dXJuITF9ZnVuY3Rpb24gaXkoZSl7cmV0dXJuXCJjb21wb3NlZFBhdGhcImluIGU/ZS5jb21wb3NlZFBhdGgoKVswXTplLnRhcmdldH1mdW5jdGlvbiBpdihlLHQpe3JldHVybiBudWxsIT10JiYoXCJjb21wb3NlZFBhdGhcImluIGU/ZS5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyh0KTpudWxsIT1lLnRhcmdldCYmdC5jb250YWlucyhlLnRhcmdldCkpfWZ1bmN0aW9uIGliKGUpe3JldHVybiBlPy5vd25lckRvY3VtZW50fHxkb2N1bWVudH1mdW5jdGlvbiBpQShlKXtyZXR1cm4gYUQoZSkmJmUubWF0Y2hlcyhcImlucHV0Om5vdChbdHlwZT0naGlkZGVuJ10pOm5vdChbZGlzYWJsZWRdKSxbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT0nZmFsc2UnXSksdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pXCIpfWZ1bmN0aW9uIGl4KGUpe3JldHVybiEhZSYmXCJjb21ib2JveFwiPT09ZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpJiZpQShlKX1mdW5jdGlvbiBpdyhlKXtyZXR1cm4gZT9lLmhhc0F0dHJpYnV0ZShpbCk/ZTplLnF1ZXJ5U2VsZWN0b3IoYFske2lsfV1gKXx8ZTpudWxsfWZ1bmN0aW9uIGlDKGUpe3JldHVybmBkYXRhLWJhc2UtdWktJHtlfWB9bGV0IGlfPWlDKFwic2FmZS1wb2x5Z29uXCIpO2Z1bmN0aW9uIGlrKGUsdCxuKXtpZihuJiYhaWkobikpcmV0dXJuIDA7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSl7bGV0IG49ZSgpO3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBuP246bj8uW3RdfXJldHVybiBlPy5bdF19ZnVuY3Rpb24gaUUoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKCk6ZX1mdW5jdGlvbiBpaihlLHQ9e30pe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZGF0YVJlZjpvLGV2ZW50czphLGVsZW1lbnRzOml9PWUse2VuYWJsZWQ6bD0hMCxkZWxheTpzPTAsaGFuZGxlQ2xvc2U6Yz1udWxsLG1vdXNlT25seTp1PSExLHJlc3RNczpkPTAsbW92ZTpmPSEwfT10LHA9YWsoKSxoPWFfKCksbT1hMChjKSxnPWEwKHMpLHk9YTAobiksdj1hMChkKSxiPXgudXNlUmVmKHZvaWQgMCksQT1hYygpLHc9eC51c2VSZWYodm9pZCAwKSxDPWFjKCksXz14LnVzZVJlZighMCksaz14LnVzZVJlZighMSksRT14LnVzZVJlZigoKT0+e30pLGo9eC51c2VSZWYoITEpLFM9YWYoKCk9PntsZXQgZT1vLmN1cnJlbnQub3BlbkV2ZW50Py50eXBlO3JldHVybiBlPy5pbmNsdWRlcyhcIm1vdXNlXCIpJiZcIm1vdXNlZG93blwiIT09ZX0pO3gudXNlRWZmZWN0KCgpPT57aWYobClyZXR1cm4gYS5vbihcIm9wZW5jaGFuZ2VcIixlKSwoKT0+e2Eub2ZmKFwib3BlbmNoYW5nZVwiLGUpfTtmdW5jdGlvbiBlKHtvcGVuOmV9KXtlfHwoQS5jbGVhcigpLEMuY2xlYXIoKSxfLmN1cnJlbnQ9ITAsai5jdXJyZW50PSExKX19LFtsLGEsQSxDXSkseC51c2VFZmZlY3QoKCk9PntpZighbHx8IW0uY3VycmVudHx8IW4pcmV0dXJuO2Z1bmN0aW9uIGUoZSl7UygpJiZyKCExLGUsXCJob3ZlclwiKX1sZXQgdD1pYihpLmZsb2F0aW5nKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixlKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixlKX19LFtpLmZsb2F0aW5nLG4scixsLG0sU10pO2xldCBPPXgudXNlQ2FsbGJhY2soKGUsdD0hMCxuPVwiaG92ZXJcIik9PntsZXQgbz1payhnLmN1cnJlbnQsXCJjbG9zZVwiLGIuY3VycmVudCk7byYmIXcuY3VycmVudD9BLnN0YXJ0KG8sKCk9PnIoITEsZSxuKSk6dCYmKEEuY2xlYXIoKSxyKCExLGUsbikpfSxbZyxyLEFdKSxCPWFmKCgpPT57RS5jdXJyZW50KCksdy5jdXJyZW50PXZvaWQgMH0pLFA9YWYoKCk9PntpZihrLmN1cnJlbnQpe2xldCBlPWliKGkuZmxvYXRpbmcpLmJvZHk7ZS5zdHlsZS5wb2ludGVyRXZlbnRzPVwiXCIsZS5yZW1vdmVBdHRyaWJ1dGUoaV8pLGsuY3VycmVudD0hMX19KSxJPWFmKCgpPT4hIW8uY3VycmVudC5vcGVuRXZlbnQmJltcImNsaWNrXCIsXCJtb3VzZWRvd25cIl0uaW5jbHVkZXMoby5jdXJyZW50Lm9wZW5FdmVudC50eXBlKSk7eC51c2VFZmZlY3QoKCk9PntpZihsJiZhVChpLmRvbVJlZmVyZW5jZSkpe2xldCByPWkuZG9tUmVmZXJlbmNlLG89aS5mbG9hdGluZztyZXR1cm4gbiYmci5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGEpLGYmJnIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGUse29uY2U6ITB9KSxyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZSksci5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHQpLG8mJihvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYSksby5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHMpLG8uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixjKSksKCk9PntuJiZyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYSksZiYmci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsZSksci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGUpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0KSxvJiYoby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGEpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixzKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYykpfX1mdW5jdGlvbiBlKGUpe2lmKEEuY2xlYXIoKSxfLmN1cnJlbnQ9ITEsdSYmIWlpKGIuY3VycmVudCl8fGlFKHYuY3VycmVudCk+MCYmIWlrKGcuY3VycmVudCxcIm9wZW5cIikpcmV0dXJuO2xldCB0PWlrKGcuY3VycmVudCxcIm9wZW5cIixiLmN1cnJlbnQpO3Q/QS5zdGFydCh0LCgpPT57eS5jdXJyZW50fHxyKCEwLGUsXCJob3ZlclwiKX0pOm58fHIoITAsZSxcImhvdmVyXCIpfWZ1bmN0aW9uIHQoZSl7aWYoSSgpKXJldHVybiB2b2lkIFAoKTtFLmN1cnJlbnQoKTtsZXQgdD1pYihpLmZsb2F0aW5nKTtpZihDLmNsZWFyKCksai5jdXJyZW50PSExLG0uY3VycmVudCYmby5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCl7bnx8QS5jbGVhcigpLHcuY3VycmVudD1tLmN1cnJlbnQoey4uLm8uY3VycmVudC5mbG9hdGluZ0NvbnRleHQsdHJlZTpwLHg6ZS5jbGllbnRYLHk6ZS5jbGllbnRZLG9uQ2xvc2UoKXtQKCksQigpLEkoKXx8TyhlLCEwLFwic2FmZS1wb2x5Z29uXCIpfX0pO2xldCByPXcuY3VycmVudDt0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixyKSxFLmN1cnJlbnQ9KCk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixyKX07cmV0dXJufVwidG91Y2hcIj09PWIuY3VycmVudCYmaWcoaS5mbG9hdGluZyxlLnJlbGF0ZWRUYXJnZXQpfHxPKGUpfWZ1bmN0aW9uIGEoZSl7IUkoKSYmby5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCYmbS5jdXJyZW50Py4oey4uLm8uY3VycmVudC5mbG9hdGluZ0NvbnRleHQsdHJlZTpwLHg6ZS5jbGllbnRYLHk6ZS5jbGllbnRZLG9uQ2xvc2UoKXtQKCksQigpLEkoKXx8TyhlKX19KShlKX1mdW5jdGlvbiBzKCl7QS5jbGVhcigpfWZ1bmN0aW9uIGMoZSl7SSgpfHxPKGUsITEpfX0sW2ksbCxlLHUsZixPLEIsUCxyLG4seSxwLGcsbSxvLEksdixBLENdKSxheCgoKT0+e2lmKGwmJm4mJm0uY3VycmVudD8uX19vcHRpb25zPy5ibG9ja1BvaW50ZXJFdmVudHMmJlMoKSl7ay5jdXJyZW50PSEwO2xldCBlPWkuZmxvYXRpbmc7aWYoYVQoaS5kb21SZWZlcmVuY2UpJiZlKXtsZXQgdD1pYihpLmZsb2F0aW5nKS5ib2R5O3Quc2V0QXR0cmlidXRlKGlfLFwiXCIpO2xldCBuPWkuZG9tUmVmZXJlbmNlLHI9cD8ubm9kZXNSZWYuY3VycmVudC5maW5kKGU9PmUuaWQ9PT1oKT8uY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmc7cmV0dXJuIHImJihyLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJcIiksdC5zdHlsZS5wb2ludGVyRXZlbnRzPVwibm9uZVwiLG4uc3R5bGUucG9pbnRlckV2ZW50cz1cImF1dG9cIixlLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJhdXRvXCIsKCk9Pnt0LnN0eWxlLnBvaW50ZXJFdmVudHM9XCJcIixuLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJcIixlLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJcIn19fX0sW2wsbixoLGkscCxtLFNdKSxheCgoKT0+e258fChiLmN1cnJlbnQ9dm9pZCAwLGouY3VycmVudD0hMSxCKCksUCgpKX0sW24sQixQXSkseC51c2VFZmZlY3QoKCk9PigpPT57QigpLEEuY2xlYXIoKSxDLmNsZWFyKCksUCgpfSxbbCxpLmRvbVJlZmVyZW5jZSxCLFAsQSxDXSk7bGV0IHo9eC51c2VNZW1vKCgpPT57ZnVuY3Rpb24gZShlKXtiLmN1cnJlbnQ9ZS5wb2ludGVyVHlwZX1yZXR1cm57b25Qb2ludGVyRG93bjplLG9uUG9pbnRlckVudGVyOmUsb25Nb3VzZU1vdmUoZSl7bGV0e25hdGl2ZUV2ZW50OnR9PWU7ZnVuY3Rpb24gbygpe18uY3VycmVudHx8eS5jdXJyZW50fHxyKCEwLHQsXCJob3ZlclwiKX0oIXV8fGlpKGIuY3VycmVudCkpJiYhbiYmMCE9PWlFKHYuY3VycmVudCkmJihqLmN1cnJlbnQmJmUubW92ZW1lbnRYKioyK2UubW92ZW1lbnRZKioyPDJ8fChDLmNsZWFyKCksXCJ0b3VjaFwiPT09Yi5jdXJyZW50P28oKTooai5jdXJyZW50PSEwLEMuc3RhcnQoaUUodi5jdXJyZW50KSxvKSkpKX19fSxbdSxyLG4seSx2LENdKTtyZXR1cm4geC51c2VNZW1vKCgpPT5sP3tyZWZlcmVuY2U6en06e30sW2wsel0pfWZ1bmN0aW9uIGlTKGUsdCxuPSEwKXtyZXR1cm4gZS5maWx0ZXIoZT0+ZS5wYXJlbnRJZD09PXQmJighbnx8ZS5jb250ZXh0Py5vcGVuKSkuZmxhdE1hcCh0PT5bdCwuLi5pUyhlLHQuaWQsbildKX1mdW5jdGlvbiBpTyhlLHQpe2xldCBuPVtdLHI9ZS5maW5kKGU9PmUuaWQ9PT10KT8ucGFyZW50SWQ7Zm9yKDtyOyl7bGV0IHQ9ZS5maW5kKGU9PmUuaWQ9PT1yKTtyPXQ/LnBhcmVudElkLHQmJihuPW4uY29uY2F0KHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBpQihlLHQpe2xldFtuLHJdPWUsbz0hMSxhPXQubGVuZ3RoO2ZvcihsZXQgZT0wLGk9YS0xO2U8YTtpPWUrKyl7bGV0W2EsbF09dFtlXXx8WzAsMF0sW3MsY109dFtpXXx8WzAsMF07bD49ciE9Yz49ciYmbjw9KHMtYSkqKHItbCkvKGMtbCkrYSYmKG89IW8pfXJldHVybiBvfWZ1bmN0aW9uIGlQKGU9e30pe2xldHtidWZmZXI6dD0uNSxibG9ja1BvaW50ZXJFdmVudHM6bj0hMSxyZXF1aXJlSW50ZW50OnI9ITB9PWUsbz1uZXcgYXMsYT0hMSxpPW51bGwsbD1udWxsLHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHBlcmZvcm1hbmNlP3BlcmZvcm1hbmNlLm5vdygpOjAsYz0oe3g6ZSx5Om4scGxhY2VtZW50OmMsZWxlbWVudHM6dSxvbkNsb3NlOmQsbm9kZUlkOmYsdHJlZTpwfSk9PmZ1bmN0aW9uKGgpe3ZhciBtLGc7ZnVuY3Rpb24geSgpe28uY2xlYXIoKSxkKCl9aWYoby5jbGVhcigpLCF1LmRvbVJlZmVyZW5jZXx8IXUuZmxvYXRpbmd8fG51bGw9PWN8fG51bGw9PWV8fG51bGw9PW4pcmV0dXJuO2xldHtjbGllbnRYOnYsY2xpZW50WTpifT1oLEE9W3YsYl0seD1peShoKSx3PVwibW91c2VsZWF2ZVwiPT09aC50eXBlLEM9aWcodS5mbG9hdGluZyx4KSxfPWlnKHUuZG9tUmVmZXJlbmNlLHgpLGs9dS5kb21SZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksRT11LmZsb2F0aW5nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGo9Yy5zcGxpdChcIi1cIilbMF0sUz1lPkUucmlnaHQtRS53aWR0aC8yLE89bj5FLmJvdHRvbS1FLmhlaWdodC8yLEI9KG09QSxnPWssbVswXT49Zy54JiZtWzBdPD1nLngrZy53aWR0aCYmbVsxXT49Zy55JiZtWzFdPD1nLnkrZy5oZWlnaHQpLFA9RS53aWR0aD5rLndpZHRoLEk9RS5oZWlnaHQ+ay5oZWlnaHQsej0oUD9rOkUpLmxlZnQsVD0oUD9rOkUpLnJpZ2h0LEQ9KEk/azpFKS50b3AsTD0oST9rOkUpLmJvdHRvbTtpZihDJiYoYT0hMCwhdykpcmV0dXJuO2lmKF8mJihhPSExKSxfJiYhdyl7YT0hMDtyZXR1cm59aWYodyYmYVQoaC5yZWxhdGVkVGFyZ2V0KSYmaWcodS5mbG9hdGluZyxoLnJlbGF0ZWRUYXJnZXQpfHxwJiZpUyhwLm5vZGVzUmVmLmN1cnJlbnQsZikuc29tZSgoe2NvbnRleHQ6ZX0pPT5lPy5vcGVuKSlyZXR1cm47aWYoXCJ0b3BcIj09PWomJm4+PWsuYm90dG9tLTF8fFwiYm90dG9tXCI9PT1qJiZuPD1rLnRvcCsxfHxcImxlZnRcIj09PWomJmU+PWsucmlnaHQtMXx8XCJyaWdodFwiPT09aiYmZTw9ay5sZWZ0KzEpcmV0dXJuIHkoKTtsZXQgTj1bXTtzd2l0Y2goail7Y2FzZVwidG9wXCI6Tj1bW3osay50b3ArMV0sW3osRS5ib3R0b20tMV0sW1QsRS5ib3R0b20tMV0sW1Qsay50b3ArMV1dO2JyZWFrO2Nhc2VcImJvdHRvbVwiOk49W1t6LEUudG9wKzFdLFt6LGsuYm90dG9tLTFdLFtULGsuYm90dG9tLTFdLFtULEUudG9wKzFdXTticmVhaztjYXNlXCJsZWZ0XCI6Tj1bW0UucmlnaHQtMSxMXSxbRS5yaWdodC0xLERdLFtrLmxlZnQrMSxEXSxbay5sZWZ0KzEsTF1dO2JyZWFrO2Nhc2VcInJpZ2h0XCI6Tj1bW2sucmlnaHQtMSxMXSxbay5yaWdodC0xLERdLFtFLmxlZnQrMSxEXSxbRS5sZWZ0KzEsTF1dfWlmKCFpQihbdixiXSxOKSl7aWYoYSYmIUIpcmV0dXJuIHkoKTtpZighdyYmcil7bGV0IGU9ZnVuY3Rpb24oZSx0KXtsZXQgbj1wZXJmb3JtYW5jZS5ub3coKSxyPW4tcztpZihudWxsPT09aXx8bnVsbD09PWx8fDA9PT1yKXJldHVybiBpPWUsbD10LHM9bixudWxsO2xldCBvPWUtaSxhPXQtbCxjPU1hdGguc3FydChvKm8rYSphKTtyZXR1cm4gaT1lLGw9dCxzPW4sYy9yfShoLmNsaWVudFgsaC5jbGllbnRZKTtpZihudWxsIT09ZSYmZTwuMSlyZXR1cm4geSgpfWlCKFt2LGJdLGZ1bmN0aW9uKFtlLG5dKXtzd2l0Y2goail7Y2FzZVwidG9wXCI6e2xldCByPVtbRS5sZWZ0LFN8fFA/RS5ib3R0b20tdDpFLnRvcF0sW0UucmlnaHQsUz9QP0UuYm90dG9tLXQ6RS50b3A6RS5ib3R0b20tdF1dO3JldHVybltbUD9lK3QvMjpTP2UrNCp0OmUtNCp0LG4rdCsxXSxbUD9lLXQvMjpTP2UrNCp0OmUtNCp0LG4rdCsxXSwuLi5yXX1jYXNlXCJib3R0b21cIjp7bGV0IHI9W1tFLmxlZnQsU3x8UD9FLnRvcCt0OkUuYm90dG9tXSxbRS5yaWdodCxTP1A/RS50b3ArdDpFLmJvdHRvbTpFLnRvcCt0XV07cmV0dXJuW1tQP2UrdC8yOlM/ZSs0KnQ6ZS00KnQsbi10XSxbUD9lLXQvMjpTP2UrNCp0OmUtNCp0LG4tdF0sLi4ucl19Y2FzZVwibGVmdFwiOnJldHVybltbT3x8ST9FLnJpZ2h0LXQ6RS5sZWZ0LEUudG9wXSxbTz9JP0UucmlnaHQtdDpFLmxlZnQ6RS5yaWdodC10LEUuYm90dG9tXSxbZSt0KzEsST9uK3QvMjpPP24rNCp0Om4tNCp0XSxbZSt0KzEsST9uLXQvMjpPP24rNCp0Om4tNCp0XV07Y2FzZVwicmlnaHRcIjp7bGV0IHI9W1tPfHxJP0UubGVmdCt0OkUucmlnaHQsRS50b3BdLFtPP0k/RS5sZWZ0K3Q6RS5yaWdodDpFLmxlZnQrdCxFLmJvdHRvbV1dO3JldHVybltbZS10LEk/bit0LzI6Tz9uKzQqdDpuLTQqdF0sW2UtdCxJP24tdC8yOk8/bis0KnQ6bi00KnRdLC4uLnJdfWRlZmF1bHQ6cmV0dXJuW119fShbZSxuXSkpPyFhJiZyJiZvLnN0YXJ0KDQwLHkpOnkoKX19O3JldHVybiBjLl9fb3B0aW9ucz17YmxvY2tQb2ludGVyRXZlbnRzOm59LGN9bGV0IGlJPWllJiZhODtmdW5jdGlvbiBpeihlLHQ9e30pe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZXZlbnRzOm8sZGF0YVJlZjphLGVsZW1lbnRzOml9PWUse2VuYWJsZWQ6bD0hMCx2aXNpYmxlT25seTpzPSEwfT10LGM9eC51c2VSZWYoITEpLHU9YWMoKSxkPXgudXNlUmVmKCEwKTt4LnVzZUVmZmVjdCgoKT0+e2lmKCFsKXJldHVybjtsZXQgZT1hUChpLmRvbVJlZmVyZW5jZSk7ZnVuY3Rpb24gdCgpeyFuJiZhRChpLmRvbVJlZmVyZW5jZSkmJmkuZG9tUmVmZXJlbmNlPT09aW0oaWIoaS5kb21SZWZlcmVuY2UpKSYmKGMuY3VycmVudD0hMCl9ZnVuY3Rpb24gcigpe2QuY3VycmVudD0hMH1mdW5jdGlvbiBvKCl7ZC5jdXJyZW50PSExfXJldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsdCksaUkmJihlLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsciwhMCksZS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixvLCEwKSksKCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJibHVyXCIsdCksaUkmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsciwhMCksZS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixvLCEwKSl9fSxbaS5kb21SZWZlcmVuY2UsbixsXSkseC51c2VFZmZlY3QoKCk9PntpZihsKXJldHVybiBvLm9uKFwib3BlbmNoYW5nZVwiLGUpLCgpPT57by5vZmYoXCJvcGVuY2hhbmdlXCIsZSl9O2Z1bmN0aW9uIGUoe3JlYXNvbjplfSl7KFwicmVmZXJlbmNlLXByZXNzXCI9PT1lfHxcImVzY2FwZS1rZXlcIj09PWUpJiYoYy5jdXJyZW50PSEwKX19LFtvLGxdKTtsZXQgZj14LnVzZU1lbW8oKCk9Pih7b25Nb3VzZUxlYXZlKCl7Yy5jdXJyZW50PSExfSxvbkZvY3VzKGUpe2lmKGMuY3VycmVudClyZXR1cm47bGV0IHQ9aXkoZS5uYXRpdmVFdmVudCk7aWYocyYmYVQodCkpe2lmKGlJJiYhZS5yZWxhdGVkVGFyZ2V0KXtpZighZC5jdXJyZW50JiYhaUEodCkpcmV0dXJufWVsc2UgaWYoIWZ1bmN0aW9uKGUpe2lmKCFlfHxpdClyZXR1cm4hMDt0cnl7cmV0dXJuIGUubWF0Y2hlcyhcIjpmb2N1cy12aXNpYmxlXCIpfWNhdGNoKGUpe3JldHVybiEwfX0odCkpcmV0dXJufXIoITAsZS5uYXRpdmVFdmVudCxcImZvY3VzXCIpfSxvbkJsdXIoZSl7Yy5jdXJyZW50PSExO2xldCB0PWUucmVsYXRlZFRhcmdldCxuPWUubmF0aXZlRXZlbnQsbz1hVCh0KSYmdC5oYXNBdHRyaWJ1dGUoaUMoXCJmb2N1cy1ndWFyZFwiKSkmJlwib3V0c2lkZVwiPT09dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXR5cGVcIik7dS5zdGFydCgwLCgpPT57bGV0IGU9aW0oaS5kb21SZWZlcmVuY2U/aS5kb21SZWZlcmVuY2Uub3duZXJEb2N1bWVudDpkb2N1bWVudCk7KHR8fGUhPT1pLmRvbVJlZmVyZW5jZSkmJihpZyhhLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0Py5yZWZzLmZsb2F0aW5nLmN1cnJlbnQsZSl8fGlnKGkuZG9tUmVmZXJlbmNlLGUpfHxvfHxyKCExLG4sXCJmb2N1c1wiKSl9KX19KSxbYSxpLmRvbVJlZmVyZW5jZSxyLHMsdV0pO3JldHVybiB4LnVzZU1lbW8oKCk9Pmw/e3JlZmVyZW5jZTpmfTp7fSxbbCxmXSl9Z2xvYmFsVGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7bGV0IGlUPW5ldyBjbGFzc3tjYWxsYmFja3M9W107Y2FsbGJhY2tzQ291bnQ9MDtuZXh0SWQ9MTtzdGFydElkPTE7aXNTY2hlZHVsZWQ9ITE7dGljaz1lPT57dGhpcy5pc1NjaGVkdWxlZD0hMTtsZXQgdD10aGlzLmNhbGxiYWNrcyxuPXRoaXMuY2FsbGJhY2tzQ291bnQ7aWYodGhpcy5jYWxsYmFja3M9W10sdGhpcy5jYWxsYmFja3NDb3VudD0wLHRoaXMuc3RhcnRJZD10aGlzLm5leHRJZCxuPjApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz0xKXRbbl0/LihlKX07cmVxdWVzdChlKXtsZXQgdD10aGlzLm5leHRJZDtyZXR1cm4gdGhpcy5uZXh0SWQrPTEsdGhpcy5jYWxsYmFja3MucHVzaChlKSx0aGlzLmNhbGxiYWNrc0NvdW50Kz0xLHRoaXMuaXNTY2hlZHVsZWR8fChyZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy50aWNrKSx0aGlzLmlzU2NoZWR1bGVkPSEwKSx0fWNhbmNlbChlKXtsZXQgdD1lLXRoaXMuc3RhcnRJZDt0PDB8fHQ+PXRoaXMuY2FsbGJhY2tzLmxlbmd0aHx8KHRoaXMuY2FsbGJhY2tzW3RdPW51bGwsdGhpcy5jYWxsYmFja3NDb3VudC09MSl9fTtjbGFzcyBpRHtzdGF0aWMgY3JlYXRlKCl7cmV0dXJuIG5ldyBpRH1zdGF0aWMgcmVxdWVzdChlKXtyZXR1cm4gaVQucmVxdWVzdChlKX1zdGF0aWMgY2FuY2VsKGUpe3JldHVybiBpVC5jYW5jZWwoZSl9Y3VycmVudElkPW51bGw7cmVxdWVzdChlKXt0aGlzLmNhbmNlbCgpLHRoaXMuY3VycmVudElkPWlULnJlcXVlc3QoKCk9Pnt0aGlzLmN1cnJlbnRJZD1udWxsLGUoKX0pfWNhbmNlbD0oKT0+e251bGwhPT10aGlzLmN1cnJlbnRJZCYmKGlULmNhbmNlbCh0aGlzLmN1cnJlbnRJZCksdGhpcy5jdXJyZW50SWQ9bnVsbCl9O2Rpc3Bvc2VFZmZlY3Q9KCk9PnRoaXMuY2FuY2VsfWZ1bmN0aW9uIGlMKCl7bGV0IGU9YWEoaUQuY3JlYXRlKS5jdXJyZW50O3JldHVybiBhbChlLmRpc3Bvc2VFZmZlY3QpLGV9bGV0IGlOPXtzdHlsZTp7dHJhbnNpdGlvbjpcIm5vbmVcIn19LGlSPXt9LGlNPVtdLGlaPXtmYWxsYmFja0F4aXNTaWRlOlwibm9uZVwifSxpVT17ZmFsbGJhY2tBeGlzU2lkZTpcImVuZFwifSxpRj17aW50ZW50aW9uYWw6XCJvbkNsaWNrXCIsc2xvcHB5Olwib25Qb2ludGVyRG93blwifTtmdW5jdGlvbiBpcShlKXtyZXR1cm57ZXNjYXBlS2V5OlwiYm9vbGVhblwiPT10eXBlb2YgZT9lOmU/LmVzY2FwZUtleT8/ITEsb3V0c2lkZVByZXNzOlwiYm9vbGVhblwiPT10eXBlb2YgZT9lOmU/Lm91dHNpZGVQcmVzcz8/ITB9fWZ1bmN0aW9uIGlIKGUsdD17fSl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixlbGVtZW50czpvLGRhdGFSZWY6YX09ZSx7ZW5hYmxlZDppPSEwLGVzY2FwZUtleTpsPSEwLG91dHNpZGVQcmVzczpzPSEwLG91dHNpZGVQcmVzc0V2ZW50OmM9XCJzbG9wcHlcIixyZWZlcmVuY2VQcmVzczp1PSExLHJlZmVyZW5jZVByZXNzRXZlbnQ6ZD1cInNsb3BweVwiLGFuY2VzdG9yU2Nyb2xsOmY9ITEsYnViYmxlczpwLGNhcHR1cmU6aH09dCxtPWFrKCksZz1hZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzP3M6KCk9PiExKSx5PVwiZnVuY3Rpb25cIj09dHlwZW9mIHM/ZzpzLHY9eC51c2VSZWYoITEpLHtlc2NhcGVLZXk6YixvdXRzaWRlUHJlc3M6QX09aXEocCkse2VzY2FwZUtleTp3LG91dHNpZGVQcmVzczpDfT1pcShoKSxfPXgudXNlUmVmKG51bGwpLGs9YWMoKSxFPWFjKCksaj14LnVzZVJlZighMSksUz14LnVzZVJlZihcIlwiKSxPPWFmKGU9PntTLmN1cnJlbnQ9ZS5wb2ludGVyVHlwZX0pLEI9YWYoKCk9PntsZXQgZT1TLmN1cnJlbnQ7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGM/YzpjW1wicGVuXCIhPT1lJiZlP2U6XCJtb3VzZVwiXX0pLFA9YWYoZT0+e2lmKCFufHwhaXx8IWx8fFwiRXNjYXBlXCIhPT1lLmtleXx8ai5jdXJyZW50KXJldHVybjtsZXQgdD1hLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0Py5ub2RlSWQsbz1tP2lTKG0ubm9kZXNSZWYuY3VycmVudCx0KTpbXTtpZighYiYmKGUuc3RvcFByb3BhZ2F0aW9uKCksby5sZW5ndGg+MCkpe2xldCBlPSEwO2lmKG8uZm9yRWFjaCh0PT57dC5jb250ZXh0Py5vcGVuJiYhdC5jb250ZXh0LmRhdGFSZWYuY3VycmVudC5fX2VzY2FwZUtleUJ1YmJsZXMmJihlPSExKX0pLCFlKXJldHVybn1yKCExLFwibmF0aXZlRXZlbnRcImluIGU/ZS5uYXRpdmVFdmVudDplLFwiZXNjYXBlLWtleVwiKX0pLEk9YWYoZT0+e2xldCB0PUIoKTtyZXR1cm5cImludGVudGlvbmFsXCI9PT10JiZcImNsaWNrXCIhPT1lLnR5cGV8fFwic2xvcHB5XCI9PT10JiZcImNsaWNrXCI9PT1lLnR5cGV9KSx6PWFmKGU9PntsZXQgdD0oKT0+e1AoZSksaXkoZSk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdCl9O2l5KGUpPy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHQpfSksVD1hZihlPT57aWYoSShlKSlyZXR1cm47bGV0IHQ9YS5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZTthLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSExO2xldCBuPXYuY3VycmVudDtpZih2LmN1cnJlbnQ9ITEsXCJpbnRlbnRpb25hbFwiPT09QigpJiZufHx0fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB5JiYheShlKSlyZXR1cm47bGV0IGk9aXkoZSksbD1gWyR7aUMoXCJpbmVydFwiKX1dYCxzPWliKG8uZmxvYXRpbmcpLnF1ZXJ5U2VsZWN0b3JBbGwobCksYz1hVChpKT9pOm51bGw7Zm9yKDtjJiYhYVkoYyk7KXtsZXQgZT1hRyhjKTtpZihhWShlKXx8IWFUKGUpKWJyZWFrO2M9ZX1pZihzLmxlbmd0aCYmYVQoaSkmJiFpLm1hdGNoZXMoXCJodG1sLGJvZHlcIikmJiFpZyhpLG8uZmxvYXRpbmcpJiZBcnJheS5mcm9tKHMpLmV2ZXJ5KGU9PiFpZyhjLGUpKSlyZXR1cm47aWYoYUQoaSkpe2xldCB0PWFZKGkpLG49YUsoaSkscj0vYXV0b3xzY3JvbGwvLG89dHx8ci50ZXN0KG4ub3ZlcmZsb3dYKSxhPXR8fHIudGVzdChuLm92ZXJmbG93WSksbD1vJiZpLmNsaWVudFdpZHRoPjAmJmkuc2Nyb2xsV2lkdGg+aS5jbGllbnRXaWR0aCxzPWEmJmkuY2xpZW50SGVpZ2h0PjAmJmkuc2Nyb2xsSGVpZ2h0PmkuY2xpZW50SGVpZ2h0LGM9XCJydGxcIj09PW4uZGlyZWN0aW9uLHU9cyYmKGM/ZS5vZmZzZXRYPD1pLm9mZnNldFdpZHRoLWkuY2xpZW50V2lkdGg6ZS5vZmZzZXRYPmkuY2xpZW50V2lkdGgpLGQ9bCYmZS5vZmZzZXRZPmkuY2xpZW50SGVpZ2h0O2lmKHV8fGQpcmV0dXJufWxldCB1PWEuY3VycmVudC5mbG9hdGluZ0NvbnRleHQ/Lm5vZGVJZCxkPW0mJmlTKG0ubm9kZXNSZWYuY3VycmVudCx1KS5zb21lKHQ9Pml2KGUsdC5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZykpO2lmKGl2KGUsby5mbG9hdGluZyl8fGl2KGUsby5kb21SZWZlcmVuY2UpfHxkKXJldHVybjtsZXQgZj1tP2lTKG0ubm9kZXNSZWYuY3VycmVudCx1KTpbXTtpZihmLmxlbmd0aD4wKXtsZXQgZT0hMDtpZihmLmZvckVhY2godD0+e3QuY29udGV4dD8ub3BlbiYmIXQuY29udGV4dC5kYXRhUmVmLmN1cnJlbnQuX19vdXRzaWRlUHJlc3NCdWJibGVzJiYoZT0hMSl9KSwhZSlyZXR1cm59cighMSxlLFwib3V0c2lkZS1wcmVzc1wiKX0pLEQ9YWYoZT0+e2lmKCEoXCJzbG9wcHlcIiE9PUIoKXx8IW58fCFpfHxpdihlLG8uZmxvYXRpbmcpfHxpdihlLG8uZG9tUmVmZXJlbmNlKSkpe2lmKFwidG91Y2hcIj09PWUucG9pbnRlclR5cGUpe18uY3VycmVudD17c3RhcnRUaW1lOkRhdGUubm93KCksc3RhcnRYOmUuY2xpZW50WCxzdGFydFk6ZS5jbGllbnRZLGRpc21pc3NPblBvaW50ZXJVcDohMSxkaXNtaXNzT25Nb3VzZURvd246ITB9LGsuc3RhcnQoMWUzLCgpPT57Xy5jdXJyZW50JiYoXy5jdXJyZW50LmRpc21pc3NPblBvaW50ZXJVcD0hMSxfLmN1cnJlbnQuZGlzbWlzc09uTW91c2VEb3duPSExKX0pO3JldHVybn1UKGUpfX0pLEw9YWYoZT0+e2lmKEkoZSl8fChrLmNsZWFyKCksXCJtb3VzZWRvd25cIj09PWUudHlwZSYmXy5jdXJyZW50JiYhXy5jdXJyZW50LmRpc21pc3NPbk1vdXNlRG93bikpcmV0dXJuO2xldCB0PSgpPT57XCJwb2ludGVyZG93blwiPT09ZS50eXBlP0QoZSk6VChlKSxpeShlKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLnR5cGUsdCl9O2l5KGUpPy5hZGRFdmVudExpc3RlbmVyKGUudHlwZSx0KX0pLE49YWYoZT0+e2lmKFwic2xvcHB5XCIhPT1CKCl8fFwidG91Y2hcIiE9PWUucG9pbnRlclR5cGV8fCFfLmN1cnJlbnR8fGl2KGUsby5mbG9hdGluZyl8fGl2KGUsby5kb21SZWZlcmVuY2UpKXJldHVybjtsZXQgdD1NYXRoLmFicyhlLmNsaWVudFgtXy5jdXJyZW50LnN0YXJ0WCksbj1NYXRoLmFicyhlLmNsaWVudFktXy5jdXJyZW50LnN0YXJ0WSkscj1NYXRoLnNxcnQodCp0K24qbik7cj41JiYoXy5jdXJyZW50LmRpc21pc3NPblBvaW50ZXJVcD0hMCkscj4xMCYmKFQoZSksay5jbGVhcigpLF8uY3VycmVudD1udWxsKX0pLFI9YWYoZT0+e1wic2xvcHB5XCIhPT1CKCl8fFwidG91Y2hcIiE9PWUucG9pbnRlclR5cGV8fCFfLmN1cnJlbnR8fGl2KGUsby5mbG9hdGluZyl8fGl2KGUsby5kb21SZWZlcmVuY2UpfHwoXy5jdXJyZW50LmRpc21pc3NPblBvaW50ZXJVcCYmVChlKSxrLmNsZWFyKCksXy5jdXJyZW50PW51bGwpfSk7eC51c2VFZmZlY3QoKCk9PntpZighbnx8IWkpcmV0dXJuO2EuY3VycmVudC5fX2VzY2FwZUtleUJ1YmJsZXM9YixhLmN1cnJlbnQuX19vdXRzaWRlUHJlc3NCdWJibGVzPUE7bGV0IGU9bmV3IGFzO2Z1bmN0aW9uIHQoZSl7cighMSxlLFwiYW5jZXN0b3Itc2Nyb2xsXCIpfWZ1bmN0aW9uIHMoKXtlLmNsZWFyKCksai5jdXJyZW50PSEwfWZ1bmN0aW9uIGMoKXtlLnN0YXJ0KDUqISFhJCgpLCgpPT57ai5jdXJyZW50PSExfSl9bGV0IHU9aWIoby5mbG9hdGluZyk7dS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixPLCEwKSxsJiYodS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHc/ejpQLHcpLHUuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIixzKSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLGMpKSx5JiYodS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixDP0w6VCxDKSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLEM/TDpULEMpLHUuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsTixDKSx1LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIixSLEMpLHUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLEwsQykpO2xldCBkPVtdO3JldHVybiBmJiYoYVQoby5kb21SZWZlcmVuY2UpJiYoZD1hUShvLmRvbVJlZmVyZW5jZSkpLGFUKG8uZmxvYXRpbmcpJiYoZD1kLmNvbmNhdChhUShvLmZsb2F0aW5nKSkpLCFhVChvLnJlZmVyZW5jZSkmJm8ucmVmZXJlbmNlJiZvLnJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCYmKGQ9ZC5jb25jYXQoYVEoby5yZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpKSkpLChkPWQuZmlsdGVyKGU9PmUhPT11LmRlZmF1bHRWaWV3Py52aXN1YWxWaWV3cG9ydCkpLmZvckVhY2goZT0+e2UuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQse3Bhc3NpdmU6ITB9KX0pLCgpPT57dS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixPLCEwKSxsJiYodS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHc/ejpQLHcpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uc3RhcnRcIixzKSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLGMpKSx5JiYodS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixDP0w6VCxDKSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLEM/TDpULEMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsTixDKSx1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIixSLEMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLEwsQykpLGQuZm9yRWFjaChlPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdCl9KSxlLmNsZWFyKCl9fSxbYSxvLGwseSxjLG4scixmLGksYixBLFAsdyx6LFQsQyxMLEQsTixSLE9dKSx4LnVzZUVmZmVjdCgoKT0+e2EuY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITF9LFthLHldKTtsZXQgTT14LnVzZU1lbW8oKCk9Pih7b25LZXlEb3duOlAsLi4udSYme1tpRltkXV06ZT0+e3IoITEsZS5uYXRpdmVFdmVudCxcInJlZmVyZW5jZS1wcmVzc1wiKX0sLi4uXCJpbnRlbnRpb25hbFwiIT09ZCYme29uQ2xpY2soZSl7cighMSxlLm5hdGl2ZUV2ZW50LFwicmVmZXJlbmNlLXByZXNzXCIpfX19fSksW1Ascix1LGRdKSxaPWFmKGU9PntsZXQgdD1peShlLm5hdGl2ZUV2ZW50KTtpZyhvLmZsb2F0aW5nLHQpJiYodi5jdXJyZW50PSEwKX0pLFU9YWYoKCk9PnthLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSEwLEUuc3RhcnQoMCwoKT0+e2EuY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITF9KX0pLEY9eC51c2VNZW1vKCgpPT4oe29uS2V5RG93bjpQLG9uTW91c2VEb3duOlosb25Nb3VzZVVwOlosb25Qb2ludGVyRG93bkNhcHR1cmU6VSxvbk1vdXNlRG93bkNhcHR1cmU6VSxvbkNsaWNrQ2FwdHVyZTpVfSksW1AsWixVXSk7cmV0dXJuIHgudXNlTWVtbygoKT0+aT97cmVmZXJlbmNlOk0sZmxvYXRpbmc6Rn06e30sW2ksTSxGXSl9bGV0IGlWPW5ldyBNYXAoW1tcInNlbGVjdFwiLFwibGlzdGJveFwiXSxbXCJjb21ib2JveFwiLFwibGlzdGJveFwiXSxbXCJsYWJlbFwiLCExXV0pLGkkPVtcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwibGVmdFwiXSxpVz1NYXRoLm1pbixpWT1NYXRoLm1heCxpSz1NYXRoLnJvdW5kLGlYPU1hdGguZmxvb3IsaUc9ZT0+KHt4OmUseTplfSksaVE9e2xlZnQ6XCJyaWdodFwiLHJpZ2h0OlwibGVmdFwiLGJvdHRvbTpcInRvcFwiLHRvcDpcImJvdHRvbVwifSxpSj17c3RhcnQ6XCJlbmRcIixlbmQ6XCJzdGFydFwifTtmdW5jdGlvbiBpMChlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSh0KTplfWZ1bmN0aW9uIGkxKGUpe3JldHVybiBlLnNwbGl0KFwiLVwiKVswXX1mdW5jdGlvbiBpMihlKXtyZXR1cm4gZS5zcGxpdChcIi1cIilbMV19ZnVuY3Rpb24gaTQoZSl7cmV0dXJuXCJ4XCI9PT1lP1wieVwiOlwieFwifWZ1bmN0aW9uIGk1KGUpe3JldHVyblwieVwiPT09ZT9cImhlaWdodFwiOlwid2lkdGhcIn1sZXQgaTM9bmV3IFNldChbXCJ0b3BcIixcImJvdHRvbVwiXSk7ZnVuY3Rpb24gaTYoZSl7cmV0dXJuIGkzLmhhcyhpMShlKSk/XCJ5XCI6XCJ4XCJ9ZnVuY3Rpb24gaTkoZSl7cmV0dXJuIGUucmVwbGFjZSgvc3RhcnR8ZW5kL2csZT0+aUpbZV0pfWxldCBpOD1bXCJsZWZ0XCIsXCJyaWdodFwiXSxpNz1bXCJyaWdodFwiLFwibGVmdFwiXSxsZT1bXCJ0b3BcIixcImJvdHRvbVwiXSxsdD1bXCJib3R0b21cIixcInRvcFwiXTtmdW5jdGlvbiBsbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxlPT5pUVtlXSl9ZnVuY3Rpb24gbHIoZSl7cmV0dXJuXCJudW1iZXJcIiE9dHlwZW9mIGU/e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLmV9Ont0b3A6ZSxyaWdodDplLGJvdHRvbTplLGxlZnQ6ZX19ZnVuY3Rpb24gbG8oZSl7bGV0e3g6dCx5Om4sd2lkdGg6cixoZWlnaHQ6b309ZTtyZXR1cm57d2lkdGg6cixoZWlnaHQ6byx0b3A6bixsZWZ0OnQscmlnaHQ6dCtyLGJvdHRvbTpuK28seDp0LHk6bn19ZnVuY3Rpb24gbGEoZSx0LG4pe3JldHVybiBNYXRoLmZsb29yKGUvdCkhPT1ufWZ1bmN0aW9uIGxpKGUsdCl7cmV0dXJuIHQ8MHx8dD49ZS5jdXJyZW50Lmxlbmd0aH1mdW5jdGlvbiBsbChlLHQpe3JldHVybiBsYyhlLHtkaXNhYmxlZEluZGljZXM6dH0pfWZ1bmN0aW9uIGxzKGUsdCl7cmV0dXJuIGxjKGUse2RlY3JlbWVudDohMCxzdGFydGluZ0luZGV4OmUuY3VycmVudC5sZW5ndGgsZGlzYWJsZWRJbmRpY2VzOnR9KX1mdW5jdGlvbiBsYyhlLHtzdGFydGluZ0luZGV4OnQ9LTEsZGVjcmVtZW50Om49ITEsZGlzYWJsZWRJbmRpY2VzOnIsYW1vdW50Om89MX09e30pe2xldCBhPXQ7ZG8gYSs9bj8tbzpvO3doaWxlKGE+PTAmJmE8PWUuY3VycmVudC5sZW5ndGgtMSYmbHUoZSxhLHIpKTtyZXR1cm4gYX1mdW5jdGlvbiBsdShlLHQsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbilyZXR1cm4gbih0KTtpZihuKXJldHVybiBuLmluY2x1ZGVzKHQpO2xldCByPWUuY3VycmVudFt0XTtyZXR1cm4gbnVsbD09cnx8ci5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKXx8XCJ0cnVlXCI9PT1yLmdldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIil9bGV0IGxkPTA7ZnVuY3Rpb24gbGYoZSx0PXt9KXtsZXR7cHJldmVudFNjcm9sbDpuPSExLGNhbmNlbFByZXZpb3VzOnI9ITAsc3luYzpvPSExfT10O3ImJmNhbmNlbEFuaW1hdGlvbkZyYW1lKGxkKTtsZXQgYT0oKT0+ZT8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6bn0pO28/YSgpOmxkPXJlcXVlc3RBbmltYXRpb25GcmFtZShhKX1mdW5jdGlvbiBscChlLHQsbil7c3dpdGNoKGUpe2Nhc2VcInZlcnRpY2FsXCI6cmV0dXJuIHQ7Y2FzZVwiaG9yaXpvbnRhbFwiOnJldHVybiBuO2RlZmF1bHQ6cmV0dXJuIHR8fG59fWZ1bmN0aW9uIGxoKGUsdCl7cmV0dXJuIGxwKHQsZT09PWlwfHxlPT09aWgsZT09PWl1fHxlPT09aWQpfWZ1bmN0aW9uIGxtKGUsdCxuKXtyZXR1cm4gbHAodCxlPT09aWgsbj9lPT09aXU6ZT09PWlkKXx8XCJFbnRlclwiPT09ZXx8XCIgXCI9PT1lfHxcIlwiPT09ZX1mdW5jdGlvbiBsZyhlPVtdKXtsZXQgdD1lLm1hcChlPT5lPy5yZWZlcmVuY2UpLG49ZS5tYXAoZT0+ZT8uZmxvYXRpbmcpLHI9ZS5tYXAoZT0+ZT8uaXRlbSksbz14LnVzZUNhbGxiYWNrKHQ9Pmx5KHQsZSxcInJlZmVyZW5jZVwiKSx0KSxhPXgudXNlQ2FsbGJhY2sodD0+bHkodCxlLFwiZmxvYXRpbmdcIiksbiksaT14LnVzZUNhbGxiYWNrKHQ9Pmx5KHQsZSxcIml0ZW1cIikscik7cmV0dXJuIHgudXNlTWVtbygoKT0+KHtnZXRSZWZlcmVuY2VQcm9wczpvLGdldEZsb2F0aW5nUHJvcHM6YSxnZXRJdGVtUHJvcHM6aX0pLFtvLGEsaV0pfWZ1bmN0aW9uIGx5KGUsdCxuKXtsZXQgcj1uZXcgTWFwLG89XCJpdGVtXCI9PT1uLGE9e307Zm9yKGxldCB0IGluXCJmbG9hdGluZ1wiPT09biYmKGEudGFiSW5kZXg9LTEsYVtpbF09XCJcIiksZSlvJiZlJiYodD09PWlzfHx0PT09aWMpfHwoYVt0XT1lW3RdKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krPTEpe2xldCBsLHM9dFtpXT8uW25dOyhsPVwiZnVuY3Rpb25cIj09dHlwZW9mIHM/ZT9zKGUpOm51bGw6cykmJmx2KGEsbCxvLHIpfXJldHVybiBsdihhLGUsbyxyKSxhfWZ1bmN0aW9uIGx2KGUsdCxuLHIpe2ZvcihsZXQgbyBpbiB0KXtsZXQgYT10W29dO24mJihvPT09aXN8fG89PT1pYyl8fChvLnN0YXJ0c1dpdGgoXCJvblwiKT8oci5oYXMobyl8fHIuc2V0KG8sW10pLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJihyLmdldChvKT8ucHVzaChhKSxlW29dPSguLi5lKT0+ci5nZXQobyk/Lm1hcCh0PT50KC4uLmUpKS5maW5kKGU9PnZvaWQgMCE9PWUpKSk6ZVtvXT1hKX19bGV0IGxiPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIGxBKGUpe2xldCB0PXgudXNlQ29udGV4dChsYik7aWYodm9pZCAwPT09dCYmIWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBNZW51Um9vdENvbnRleHQgaXMgbWlzc2luZy4gTWVudSBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPE1lbnUuUm9vdD4uXCIpO3JldHVybiB0fWxldCBseD14LmNyZWF0ZUNvbnRleHQobnVsbCk7ZnVuY3Rpb24gbHcoZSx0PSExLG49ITEpe2xldFtyLG9dPXgudXNlU3RhdGUoZSYmdD9cImlkbGVcIjp2b2lkIDApLFthLGldPXgudXNlU3RhdGUoZSk7cmV0dXJuIGUmJiFhJiYoaSghMCksbyhcInN0YXJ0aW5nXCIpKSxlfHwhYXx8XCJlbmRpbmdcIj09PXJ8fG58fG8oXCJlbmRpbmdcIiksZXx8YXx8XCJlbmRpbmdcIiE9PXJ8fG8odm9pZCAwKSxheCgoKT0+e2lmKCFlJiZhJiZcImVuZGluZ1wiIT09ciYmbil7bGV0IGU9aUQucmVxdWVzdCgoKT0+e28oXCJlbmRpbmdcIil9KTtyZXR1cm4oKT0+e2lELmNhbmNlbChlKX19fSxbZSxhLHIsbl0pLGF4KCgpPT57aWYoIWV8fHQpcmV0dXJuO2xldCBuPWlELnJlcXVlc3QoKCk9PntlZi5mbHVzaFN5bmMoKCk9PntvKHZvaWQgMCl9KX0pO3JldHVybigpPT57aUQuY2FuY2VsKG4pfX0sW3QsZV0pLGF4KCgpPT57aWYoIWV8fCF0KXJldHVybjtlJiZhJiZcImlkbGVcIiE9PXImJm8oXCJzdGFydGluZ1wiKTtsZXQgbj1pRC5yZXF1ZXN0KCgpPT57byhcImlkbGVcIil9KTtyZXR1cm4oKT0+e2lELmNhbmNlbChuKX19LFt0LGUsYSxvLHJdKSx4LnVzZU1lbW8oKCk9Pih7bW91bnRlZDphLHNldE1vdW50ZWQ6aSx0cmFuc2l0aW9uU3RhdHVzOnJ9KSxbYSxyXSl9ZnVuY3Rpb24gbEMoZSl7bGV0e2VuYWJsZWQ6dD0hMCxvcGVuOm4scmVmOnIsb25Db21wbGV0ZTpvfT1lLGE9YTAobiksaT1hZihvKSxsPWZ1bmN0aW9uKGUsdD0hMSl7bGV0IG49aUwoKTtyZXR1cm4gYWYoKHIsbz1udWxsKT0+e2xldCBhO2lmKG4uY2FuY2VsKCksbnVsbCE9ZSl7aWYoXCJjdXJyZW50XCJpbiBlKXtpZihudWxsPT1lLmN1cnJlbnQpcmV0dXJuO2E9ZS5jdXJyZW50fWVsc2UgYT1lO1wiZnVuY3Rpb25cIiE9dHlwZW9mIGEuZ2V0QW5pbWF0aW9uc3x8Z2xvYmFsVGhpcy5CQVNFX1VJX0FOSU1BVElPTlNfRElTQUJMRUQ/cigpOm4ucmVxdWVzdCgoKT0+e2Z1bmN0aW9uIGUoKXthJiZQcm9taXNlLmFsbFNldHRsZWQoYS5nZXRBbmltYXRpb25zKCkubWFwKGU9PmUuZmluaXNoZWQpKS50aGVuKCgpPT57bnVsbCE9byYmby5hYm9ydGVkfHxlZi5mbHVzaFN5bmMocil9KX10P24ucmVxdWVzdChlKTplKCl9KX19KX0ocixuKTt4LnVzZUVmZmVjdCgoKT0+e3QmJmwoKCk9PntuPT09YS5jdXJyZW50JiZpKCl9KX0sW3QsbixpLGwsYV0pfWxldCBsXz14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBsayhlPSEwKXtsZXQgdD14LnVzZUNvbnRleHQobF8pO2lmKHZvaWQgMD09PXQmJiFlKXRocm93IEVycm9yKFwiQmFzZSBVSTogRGlyZWN0aW9uQ29udGV4dCBpcyBtaXNzaW5nLlwiKTtyZXR1cm4gdD8uZGlyZWN0aW9uPz9cImx0clwifWZ1bmN0aW9uIGxFKGUpe3JldHVybiBlPy5vd25lckRvY3VtZW50fHxkb2N1bWVudH1sZXQgbGo9KCk9Pnt9LGxTPXt9LGxPPXt9LGxCPVwiXCI7Y2xhc3MgbFB7bG9ja0NvdW50PTA7cmVzdG9yZT1udWxsO3RpbWVvdXRMb2NrPWFzLmNyZWF0ZSgpO3RpbWVvdXRVbmxvY2s9YXMuY3JlYXRlKCk7YWNxdWlyZShlKXtyZXR1cm4gdGhpcy5sb2NrQ291bnQrPTEsMT09PXRoaXMubG9ja0NvdW50JiZudWxsPT09dGhpcy5yZXN0b3JlJiZ0aGlzLnRpbWVvdXRMb2NrLnN0YXJ0KDAsKCk9PnRoaXMubG9jayhlKSksdGhpcy5yZWxlYXNlfXJlbGVhc2U9KCk9Pnt0aGlzLmxvY2tDb3VudC09MSwwPT09dGhpcy5sb2NrQ291bnQmJnRoaXMucmVzdG9yZSYmdGhpcy50aW1lb3V0VW5sb2NrLnN0YXJ0KDAsdGhpcy51bmxvY2spfTt1bmxvY2s9KCk9PnswPT09dGhpcy5sb2NrQ291bnQmJnRoaXMucmVzdG9yZSYmKHRoaXMucmVzdG9yZT8uKCksdGhpcy5yZXN0b3JlPW51bGwpfTtsb2NrKGUpe2lmKDA9PT10aGlzLmxvY2tDb3VudHx8bnVsbCE9PXRoaXMucmVzdG9yZSlyZXR1cm47bGV0IHQ9bEUoZSkuZG9jdW1lbnRFbGVtZW50LG49YVAodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5vdmVyZmxvd1k7aWYoXCJoaWRkZW5cIj09PW58fFwiY2xpcFwiPT09bil7dGhpcy5yZXN0b3JlPWxqO3JldHVybn1sZXQgcj1hOXx8IWZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTtsZXQgdD1sRShlKTtyZXR1cm4gYVAodCkuaW5uZXJXaWR0aC10LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aD4wfShlKTt0aGlzLnJlc3RvcmU9cj9mdW5jdGlvbihlKXtsZXQgdD1sRShlKS5kb2N1bWVudEVsZW1lbnQsbj10LnN0eWxlLm92ZXJmbG93O3JldHVybiB0LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCIsKCk9Pnt0LnN0eWxlLm92ZXJmbG93PW59fShlKTpmdW5jdGlvbihlKXtsZXQgdD1sRShlKSxuPXQuZG9jdW1lbnRFbGVtZW50LHI9dC5ib2R5LG89YVAobiksYT0wLGk9MCxsPWlELmNyZWF0ZSgpO2lmKGE2JiYoby52aXN1YWxWaWV3cG9ydD8uc2NhbGU/PzEpIT09MSlyZXR1cm4oKT0+e307ZnVuY3Rpb24gcygpe2xldCBlPW8uZ2V0Q29tcHV0ZWRTdHlsZShuKSx0PW8uZ2V0Q29tcHV0ZWRTdHlsZShyKTthPW4uc2Nyb2xsVG9wLGk9bi5zY3JvbGxMZWZ0LGxTPXtzY3JvbGxiYXJHdXR0ZXI6bi5zdHlsZS5zY3JvbGxiYXJHdXR0ZXIsb3ZlcmZsb3dZOm4uc3R5bGUub3ZlcmZsb3dZLG92ZXJmbG93WDpuLnN0eWxlLm92ZXJmbG93WH0sbEI9bi5zdHlsZS5zY3JvbGxCZWhhdmlvcixsTz17cG9zaXRpb246ci5zdHlsZS5wb3NpdGlvbixoZWlnaHQ6ci5zdHlsZS5oZWlnaHQsd2lkdGg6ci5zdHlsZS53aWR0aCxib3hTaXppbmc6ci5zdHlsZS5ib3hTaXppbmcsb3ZlcmZsb3dZOnIuc3R5bGUub3ZlcmZsb3dZLG92ZXJmbG93WDpyLnN0eWxlLm92ZXJmbG93WCxzY3JvbGxCZWhhdmlvcjpyLnN0eWxlLnNjcm9sbEJlaGF2aW9yfTtsZXQgbD1cInVuZGVmaW5lZFwiIT10eXBlb2YgQ1NTJiZDU1Muc3VwcG9ydHM/LihcInNjcm9sbGJhci1ndXR0ZXJcIixcInN0YWJsZVwiKSxzPW4uc2Nyb2xsSGVpZ2h0Pm4uY2xpZW50SGVpZ2h0LGM9bi5zY3JvbGxXaWR0aD5uLmNsaWVudFdpZHRoLHU9XCJzY3JvbGxcIj09PWUub3ZlcmZsb3dZfHxcInNjcm9sbFwiPT09dC5vdmVyZmxvd1ksZD1cInNjcm9sbFwiPT09ZS5vdmVyZmxvd1h8fFwic2Nyb2xsXCI9PT10Lm92ZXJmbG93WCxmPU1hdGgubWF4KDAsby5pbm5lcldpZHRoLW4uY2xpZW50V2lkdGgpLHA9TWF0aC5tYXgoMCxvLmlubmVySGVpZ2h0LW4uY2xpZW50SGVpZ2h0KSxoPXBhcnNlRmxvYXQodC5tYXJnaW5Ub3ApK3BhcnNlRmxvYXQodC5tYXJnaW5Cb3R0b20pLG09cGFyc2VGbG9hdCh0Lm1hcmdpbkxlZnQpK3BhcnNlRmxvYXQodC5tYXJnaW5SaWdodCk7T2JqZWN0LmFzc2lnbihuLnN0eWxlLHtzY3JvbGxiYXJHdXR0ZXI6XCJzdGFibGVcIixvdmVyZmxvd1k6IWwmJihzfHx1KT9cInNjcm9sbFwiOlwiaGlkZGVuXCIsb3ZlcmZsb3dYOiFsJiYoY3x8ZCk/XCJzY3JvbGxcIjpcImhpZGRlblwifSksT2JqZWN0LmFzc2lnbihyLnN0eWxlLHtwb3NpdGlvbjpcInJlbGF0aXZlXCIsaGVpZ2h0Omh8fHA/YGNhbGMoMTAwZHZoIC0gJHtoK3B9cHgpYDpcIjEwMGR2aFwiLHdpZHRoOm18fGY/YGNhbGMoMTAwdncgLSAke20rZn1weClgOlwiMTAwdndcIixib3hTaXppbmc6XCJib3JkZXItYm94XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixzY3JvbGxCZWhhdmlvcjpcInVuc2V0XCJ9KSxyLnNjcm9sbFRvcD1hLHIuc2Nyb2xsTGVmdD1pLG4uc2V0QXR0cmlidXRlKFwiZGF0YS1iYXNlLXVpLXNjcm9sbC1sb2NrZWRcIixcIlwiKSxuLnN0eWxlLnNjcm9sbEJlaGF2aW9yPVwidW5zZXRcIn1mdW5jdGlvbiBjKCl7T2JqZWN0LmFzc2lnbihuLnN0eWxlLGxTKSxPYmplY3QuYXNzaWduKHIuc3R5bGUsbE8pLG4uc2Nyb2xsVG9wPWEsbi5zY3JvbGxMZWZ0PWksbi5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLWJhc2UtdWktc2Nyb2xsLWxvY2tlZFwiKSxuLnN0eWxlLnNjcm9sbEJlaGF2aW9yPWxCfWZ1bmN0aW9uIHUoKXtjKCksbC5yZXF1ZXN0KHMpfXJldHVybiBzKCksby5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdSksKCk9PntsLmNhbmNlbCgpLGMoKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix1KX19KGUpfX1sZXQgbEk9bmV3IGxQO2Z1bmN0aW9uIGx6KGUpe2lmKGUpcmV0dXJuKHtcImZvY3VzLW91dFwiOlwiZm9jdXMtb3V0XCIsXCJlc2NhcGUta2V5XCI6XCJlc2NhcGUta2V5XCIsXCJvdXRzaWRlLXByZXNzXCI6XCJvdXRzaWRlLXByZXNzXCIsXCJsaXN0LW5hdmlnYXRpb25cIjpcImxpc3QtbmF2aWdhdGlvblwiLGNsaWNrOlwidHJpZ2dlci1wcmVzc1wiLGhvdmVyOlwidHJpZ2dlci1ob3ZlclwiLGZvY3VzOlwidHJpZ2dlci1mb2N1c1wiLFwicmVmZXJlbmNlLXByZXNzXCI6XCJ0cmlnZ2VyLXByZXNzXCIsXCJzYWZlLXBvbHlnb25cIjpcInRyaWdnZXItaG92ZXJcIixcImFuY2VzdG9yLXNjcm9sbFwiOnZvaWQgMH0pW2VdfWxldCBsVD14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBsRChlPSEwKXtsZXQgdD14LnVzZUNvbnRleHQobFQpO2lmKHZvaWQgMD09PXQmJiFlKXRocm93IEVycm9yKFwiQmFzZSBVSTogQ29udGV4dE1lbnVSb290Q29udGV4dCBpcyBtaXNzaW5nLiBDb250ZXh0TWVudSBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPENvbnRleHRNZW51LlJvb3Q+LlwiKTtyZXR1cm4gdH1sZXQgbEw9eC5jcmVhdGVDb250ZXh0KCExKTtmdW5jdGlvbiBsTihlLHQpe3JldHVybiBlJiYhdD9lOiFlJiZ0P3Q6ZXx8dD97Li4uZSwuLi50fTp2b2lkIDB9bGV0IGxSPXt9O2Z1bmN0aW9uIGxNKGUsdCxuLHIsbyl7bGV0IGE9ey4uLmxGKGUsbFIpfTtyZXR1cm4gdCYmKGE9bFooYSx0KSksbiYmKGE9bFooYSxuKSksciYmKGE9bFooYSxyKSksbyYmKGE9bFooYSxvKSksYX1mdW5jdGlvbiBsWihlLHQpe3JldHVybiBsVSh0KT90KGUpOmZ1bmN0aW9uKGUsdCl7aWYoIXQpcmV0dXJuIGU7Zm9yKGxldCBuIGluIHQpe2xldCByPXRbbl07c3dpdGNoKG4pe2Nhc2VcInN0eWxlXCI6ZVtuXT1sTihlLnN0eWxlLHIpO2JyZWFrO2Nhc2VcImNsYXNzTmFtZVwiOmVbbl09bEgoZS5jbGFzc05hbWUscik7YnJlYWs7ZGVmYXVsdDohZnVuY3Rpb24oZSx0KXtsZXQgbj1lLmNoYXJDb2RlQXQoMCkscj1lLmNoYXJDb2RlQXQoMSksbz1lLmNoYXJDb2RlQXQoMik7cmV0dXJuIDExMT09PW4mJjExMD09PXImJm8+PTY1JiZvPD05MCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHR8fHZvaWQgMD09PXQpfShuLHIpP2Vbbl09cjplW25dPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZT9uPT57dmFyIHI7aWYobnVsbCE9KHI9bikmJlwib2JqZWN0XCI9PXR5cGVvZiByJiZcIm5hdGl2ZUV2ZW50XCJpbiByKXtscShuKTtsZXQgcj10KG4pO3JldHVybiBuLmJhc2VVSUhhbmRsZXJQcmV2ZW50ZWR8fGU/LihuKSxyfWxldCBvPXQobik7cmV0dXJuIGU/LihuKSxvfTp0OmV9KGVbbl0scil9fXJldHVybiBlfShlLHQpfWZ1bmN0aW9uIGxVKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gbEYoZSx0KXtyZXR1cm4gbFUoZSk/ZSh0KTplPz9sUn1mdW5jdGlvbiBscShlKXtyZXR1cm4gZS5wcmV2ZW50QmFzZVVJSGFuZGxlcj0oKT0+e2UuYmFzZVVJSGFuZGxlclByZXZlbnRlZD0hMH0sZX1mdW5jdGlvbiBsSChlLHQpe3JldHVybiB0P2U/dCtcIiBcIitlOnQ6ZX1sZXQgbFY9W10sbCQ9e2N1cnJlbnQ6ITF9LGxXPWZ1bmN0aW9uKGUpe2xldCB0LG4se2NoaWxkcmVuOnIsb3BlbjpvLG9uT3BlbkNoYW5nZTphLG9uT3BlbkNoYW5nZUNvbXBsZXRlOmksZGVmYXVsdE9wZW46bD0hMSxkaXNhYmxlZDpzPSExLG1vZGFsOmMsbG9vcDp1PSEwLG9yaWVudGF0aW9uOmQ9XCJ2ZXJ0aWNhbFwiLGFjdGlvbnNSZWY6ZixvcGVuT25Ib3ZlcjpwLGRlbGF5Omg9MTAwLGNsb3NlRGVsYXk6bT0wLGNsb3NlUGFyZW50T25Fc2M6Zz0hMH09ZSxbeSx2XT14LnVzZVN0YXRlKG51bGwpLFtBLHddPXgudXNlU3RhdGUobnVsbCksW0MsX109eC51c2VTdGF0ZSgpLFtrLEVdPXgudXNlU3RhdGUoITApLFtqLFNdPXgudXNlU3RhdGUobnVsbCksW08sQl09eC51c2VTdGF0ZShudWxsKSxbUCxJXT14LnVzZVN0YXRlKCEwKSxbeixUXT14LnVzZVN0YXRlKCExKSxEPXgudXNlUmVmKG51bGwpLEw9eC51c2VSZWYobnVsbCksTj14LnVzZVJlZihudWxsKSxSPXgudXNlUmVmKFtdKSxNPXgudXNlUmVmKFtdKSxaPWFjKCksVT1sRCghMCksRj14LnVzZUNvbnRleHQobEwpO3tsZXQgZT1sQSghMCksbj1mdW5jdGlvbihlKXtsZXQgdD14LnVzZUNvbnRleHQobHgpO2lmKG51bGw9PT10JiYhZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IE1lbnViYXJDb250ZXh0IGlzIG1pc3NpbmcuIE1lbnViYXIgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxNZW51YmFyPi5cIik7cmV0dXJuIHR9KCEwKTt0PUYmJmU/e3R5cGU6XCJtZW51XCIsY29udGV4dDplfTpuP3t0eXBlOlwibWVudWJhclwiLGNvbnRleHQ6bn06VT97dHlwZTpcImNvbnRleHQtbWVudVwiLGNvbnRleHQ6VX06e3R5cGU6dm9pZCAwfX1sZXQgcT1hYigpO3ZvaWQgMCE9PXQudHlwZSYmKHE9dC5jb250ZXh0LnJvb3RJZCk7bGV0IEg9KHZvaWQgMD09PXQudHlwZXx8XCJjb250ZXh0LW1lbnVcIj09PXQudHlwZSkmJihjPz8hMCksVj1cIm1lbnVcIj09PXQudHlwZT90LmNvbnRleHQuYWxsb3dNb3VzZUVudGVyOnosJD1cIm1lbnVcIj09PXQudHlwZT90LmNvbnRleHQuc2V0QWxsb3dNb3VzZUVudGVyOlQsVz1wPz8oXCJtZW51XCI9PT10LnR5cGV8fFwibWVudWJhclwiPT09dC50eXBlJiZ0LmNvbnRleHQuaGFzU3VibWVudU9wZW4pLFtZLEtdPWFtKHtjb250cm9sbGVkOm8sZGVmYXVsdDpsLG5hbWU6XCJNZW51Um9vdFwiLHN0YXRlOlwib3BlblwifSksWD14LnVzZVJlZihcImNvbnRleHQtbWVudVwiIT09dC50eXBlKSxHPWFjKCk7eC51c2VFZmZlY3QoKCk9PntpZihZfHwoRC5jdXJyZW50PW51bGwpLFwiY29udGV4dC1tZW51XCI9PT10LnR5cGUpe2lmKCFZKXtHLmNsZWFyKCksWC5jdXJyZW50PSExO3JldHVybn1HLnN0YXJ0KDUwMCwoKT0+e1guY3VycmVudD0hMH0pfX0sW0csWSx0LnR5cGVdKTtsZXQgUT14LnVzZUNhbGxiYWNrKGU9PntOLmN1cnJlbnQ9ZSx3KGUpfSxbXSkse21vdW50ZWQ6SixzZXRNb3VudGVkOmVlLHRyYW5zaXRpb25TdGF0dXM6ZXR9PWx3KFkpLHtvcGVuTWV0aG9kOmVuLHRyaWdnZXJQcm9wczplcixyZXNldDplb309ZnVuY3Rpb24oZSl7bGV0W3Qsbl09eC51c2VTdGF0ZShudWxsKSxyPWFmKCh0LHIpPT57ZXx8bihyKX0pLG89YWYoKCk9PntuKG51bGwpfSkse29uQ2xpY2s6YSxvblBvaW50ZXJEb3duOml9PWZ1bmN0aW9uKGUpe2xldCB0PXgudXNlUmVmKFwiXCIpLG49eC51c2VDYWxsYmFjayhuPT57bi5kZWZhdWx0UHJldmVudGVkfHwodC5jdXJyZW50PW4ucG9pbnRlclR5cGUsZShuLG4ucG9pbnRlclR5cGUpKX0sW2VdKTtyZXR1cm57b25DbGljazp4LnVzZUNhbGxiYWNrKG49PntpZigwPT09bi5kZXRhaWwpcmV0dXJuIHZvaWQgZShuLFwia2V5Ym9hcmRcIik7XCJwb2ludGVyVHlwZVwiaW4gbiYmZShuLG4ucG9pbnRlclR5cGUpLGUobix0LmN1cnJlbnQpLHQuY3VycmVudD1cIlwifSxbZV0pLG9uUG9pbnRlckRvd246bn19KHIpO3JldHVybiB4LnVzZU1lbW8oKCk9Pih7b3Blbk1ldGhvZDp0LHJlc2V0Om8sdHJpZ2dlclByb3BzOntvbkNsaWNrOmEsb25Qb2ludGVyRG93bjppfX0pLFt0LG8sYSxpXSl9KFkpO3ZhciBlYT17ZW5hYmxlZDpZJiZIJiZcInRyaWdnZXItaG92ZXJcIiE9PU8mJlwidG91Y2hcIiE9PWVuLG1vdW50ZWQ6SixvcGVuOlkscmVmZXJlbmNlRWxlbWVudDpBfTtsZXR7ZW5hYmxlZDplaT0hMCxtb3VudGVkOmVsLG9wZW46ZXMscmVmZXJlbmNlRWxlbWVudDplYz1udWxsfT1lYTtheCgoKT0+e2lmKGVpJiZhNiYmZWwmJiFlcyl7bGV0IGU9bEUoZWMpLHQ9ZS5ib2R5LnN0eWxlLnVzZXJTZWxlY3Qsbj1lLmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdDtyZXR1cm4gZS5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9XCJub25lXCIsZS5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9XCJub25lXCIsKCk9PntlLmJvZHkuc3R5bGUudXNlclNlbGVjdD10LGUuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PW59fX0sW2VpLGVsLGVzLGVjXSksYXgoKCk9PntpZihlaSlyZXR1cm4gbEkuYWNxdWlyZShlYyl9LFtlaSxlY10pLFl8fGt8fEUoITApO2xldCBldT1hZigoKT0+e2VlKCExKSxJKCEwKSwkKCExKSxpPy4oITEpLGVvKCl9KTtsQyh7ZW5hYmxlZDohZixvcGVuOlkscmVmOkwsb25Db21wbGV0ZSgpe1l8fGV1KCl9fSk7bGV0IGVkPXgudXNlUmVmKCEwKSxlcD1hYygpLGVoPWFmKChlLG4scik9PntpZihZPT09ZXx8ITE9PT1lJiZuPy50eXBlPT09XCJjbGlja1wiJiZcInRvdWNoXCI9PT1uLnBvaW50ZXJUeXBlJiYhZWQuY3VycmVudClyZXR1cm47aWYoIWUmJm51bGwhPT1qKXtsZXQgZT1SLmN1cnJlbnRbal07cXVldWVNaWNyb3Rhc2soKCk9PntlPy5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIil9KX1lJiZcInRyaWdnZXItZm9jdXNcIj09PXI/KGVkLmN1cnJlbnQ9ITEsZXAuc3RhcnQoMzAwLCgpPT57ZWQuY3VycmVudD0hMH0pKTooZWQuY3VycmVudD0hMCxlcC5jbGVhcigpKTtsZXQgbz0oXCJ0cmlnZ2VyLXByZXNzXCI9PT1yfHxcIml0ZW0tcHJlc3NcIj09PXIpJiYwPT09bi5kZXRhaWwmJm4/LmlzVHJ1c3RlZCxpPSFlJiYoXCJlc2NhcGUta2V5XCI9PT1yfHxudWxsPT1yKTtmdW5jdGlvbiBsKCl7YT8uKGUsbixyKSxLKGUpLEIocj8/bnVsbCksRC5jdXJyZW50PW4/P251bGx9XCJ0cmlnZ2VyLWhvdmVyXCI9PT1yPyhJKCEwKSxaLnN0YXJ0KDUwMCwoKT0+e0koITEpfSksZWYuZmx1c2hTeW5jKGwpKTpsKCksXCJtZW51YmFyXCI9PT10LnR5cGUmJihcInRyaWdnZXItZm9jdXNcIj09PXJ8fFwiZm9jdXMtb3V0XCI9PT1yfHxcInRyaWdnZXItaG92ZXJcIj09PXJ8fFwibGlzdC1uYXZpZ2F0aW9uXCI9PT1yfHxcInNpYmxpbmctb3BlblwiPT09cik/XyhcImdyb3VwXCIpOm98fGk/XyhvP1wiY2xpY2tcIjpcImRpc21pc3NcIik6Xyh2b2lkIDApfSk7eC51c2VJbXBlcmF0aXZlSGFuZGxlKGYsKCk9Pih7dW5tb3VudDpldX0pLFtldV0pLFwiY29udGV4dC1tZW51XCI9PT10LnR5cGUmJihuPXQuY29udGV4dCkseC51c2VJbXBlcmF0aXZlSGFuZGxlKG4/LnBvc2l0aW9uZXJSZWYsKCk9PkEsW0FdKSx4LnVzZUltcGVyYXRpdmVIYW5kbGUobj8uYWN0aW9uc1JlZiwoKT0+KHtzZXRPcGVuOmVofSksW2VoXSkseC51c2VFZmZlY3QoKCk9PntZfHxaLmNsZWFyKCl9LFtaLFldKTtsZXQgZW09YVMoe2VsZW1lbnRzOntyZWZlcmVuY2U6eSxmbG9hdGluZzpBfSxvcGVuOlksb25PcGVuQ2hhbmdlKGUsdCxuKXtlaChlLHQsbHoobikpfX0pLGVnPWlqKGVtLHtlbmFibGVkOmsmJlcmJiFzJiZcImNvbnRleHQtbWVudVwiIT09dC50eXBlJiYoXCJtZW51YmFyXCIhPT10LnR5cGV8fHQuY29udGV4dC5oYXNTdWJtZW51T3BlbiYmIVkpLGhhbmRsZUNsb3NlOmlQKHtibG9ja1BvaW50ZXJFdmVudHM6ITB9KSxtb3VzZU9ubHk6ITAsbW92ZTpcIm1lbnVcIj09PXQudHlwZSxyZXN0TXM6dm9pZCAwPT09dC50eXBlfHxcIm1lbnVcIj09PXQudHlwZSYmVj9oOnZvaWQgMCxkZWxheTpcIm1lbnVcIj09PXQudHlwZT97b3BlbjpWP2g6MWUxMCxjbG9zZTptfTp7Y2xvc2U6bX19KSxleT1peihlbSx7ZW5hYmxlZDohcyYmIVkmJlwibWVudWJhclwiPT09dC50eXBlJiZ0LmNvbnRleHQuaGFzU3VibWVudU9wZW4mJiFVfSksZXY9ZnVuY3Rpb24oZSx0PXt9KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGRhdGFSZWY6b309ZSx7ZW5hYmxlZDphPSEwLGV2ZW50Omk9XCJjbGlja1wiLHRvZ2dsZTpsPSEwLGlnbm9yZU1vdXNlOnM9ITEsc3RpY2tJZk9wZW46Yz0hMH09dCx1PXgudXNlUmVmKHZvaWQgMCksZD1pTCgpLGY9eC51c2VNZW1vKCgpPT4oe29uUG9pbnRlckRvd24oZSl7dS5jdXJyZW50PWUucG9pbnRlclR5cGV9LG9uTW91c2VEb3duKGUpe2xldCB0PXUuY3VycmVudCxhPWUubmF0aXZlRXZlbnQ7aWYoMCE9PWUuYnV0dG9ufHxcImNsaWNrXCI9PT1pfHxpaSh0LCEwKSYmcylyZXR1cm47bGV0IGY9by5jdXJyZW50Lm9wZW5FdmVudCxwPWY/LnR5cGUsaD0hKG4mJmwmJighZnx8IWN8fFwiY2xpY2tcIj09PXB8fFwibW91c2Vkb3duXCI9PT1wKSk7ZC5yZXF1ZXN0KCgpPT57cihoLGEsXCJjbGlja1wiKX0pfSxvbkNsaWNrKGUpe2xldCB0PXUuY3VycmVudDtpZihcIm1vdXNlZG93blwiPT09aSYmdCl7dS5jdXJyZW50PXZvaWQgMDtyZXR1cm59aWYoaWkodCwhMCkmJnMpcmV0dXJuO2xldCBhPW8uY3VycmVudC5vcGVuRXZlbnQsZD1hPy50eXBlO3IoIShuJiZsJiYoIWF8fCFjfHxcImNsaWNrXCI9PT1kfHxcIm1vdXNlZG93blwiPT09ZHx8XCJrZXlkb3duXCI9PT1kfHxcImtleXVwXCI9PT1kKSksZS5uYXRpdmVFdmVudCxcImNsaWNrXCIpfSxvbktleURvd24oKXt1LmN1cnJlbnQ9dm9pZCAwfX0pLFtvLGkscyxyLG4sYyxsLGRdKTtyZXR1cm4geC51c2VNZW1vKCgpPT5hP3tyZWZlcmVuY2U6Zn06aVIsW2EsZl0pfShlbSx7ZW5hYmxlZDohcyYmXCJjb250ZXh0LW1lbnVcIiE9PXQudHlwZSxldmVudDpZJiZcIm1lbnViYXJcIj09PXQudHlwZT9cImNsaWNrXCI6XCJtb3VzZWRvd25cIix0b2dnbGU6IVd8fFwibWVudVwiIT09dC50eXBlLGlnbm9yZU1vdXNlOlcmJlwibWVudVwiPT09dC50eXBlLHN0aWNrSWZPcGVuOnZvaWQgMD09PXQudHlwZSYmUH0pLGViPWlIKGVtLHtlbmFibGVkOiFzLGJ1YmJsZXM6ZyYmXCJtZW51XCI9PT10LnR5cGUsb3V0c2lkZVByZXNzOigpPT5cImNvbnRleHQtbWVudVwiIT09dC50eXBlfHxELmN1cnJlbnQ/LnR5cGU9PT1cImNvbnRleHRtZW51XCJ8fFguY3VycmVudH0pLGVBPWZ1bmN0aW9uKGUsdD17fSl7bGV0e29wZW46bixlbGVtZW50czpyLGZsb2F0aW5nSWQ6b309ZSx7ZW5hYmxlZDphPSEwLHJvbGU6aT1cImRpYWxvZ1wifT10LGw9YWIoKSxzPXIuZG9tUmVmZXJlbmNlPy5pZHx8bCxjPXgudXNlTWVtbygoKT0+aXcoci5mbG9hdGluZyk/LmlkfHxvLFtyLmZsb2F0aW5nLG9dKSx1PWlWLmdldChpKT8/aSxkPW51bGwhPWFfKCksZj14LnVzZU1lbW8oKCk9PlwidG9vbHRpcFwiPT09dXx8XCJsYWJlbFwiPT09aT97W2BhcmlhLSR7XCJsYWJlbFwiPT09aT9cImxhYmVsbGVkYnlcIjpcImRlc2NyaWJlZGJ5XCJ9YF06bj9jOnZvaWQgMH06e1wiYXJpYS1leHBhbmRlZFwiOm4/XCJ0cnVlXCI6XCJmYWxzZVwiLFwiYXJpYS1oYXNwb3B1cFwiOlwiYWxlcnRkaWFsb2dcIj09PXU/XCJkaWFsb2dcIjp1LFwiYXJpYS1jb250cm9sc1wiOm4/Yzp2b2lkIDAsLi4uXCJsaXN0Ym94XCI9PT11JiZ7cm9sZTpcImNvbWJvYm94XCJ9LC4uLlwibWVudVwiPT09dSYme2lkOnN9LC4uLlwibWVudVwiPT09dSYmZCYme3JvbGU6XCJtZW51aXRlbVwifSwuLi5cInNlbGVjdFwiPT09aSYme1wiYXJpYS1hdXRvY29tcGxldGVcIjpcIm5vbmVcIn0sLi4uXCJjb21ib2JveFwiPT09aSYme1wiYXJpYS1hdXRvY29tcGxldGVcIjpcImxpc3RcIn19LFt1LGMsZCxuLHMsaV0pLHA9eC51c2VNZW1vKCgpPT57bGV0IGU9e2lkOmMsLi4udSYme3JvbGU6dX19O3JldHVyblwidG9vbHRpcFwiPT09dXx8XCJsYWJlbFwiPT09aT9lOnsuLi5lLC4uLlwibWVudVwiPT09dSYme1wiYXJpYS1sYWJlbGxlZGJ5XCI6c319fSxbdSxjLHMsaV0pLGg9eC51c2VDYWxsYmFjaygoe2FjdGl2ZTplLHNlbGVjdGVkOnR9KT0+e2xldCBuPXtyb2xlOlwib3B0aW9uXCIsLi4uZSYme2lkOmAke2N9LWZ1aS1vcHRpb25gfX07c3dpdGNoKGkpe2Nhc2VcInNlbGVjdFwiOmNhc2VcImNvbWJvYm94XCI6cmV0dXJuey4uLm4sXCJhcmlhLXNlbGVjdGVkXCI6dH19cmV0dXJue319LFtjLGldKTtyZXR1cm4geC51c2VNZW1vKCgpPT5hP3tyZWZlcmVuY2U6ZixmbG9hdGluZzpwLGl0ZW06aH06e30sW2EsZixwLGhdKX0oZW0se3JvbGU6XCJtZW51XCJ9KSxleD1saygpLGV3PWZ1bmN0aW9uKGUsdCl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixlbGVtZW50czpvLGZsb2F0aW5nSWQ6YX09ZSx7bGlzdFJlZjppLGFjdGl2ZUluZGV4Omwsb25OYXZpZ2F0ZTpzPSgpPT57fSxlbmFibGVkOmM9ITAsc2VsZWN0ZWRJbmRleDp1PW51bGwsYWxsb3dFc2NhcGU6ZD0hMSxsb29wOmY9ITEsbmVzdGVkOnA9ITEscnRsOmg9ITEsdmlydHVhbDptPSExLGZvY3VzSXRlbU9uT3BlbjpnPVwiYXV0b1wiLGZvY3VzSXRlbU9uSG92ZXI6eT0hMCxvcGVuT25BcnJvd0tleURvd246dj0hMCxkaXNhYmxlZEluZGljZXM6YixvcmllbnRhdGlvbjpBPVwidmVydGljYWxcIixwYXJlbnRPcmllbnRhdGlvbjp3LGNvbHM6Qz0xLHNjcm9sbEl0ZW1JbnRvVmlldzpfPSEwLHZpcnR1YWxJdGVtUmVmOmssaXRlbVNpemVzOkUsZGVuc2U6aj0hMX09dCxTPWEwKGl3KG8uZmxvYXRpbmcpKSxPPWFfKCksQj1haygpO2F4KCgpPT57ZS5kYXRhUmVmLmN1cnJlbnQub3JpZW50YXRpb249QX0sW2UsQV0pO2xldCBQPWl4KG8uZG9tUmVmZXJlbmNlKSxJPXgudXNlUmVmKGcpLHo9eC51c2VSZWYodT8/LTEpLFQ9eC51c2VSZWYobnVsbCksRD14LnVzZVJlZighMCksTD1hZigoKT0+e3MoLTE9PT16LmN1cnJlbnQ/bnVsbDp6LmN1cnJlbnQpfSksTj14LnVzZVJlZihMKSxSPXgudXNlUmVmKCEhby5mbG9hdGluZyksTT14LnVzZVJlZihuKSxaPXgudXNlUmVmKCExKSxVPXgudXNlUmVmKCExKSxGPWEwKGIpLHE9YTAobiksSD1hMChfKSxWPWEwKHUpLFskLFddPXgudXNlU3RhdGUoKSxZPWFmKCgpPT57ZnVuY3Rpb24gZShlKXttPyhlLmlkPy5lbmRzV2l0aChcIi1mdWktb3B0aW9uXCIpJiYoZS5pZD1gJHthfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnNsaWNlKDIsMTApfWApLFcoZS5pZCksQj8uZXZlbnRzLmVtaXQoXCJ2aXJ0dWFsZm9jdXNcIixlKSxrJiYoay5jdXJyZW50PWUpKTpsZihlLHtzeW5jOlouY3VycmVudCxwcmV2ZW50U2Nyb2xsOiEwfSl9bGV0IHQ9aS5jdXJyZW50W3ouY3VycmVudF0sbj1VLmN1cnJlbnQ7dCYmZSh0KSwoWi5jdXJyZW50P2U9PmUoKTpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpKCgpPT57bGV0IHI9aS5jdXJyZW50W3ouY3VycmVudF18fHQ7aWYoIXIpcmV0dXJuO3R8fGUocik7bGV0IG89SC5jdXJyZW50O28mJlgmJihufHwhRC5jdXJyZW50KSYmci5zY3JvbGxJbnRvVmlldz8uKFwiYm9vbGVhblwiPT10eXBlb2Ygbz97YmxvY2s6XCJuZWFyZXN0XCIsaW5saW5lOlwibmVhcmVzdFwifTpvKX0pfSk7YXgoKCk9PntjJiYobiYmby5mbG9hdGluZz9JLmN1cnJlbnQmJm51bGwhPXUmJihVLmN1cnJlbnQ9ITAsei5jdXJyZW50PXUsTCgpKTpSLmN1cnJlbnQmJih6LmN1cnJlbnQ9LTEsTi5jdXJyZW50KCkpKX0sW2MsbixvLmZsb2F0aW5nLHUsTF0pLGF4KCgpPT57aWYoYyYmbiYmby5mbG9hdGluZylpZihudWxsPT1sKXtpZihaLmN1cnJlbnQ9ITEsbnVsbCE9Vi5jdXJyZW50KXJldHVybjtpZihSLmN1cnJlbnQmJih6LmN1cnJlbnQ9LTEsWSgpKSwoIU0uY3VycmVudHx8IVIuY3VycmVudCkmJkkuY3VycmVudCYmKG51bGwhPVQuY3VycmVudHx8ITA9PT1JLmN1cnJlbnQmJm51bGw9PVQuY3VycmVudCkpe2xldCBlPTAsdD0oKT0+e251bGw9PWkuY3VycmVudFswXT8oZTwyJiYoZT9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6cXVldWVNaWNyb3Rhc2spKHQpLGUrPTEpOih6LmN1cnJlbnQ9bnVsbD09VC5jdXJyZW50fHxsbShULmN1cnJlbnQsQSxoKXx8cD9sbChpLEYuY3VycmVudCk6bHMoaSxGLmN1cnJlbnQpLFQuY3VycmVudD1udWxsLEwoKSl9O3QoKX19ZWxzZSBsaShpLGwpfHwoei5jdXJyZW50PWwsWSgpLFUuY3VycmVudD0hMSl9LFtjLG4sby5mbG9hdGluZyxsLFYscCxpLEEsaCxMLFksRl0pLGF4KCgpPT57aWYoIWN8fG8uZmxvYXRpbmd8fCFCfHxtfHwhUi5jdXJyZW50KXJldHVybjtsZXQgZT1CLm5vZGVzUmVmLmN1cnJlbnQsdD1lLmZpbmQoZT0+ZS5pZD09PU8pPy5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZyxuPWltKGliKG8uZmxvYXRpbmcpKSxyPWUuc29tZShlPT5lLmNvbnRleHQmJmlnKGUuY29udGV4dC5lbGVtZW50cy5mbG9hdGluZyxuKSk7dCYmIXImJkQuY3VycmVudCYmdC5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfSxbYyxvLmZsb2F0aW5nLEIsTyxtXSksYXgoKCk9PntOLmN1cnJlbnQ9TCxNLmN1cnJlbnQ9bixSLmN1cnJlbnQ9ISFvLmZsb2F0aW5nfSksYXgoKCk9PntufHwoVC5jdXJyZW50PW51bGwsSS5jdXJyZW50PWcpfSxbbixnXSk7bGV0IEs9bnVsbCE9bCxYPXgudXNlTWVtbygoKT0+e2Z1bmN0aW9uIGUoZSl7aWYoIXEuY3VycmVudClyZXR1cm47bGV0IHQ9aS5jdXJyZW50LmluZGV4T2YoZSk7LTEhPT10JiZ6LmN1cnJlbnQhPT10JiYoei5jdXJyZW50PXQsTCgpKX1yZXR1cm57b25Gb2N1cyh7Y3VycmVudFRhcmdldDp0fSl7Wi5jdXJyZW50PSEwLGUodCl9LG9uQ2xpY2s6KHtjdXJyZW50VGFyZ2V0OmV9KT0+ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLG9uTW91c2VNb3ZlKHtjdXJyZW50VGFyZ2V0OnR9KXtaLmN1cnJlbnQ9ITAsVS5jdXJyZW50PSExLHkmJmUodCl9LG9uUG9pbnRlckxlYXZlKHtwb2ludGVyVHlwZTplfSl7RC5jdXJyZW50JiZcInRvdWNoXCIhPT1lJiYoWi5jdXJyZW50PSEwLHkmJih6LmN1cnJlbnQ9LTEsTCgpLG18fFMuY3VycmVudD8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSkpfX19LFtxLFMseSxpLEwsbV0pLEc9eC51c2VDYWxsYmFjaygoKT0+dz8/Qj8ubm9kZXNSZWYuY3VycmVudC5maW5kKGU9PmUuaWQ9PT1PKT8uY29udGV4dD8uZGF0YVJlZj8uY3VycmVudC5vcmllbnRhdGlvbixbTyxCLHddKSxRPWFmKGU9Pnt2YXIgdCxhLGwscyxjO2lmKEQuY3VycmVudD0hMSxaLmN1cnJlbnQ9ITAsMjI5PT09ZS53aGljaHx8IXEuY3VycmVudCYmZS5jdXJyZW50VGFyZ2V0PT09Uy5jdXJyZW50KXJldHVybjtpZihwJiYodD1lLmtleSxhPUEsbD1oLHM9QyxcImJvdGhcIj09PWF8fFwiaG9yaXpvbnRhbFwiPT09YSYmcyYmcz4xP1wiRXNjYXBlXCI9PT10OmxwKGEsbD90PT09aWQ6dD09PWl1LHQ9PT1pcCkpKXtsaChlLmtleSxHKCkpfHxpcihlKSxyKCExLGUubmF0aXZlRXZlbnQsXCJsaXN0LW5hdmlnYXRpb25cIiksYUQoby5kb21SZWZlcmVuY2UpJiYobT9CPy5ldmVudHMuZW1pdChcInZpcnR1YWxmb2N1c1wiLG8uZG9tUmVmZXJlbmNlKTpvLmRvbVJlZmVyZW5jZS5mb2N1cygpKTtyZXR1cm59bGV0IHU9ei5jdXJyZW50LGc9bGwoaSxiKSx5PWxzKGksYik7aWYoUHx8KFwiSG9tZVwiPT09ZS5rZXkmJihpcihlKSx6LmN1cnJlbnQ9ZyxMKCkpLFwiRW5kXCI9PT1lLmtleSYmKGlyKGUpLHouY3VycmVudD15LEwoKSkpLEM+MSl7bGV0IHQ9RXx8QXJyYXkuZnJvbSh7bGVuZ3RoOmkuY3VycmVudC5sZW5ndGh9LCgpPT4oe3dpZHRoOjEsaGVpZ2h0OjF9KSksbj1mdW5jdGlvbihlLHQsbil7bGV0IHI9W10sbz0wO3JldHVybiBlLmZvckVhY2goKHt3aWR0aDplLGhlaWdodDphfSxpKT0+e2xldCBsPSExO2ZvcihuJiYobz0wKTshbDspe2xldCBuPVtdO2ZvcihsZXQgcj0wO3I8ZTtyKz0xKWZvcihsZXQgZT0wO2U8YTtlKz0xKW4ucHVzaChvK3IrZSp0KTtvJXQrZTw9dCYmbi5ldmVyeShlPT5udWxsPT1yW2VdKT8obi5mb3JFYWNoKGU9PntyW2VdPWl9KSxsPSEwKTpvKz0xfX0pLFsuLi5yXX0odCxDLGopLHI9bi5maW5kSW5kZXgoZT0+bnVsbCE9ZSYmIWx1KGksZSxiKSksbz1uLnJlZHVjZSgoZSx0LG4pPT5udWxsPT10fHxsdShpLHQsYik/ZTpuLC0xKSxhPW5bZnVuY3Rpb24oZSx7ZXZlbnQ6dCxvcmllbnRhdGlvbjpuLGxvb3A6cixydGw6byxjb2xzOmEsZGlzYWJsZWRJbmRpY2VzOmksbWluSW5kZXg6bCxtYXhJbmRleDpzLHByZXZJbmRleDpjLHN0b3BFdmVudDp1PSExfSl7bGV0IGQ9YztpZih0LmtleT09PWlwKXtpZih1JiZpcih0KSwtMT09PWMpZD1zO2Vsc2UgaWYoZD1sYyhlLHtzdGFydGluZ0luZGV4OmQsYW1vdW50OmEsZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczppfSksciYmKGMtYTxsfHxkPDApKXtsZXQgZT1jJWEsdD1zJWEsbj1zLSh0LWUpO2Q9dD09PWU/czp0PmU/bjpuLWF9bGkoZSxkKSYmKGQ9Yyl9aWYodC5rZXk9PT1paCYmKHUmJmlyKHQpLC0xPT09Yz9kPWw6KGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjLGFtb3VudDphLGRpc2FibGVkSW5kaWNlczppfSksciYmYythPnMmJihkPWxjKGUse3N0YXJ0aW5nSW5kZXg6YyVhLWEsYW1vdW50OmEsZGlzYWJsZWRJbmRpY2VzOml9KSkpLGxpKGUsZCkmJihkPWMpKSxcImJvdGhcIj09PW4pe2xldCBuPWlYKGMvYSk7dC5rZXk9PT0obz9pdTppZCkmJih1JiZpcih0KSxjJWEhPWEtMT8oZD1sYyhlLHtzdGFydGluZ0luZGV4OmMsZGlzYWJsZWRJbmRpY2VzOml9KSxyJiZsYShkLGEsbikmJihkPWxjKGUse3N0YXJ0aW5nSW5kZXg6Yy1jJWEtMSxkaXNhYmxlZEluZGljZXM6aX0pKSk6ciYmKGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjLWMlYS0xLGRpc2FibGVkSW5kaWNlczppfSkpLGxhKGQsYSxuKSYmKGQ9YykpLHQua2V5PT09KG8/aWQ6aXUpJiYodSYmaXIodCksYyVhIT0wPyhkPWxjKGUse3N0YXJ0aW5nSW5kZXg6YyxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOml9KSxyJiZsYShkLGEsbikmJihkPWxjKGUse3N0YXJ0aW5nSW5kZXg6YysoYS1jJWEpLGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6aX0pKSk6ciYmKGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjKyhhLWMlYSksZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczppfSkpLGxhKGQsYSxuKSYmKGQ9YykpO2xldCBsPWlYKHMvYSk9PT1uO2xpKGUsZCkmJihkPXImJmw/dC5rZXk9PT0obz9pZDppdSk/czpsYyhlLHtzdGFydGluZ0luZGV4OmMtYyVhLTEsZGlzYWJsZWRJbmRpY2VzOml9KTpjKX1yZXR1cm4gZH0oe2N1cnJlbnQ6bi5tYXAoZT0+bnVsbCE9ZT9pLmN1cnJlbnRbZV06bnVsbCl9LHtldmVudDplLG9yaWVudGF0aW9uOkEsbG9vcDpmLHJ0bDpoLGNvbHM6QyxkaXNhYmxlZEluZGljZXM6KGM9Wy4uLihcImZ1bmN0aW9uXCIhPXR5cGVvZiBiP2I6bnVsbCl8fGkuY3VycmVudC5tYXAoKGUsdCk9Pmx1KGksdCxiKT90OnZvaWQgMCksdm9pZCAwXSxuLmZsYXRNYXAoKGUsdCk9PmMuaW5jbHVkZXMoZSk/W3RdOltdKSksbWluSW5kZXg6cixtYXhJbmRleDpvLHByZXZJbmRleDpmdW5jdGlvbihlLHQsbixyLG8pe2lmKC0xPT09ZSlyZXR1cm4gLTE7bGV0IGE9bi5pbmRleE9mKGUpLGk9dFtlXTtzd2l0Y2gobyl7Y2FzZVwidGxcIjpyZXR1cm4gYTtjYXNlXCJ0clwiOmlmKCFpKXJldHVybiBhO3JldHVybiBhK2kud2lkdGgtMTtjYXNlXCJibFwiOmlmKCFpKXJldHVybiBhO3JldHVybiBhKyhpLmhlaWdodC0xKSpyO2Nhc2VcImJyXCI6cmV0dXJuIG4ubGFzdEluZGV4T2YoZSk7ZGVmYXVsdDpyZXR1cm4gLTF9fSh6LmN1cnJlbnQ+eT9nOnouY3VycmVudCx0LG4sQyxlLmtleT09PWloP1wiYmxcIjplLmtleT09PShoP2l1OmlkKT9cInRyXCI6XCJ0bFwiKSxzdG9wRXZlbnQ6ITB9KV07aWYobnVsbCE9YSYmKHouY3VycmVudD1hLEwoKSksXCJib3RoXCI9PT1BKXJldHVybn1pZihsaChlLmtleSxBKSl7aWYoaXIoZSksbiYmIW0mJmltKGUuY3VycmVudFRhcmdldC5vd25lckRvY3VtZW50KT09PWUuY3VycmVudFRhcmdldCl7ei5jdXJyZW50PWxtKGUua2V5LEEsaCk/Zzp5LEwoKTtyZXR1cm59bG0oZS5rZXksQSxoKT9mP3ouY3VycmVudD11Pj15P2QmJnUhPT1pLmN1cnJlbnQubGVuZ3RoPy0xOmc6bGMoaSx7c3RhcnRpbmdJbmRleDp1LGRpc2FibGVkSW5kaWNlczpifSk6ei5jdXJyZW50PU1hdGgubWluKHksbGMoaSx7c3RhcnRpbmdJbmRleDp1LGRpc2FibGVkSW5kaWNlczpifSkpOmY/ei5jdXJyZW50PXU8PWc/ZCYmLTEhPT11P2kuY3VycmVudC5sZW5ndGg6eTpsYyhpLHtzdGFydGluZ0luZGV4OnUsZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczpifSk6ei5jdXJyZW50PU1hdGgubWF4KGcsbGMoaSx7c3RhcnRpbmdJbmRleDp1LGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6Yn0pKSxsaShpLHouY3VycmVudCkmJih6LmN1cnJlbnQ9LTEpLEwoKX19KSxKPXgudXNlTWVtbygoKT0+bSYmbiYmSyYme1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6JH0sW20sbixLLCRdKSxlZT14LnVzZU1lbW8oKCk9Pih7XCJhcmlhLW9yaWVudGF0aW9uXCI6XCJib3RoXCI9PT1BP3ZvaWQgMDpBLC4uLiFQP0o6e30sb25LZXlEb3duKGUpe2lmKFwiVGFiXCI9PT1lLmtleSYmZS5zaGlmdEtleSYmbiYmIW0pe2lyKGUpLHIoITEsZS5uYXRpdmVFdmVudCxcImxpc3QtbmF2aWdhdGlvblwiKSxhRChvLmRvbVJlZmVyZW5jZSkmJm8uZG9tUmVmZXJlbmNlLmZvY3VzKCk7cmV0dXJufVEoZSl9LG9uUG9pbnRlck1vdmUoKXtELmN1cnJlbnQ9ITB9fSksW0osUSxBLFAscixuLG0sby5kb21SZWZlcmVuY2VdKSxldD14LnVzZU1lbW8oKCk9PntmdW5jdGlvbiBlKGUpe1wiYXV0b1wiPT09ZyYmaW8oZS5uYXRpdmVFdmVudCkmJihJLmN1cnJlbnQ9ITApfWZ1bmN0aW9uIHQoZSl7SS5jdXJyZW50PWcsXCJhdXRvXCI9PT1nJiZpYShlLm5hdGl2ZUV2ZW50KSYmKEkuY3VycmVudD0hMCl9cmV0dXJuey4uLkosb25LZXlEb3duKGUpe3ZhciB0LG87RC5jdXJyZW50PSExO2xldCBhPWUua2V5LnN0YXJ0c1dpdGgoXCJBcnJvd1wiKSxsPSh0PWUua2V5LG89RygpLGxwKG8saD90PT09aXU6dD09PWlkLHQ9PT1paCkpLHM9bGgoZS5rZXksQSksYz0ocD9sOnMpfHxcIkVudGVyXCI9PT1lLmtleXx8XCJcIj09PWUua2V5LnRyaW0oKTtpZihtJiZuKXJldHVybiBRKGUpO2lmKG58fHZ8fCFhKXtpZihjKXtsZXQgdD1saChlLmtleSxHKCkpO1QuY3VycmVudD1wJiZ0P251bGw6ZS5rZXl9aWYocCl7bCYmKGlyKGUpLG4/KHouY3VycmVudD1sbChpLEYuY3VycmVudCksTCgpKTpyKCEwLGUubmF0aXZlRXZlbnQsXCJsaXN0LW5hdmlnYXRpb25cIikpO3JldHVybn1zJiYobnVsbCE9dSYmKHouY3VycmVudD11KSxpcihlKSwhbiYmdj9yKCEwLGUubmF0aXZlRXZlbnQsXCJsaXN0LW5hdmlnYXRpb25cIik6UShlKSxuJiZMKCkpfX0sb25Gb2N1cygpe24mJiFtJiYoei5jdXJyZW50PS0xLEwoKSl9LG9uUG9pbnRlckRvd246dCxvblBvaW50ZXJFbnRlcjp0LG9uTW91c2VEb3duOmUsb25DbGljazplfX0sW0osUSxGLGcsaSxwLEwscixuLHYsQSxHLGgsdSxtXSk7cmV0dXJuIHgudXNlTWVtbygoKT0+Yz97cmVmZXJlbmNlOmV0LGZsb2F0aW5nOmVlLGl0ZW06WH06e30sW2MsZXQsZWUsWF0pfShlbSx7ZW5hYmxlZDohcyxsaXN0UmVmOlIsYWN0aXZlSW5kZXg6aixuZXN0ZWQ6dm9pZCAwIT09dC50eXBlLGxvb3A6dSxvcmllbnRhdGlvbjpkLHBhcmVudE9yaWVudGF0aW9uOlwibWVudWJhclwiPT09dC50eXBlP3QuY29udGV4dC5vcmllbnRhdGlvbjp2b2lkIDAscnRsOlwicnRsXCI9PT1leCxkaXNhYmxlZEluZGljZXM6bFYsb25OYXZpZ2F0ZTpTLG9wZW5PbkFycm93S2V5RG93bjpcImNvbnRleHQtbWVudVwiIT09dC50eXBlfSksZUM9eC51c2VSZWYoITEpLGVfPWZ1bmN0aW9uKGUsdCl7bGV0e29wZW46bixkYXRhUmVmOnJ9PWUse2xpc3RSZWY6byxhY3RpdmVJbmRleDphLG9uTWF0Y2g6aSxvblR5cGluZ0NoYW5nZTpsLGVuYWJsZWQ6cz0hMCxmaW5kTWF0Y2g6Yz1udWxsLHJlc2V0TXM6dT03NTAsaWdub3JlS2V5czpkPVtdLHNlbGVjdGVkSW5kZXg6Zj1udWxsfT10LHA9YWMoKSxoPXgudXNlUmVmKFwiXCIpLG09eC51c2VSZWYoZj8/YT8/LTEpLGc9eC51c2VSZWYobnVsbCkseT1hZihpKSx2PWFmKGwpLGI9YTAoYyksQT1hMChkKTtheCgoKT0+e24mJihwLmNsZWFyKCksZy5jdXJyZW50PW51bGwsaC5jdXJyZW50PVwiXCIpfSxbbixwXSksYXgoKCk9PntuJiZcIlwiPT09aC5jdXJyZW50JiYobS5jdXJyZW50PWY/P2E/Py0xKX0sW24sZixhXSk7bGV0IHc9YWYoZT0+e2U/ci5jdXJyZW50LnR5cGluZ3x8KHIuY3VycmVudC50eXBpbmc9ZSx2KGUpKTpyLmN1cnJlbnQudHlwaW5nJiYoci5jdXJyZW50LnR5cGluZz1lLHYoZSkpfSksQz1hZihlPT57ZnVuY3Rpb24gdChlLHQsbil7bGV0IHI9Yi5jdXJyZW50P2IuY3VycmVudCh0LG4pOnQuZmluZChlPT5lPy50b0xvY2FsZUxvd2VyQ2FzZSgpLmluZGV4T2Yobi50b0xvY2FsZUxvd2VyQ2FzZSgpKT09PTApO3JldHVybiByP2UuaW5kZXhPZihyKTotMX1sZXQgcj1vLmN1cnJlbnQ7aWYoaC5jdXJyZW50Lmxlbmd0aD4wJiZcIiBcIiE9PWguY3VycmVudFswXSYmKC0xPT09dChyLHIsaC5jdXJyZW50KT93KCExKTpcIiBcIj09PWUua2V5JiZpcihlKSksbnVsbD09cnx8QS5jdXJyZW50LmluY2x1ZGVzKGUua2V5KXx8MSE9PWUua2V5Lmxlbmd0aHx8ZS5jdHJsS2V5fHxlLm1ldGFLZXl8fGUuYWx0S2V5KXJldHVybjtuJiZcIiBcIiE9PWUua2V5JiYoaXIoZSksdyghMCkpLHIuZXZlcnkoZT0+IWV8fGVbMF0/LnRvTG9jYWxlTG93ZXJDYXNlKCkhPT1lWzFdPy50b0xvY2FsZUxvd2VyQ2FzZSgpKSYmaC5jdXJyZW50PT09ZS5rZXkmJihoLmN1cnJlbnQ9XCJcIixtLmN1cnJlbnQ9Zy5jdXJyZW50KSxoLmN1cnJlbnQrPWUua2V5LHAuc3RhcnQodSwoKT0+e2guY3VycmVudD1cIlwiLG0uY3VycmVudD1nLmN1cnJlbnQsdyghMSl9KTtsZXQgYT1tLmN1cnJlbnQsaT10KHIsWy4uLnIuc2xpY2UoKGF8fDApKzEpLC4uLnIuc2xpY2UoMCwoYXx8MCkrMSldLGguY3VycmVudCk7LTEhPT1pPyh5KGkpLGcuY3VycmVudD1pKTpcIiBcIiE9PWUua2V5JiYoaC5jdXJyZW50PVwiXCIsdyghMSkpfSksXz14LnVzZU1lbW8oKCk9Pih7b25LZXlEb3duOkN9KSxbQ10pLGs9eC51c2VNZW1vKCgpPT4oe29uS2V5RG93bjpDLG9uS2V5VXAoZSl7XCIgXCI9PT1lLmtleSYmdyghMSl9fSksW0Msd10pO3JldHVybiB4LnVzZU1lbW8oKCk9PnM/e3JlZmVyZW5jZTpfLGZsb2F0aW5nOmt9Ont9LFtzLF8sa10pfShlbSx7bGlzdFJlZjpNLGFjdGl2ZUluZGV4OmoscmVzZXRNczo1MDAsb25NYXRjaDplPT57WSYmZSE9PWomJlMoZSl9LG9uVHlwaW5nQ2hhbmdlOngudXNlQ2FsbGJhY2soZT0+e2VDLmN1cnJlbnQ9ZX0sW10pfSkse2dldFJlZmVyZW5jZVByb3BzOmVrLGdldEZsb2F0aW5nUHJvcHM6ZUUsZ2V0SXRlbVByb3BzOmVqfT1sZyhbZWcsZXYsZWIsZXksZUEsZXcsZV9dKSxlUz1mdW5jdGlvbihlKXtsZXR7ZW5hYmxlZDp0PSEwLG1vdXNlRG93bkFjdGlvbjpuLG9wZW46cn09ZSxvPXgudXNlUmVmKCExKTtyZXR1cm4geC51c2VNZW1vKCgpPT50P3tvbk1vdXNlRG93bjplPT57KFwib3BlblwiPT09biYmIXJ8fFwiY2xvc2VcIj09PW4mJnIpJiYoby5jdXJyZW50PSEwLGxFKGUuY3VycmVudFRhcmdldCkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsKCk9PntvLmN1cnJlbnQ9ITF9LHtvbmNlOiEwfSkpfSxvbkNsaWNrOmU9PntvLmN1cnJlbnQmJihvLmN1cnJlbnQ9ITEsZS5wcmV2ZW50QmFzZVVJSGFuZGxlcigpKX19OmlSLFt0LG4scl0pfSh7b3BlbjpZLGVuYWJsZWQ6XCJtZW51YmFyXCI9PT10LnR5cGUsbW91c2VEb3duQWN0aW9uOlwib3BlblwifSksZU89eC51c2VNZW1vKCgpPT57bGV0IGU9bE0oZWsoKSx7b25Nb3VzZUVudGVyKCl7RSghMCl9LG9uTW91c2VNb3ZlKCl7JCghMCl9fSxlcixlUyk7cmV0dXJuIGRlbGV0ZSBlLnJvbGUsZX0sW2VrLGVTLCQsZXJdKSxlQj14LnVzZU1lbW8oKCk9PmVFKHtvbk1vdXNlRW50ZXIoKXtXJiZcIm1lbnVcIiE9PXQudHlwZXx8RSghMSl9LG9uTW91c2VNb3ZlKCl7JCghMCl9LG9uQ2xpY2soKXtXJiZFKCExKX19KSxbZUUsVyx0LnR5cGUsJF0pLGVQPXgudXNlTWVtbygoKT0+ZWooKSxbZWpdKSxlST14LnVzZU1lbW8oKCk9Pih7YWN0aXZlSW5kZXg6aixzZXRBY3RpdmVJbmRleDpTLGFsbG93TW91c2VVcFRyaWdnZXJSZWY6dC50eXBlP3QuY29udGV4dC5hbGxvd01vdXNlVXBUcmlnZ2VyUmVmOmwkLGZsb2F0aW5nUm9vdENvbnRleHQ6ZW0saXRlbVByb3BzOmVQLHBvcHVwUHJvcHM6ZUIsdHJpZ2dlclByb3BzOmVPLGl0ZW1Eb21FbGVtZW50czpSLGl0ZW1MYWJlbHM6TSxtb3VudGVkOkosb3BlbjpZLHBvcHVwUmVmOkwscG9zaXRpb25lclJlZjpOLHNldE9wZW46ZWgsc2V0UG9zaXRpb25lckVsZW1lbnQ6USx0cmlnZ2VyRWxlbWVudDp5LHNldFRyaWdnZXJFbGVtZW50OnYsdHJhbnNpdGlvblN0YXR1czpldCxsYXN0T3BlbkNoYW5nZVJlYXNvbjpPLGluc3RhbnRUeXBlOkMsb25PcGVuQ2hhbmdlQ29tcGxldGU6aSxzZXRIb3ZlckVuYWJsZWQ6RSx0eXBpbmdSZWY6ZUMsbW9kYWw6SCxkaXNhYmxlZDpzLHBhcmVudDp0LHJvb3RJZDpxLGFsbG93TW91c2VFbnRlcjpWLHNldEFsbG93TW91c2VFbnRlcjokfSksW2osZW0sZVAsZUIsZU8sUixNLEosWSxOLGVoLGV0LHksUSxPLEMsaSxILHMsdCxxLFYsJF0pLGV6PSgwLGIuanN4KShsYi5Qcm92aWRlcix7dmFsdWU6ZUksY2hpbGRyZW46cn0pO3JldHVybiB2b2lkIDA9PT10LnR5cGV8fFwiY29udGV4dC1tZW51XCI9PT10LnR5cGU/KDAsYi5qc3gpKGFqLHtjaGlsZHJlbjplen0pOmV6fTtmdW5jdGlvbiBsWShlLHQsbixyKXt2YXIgbyxhLGksbCxzO2xldCBjPWFhKGxLKS5jdXJyZW50O3JldHVybiBvPWMsYT1lLGk9dCxsPW4scz1yLChvLnJlZnNbMF0hPT1hfHxvLnJlZnNbMV0hPT1pfHxvLnJlZnNbMl0hPT1sfHxvLnJlZnNbM10hPT1zKSYmbFgoYyxbZSx0LG4scl0pLGMuY2FsbGJhY2t9ZnVuY3Rpb24gbEsoKXtyZXR1cm57Y2FsbGJhY2s6bnVsbCxjbGVhbnVwOm51bGwscmVmczpbXX19ZnVuY3Rpb24gbFgoZSx0KXtpZihlLnJlZnM9dCx0LmV2ZXJ5KGU9Pm51bGw9PWUpKXtlLmNhbGxiYWNrPW51bGw7cmV0dXJufWUuY2FsbGJhY2s9bj0+e2lmKGUuY2xlYW51cCYmKGUuY2xlYW51cCgpLGUuY2xlYW51cD1udWxsKSxudWxsIT1uKXtsZXQgcj1BcnJheSh0Lmxlbmd0aCkuZmlsbChudWxsKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTEpe2xldCBvPXRbZV07aWYobnVsbCE9bylzd2l0Y2godHlwZW9mIG8pe2Nhc2VcImZ1bmN0aW9uXCI6e2xldCB0PW8obik7XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHJbZV09dCk7YnJlYWt9Y2FzZVwib2JqZWN0XCI6by5jdXJyZW50PW59fWUuY2xlYW51cD0oKT0+e2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MSl7bGV0IG49dFtlXTtpZihudWxsIT1uKXN3aXRjaCh0eXBlb2Ygbil7Y2FzZVwiZnVuY3Rpb25cIjp7bGV0IHQ9cltlXTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QoKTpuKG51bGwpO2JyZWFrfWNhc2VcIm9iamVjdFwiOm4uY3VycmVudD1udWxsfX19fX19bGV0IGxHPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0aW5nU3R5bGU9XCJkYXRhLXN0YXJ0aW5nLXN0eWxlXCIsZS5lbmRpbmdTdHlsZT1cImRhdGEtZW5kaW5nLXN0eWxlXCIsZX0oe30pLGxRPXtbbEcuc3RhcnRpbmdTdHlsZV06XCJcIn0sbEo9e1tsRy5lbmRpbmdTdHlsZV06XCJcIn0sbDA9e3RyYW5zaXRpb25TdGF0dXM6ZT0+XCJzdGFydGluZ1wiPT09ZT9sUTpcImVuZGluZ1wiPT09ZT9sSjpudWxsfSxsMT1mdW5jdGlvbihlKXtyZXR1cm4gZS5vcGVuPVwiZGF0YS1vcGVuXCIsZS5jbG9zZWQ9XCJkYXRhLWNsb3NlZFwiLGVbZS5zdGFydGluZ1N0eWxlPWxHLnN0YXJ0aW5nU3R5bGVdPVwic3RhcnRpbmdTdHlsZVwiLGVbZS5lbmRpbmdTdHlsZT1sRy5lbmRpbmdTdHlsZV09XCJlbmRpbmdTdHlsZVwiLGUuYW5jaG9ySGlkZGVuPVwiZGF0YS1hbmNob3ItaGlkZGVuXCIsZX0oe30pLGwyPWZ1bmN0aW9uKGUpe3JldHVybiBlLnBvcHVwT3Blbj1cImRhdGEtcG9wdXAtb3BlblwiLGUucHJlc3NlZD1cImRhdGEtcHJlc3NlZFwiLGV9KHt9KSxsND17W2wyLnBvcHVwT3Blbl06XCJcIn0sbDU9e1tsMi5wb3B1cE9wZW5dOlwiXCIsW2wyLnByZXNzZWRdOlwiXCJ9LGwzPXtbbDEub3Blbl06XCJcIn0sbDY9e1tsMS5jbG9zZWRdOlwiXCJ9LGw5PXtbbDEuYW5jaG9ySGlkZGVuXTpcIlwifSxsOD17b3BlbjplPT5lP2w0Om51bGx9LGw3PXtvcGVuOmU9PmU/bDU6bnVsbH0sc2U9e29wZW46ZT0+ZT9sMzpsNixhbmNob3JIaWRkZW46ZT0+ZT9sOTpudWxsfSxzdD1wYXJzZUludCh4LnZlcnNpb24sMTApO2Z1bmN0aW9uIHNuKGUsdCxuPXt9KXtsZXQgcj10LnJlbmRlcixvPWZ1bmN0aW9uKGUsdD17fSl7dmFyIG4scjtsZXQgbyx7Y2xhc3NOYW1lOmEscmVuZGVyOml9PWUse3N0YXRlOmw9aVIscmVmOnMscHJvcHM6YyxkaXNhYmxlU3R5bGVIb29rczp1LGN1c3RvbVN0eWxlSG9va01hcHBpbmc6ZCxlbmFibGVkOmY9ITB9PXQscD1mPyhuPWEscj1sLFwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bihyKTpuKTp2b2lkIDA7ITAhPT11JiYobz14LnVzZU1lbW8oKCk9PmY/ZnVuY3Rpb24oZSx0KXtsZXQgbj17fTtmb3IobGV0IHIgaW4gZSl7bGV0IG89ZVtyXTtpZih0Py5oYXNPd25Qcm9wZXJ0eShyKSl7bGV0IGU9dFtyXShvKTtudWxsIT1lJiZPYmplY3QuYXNzaWduKG4sZSk7Y29udGludWV9ITA9PT1vP25bYGRhdGEtJHtyLnRvTG93ZXJDYXNlKCl9YF09XCJcIjpvJiYobltgZGF0YS0ke3IudG9Mb3dlckNhc2UoKX1gXT1vLnRvU3RyaW5nKCkpfXJldHVybiBufShsLGQpOmlSLFtsLGQsZl0pKTtsZXQgaD1mP2xOKG8sQXJyYXkuaXNBcnJheShjKT9mdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGxSO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gbEYoZVswXSxsUik7bGV0IHQ9ey4uLmxGKGVbMF0sbFIpfTtmb3IobGV0IG49MTtuPGUubGVuZ3RoO24rPTEpdD1sWih0LGVbbl0pO3JldHVybiB0fShjKTpjKT8/aVI6aVI7cmV0dXJuKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmKGY/QXJyYXkuaXNBcnJheShzKT9oLnJlZj1mdW5jdGlvbihlKXt2YXIgdCxuO2xldCByPWFhKGxLKS5jdXJyZW50O3JldHVybiB0PXIsbj1lLCh0LnJlZnMubGVuZ3RoIT09bi5sZW5ndGh8fHQucmVmcy5zb21lKChlLHQpPT5lIT09blt0XSkpJiZsWChyLGUpLHIuY2FsbGJhY2t9KFtoLnJlZixzcihpKSwuLi5zXSk6aC5yZWY9bFkoaC5yZWYsc3IoaSkscyk6bFkobnVsbCxudWxsKSksZik/KHZvaWQgMCE9PXAmJihoLmNsYXNzTmFtZT1sSChoLmNsYXNzTmFtZSxwKSksaCk6aVJ9KHQsbik7cmV0dXJuITE9PT1uLmVuYWJsZWQ/bnVsbDpmdW5jdGlvbihlLHQsbixyKXtpZih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXJldHVybiB0KG4scik7bGV0IGU9bE0obix0LnByb3BzKTtyZXR1cm4gZS5yZWY9bi5yZWYseC5jbG9uZUVsZW1lbnQodCxlKX1pZihlJiZcInN0cmluZ1wiPT10eXBlb2YgZSl7dmFyIG8sYTtyZXR1cm4gbz1lLGE9bixcImJ1dHRvblwiPT09bz8oMCxiLmpzeCkoXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLC4uLmF9KTpcImltZ1wiPT09bz8oMCxiLmpzeCkoXCJpbWdcIix7YWx0OlwiXCIsLi4uYX0pOnguY3JlYXRlRWxlbWVudChvLGEpfXRocm93IEVycm9yKFwiQmFzZSBVSTogUmVuZGVyIGVsZW1lbnQgb3IgZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkLlwiKX0oZSxyLG8sbi5zdGF0ZT8/aVIpfWZ1bmN0aW9uIHNyKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3N0Pj0xOT9lLnByb3BzLnJlZjplLnJlZjpudWxsfWxldCBzbz14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBzYShlPSExKXtsZXQgdD14LnVzZUNvbnRleHQoc28pO2lmKHZvaWQgMD09PXQmJiFlKXRocm93IEVycm9yKFwiQmFzZSBVSTogQ29tcG9zaXRlUm9vdENvbnRleHQgaXMgbWlzc2luZy4gQ29tcG9zaXRlIHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8Q29tcG9zaXRlLlJvb3Q+LlwiKTtyZXR1cm4gdH1mdW5jdGlvbiBzaShlPXt9KXtsZXR7ZGlzYWJsZWQ6dD0hMSxmb2N1c2FibGVXaGVuRGlzYWJsZWQ6bix0YWJJbmRleDpyPTAsbmF0aXZlOm89ITB9PWUsYT14LnVzZVJlZihudWxsKSxpPXZvaWQgMCE9PXNhKCEwKSxsPWFmKCgpPT57bGV0IGU9YS5jdXJyZW50O3JldHVybiEhKGU/LnRhZ05hbWU9PT1cIkFcIiYmZT8uaHJlZil9KSx7cHJvcHM6c309ZnVuY3Rpb24oZSl7bGV0e2ZvY3VzYWJsZVdoZW5EaXNhYmxlZDp0LGRpc2FibGVkOm4sY29tcG9zaXRlOnI9ITEsdGFiSW5kZXg6bz0wLGlzTmF0aXZlQnV0dG9uOmF9PWUsaT1yJiYhMSE9PXQsbD1yJiYhMT09PXQ7cmV0dXJue3Byb3BzOngudXNlTWVtbygoKT0+e2xldCBlPXtvbktleURvd24oZSl7biYmdCYmXCJUYWJcIiE9PWUua2V5JiZlLnByZXZlbnREZWZhdWx0KCl9fTtyZXR1cm4gcnx8KGUudGFiSW5kZXg9bywhYSYmbiYmKGUudGFiSW5kZXg9dD9vOi0xKSksKGEmJih0fHxpKXx8IWEmJm4pJiYoZVtcImFyaWEtZGlzYWJsZWRcIl09biksYSYmKCF0fHxsKSYmKGUuZGlzYWJsZWQ9biksZX0sW3Isbix0LGksbCxhLG9dKX19KHtmb2N1c2FibGVXaGVuRGlzYWJsZWQ6bixkaXNhYmxlZDp0LGNvbXBvc2l0ZTppLHRhYkluZGV4OnIsaXNOYXRpdmVCdXR0b246b30pO3JldHVybiBheCgoKT0+e2xldCBlPWEuY3VycmVudDtlIGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQmJmkmJnQmJnZvaWQgMD09PXMuZGlzYWJsZWQmJmUuZGlzYWJsZWQmJihlLmRpc2FibGVkPSExKX0sW3Qscy5kaXNhYmxlZCxpXSkse2dldEJ1dHRvblByb3BzOngudXNlQ2FsbGJhY2soKGU9e30pPT57bGV0e29uQ2xpY2s6bixvbk1vdXNlRG93bjpyLG9uS2V5VXA6YSxvbktleURvd246aSxvblBvaW50ZXJEb3duOmMsLi4udX09ZTtyZXR1cm4gbE0oe3R5cGU6bz9cImJ1dHRvblwiOnZvaWQgMCxvbkNsaWNrKGUpe2lmKHQpcmV0dXJuIHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpO24/LihlKX0sb25Nb3VzZURvd24oZSl7dHx8cj8uKGUpfSxvbktleURvd24oZSl7aWYodHx8KGxxKGUpLGk/LihlKSksZS5iYXNlVUlIYW5kbGVyUHJldmVudGVkKXJldHVybjtsZXQgcj1lLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmIW8mJiFsKCkmJiF0LGE9XCJFbnRlclwiPT09ZS5rZXkscz1cIiBcIj09PWUua2V5O3ImJigoc3x8YSkmJmUucHJldmVudERlZmF1bHQoKSxhJiZuPy4oZSkpfSxvbktleVVwKGUpe3R8fChscShlKSxhPy4oZSkpLCFlLmJhc2VVSUhhbmRsZXJQcmV2ZW50ZWQmJihlLnRhcmdldCE9PWUuY3VycmVudFRhcmdldHx8b3x8dHx8XCIgXCIhPT1lLmtleXx8bj8uKGUpKX0sb25Qb2ludGVyRG93bihlKXtpZih0KXJldHVybiB2b2lkIGUucHJldmVudERlZmF1bHQoKTtjPy4oZSl9fSxvP3ZvaWQgMDp7cm9sZTpcImJ1dHRvblwifSxzLHUpfSxbdCxzLG8sbF0pLGJ1dHRvblJlZjphfX1sZXQgc2w9eC5jcmVhdGVDb250ZXh0KHtyZWdpc3RlcjooKT0+e30sdW5yZWdpc3RlcjooKT0+e30sc3Vic2NyaWJlTWFwQ2hhbmdlOigpPT4oKT0+e30sZWxlbWVudHNSZWY6e2N1cnJlbnQ6W119LG5leHRJbmRleFJlZjp7Y3VycmVudDowfX0pLHNzPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuTm9uZT0wXT1cIk5vbmVcIixlW2UuR3Vlc3NGcm9tT3JkZXI9MV09XCJHdWVzc0Zyb21PcmRlclwiLGV9KHt9KTtmdW5jdGlvbiBzYyhlPXt9KXtsZXR7bGFiZWw6dCxtZXRhZGF0YTpuLHRleHRSZWY6cixpbmRleEd1ZXNzQmVoYXZpb3I6b309ZSx7cmVnaXN0ZXI6YSx1bnJlZ2lzdGVyOmksc3Vic2NyaWJlTWFwQ2hhbmdlOmwsZWxlbWVudHNSZWY6cyxsYWJlbHNSZWY6YyxuZXh0SW5kZXhSZWY6dX09eC51c2VDb250ZXh0KHNsKSxkPXgudXNlUmVmKC0xKSxbZixwXT14LnVzZVN0YXRlKG89PT1zcy5HdWVzc0Zyb21PcmRlcj8oKT0+e2lmKC0xPT09ZC5jdXJyZW50KXtsZXQgZT11LmN1cnJlbnQ7dS5jdXJyZW50Kz0xLGQuY3VycmVudD1lfXJldHVybiBkLmN1cnJlbnR9Oi0xKSxoPXgudXNlUmVmKG51bGwpLG09eC51c2VDYWxsYmFjayhlPT57aWYoaC5jdXJyZW50PWUsLTEhPT1mJiZudWxsIT09ZSYmKHMuY3VycmVudFtmXT1lLGMpKXtsZXQgbj12b2lkIDAhPT10O2MuY3VycmVudFtmXT1uP3Q6cj8uY3VycmVudD8udGV4dENvbnRlbnQ/P2UudGV4dENvbnRlbnR9fSxbZixzLGMsdCxyXSk7cmV0dXJuIGF4KCgpPT57bGV0IGU9aC5jdXJyZW50O2lmKGUpcmV0dXJuIGEoZSxuKSwoKT0+e2koZSl9fSxbYSxpLG5dKSxheCgoKT0+bChlPT57bGV0IHQ9aC5jdXJyZW50P2UuZ2V0KGguY3VycmVudCk/LmluZGV4Om51bGw7bnVsbCE9dCYmcCh0KX0pLFtsLHBdKSx4LnVzZU1lbW8oKCk9Pih7cmVmOm0saW5kZXg6Zn0pLFtmLG1dKX1mdW5jdGlvbiBzdShlKXtsZXR7cmVuZGVyOnQsY2xhc3NOYW1lOm4sc3RhdGU6cj1pUixwcm9wczpvPWlNLHJlZnM6YT1pTSxtZXRhZGF0YTppLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6bCx0YWc6cz1cImRpdlwiLC4uLmN9PWUse2NvbXBvc2l0ZVByb3BzOnUsY29tcG9zaXRlUmVmOmR9PWZ1bmN0aW9uKGU9e30pe2xldHtoaWdobGlnaHRJdGVtT25Ib3Zlcjp0LGhpZ2hsaWdodGVkSW5kZXg6bixvbkhpZ2hsaWdodGVkSW5kZXhDaGFuZ2U6cn09c2EoKSx7cmVmOm8saW5kZXg6YX09c2MoZSksaT1uPT09YSxsPXgudXNlUmVmKG51bGwpLHM9bFkobyxsKTtyZXR1cm57Y29tcG9zaXRlUHJvcHM6eC51c2VNZW1vKCgpPT4oe3RhYkluZGV4Omk/MDotMSxvbkZvY3VzKCl7cihhKX0sb25Nb3VzZU1vdmUoKXtsZXQgZT1sLmN1cnJlbnQ7aWYoIXR8fCFlKXJldHVybjtsZXQgbj1lLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpfHxcInRydWVcIj09PWUuYXJpYURpc2FibGVkO2l8fG58fGUuZm9jdXMoKX19KSxbaSxyLGEsdF0pLGNvbXBvc2l0ZVJlZjpzLGluZGV4OmF9fSh7bWV0YWRhdGE6aX0pO3JldHVybiBzbihzLGUse3N0YXRlOnIscmVmOlsuLi5hLGRdLHByb3BzOlt1LC4uLm8sY10sY3VzdG9tU3R5bGVIb29rTWFwcGluZzpsfSl9bGV0IHNkPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtyZW5kZXI6bixjbGFzc05hbWU6cixkaXNhYmxlZDpvPSExLG5hdGl2ZUJ1dHRvbjphPSEwLC4uLml9PWUse3RyaWdnZXJQcm9wczpsLGRpc2FibGVkOnMsc2V0VHJpZ2dlckVsZW1lbnQ6YyxvcGVuOnUsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjpkLHBvc2l0aW9uZXJSZWY6ZixwYXJlbnQ6cCxsYXN0T3BlbkNoYW5nZVJlYXNvbjpoLHJvb3RJZDptfT1sQSgpLGc9b3x8cyx5PXgudXNlUmVmKG51bGwpLHY9YWMoKSx7Z2V0QnV0dG9uUHJvcHM6QSxidXR0b25SZWY6d309c2koe2Rpc2FibGVkOmcsbmF0aXZlOmF9KSxDPWxZKHcsYykse2V2ZW50czpffT1haygpO3gudXNlRWZmZWN0KCgpPT57dXx8dm9pZCAwIT09cC50eXBlfHwoZC5jdXJyZW50PSExKX0sW2QsdSxwLnR5cGVdKTtsZXQgaz1hZihlPT57aWYoIXkuY3VycmVudClyZXR1cm47di5jbGVhcigpLGQuY3VycmVudD0hMTtsZXQgdD1lLnRhcmdldDtpZihpZyh5LmN1cnJlbnQsdCl8fGlnKGYuY3VycmVudCx0KXx8dD09PXkuY3VycmVudHx8bnVsbCE9dCYmZnVuY3Rpb24gZSh0KXtyZXR1cm4gYUQodCkmJnQuaGFzQXR0cmlidXRlKFwiZGF0YS1yb290b3duZXJpZFwiKT90LmdldEF0dHJpYnV0ZShcImRhdGEtcm9vdG93bmVyaWRcIik/P3ZvaWQgMDphWSh0KT92b2lkIDA6ZShhRyh0KSl9KHQpPT09bSlyZXR1cm47bGV0IG49ZnVuY3Rpb24oZSl7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsXCI6OmJlZm9yZVwiKSxyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsXCI6OmFmdGVyXCIpO2lmKFwibm9uZVwiPT09bi5jb250ZW50JiZcIm5vbmVcIj09PXIuY29udGVudClyZXR1cm4gdDtsZXQgbz1wYXJzZUZsb2F0KG4ud2lkdGgpfHwwLGE9cGFyc2VGbG9hdChuLmhlaWdodCl8fDAsaT1wYXJzZUZsb2F0KHIud2lkdGgpfHwwLGw9cGFyc2VGbG9hdChyLmhlaWdodCl8fDAscz1NYXRoLm1heCh0LndpZHRoLG8saSksYz1NYXRoLm1heCh0LmhlaWdodCxhLGwpLHU9cy10LndpZHRoLGQ9Yy10LmhlaWdodDtyZXR1cm57bGVmdDp0LmxlZnQtdS8yLHJpZ2h0OnQucmlnaHQrdS8yLHRvcDp0LnRvcC1kLzIsYm90dG9tOnQuYm90dG9tK2QvMn19KHkuY3VycmVudCk7ZS5jbGllbnRYPj1uLmxlZnQtMiYmZS5jbGllbnRYPD1uLnJpZ2h0KzImJmUuY2xpZW50WT49bi50b3AtMiYmZS5jbGllbnRZPD1uLmJvdHRvbSsyfHxfLmVtaXQoXCJjbG9zZVwiLHtkb21FdmVudDplLHJlYXNvbjpcImNhbmNlbC1vcGVuXCJ9KX0pO3gudXNlRWZmZWN0KCgpPT57dSYmXCJ0cmlnZ2VyLWhvdmVyXCI9PT1oJiZsRSh5LmN1cnJlbnQpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsayx7b25jZTohMH0pfSxbdSxrLGhdKTtsZXQgRT1cIm1lbnViYXJcIj09PXAudHlwZSxqPXgudXNlQ2FsbGJhY2soZT0+bE0oRT97cm9sZTpcIm1lbnVpdGVtXCJ9Ont9LHtcImFyaWEtaGFzcG9wdXBcIjpcIm1lbnVcIixyZWY6Qyxvbk1vdXNlRG93bjplPT57dXx8KHYuc3RhcnQoMjAwLCgpPT57ZC5jdXJyZW50PSEwfSksbEUoZS5jdXJyZW50VGFyZ2V0KS5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGsse29uY2U6ITB9KSl9fSxlLEEpLFtBLEMsdSxkLHYsayxFXSksUz14LnVzZU1lbW8oKCk9Pih7ZGlzYWJsZWQ6ZyxvcGVuOnV9KSxbZyx1XSksTz1beSx0LHddLEI9W2wsaSxqXSxQPXNuKFwiYnV0dG9uXCIsZSx7ZW5hYmxlZDohRSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmw3LHN0YXRlOlMscmVmOk8scHJvcHM6Qn0pO3JldHVybiBFPygwLGIuanN4KShzdSx7dGFnOlwiYnV0dG9uXCIscmVuZGVyOm4sY2xhc3NOYW1lOnIsc3RhdGU6UyxyZWZzOk8scHJvcHM6QixjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmw3fSk6UH0pLHNmPXtjbGlwOlwicmVjdCgwIDAgMCAwKVwiLG92ZXJmbG93OlwiaGlkZGVuXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwiLHBvc2l0aW9uOlwiZml4ZWRcIix0b3A6MCxsZWZ0OjAsYm9yZGVyOjAscGFkZGluZzowLHdpZHRoOjEsaGVpZ2h0OjEsbWFyZ2luOi0xfSxzcD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXRbbixyXT14LnVzZVN0YXRlKCk7cmV0dXJuIGF4KCgpPT57YTgmJnIoXCJidXR0b25cIil9LFtdKSwoMCxiLmpzeCkoXCJzcGFuXCIsey4uLmUscmVmOnQsdGFiSW5kZXg6MCxyb2xlOm4sXCJhcmlhLWhpZGRlblwiOiFufHx2b2lkIDAsc3R5bGU6c2YsXCJkYXRhLWJhc2UtdWktZm9jdXMtZ3VhcmRcIjpcIlwifSl9KTt2YXIgc2g9J2lucHV0Om5vdChbaW5lcnRdKSxzZWxlY3Q6bm90KFtpbmVydF0pLHRleHRhcmVhOm5vdChbaW5lcnRdKSxhW2hyZWZdOm5vdChbaW5lcnRdKSxidXR0b246bm90KFtpbmVydF0pLFt0YWJpbmRleF06bm90KHNsb3QpOm5vdChbaW5lcnRdKSxhdWRpb1tjb250cm9sc106bm90KFtpbmVydF0pLHZpZGVvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSksW2NvbnRlbnRlZGl0YWJsZV06bm90KFtjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXSk6bm90KFtpbmVydF0pLGRldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlOm5vdChbaW5lcnRdKSxkZXRhaWxzOm5vdChbaW5lcnRdKScsc209XCJ1bmRlZmluZWRcIj09dHlwZW9mIEVsZW1lbnQsc2c9c20/ZnVuY3Rpb24oKXt9OkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXN8fEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yfHxFbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3Isc3k9IXNtJiZFbGVtZW50LnByb3RvdHlwZS5nZXRSb290Tm9kZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbnVsbD09ZXx8bnVsbD09KHQ9ZS5nZXRSb290Tm9kZSk/dm9pZCAwOnQuY2FsbChlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmUub3duZXJEb2N1bWVudH0sc3Y9ZnVuY3Rpb24gZSh0LG4pe3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcixvPW51bGw9PXR8fG51bGw9PShyPXQuZ2V0QXR0cmlidXRlKT92b2lkIDA6ci5jYWxsKHQsXCJpbmVydFwiKTtyZXR1cm5cIlwiPT09b3x8XCJ0cnVlXCI9PT1vfHxuJiZ0JiZlKHQucGFyZW50Tm9kZSl9LHNiPWZ1bmN0aW9uKGUpe3ZhciB0LG49bnVsbD09ZXx8bnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUpP3ZvaWQgMDp0LmNhbGwoZSxcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm5cIlwiPT09bnx8XCJ0cnVlXCI9PT1ufSxzQT1mdW5jdGlvbihlLHQsbil7aWYoc3YoZSkpcmV0dXJuW107dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbChzaCkpO3JldHVybiB0JiZzZy5jYWxsKGUsc2gpJiZyLnVuc2hpZnQoZSkscj1yLmZpbHRlcihuKX0sc3g9ZnVuY3Rpb24gZSh0LG4scil7Zm9yKHZhciBvPVtdLGE9QXJyYXkuZnJvbSh0KTthLmxlbmd0aDspe3ZhciBpPWEuc2hpZnQoKTtpZighc3YoaSwhMSkpaWYoXCJTTE9UXCI9PT1pLnRhZ05hbWUpe3ZhciBsPWkuYXNzaWduZWRFbGVtZW50cygpLHM9ZShsLmxlbmd0aD9sOmkuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP28ucHVzaC5hcHBseShvLHMpOm8ucHVzaCh7c2NvcGVQYXJlbnQ6aSxjYW5kaWRhdGVzOnN9KX1lbHNle3NnLmNhbGwoaSxzaCkmJnIuZmlsdGVyKGkpJiYobnx8IXQuaW5jbHVkZXMoaSkpJiZvLnB1c2goaSk7dmFyIGM9aS5zaGFkb3dSb290fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmdldFNoYWRvd1Jvb3QmJnIuZ2V0U2hhZG93Um9vdChpKSx1PSFzdihjLCExKSYmKCFyLnNoYWRvd1Jvb3RGaWx0ZXJ8fHIuc2hhZG93Um9vdEZpbHRlcihpKSk7aWYoYyYmdSl7dmFyIGQ9ZSghMD09PWM/aS5jaGlsZHJlbjpjLmNoaWxkcmVuLCEwLHIpO3IuZmxhdHRlbj9vLnB1c2guYXBwbHkobyxkKTpvLnB1c2goe3Njb3BlUGFyZW50OmksY2FuZGlkYXRlczpkfSl9ZWxzZSBhLnVuc2hpZnQuYXBwbHkoYSxpLmNoaWxkcmVuKX19cmV0dXJuIG99LHN3PWZ1bmN0aW9uKGUpe3JldHVybiFpc05hTihwYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKSl9LHNDPWZ1bmN0aW9uKGUpe2lmKCFlKXRocm93IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4gZS50YWJJbmRleDwwJiYoL14oQVVESU98VklERU98REVUQUlMUykkLy50ZXN0KGUudGFnTmFtZSl8fHNiKGUpKSYmIXN3KGUpPzA6ZS50YWJJbmRleH0sc189ZnVuY3Rpb24oZSx0KXt2YXIgbj1zQyhlKTtyZXR1cm4gbjwwJiZ0JiYhc3coZSk/MDpufSxzaz1mdW5jdGlvbihlLHQpe3JldHVybiBlLnRhYkluZGV4PT09dC50YWJJbmRleD9lLmRvY3VtZW50T3JkZXItdC5kb2N1bWVudE9yZGVyOmUudGFiSW5kZXgtdC50YWJJbmRleH0sc0U9ZnVuY3Rpb24oZSl7cmV0dXJuXCJJTlBVVFwiPT09ZS50YWdOYW1lfSxzaj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0uY2hlY2tlZCYmZVtuXS5mb3JtPT09dClyZXR1cm4gZVtuXX0sc1M9ZnVuY3Rpb24oZSl7aWYoIWUubmFtZSlyZXR1cm4hMDt2YXIgdCxuPWUuZm9ybXx8c3koZSkscj1mdW5jdGlvbihlKXtyZXR1cm4gbi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicrZSsnXCJdJyl9O2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5DU1MmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5DU1MuZXNjYXBlKXQ9cih3aW5kb3cuQ1NTLmVzY2FwZShlLm5hbWUpKTtlbHNlIHRyeXt0PXIoZS5uYW1lKX1jYXRjaChlKXtyZXR1cm4gY29uc29sZS5lcnJvcihcIkxvb2tzIGxpa2UgeW91IGhhdmUgYSByYWRpbyBidXR0b24gd2l0aCBhIG5hbWUgYXR0cmlidXRlIGNvbnRhaW5pbmcgaW52YWxpZCBDU1Mgc2VsZWN0b3IgY2hhcmFjdGVycyBhbmQgbmVlZCB0aGUgQ1NTLmVzY2FwZSBwb2x5ZmlsbDogJXNcIixlLm1lc3NhZ2UpLCExfXZhciBvPXNqKHQsZS5mb3JtKTtyZXR1cm4hb3x8bz09PWV9LHNPPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBzRSh0PWUpJiZcInJhZGlvXCI9PT10LnR5cGUmJiFzUyhlKX0sc0I9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscz1lJiZzeShlKSxjPW51bGw9PSh0PXMpP3ZvaWQgMDp0Lmhvc3QsdT0hMTtpZihzJiZzIT09ZSlmb3IodT0hIShudWxsIT0obj1jKSYmbnVsbCE9KHI9bi5vd25lckRvY3VtZW50KSYmci5jb250YWlucyhjKXx8bnVsbCE9ZSYmbnVsbCE9KG89ZS5vd25lckRvY3VtZW50KSYmby5jb250YWlucyhlKSk7IXUmJmM7KXU9ISEobnVsbCE9KGk9Yz1udWxsPT0oYT1zPXN5KGMpKT92b2lkIDA6YS5ob3N0KSYmbnVsbCE9KGw9aS5vd25lckRvY3VtZW50KSYmbC5jb250YWlucyhjKSk7cmV0dXJuIHV9LHNQPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LndpZHRoLHI9dC5oZWlnaHQ7cmV0dXJuIDA9PT1uJiYwPT09cn0sc0k9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRpc3BsYXlDaGVjayxyPXQuZ2V0U2hhZG93Um9vdDtpZihcImhpZGRlblwiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS52aXNpYmlsaXR5KXJldHVybiEwO3ZhciBvPXNnLmNhbGwoZSxcImRldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlXCIpP2UucGFyZW50RWxlbWVudDplO2lmKHNnLmNhbGwobyxcImRldGFpbHM6bm90KFtvcGVuXSkgKlwiKSlyZXR1cm4hMDtpZihuJiZcImZ1bGxcIiE9PW4mJlwibGVnYWN5LWZ1bGxcIiE9PW4pe2lmKFwibm9uLXplcm8tYXJlYVwiPT09bilyZXR1cm4gc1AoZSl9ZWxzZXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXtmb3IodmFyIGE9ZTtlOyl7dmFyIGk9ZS5wYXJlbnRFbGVtZW50LGw9c3koZSk7aWYoaSYmIWkuc2hhZG93Um9vdCYmITA9PT1yKGkpKXJldHVybiBzUChlKTtlPWUuYXNzaWduZWRTbG90P2UuYXNzaWduZWRTbG90Oml8fGw9PT1lLm93bmVyRG9jdW1lbnQ/aTpsLmhvc3R9ZT1hfWlmKHNCKGUpKXJldHVybiFlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoO2lmKFwibGVnYWN5LWZ1bGxcIiE9PW4pcmV0dXJuITB9cmV0dXJuITF9LHN6PWZ1bmN0aW9uKGUpe2lmKC9eKElOUFVUfEJVVFRPTnxTRUxFQ1R8VEVYVEFSRUEpJC8udGVzdChlLnRhZ05hbWUpKWZvcih2YXIgdD1lLnBhcmVudEVsZW1lbnQ7dDspe2lmKFwiRklFTERTRVRcIj09PXQudGFnTmFtZSYmdC5kaXNhYmxlZCl7Zm9yKHZhciBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspe3ZhciByPXQuY2hpbGRyZW4uaXRlbShuKTtpZihcIkxFR0VORFwiPT09ci50YWdOYW1lKXJldHVybiEhc2cuY2FsbCh0LFwiZmllbGRzZXRbZGlzYWJsZWRdICpcIil8fCFyLmNvbnRhaW5zKGUpfXJldHVybiEwfXQ9dC5wYXJlbnRFbGVtZW50fXJldHVybiExfSxzVD1mdW5jdGlvbihlLHQpe3ZhciBuLHI7cmV0dXJuISh0LmRpc2FibGVkfHxzdih0KXx8c0Uobj10KSYmXCJoaWRkZW5cIj09PW4udHlwZXx8c0kodCxlKXx8XCJERVRBSUxTXCI9PT0ocj10KS50YWdOYW1lJiZBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoci5jaGlsZHJlbikuc29tZShmdW5jdGlvbihlKXtyZXR1cm5cIlNVTU1BUllcIj09PWUudGFnTmFtZX0pfHxzeih0KSl9LHNEPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIShzTyh0KXx8MD5zQyh0KSkmJiEhc1QoZSx0KX0sc0w9ZnVuY3Rpb24oZSl7dmFyIHQ9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCk7cmV0dXJuISFpc05hTih0KXx8ISEodD49MCl9LHNOPWZ1bmN0aW9uIGUodCl7dmFyIG49W10scj1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQsbyl7dmFyIGE9ISF0LnNjb3BlUGFyZW50LGk9YT90LnNjb3BlUGFyZW50OnQsbD1zXyhpLGEpLHM9YT9lKHQuY2FuZGlkYXRlcyk6aTswPT09bD9hP24ucHVzaC5hcHBseShuLHMpOm4ucHVzaChpKTpyLnB1c2goe2RvY3VtZW50T3JkZXI6byx0YWJJbmRleDpsLGl0ZW06dCxpc1Njb3BlOmEsY29udGVudDpzfSl9KSxyLnNvcnQoc2spLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0LmlzU2NvcGU/ZS5wdXNoLmFwcGx5KGUsdC5jb250ZW50KTplLnB1c2godC5jb250ZW50KSxlfSxbXSkuY29uY2F0KG4pfSxzUj1mdW5jdGlvbihlLHQpe3JldHVybiBzTigodD10fHx7fSkuZ2V0U2hhZG93Um9vdD9zeChbZV0sdC5pbmNsdWRlQ29udGFpbmVyLHtmaWx0ZXI6c0QuYmluZChudWxsLHQpLGZsYXR0ZW46ITEsZ2V0U2hhZG93Um9vdDp0LmdldFNoYWRvd1Jvb3Qsc2hhZG93Um9vdEZpbHRlcjpzTH0pOnNBKGUsdC5pbmNsdWRlQ29udGFpbmVyLHNELmJpbmQobnVsbCx0KSkpfSxzTT1mdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5nZXRTaGFkb3dSb290P3N4KFtlXSx0LmluY2x1ZGVDb250YWluZXIse2ZpbHRlcjpzVC5iaW5kKG51bGwsdCksZmxhdHRlbjohMCxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdH0pOnNBKGUsdC5pbmNsdWRlQ29udGFpbmVyLHNULmJpbmQobnVsbCx0KSl9LHNaPWZ1bmN0aW9uKGUsdCl7aWYodD10fHx7fSwhZSl0aHJvdyBFcnJvcihcIk5vIG5vZGUgcHJvdmlkZWRcIik7cmV0dXJuITEhPT1zZy5jYWxsKGUsc2gpJiZzRCh0LGUpfTtsZXQgc1U9KCk9Pih7Z2V0U2hhZG93Um9vdDohMCxkaXNwbGF5Q2hlY2s6XCJmdW5jdGlvblwiPT10eXBlb2YgUmVzaXplT2JzZXJ2ZXImJlJlc2l6ZU9ic2VydmVyLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCJbbmF0aXZlIGNvZGVdXCIpP1wiZnVsbFwiOlwibm9uZVwifSk7ZnVuY3Rpb24gc0YoZSx0KXtsZXQgbj1zUihlLHNVKCkpLHI9bi5sZW5ndGg7aWYoMD09PXIpcmV0dXJuO2xldCBvPWltKGliKGUpKSxhPW4uaW5kZXhPZihvKTtyZXR1cm4gblstMT09PWE/MT09PXQ/MDpyLTE6YSt0XX1mdW5jdGlvbiBzcShlKXtyZXR1cm4gc0YoaWIoZSkuYm9keSwxKXx8ZX1mdW5jdGlvbiBzSChlKXtyZXR1cm4gc0YoaWIoZSkuYm9keSwtMSl8fGV9ZnVuY3Rpb24gc1YoZSx0KXtsZXQgbj10fHxlLmN1cnJlbnRUYXJnZXQscj1lLnJlbGF0ZWRUYXJnZXQ7cmV0dXJuIXJ8fCFpZyhuLHIpfWZ1bmN0aW9uIHMkKGUpe3NSKGUsc1UoKSkuZm9yRWFjaChlPT57ZS5kYXRhc2V0LnRhYmluZGV4PWUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIil8fFwiXCIsZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIil9KX1mdW5jdGlvbiBzVyhlKXtlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10YWJpbmRleF1cIikuZm9yRWFjaChlPT57bGV0IHQ9ZS5kYXRhc2V0LnRhYmluZGV4O2RlbGV0ZSBlLmRhdGFzZXQudGFiaW5kZXgsdD9lLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsdCk6ZS5yZW1vdmVBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKX0pfWxldCBzWT14LmNyZWF0ZUNvbnRleHQobnVsbCksc0s9KCk9PngudXNlQ29udGV4dChzWSksc1g9aUMoXCJwb3J0YWxcIik7ZnVuY3Rpb24gc0coZT17fSl7bGV0e2lkOnQscm9vdDpufT1lLHI9YWIoKSxvPXNLKCksW2EsaV09eC51c2VTdGF0ZShudWxsKSxsPXgudXNlUmVmKG51bGwpO3JldHVybiBheCgoKT0+KCk9PnthPy5yZW1vdmUoKSxxdWV1ZU1pY3JvdGFzaygoKT0+e2wuY3VycmVudD1udWxsfSl9LFthXSksYXgoKCk9PntpZighcnx8bC5jdXJyZW50KXJldHVybjtsZXQgZT10P2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOm51bGw7aWYoIWUpcmV0dXJuO2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bi5pZD1yLG4uc2V0QXR0cmlidXRlKHNYLFwiXCIpLGUuYXBwZW5kQ2hpbGQobiksbC5jdXJyZW50PW4saShuKX0sW3Qscl0pLGF4KCgpPT57aWYobnVsbD09PW58fCFyfHxsLmN1cnJlbnQpcmV0dXJuO2xldCBlPW58fG8/LnBvcnRhbE5vZGU7ZSYmIWF6KGUpJiYoZT1lLmN1cnJlbnQpLGU9ZXx8ZG9jdW1lbnQuYm9keTtsZXQgYT1udWxsO3QmJigoYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pZD10LGUuYXBwZW5kQ2hpbGQoYSkpO2xldCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cy5pZD1yLHMuc2V0QXR0cmlidXRlKHNYLFwiXCIpLChlPWF8fGUpLmFwcGVuZENoaWxkKHMpLGwuY3VycmVudD1zLGkocyl9LFt0LG4scixvXSksYX1mdW5jdGlvbiBzUShlKXtsZXR7Y2hpbGRyZW46dCxpZDpuLHJvb3Q6cixwcmVzZXJ2ZVRhYk9yZGVyOm89ITB9PWUsYT1zRyh7aWQ6bixyb290OnJ9KSxbaSxsXT14LnVzZVN0YXRlKG51bGwpLHM9eC51c2VSZWYobnVsbCksYz14LnVzZVJlZihudWxsKSx1PXgudXNlUmVmKG51bGwpLGQ9eC51c2VSZWYobnVsbCksZj1pPy5tb2RhbCxwPWk/Lm9wZW4saD0hIWkmJiFpLm1vZGFsJiZpLm9wZW4mJm8mJiEhKHJ8fGEpO3JldHVybiB4LnVzZUVmZmVjdCgoKT0+e2lmKGEmJm8mJiFmKXJldHVybiBhLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsZSwhMCksYS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIixlLCEwKSwoKT0+e2EucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixlLCEwKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLGUsITApfTtmdW5jdGlvbiBlKGUpe2lmKGEmJnNWKGUpKXtsZXQgdD1cImZvY3VzaW5cIj09PWUudHlwZTsodD9zVzpzJCkoYSl9fX0sW2EsbyxmXSkseC51c2VFZmZlY3QoKCk9PnthJiYocHx8c1coYSkpfSxbcCxhXSksKDAsYi5qc3hzKShzWS5Qcm92aWRlcix7dmFsdWU6eC51c2VNZW1vKCgpPT4oe3ByZXNlcnZlVGFiT3JkZXI6byxiZWZvcmVPdXRzaWRlUmVmOnMsYWZ0ZXJPdXRzaWRlUmVmOmMsYmVmb3JlSW5zaWRlUmVmOnUsYWZ0ZXJJbnNpZGVSZWY6ZCxwb3J0YWxOb2RlOmEsc2V0Rm9jdXNNYW5hZ2VyU3RhdGU6bH0pLFtvLGFdKSxjaGlsZHJlbjpbaCYmYSYmKDAsYi5qc3gpKHNwLHtcImRhdGEtdHlwZVwiOlwib3V0c2lkZVwiLHJlZjpzLG9uRm9jdXM6ZT0+e2lmKHNWKGUsYSkpdS5jdXJyZW50Py5mb2N1cygpO2Vsc2V7bGV0IGU9c0goaT9pLmRvbVJlZmVyZW5jZTpudWxsKTtlPy5mb2N1cygpfX19KSxoJiZhJiYoMCxiLmpzeCkoXCJzcGFuXCIse1wiYXJpYS1vd25zXCI6YS5pZCxzdHlsZTpzZn0pLGEmJmVmLmNyZWF0ZVBvcnRhbCh0LGEpLGgmJmEmJigwLGIuanN4KShzcCx7XCJkYXRhLXR5cGVcIjpcIm91dHNpZGVcIixyZWY6YyxvbkZvY3VzOmU9PntpZihzVihlLGEpKWQuY3VycmVudD8uZm9jdXMoKTtlbHNle2xldCB0PXNxKGk/aS5kb21SZWZlcmVuY2U6bnVsbCk7dD8uZm9jdXMoKSxpPy5jbG9zZU9uRm9jdXNPdXQmJmk/Lm9uT3BlbkNoYW5nZSghMSxlLm5hdGl2ZUV2ZW50LFwiZm9jdXMtb3V0XCIpfX19KV19KX1sZXQgc0o9eC5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gczAoZSl7bGV0e2NoaWxkcmVuOnQsa2VlcE1vdW50ZWQ6bj0hMSxjb250YWluZXI6cn09ZSx7bW91bnRlZDpvfT1sQSgpO3JldHVybiBvfHxuPygwLGIuanN4KShzSi5Qcm92aWRlcix7dmFsdWU6bixjaGlsZHJlbjooMCxiLmpzeCkoc1Ese3Jvb3Q6cixjaGlsZHJlbjp0fSl9KTpudWxsfWxldCBzMT14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBzMihlLHQsbil7bGV0IHIse3JlZmVyZW5jZTpvLGZsb2F0aW5nOmF9PWUsaT1pNih0KSxsPWk0KGk2KHQpKSxzPWk1KGwpLGM9aTEodCksdT1cInlcIj09PWksZD1vLngrby53aWR0aC8yLWEud2lkdGgvMixmPW8ueStvLmhlaWdodC8yLWEuaGVpZ2h0LzIscD1vW3NdLzItYVtzXS8yO3N3aXRjaChjKXtjYXNlXCJ0b3BcIjpyPXt4OmQseTpvLnktYS5oZWlnaHR9O2JyZWFrO2Nhc2VcImJvdHRvbVwiOnI9e3g6ZCx5Om8ueStvLmhlaWdodH07YnJlYWs7Y2FzZVwicmlnaHRcIjpyPXt4Om8ueCtvLndpZHRoLHk6Zn07YnJlYWs7Y2FzZVwibGVmdFwiOnI9e3g6by54LWEud2lkdGgseTpmfTticmVhaztkZWZhdWx0OnI9e3g6by54LHk6by55fX1zd2l0Y2goaTIodCkpe2Nhc2VcInN0YXJ0XCI6cltsXS09cCoobiYmdT8tMToxKTticmVhaztjYXNlXCJlbmRcIjpyW2xdKz1wKihuJiZ1Py0xOjEpfXJldHVybiByfWxldCBzND1hc3luYyhlLHQsbik9PntsZXR7cGxhY2VtZW50OnI9XCJib3R0b21cIixzdHJhdGVneTpvPVwiYWJzb2x1dGVcIixtaWRkbGV3YXJlOmE9W10scGxhdGZvcm06aX09bixsPWEuZmlsdGVyKEJvb2xlYW4pLHM9YXdhaXQgKG51bGw9PWkuaXNSVEw/dm9pZCAwOmkuaXNSVEwodCkpLGM9YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pLHt4OnUseTpkfT1zMihjLHIscyksZj1yLHA9e30saD0wO2ZvcihsZXQgbj0wO248bC5sZW5ndGg7bisrKXtsZXR7bmFtZTphLGZuOm19PWxbbl0se3g6Zyx5OnksZGF0YTp2LHJlc2V0OmJ9PWF3YWl0IG0oe3g6dSx5OmQsaW5pdGlhbFBsYWNlbWVudDpyLHBsYWNlbWVudDpmLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6cCxyZWN0czpjLHBsYXRmb3JtOmksZWxlbWVudHM6e3JlZmVyZW5jZTplLGZsb2F0aW5nOnR9fSk7dT1udWxsIT1nP2c6dSxkPW51bGwhPXk/eTpkLHA9ey4uLnAsW2FdOnsuLi5wW2FdLC4uLnZ9fSxiJiZoPD01MCYmKGgrKyxcIm9iamVjdFwiPT10eXBlb2YgYiYmKGIucGxhY2VtZW50JiYoZj1iLnBsYWNlbWVudCksYi5yZWN0cyYmKGM9ITA9PT1iLnJlY3RzP2F3YWl0IGkuZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Om99KTpiLnJlY3RzKSx7eDp1LHk6ZH09czIoYyxmLHMpKSxuPS0xKX1yZXR1cm57eDp1LHk6ZCxwbGFjZW1lbnQ6ZixzdHJhdGVneTpvLG1pZGRsZXdhcmVEYXRhOnB9fTthc3luYyBmdW5jdGlvbiBzNShlLHQpe3ZhciBuO3ZvaWQgMD09PXQmJih0PXt9KTtsZXR7eDpyLHk6byxwbGF0Zm9ybTphLHJlY3RzOmksZWxlbWVudHM6bCxzdHJhdGVneTpzfT1lLHtib3VuZGFyeTpjPVwiY2xpcHBpbmdBbmNlc3RvcnNcIixyb290Qm91bmRhcnk6dT1cInZpZXdwb3J0XCIsZWxlbWVudENvbnRleHQ6ZD1cImZsb2F0aW5nXCIsYWx0Qm91bmRhcnk6Zj0hMSxwYWRkaW5nOnA9MH09aTAodCxlKSxoPWxyKHApLG09bFtmP1wiZmxvYXRpbmdcIj09PWQ/XCJyZWZlcmVuY2VcIjpcImZsb2F0aW5nXCI6ZF0sZz1sbyhhd2FpdCBhLmdldENsaXBwaW5nUmVjdCh7ZWxlbWVudDpudWxsPT0obj1hd2FpdCAobnVsbD09YS5pc0VsZW1lbnQ/dm9pZCAwOmEuaXNFbGVtZW50KG0pKSl8fG4/bTptLmNvbnRleHRFbGVtZW50fHxhd2FpdCAobnVsbD09YS5nZXREb2N1bWVudEVsZW1lbnQ/dm9pZCAwOmEuZ2V0RG9jdW1lbnRFbGVtZW50KGwuZmxvYXRpbmcpKSxib3VuZGFyeTpjLHJvb3RCb3VuZGFyeTp1LHN0cmF0ZWd5OnN9KSkseT1cImZsb2F0aW5nXCI9PT1kP3t4OnIseTpvLHdpZHRoOmkuZmxvYXRpbmcud2lkdGgsaGVpZ2h0OmkuZmxvYXRpbmcuaGVpZ2h0fTppLnJlZmVyZW5jZSx2PWF3YWl0IChudWxsPT1hLmdldE9mZnNldFBhcmVudD92b2lkIDA6YS5nZXRPZmZzZXRQYXJlbnQobC5mbG9hdGluZykpLGI9YXdhaXQgKG51bGw9PWEuaXNFbGVtZW50P3ZvaWQgMDphLmlzRWxlbWVudCh2KSkmJmF3YWl0IChudWxsPT1hLmdldFNjYWxlP3ZvaWQgMDphLmdldFNjYWxlKHYpKXx8e3g6MSx5OjF9LEE9bG8oYS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdD9hd2FpdCBhLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtlbGVtZW50czpsLHJlY3Q6eSxvZmZzZXRQYXJlbnQ6dixzdHJhdGVneTpzfSk6eSk7cmV0dXJue3RvcDooZy50b3AtQS50b3AraC50b3ApL2IueSxib3R0b206KEEuYm90dG9tLWcuYm90dG9tK2guYm90dG9tKS9iLnksbGVmdDooZy5sZWZ0LUEubGVmdCtoLmxlZnQpL2IueCxyaWdodDooQS5yaWdodC1nLnJpZ2h0K2gucmlnaHQpL2IueH19ZnVuY3Rpb24gczMoZSx0KXtyZXR1cm57dG9wOmUudG9wLXQuaGVpZ2h0LHJpZ2h0OmUucmlnaHQtdC53aWR0aCxib3R0b206ZS5ib3R0b20tdC5oZWlnaHQsbGVmdDplLmxlZnQtdC53aWR0aH19ZnVuY3Rpb24gczYoZSl7cmV0dXJuIGkkLnNvbWUodD0+ZVt0XT49MCl9bGV0IHM5PW5ldyBTZXQoW1wibGVmdFwiLFwidG9wXCJdKTthc3luYyBmdW5jdGlvbiBzOChlLHQpe2xldHtwbGFjZW1lbnQ6bixwbGF0Zm9ybTpyLGVsZW1lbnRzOm99PWUsYT1hd2FpdCAobnVsbD09ci5pc1JUTD92b2lkIDA6ci5pc1JUTChvLmZsb2F0aW5nKSksaT1pMShuKSxsPWkyKG4pLHM9XCJ5XCI9PT1pNihuKSxjPXM5LmhhcyhpKT8tMToxLHU9YSYmcz8tMToxLGQ9aTAodCxlKSx7bWFpbkF4aXM6Zixjcm9zc0F4aXM6cCxhbGlnbm1lbnRBeGlzOmh9PVwibnVtYmVyXCI9PXR5cGVvZiBkP3ttYWluQXhpczpkLGNyb3NzQXhpczowLGFsaWdubWVudEF4aXM6bnVsbH06e21haW5BeGlzOmQubWFpbkF4aXN8fDAsY3Jvc3NBeGlzOmQuY3Jvc3NBeGlzfHwwLGFsaWdubWVudEF4aXM6ZC5hbGlnbm1lbnRBeGlzfTtyZXR1cm4gbCYmXCJudW1iZXJcIj09dHlwZW9mIGgmJihwPVwiZW5kXCI9PT1sPy0xKmg6aCkscz97eDpwKnUseTpmKmN9Ont4OmYqYyx5OnAqdX19ZnVuY3Rpb24gczcoZSl7bGV0IHQ9YUsoZSksbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDAsbz1hRChlKSxhPW8/ZS5vZmZzZXRXaWR0aDpuLGk9bz9lLm9mZnNldEhlaWdodDpyLGw9aUsobikhPT1hfHxpSyhyKSE9PWk7cmV0dXJuIGwmJihuPWEscj1pKSx7d2lkdGg6bixoZWlnaHQ6ciwkOmx9fWZ1bmN0aW9uIGNlKGUpe3JldHVybiBhVChlKT9lOmUuY29udGV4dEVsZW1lbnR9ZnVuY3Rpb24gY3QoZSl7bGV0IHQ9Y2UoZSk7aWYoIWFEKHQpKXJldHVybiBpRygxKTtsZXQgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt3aWR0aDpyLGhlaWdodDpvLCQ6YX09czcodCksaT0oYT9pSyhuLndpZHRoKTpuLndpZHRoKS9yLGw9KGE/aUsobi5oZWlnaHQpOm4uaGVpZ2h0KS9vO3JldHVybiBpJiZOdW1iZXIuaXNGaW5pdGUoaSl8fChpPTEpLGwmJk51bWJlci5pc0Zpbml0ZShsKXx8KGw9MSkse3g6aSx5Omx9fWxldCBjbj1pRygwKTtmdW5jdGlvbiBjcihlKXtsZXQgdD1hUChlKTtyZXR1cm4gYSQoKSYmdC52aXN1YWxWaWV3cG9ydD97eDp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQseTp0LnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcH06Y259ZnVuY3Rpb24gY28oZSx0LG4scil7dmFyIG8sYSxpO3ZvaWQgMD09PXQmJih0PSExKSx2b2lkIDA9PT1uJiYobj0hMSk7bGV0IGw9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPWNlKGUpLGM9aUcoMSk7dCYmKHI/YVQocikmJihjPWN0KHIpKTpjPWN0KGUpKTtsZXQgdT0obz1zLHZvaWQgMD09PShhPW4pJiYoYT0hMSksKGk9cikmJighYXx8aT09PWFQKG8pKSYmYSk/Y3Iocyk6aUcoMCksZD0obC5sZWZ0K3UueCkvYy54LGY9KGwudG9wK3UueSkvYy55LHA9bC53aWR0aC9jLngsaD1sLmhlaWdodC9jLnk7aWYocyl7bGV0IGU9YVAocyksdD1yJiZhVChyKT9hUChyKTpyLG49ZSxvPWFKKG4pO2Zvcig7byYmciYmdCE9PW47KXtsZXQgZT1jdChvKSx0PW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1hSyhvKSxhPXQubGVmdCsoby5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoci5wYWRkaW5nTGVmdCkpKmUueCxpPXQudG9wKyhvLmNsaWVudFRvcCtwYXJzZUZsb2F0KHIucGFkZGluZ1RvcCkpKmUueTtkKj1lLngsZio9ZS55LHAqPWUueCxoKj1lLnksZCs9YSxmKz1pLG89YUoobj1hUChvKSl9fXJldHVybiBsbyh7d2lkdGg6cCxoZWlnaHQ6aCx4OmQseTpmfSl9ZnVuY3Rpb24gY2EoZSx0KXtsZXQgbj1hWChlKS5zY3JvbGxMZWZ0O3JldHVybiB0P3QubGVmdCtuOmNvKGFJKGUpKS5sZWZ0K259ZnVuY3Rpb24gY2koZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTtsZXQgcj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ci5sZWZ0K3Quc2Nyb2xsTGVmdC0obj8wOmNhKGUscikpO3JldHVybnt4Om8seTpyLnRvcCt0LnNjcm9sbFRvcH19bGV0IGNsPW5ldyBTZXQoW1wiYWJzb2x1dGVcIixcImZpeGVkXCJdKTtmdW5jdGlvbiBjcyhlLHQsbil7bGV0IHI7aWYoXCJ2aWV3cG9ydFwiPT09dClyPWZ1bmN0aW9uKGUsdCl7bGV0IG49YVAoZSkscj1hSShlKSxvPW4udmlzdWFsVmlld3BvcnQsYT1yLmNsaWVudFdpZHRoLGk9ci5jbGllbnRIZWlnaHQsbD0wLHM9MDtpZihvKXthPW8ud2lkdGgsaT1vLmhlaWdodDtsZXQgZT1hJCgpOyghZXx8ZSYmXCJmaXhlZFwiPT09dCkmJihsPW8ub2Zmc2V0TGVmdCxzPW8ub2Zmc2V0VG9wKX1yZXR1cm57d2lkdGg6YSxoZWlnaHQ6aSx4OmwseTpzfX0oZSxuKTtlbHNlIGlmKFwiZG9jdW1lbnRcIj09PXQpcj1mdW5jdGlvbihlKXtsZXQgdD1hSShlKSxuPWFYKGUpLHI9ZS5vd25lckRvY3VtZW50LmJvZHksbz1pWSh0LnNjcm9sbFdpZHRoLHQuY2xpZW50V2lkdGgsci5zY3JvbGxXaWR0aCxyLmNsaWVudFdpZHRoKSxhPWlZKHQuc2Nyb2xsSGVpZ2h0LHQuY2xpZW50SGVpZ2h0LHIuc2Nyb2xsSGVpZ2h0LHIuY2xpZW50SGVpZ2h0KSxpPS1uLnNjcm9sbExlZnQrY2EoZSksbD0tbi5zY3JvbGxUb3A7cmV0dXJuXCJydGxcIj09PWFLKHIpLmRpcmVjdGlvbiYmKGkrPWlZKHQuY2xpZW50V2lkdGgsci5jbGllbnRXaWR0aCktbykse3dpZHRoOm8saGVpZ2h0OmEseDppLHk6bH19KGFJKGUpKTtlbHNlIGlmKGFUKHQpKXI9ZnVuY3Rpb24oZSx0KXtsZXQgbj1jbyhlLCEwLFwiZml4ZWRcIj09PXQpLHI9bi50b3ArZS5jbGllbnRUb3Asbz1uLmxlZnQrZS5jbGllbnRMZWZ0LGE9YUQoZSk/Y3QoZSk6aUcoMSksaT1lLmNsaWVudFdpZHRoKmEueCxsPWUuY2xpZW50SGVpZ2h0KmEueSxzPW8qYS54O3JldHVybnt3aWR0aDppLGhlaWdodDpsLHg6cyx5OnIqYS55fX0odCxuKTtlbHNle2xldCBuPWNyKGUpO3I9e3g6dC54LW4ueCx5OnQueS1uLnksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fXJldHVybiBsbyhyKX1mdW5jdGlvbiBjYyhlKXtyZXR1cm5cInN0YXRpY1wiPT09YUsoZSkucG9zaXRpb259ZnVuY3Rpb24gY3UoZSx0KXtpZighYUQoZSl8fFwiZml4ZWRcIj09PWFLKGUpLnBvc2l0aW9uKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGFJKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24gY2QoZSx0KXt2YXIgbjtsZXQgcj1hUChlKTtpZihhVShlKSlyZXR1cm4gcjtpZighYUQoZSkpe2xldCB0PWFHKGUpO2Zvcig7dCYmIWFZKHQpOyl7aWYoYVQodCkmJiFjYyh0KSlyZXR1cm4gdDt0PWFHKHQpfXJldHVybiByfWxldCBvPWN1KGUsdCk7Zm9yKDtvJiYobj1vLGFNLmhhcyhhQihuKSkpJiZjYyhvKTspbz1jdShvLHQpO3JldHVybiBvJiZhWShvKSYmY2MobykmJiFhVihvKT9yOm98fGZ1bmN0aW9uKGUpe2xldCB0PWFHKGUpO2Zvcig7YUQodCkmJiFhWSh0KTspe2lmKGFWKHQpKXJldHVybiB0O2lmKGFVKHQpKWJyZWFrO3Q9YUcodCl9cmV0dXJuIG51bGx9KGUpfHxyfWxldCBjZj1hc3luYyBmdW5jdGlvbihlKXtsZXQgdD10aGlzLmdldE9mZnNldFBhcmVudHx8Y2Qsbj10aGlzLmdldERpbWVuc2lvbnMscj1hd2FpdCBuKGUuZmxvYXRpbmcpO3JldHVybntyZWZlcmVuY2U6ZnVuY3Rpb24oZSx0LG4pe2xldCByPWFEKHQpLG89YUkodCksYT1cImZpeGVkXCI9PT1uLGk9Y28oZSwhMCxhLHQpLGw9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0scz1pRygwKTtpZihyfHwhciYmIWEpaWYoKFwiYm9keVwiIT09YUIodCl8fGFSKG8pKSYmKGw9YVgodCkpLHIpe2xldCBlPWNvKHQsITAsYSx0KTtzLng9ZS54K3QuY2xpZW50TGVmdCxzLnk9ZS55K3QuY2xpZW50VG9wfWVsc2UgbyYmKHMueD1jYShvKSk7YSYmIXImJm8mJihzLng9Y2EobykpO2xldCBjPSFvfHxyfHxhP2lHKDApOmNpKG8sbCksdT1pLmxlZnQrbC5zY3JvbGxMZWZ0LXMueC1jLng7cmV0dXJue3g6dSx5OmkudG9wK2wuc2Nyb2xsVG9wLXMueS1jLnksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9fShlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fX19LGNwPXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudHM6dCxyZWN0Om4sb2Zmc2V0UGFyZW50OnIsc3RyYXRlZ3k6b309ZSxhPVwiZml4ZWRcIj09PW8saT1hSShyKSxsPSEhdCYmYVUodC5mbG9hdGluZyk7aWYocj09PWl8fGwmJmEpcmV0dXJuIG47bGV0IHM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sYz1pRygxKSx1PWlHKDApLGQ9YUQocik7aWYoKGR8fCFkJiYhYSkmJigoXCJib2R5XCIhPT1hQihyKXx8YVIoaSkpJiYocz1hWChyKSksYUQocikpKXtsZXQgZT1jbyhyKTtjPWN0KHIpLHUueD1lLngrci5jbGllbnRMZWZ0LHUueT1lLnkrci5jbGllbnRUb3B9bGV0IGY9IWl8fGR8fGE/aUcoMCk6Y2koaSxzLCEwKTtyZXR1cm57d2lkdGg6bi53aWR0aCpjLngsaGVpZ2h0Om4uaGVpZ2h0KmMueSx4Om4ueCpjLngtcy5zY3JvbGxMZWZ0KmMueCt1LngrZi54LHk6bi55KmMueS1zLnNjcm9sbFRvcCpjLnkrdS55K2YueX19LGdldERvY3VtZW50RWxlbWVudDphSSxnZXRDbGlwcGluZ1JlY3Q6ZnVuY3Rpb24oZSl7bGV0e2VsZW1lbnQ6dCxib3VuZGFyeTpuLHJvb3RCb3VuZGFyeTpyLHN0cmF0ZWd5Om99PWUsYT1bLi4uXCJjbGlwcGluZ0FuY2VzdG9yc1wiPT09bj9hVSh0KT9bXTpmdW5jdGlvbihlLHQpe2xldCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IHI9YVEoZSxbXSwhMSkuZmlsdGVyKGU9PmFUKGUpJiZcImJvZHlcIiE9PWFCKGUpKSxvPW51bGwsYT1cImZpeGVkXCI9PT1hSyhlKS5wb3NpdGlvbixpPWE/YUcoZSk6ZTtmb3IoO2FUKGkpJiYhYVkoaSk7KXtsZXQgdD1hSyhpKSxuPWFWKGkpO258fFwiZml4ZWRcIiE9PXQucG9zaXRpb258fChvPW51bGwpLChhPyFuJiYhbzohbiYmXCJzdGF0aWNcIj09PXQucG9zaXRpb24mJiEhbyYmY2wuaGFzKG8ucG9zaXRpb24pfHxhUihpKSYmIW4mJmZ1bmN0aW9uIGUodCxuKXtsZXQgcj1hRyh0KTtyZXR1cm4hKHI9PT1ufHwhYVQocil8fGFZKHIpKSYmKFwiZml4ZWRcIj09PWFLKHIpLnBvc2l0aW9ufHxlKHIsbikpfShlLGkpKT9yPXIuZmlsdGVyKGU9PmUhPT1pKTpvPXQsaT1hRyhpKX1yZXR1cm4gdC5zZXQoZSxyKSxyfSh0LHRoaXMuX2MpOltdLmNvbmNhdChuKSxyXSxpPWFbMF0sbD1hLnJlZHVjZSgoZSxuKT0+e2xldCByPWNzKHQsbixvKTtyZXR1cm4gZS50b3A9aVkoci50b3AsZS50b3ApLGUucmlnaHQ9aVcoci5yaWdodCxlLnJpZ2h0KSxlLmJvdHRvbT1pVyhyLmJvdHRvbSxlLmJvdHRvbSksZS5sZWZ0PWlZKHIubGVmdCxlLmxlZnQpLGV9LGNzKHQsaSxvKSk7cmV0dXJue3dpZHRoOmwucmlnaHQtbC5sZWZ0LGhlaWdodDpsLmJvdHRvbS1sLnRvcCx4OmwubGVmdCx5OmwudG9wfX0sZ2V0T2Zmc2V0UGFyZW50OmNkLGdldEVsZW1lbnRSZWN0czpjZixnZXRDbGllbnRSZWN0czpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuZnJvbShlLmdldENsaWVudFJlY3RzKCkpfSxnZXREaW1lbnNpb25zOmZ1bmN0aW9uKGUpe2xldHt3aWR0aDp0LGhlaWdodDpufT1zNyhlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19LGdldFNjYWxlOmN0LGlzRWxlbWVudDphVCxpc1JUTDpmdW5jdGlvbihlKXtyZXR1cm5cInJ0bFwiPT09YUsoZSkuZGlyZWN0aW9ufX07ZnVuY3Rpb24gY2goZSx0KXtyZXR1cm4gZS54PT09dC54JiZlLnk9PT10LnkmJmUud2lkdGg9PT10LndpZHRoJiZlLmhlaWdodD09PXQuaGVpZ2h0fWZ1bmN0aW9uIGNtKGUsdCxuLHIpe2xldCBvO3ZvaWQgMD09PXImJihyPXt9KTtsZXR7YW5jZXN0b3JTY3JvbGw6YT0hMCxhbmNlc3RvclJlc2l6ZTppPSEwLGVsZW1lbnRSZXNpemU6bD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBSZXNpemVPYnNlcnZlcixsYXlvdXRTaGlmdDpzPVwiZnVuY3Rpb25cIj09dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyLGFuaW1hdGlvbkZyYW1lOmM9ITF9PXIsdT1jZShlKSxkPWF8fGk/Wy4uLnU/YVEodSk6W10sLi4uYVEodCldOltdO2QuZm9yRWFjaChlPT57YSYmZS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsbix7cGFzc2l2ZTohMH0pLGkmJmUuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLG4pfSk7bGV0IGY9dSYmcz9mdW5jdGlvbihlLHQpe2xldCBuLHI9bnVsbCxvPWFJKGUpO2Z1bmN0aW9uIGEoKXt2YXIgZTtjbGVhclRpbWVvdXQobiksbnVsbD09KGU9cil8fGUuZGlzY29ubmVjdCgpLHI9bnVsbH1yZXR1cm4hZnVuY3Rpb24gaShsLHMpe3ZvaWQgMD09PWwmJihsPSExKSx2b2lkIDA9PT1zJiYocz0xKSxhKCk7bGV0IGM9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDp1LHRvcDpkLHdpZHRoOmYsaGVpZ2h0OnB9PWM7aWYobHx8dCgpLCFmfHwhcClyZXR1cm47bGV0IGg9aVgoZCksbT1pWChvLmNsaWVudFdpZHRoLSh1K2YpKSxnPWlYKG8uY2xpZW50SGVpZ2h0LShkK3ApKSx5PXtyb290TWFyZ2luOi1oK1wicHggXCIrLW0rXCJweCBcIistZytcInB4IFwiKy1pWCh1KStcInB4XCIsdGhyZXNob2xkOmlZKDAsaVcoMSxzKSl8fDF9LHY9ITA7ZnVuY3Rpb24gYih0KXtsZXQgcj10WzBdLmludGVyc2VjdGlvblJhdGlvO2lmKHIhPT1zKXtpZighdilyZXR1cm4gaSgpO3I/aSghMSxyKTpuPXNldFRpbWVvdXQoKCk9PntpKCExLDFlLTcpfSwxZTMpfTEhPT1yfHxjaChjLGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfHxpKCksdj0hMX10cnl7cj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix7Li4ueSxyb290Om8ub3duZXJEb2N1bWVudH0pfWNhdGNoKGUpe3I9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGIseSl9ci5vYnNlcnZlKGUpfSghMCksYX0odSxuKTpudWxsLHA9LTEsaD1udWxsO2wmJihoPW5ldyBSZXNpemVPYnNlcnZlcihlPT57bGV0W3JdPWU7ciYmci50YXJnZXQ9PT11JiZoJiYoaC51bm9ic2VydmUodCksY2FuY2VsQW5pbWF0aW9uRnJhbWUocCkscD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt2YXIgZTtudWxsPT0oZT1oKXx8ZS5vYnNlcnZlKHQpfSkpLG4oKX0pLHUmJiFjJiZoLm9ic2VydmUodSksaC5vYnNlcnZlKHQpKTtsZXQgbT1jP2NvKGUpOm51bGw7cmV0dXJuIGMmJmZ1bmN0aW9uIHQoKXtsZXQgcj1jbyhlKTttJiYhY2gobSxyKSYmbigpLG09cixvPXJlcXVlc3RBbmltYXRpb25GcmFtZSh0KX0oKSxuKCksKCk9Pnt2YXIgZTtkLmZvckVhY2goZT0+e2EmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLG4pLGkmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLG4pfSksbnVsbD09Znx8ZigpLG51bGw9PShlPWgpfHxlLmRpc2Nvbm5lY3QoKSxoPW51bGwsYyYmY2FuY2VsQW5pbWF0aW9uRnJhbWUobyl9fXZhciBjZz1cInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQsY3k9Y2c/eC51c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIGN2KGUsdCl7bGV0IG4scixvO2lmKGU9PT10KXJldHVybiEwO2lmKHR5cGVvZiBlIT10eXBlb2YgdClyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLnRvU3RyaW5nKCk9PT10LnRvU3RyaW5nKCkpcmV0dXJuITA7aWYoZSYmdCYmXCJvYmplY3RcIj09dHlwZW9mIGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2lmKChuPWUubGVuZ3RoKSE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihyPW47MCE9ci0tOylpZighY3YoZVtyXSx0W3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1pZigobj0obz1PYmplY3Qua2V5cyhlKSkubGVuZ3RoKSE9PU9iamVjdC5rZXlzKHQpLmxlbmd0aClyZXR1cm4hMTtmb3Iocj1uOzAhPXItLTspaWYoISh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LG9bcl0pKXJldHVybiExO2ZvcihyPW47MCE9ci0tOyl7bGV0IG49b1tyXTtpZigoXCJfb3duZXJcIiE9PW58fCFlLiQkdHlwZW9mKSYmIWN2KGVbbl0sdFtuXSkpcmV0dXJuITF9cmV0dXJuITB9cmV0dXJuIGUhPWUmJnQhPXR9ZnVuY3Rpb24gY2IoZSl7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz8xOihlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZGV2aWNlUGl4ZWxSYXRpb3x8MX1mdW5jdGlvbiBjQShlLHQpe2xldCBuPWNiKGUpO3JldHVybiBNYXRoLnJvdW5kKHQqbikvbn1mdW5jdGlvbiBjeChlKXtsZXQgdD14LnVzZVJlZihlKTtyZXR1cm4gY3koKCk9Pnt0LmN1cnJlbnQ9ZX0pLHR9ZnVuY3Rpb24gY3coZSx0LG4pe2xldCByPVwiaW5saW5lLXN0YXJ0XCI9PT1lfHxcImlubGluZS1lbmRcIj09PWU7cmV0dXJuKHt0b3A6XCJ0b3BcIixyaWdodDpyP24/XCJpbmxpbmUtc3RhcnRcIjpcImlubGluZS1lbmRcIjpcInJpZ2h0XCIsYm90dG9tOlwiYm90dG9tXCIsbGVmdDpyP24/XCJpbmxpbmUtZW5kXCI6XCJpbmxpbmUtc3RhcnRcIjpcImxlZnRcIn0pW3RdfWZ1bmN0aW9uIGNDKGUsdCxuKXtsZXR7cmVjdHM6cixwbGFjZW1lbnQ6b309ZTtyZXR1cm57c2lkZTpjdyh0LGkxKG8pLG4pLGFsaWduOmkyKG8pfHxcImNlbnRlclwiLGFuY2hvcjp7d2lkdGg6ci5yZWZlcmVuY2Uud2lkdGgsaGVpZ2h0OnIucmVmZXJlbmNlLmhlaWdodH0scG9zaXRpb25lcjp7d2lkdGg6ci5mbG9hdGluZy53aWR0aCxoZWlnaHQ6ci5mbG9hdGluZy5oZWlnaHR9fX1mdW5jdGlvbiBjXyhlKXt2YXIgdCxuLHIsbyxhO2xldCBpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LHthbmNob3I6Yixwb3NpdGlvbk1ldGhvZDpBPVwiYWJzb2x1dGVcIixzaWRlOnc9XCJib3R0b21cIixzaWRlT2Zmc2V0OkM9MCxhbGlnbjpfPVwiY2VudGVyXCIsYWxpZ25PZmZzZXQ6az0wLGNvbGxpc2lvbkJvdW5kYXJ5OkUsY29sbGlzaW9uUGFkZGluZzpqPTUsc3RpY2t5OlM9ITEsYXJyb3dQYWRkaW5nOk89NSx0cmFja0FuY2hvcjpCPSEwLGtlZXBNb3VudGVkOlA9ITEsZmxvYXRpbmdSb290Q29udGV4dDpJLG1vdW50ZWQ6eixjb2xsaXNpb25Bdm9pZGFuY2U6VCxzaGlmdENyb3NzQXhpczpEPSExLG5vZGVJZDpMLGFkYXB0aXZlT3JpZ2luOk59PWUsUj1ULnNpZGV8fFwiZmxpcFwiLE09VC5hbGlnbnx8XCJmbGlwXCIsWj1ULmZhbGxiYWNrQXhpc1NpZGV8fFwiZW5kXCIsVT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBiP2I6dm9pZCAwLEY9YWYoVSkscT1VP0Y6YixIPWEwKGIpLFY9XCJydGxcIj09PWxrKCksJD17dG9wOlwidG9wXCIscmlnaHQ6XCJyaWdodFwiLGJvdHRvbTpcImJvdHRvbVwiLGxlZnQ6XCJsZWZ0XCIsXCJpbmxpbmUtZW5kXCI6Vj9cImxlZnRcIjpcInJpZ2h0XCIsXCJpbmxpbmUtc3RhcnRcIjpWP1wicmlnaHRcIjpcImxlZnRcIn1bd10sVz1cImNlbnRlclwiPT09Xz8kOmAkeyR9LSR7X31gLFk9e2JvdW5kYXJ5OlwiY2xpcHBpbmctYW5jZXN0b3JzXCI9PT1FP1wiY2xpcHBpbmdBbmNlc3RvcnNcIjpFLHBhZGRpbmc6an0sSz14LnVzZVJlZihudWxsKSxYPWEwKEMpLEc9YTAoayksUT1cImZ1bmN0aW9uXCIhPXR5cGVvZiBDP0M6MCxKPVsoaT1lPT57bGV0IHQ9Y0MoZSx3LFYpLG49XCJmdW5jdGlvblwiPT10eXBlb2YgWC5jdXJyZW50P1guY3VycmVudCh0KTpYLmN1cnJlbnQscj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBHLmN1cnJlbnQ/Ry5jdXJyZW50KHQpOkcuY3VycmVudDtyZXR1cm57bWFpbkF4aXM6bixjcm9zc0F4aXM6cixhbGlnbm1lbnRBeGlzOnJ9fSxsPVtRLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGs/azowLFYsd10sey4uLih2b2lkIDA9PT0odD1pKSYmKHQ9MCkse25hbWU6XCJvZmZzZXRcIixvcHRpb25zOnQsYXN5bmMgZm4oZSl7dmFyIG4scjtsZXR7eDpvLHk6YSxwbGFjZW1lbnQ6aSxtaWRkbGV3YXJlRGF0YTpsfT1lLHM9YXdhaXQgczgoZSx0KTtyZXR1cm4gaT09PShudWxsPT0obj1sLm9mZnNldCk/dm9pZCAwOm4ucGxhY2VtZW50KSYmbnVsbCE9KHI9bC5hcnJvdykmJnIuYWxpZ25tZW50T2Zmc2V0P3t9Ont4Om8rcy54LHk6YStzLnksZGF0YTp7Li4ucyxwbGFjZW1lbnQ6aX19fX0pLG9wdGlvbnM6W2ksbF19KV0sZWU9XCJub25lXCI9PT1NJiZcInNoaWZ0XCIhPT1SLGV0PSFlZSYmKFN8fER8fFwic2hpZnRcIj09PVIpLGVuPVwibm9uZVwiPT09Uj9udWxsOnsuLi57bmFtZTpcImZsaXBcIixvcHRpb25zOm49cz17Li4uWSxtYWluQXhpczohRCYmXCJmbGlwXCI9PT1SLGNyb3NzQXhpczpcImZsaXBcIj09PU0mJlwiYWxpZ25tZW50XCIsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjpafSxhc3luYyBmbihlKXt2YXIgdCxyLG8sYSxpO2xldHtwbGFjZW1lbnQ6bCxtaWRkbGV3YXJlRGF0YTpzLHJlY3RzOmMsaW5pdGlhbFBsYWNlbWVudDp1LHBsYXRmb3JtOmQsZWxlbWVudHM6Zn09ZSx7bWFpbkF4aXM6cD0hMCxjcm9zc0F4aXM6aD0hMCxmYWxsYmFja1BsYWNlbWVudHM6bSxmYWxsYmFja1N0cmF0ZWd5Omc9XCJiZXN0Rml0XCIsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjp5PVwibm9uZVwiLGZsaXBBbGlnbm1lbnQ6dj0hMCwuLi5ifT1pMChuLGUpO2lmKG51bGwhPSh0PXMuYXJyb3cpJiZ0LmFsaWdubWVudE9mZnNldClyZXR1cm57fTtsZXQgQT1pMShsKSx4PWk2KHUpLHc9aTEodSk9PT11LEM9YXdhaXQgKG51bGw9PWQuaXNSVEw/dm9pZCAwOmQuaXNSVEwoZi5mbG9hdGluZykpLF89bXx8KHd8fCF2P1tsbih1KV06ZnVuY3Rpb24oZSl7bGV0IHQ9bG4oZSk7cmV0dXJuW2k5KGUpLHQsaTkodCldfSh1KSksaz1cIm5vbmVcIiE9PXk7IW0mJmsmJl8ucHVzaCguLi5mdW5jdGlvbihlLHQsbixyKXtsZXQgbz1pMihlKSxhPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZVwidG9wXCI6Y2FzZVwiYm90dG9tXCI6aWYobilyZXR1cm4gdD9pNzppODtyZXR1cm4gdD9pODppNztjYXNlXCJsZWZ0XCI6Y2FzZVwicmlnaHRcIjpyZXR1cm4gdD9sZTpsdDtkZWZhdWx0OnJldHVybltdfX0oaTEoZSksXCJzdGFydFwiPT09bixyKTtyZXR1cm4gbyYmKGE9YS5tYXAoZT0+ZStcIi1cIitvKSx0JiYoYT1hLmNvbmNhdChhLm1hcChpOSkpKSksYX0odSx2LHksQykpO2xldCBFPVt1LC4uLl9dLGo9YXdhaXQgczUoZSxiKSxTPVtdLE89KG51bGw9PShyPXMuZmxpcCk/dm9pZCAwOnIub3ZlcmZsb3dzKXx8W107aWYocCYmUy5wdXNoKGpbQV0pLGgpe2xldCBlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0hMSk7bGV0IHI9aTIoZSksbz1pNChpNihlKSksYT1pNShvKSxpPVwieFwiPT09bz9yPT09KG4/XCJlbmRcIjpcInN0YXJ0XCIpP1wicmlnaHRcIjpcImxlZnRcIjpcInN0YXJ0XCI9PT1yP1wiYm90dG9tXCI6XCJ0b3BcIjtyZXR1cm4gdC5yZWZlcmVuY2VbYV0+dC5mbG9hdGluZ1thXSYmKGk9bG4oaSkpLFtpLGxuKGkpXX0obCxjLEMpO1MucHVzaChqW2VbMF1dLGpbZVsxXV0pfWlmKE89Wy4uLk8se3BsYWNlbWVudDpsLG92ZXJmbG93czpTfV0sIVMuZXZlcnkoZT0+ZTw9MCkpe2xldCBlPSgobnVsbD09KG89cy5mbGlwKT92b2lkIDA6by5pbmRleCl8fDApKzEsdD1FW2VdO2lmKHQmJihcImFsaWdubWVudFwiIT09aHx8eD09PWk2KHQpfHxPLmV2ZXJ5KGU9Pmk2KGUucGxhY2VtZW50KSE9PXh8fGUub3ZlcmZsb3dzWzBdPjApKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6T30scmVzZXQ6e3BsYWNlbWVudDp0fX07bGV0IG49bnVsbD09KGE9Ty5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXSk/dm9pZCAwOmEucGxhY2VtZW50O2lmKCFuKXN3aXRjaChnKXtjYXNlXCJiZXN0Rml0XCI6e2xldCBlPW51bGw9PShpPU8uZmlsdGVyKGU9PntpZihrKXtsZXQgdD1pNihlLnBsYWNlbWVudCk7cmV0dXJuIHQ9PT14fHxcInlcIj09PXR9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXSk/dm9pZCAwOmlbMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZVwiaW5pdGlhbFBsYWNlbWVudFwiOm49dX1pZihsIT09bilyZXR1cm57cmVzZXQ6e3BsYWNlbWVudDpufX19cmV0dXJue319fSxvcHRpb25zOltzLGNdfSxlcj1lZT9udWxsOih1PWU9Pnt2YXIgdDtsZXQgbixyLG89bEUoZS5lbGVtZW50cy5mbG9hdGluZykuZG9jdW1lbnRFbGVtZW50O3JldHVybnsuLi5ZLHJvb3RCb3VuZGFyeTpEP3t4OjAseTowLHdpZHRoOm8uY2xpZW50V2lkdGgsaGVpZ2h0Om8uY2xpZW50SGVpZ2h0fTp2b2lkIDAsbWFpbkF4aXM6XCJub25lXCIhPT1NLGNyb3NzQXhpczpldCxsaW1pdGVyOlN8fEQ/dm9pZCAwOnsuLi4odm9pZCAwPT09KHQ9bj0oKT0+e2lmKCFLLmN1cnJlbnQpcmV0dXJue307bGV0e2hlaWdodDplfT1LLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue29mZnNldDplLzIrKFwibnVtYmVyXCI9PXR5cGVvZiBqP2o6MCl9fSkmJih0PXt9KSx7b3B0aW9uczp0LGZuKGUpe2xldHt4Om4seTpyLHBsYWNlbWVudDpvLHJlY3RzOmEsbWlkZGxld2FyZURhdGE6aX09ZSx7b2Zmc2V0Omw9MCxtYWluQXhpczpzPSEwLGNyb3NzQXhpczpjPSEwfT1pMCh0LGUpLHU9e3g6bix5OnJ9LGQ9aTYobyksZj1pNChkKSxwPXVbZl0saD11W2RdLG09aTAobCxlKSxnPVwibnVtYmVyXCI9PXR5cGVvZiBtP3ttYWluQXhpczptLGNyb3NzQXhpczowfTp7bWFpbkF4aXM6MCxjcm9zc0F4aXM6MCwuLi5tfTtpZihzKXtsZXQgZT1cInlcIj09PWY/XCJoZWlnaHRcIjpcIndpZHRoXCIsdD1hLnJlZmVyZW5jZVtmXS1hLmZsb2F0aW5nW2VdK2cubWFpbkF4aXMsbj1hLnJlZmVyZW5jZVtmXSthLnJlZmVyZW5jZVtlXS1nLm1haW5BeGlzO3A8dD9wPXQ6cD5uJiYocD1uKX1pZihjKXt2YXIgeSx2O2xldCBlPVwieVwiPT09Zj9cIndpZHRoXCI6XCJoZWlnaHRcIix0PXM5LmhhcyhpMShvKSksbj1hLnJlZmVyZW5jZVtkXS1hLmZsb2F0aW5nW2VdKyh0JiYobnVsbD09KHk9aS5vZmZzZXQpP3ZvaWQgMDp5W2RdKXx8MCkrKHQ/MDpnLmNyb3NzQXhpcykscj1hLnJlZmVyZW5jZVtkXSthLnJlZmVyZW5jZVtlXSsodD8wOihudWxsPT0odj1pLm9mZnNldCk/dm9pZCAwOnZbZF0pfHwwKS0odD9nLmNyb3NzQXhpczowKTtoPG4/aD1uOmg+ciYmKGg9cil9cmV0dXJue1tmXTpwLFtkXTpofX19KSxvcHRpb25zOltuLHJdfX19LGQ9W1ksUyxELGosTV0sey4uLih2b2lkIDA9PT0ocj11KSYmKHI9e30pLHtuYW1lOlwic2hpZnRcIixvcHRpb25zOnIsYXN5bmMgZm4oZSl7bGV0e3g6dCx5Om4scGxhY2VtZW50Om99PWUse21haW5BeGlzOmE9ITAsY3Jvc3NBeGlzOmk9ITEsbGltaXRlcjpsPXtmbjplPT57bGV0e3g6dCx5Om59PWU7cmV0dXJue3g6dCx5Om59fX0sLi4uc309aTAocixlKSxjPXt4OnQseTpufSx1PWF3YWl0IHM1KGUscyksZD1pNihpMShvKSksZj1pNChkKSxwPWNbZl0saD1jW2RdO2lmKGEpe2xldCBlPVwieVwiPT09Zj9cInRvcFwiOlwibGVmdFwiLHQ9XCJ5XCI9PT1mP1wiYm90dG9tXCI6XCJyaWdodFwiLG49cCt1W2VdLHI9cC11W3RdO3A9aVkobixpVyhwLHIpKX1pZihpKXtsZXQgZT1cInlcIj09PWQ/XCJ0b3BcIjpcImxlZnRcIix0PVwieVwiPT09ZD9cImJvdHRvbVwiOlwicmlnaHRcIixuPWgrdVtlXSxyPWgtdVt0XTtoPWlZKG4saVcoaCxyKSl9bGV0IG09bC5mbih7Li4uZSxbZl06cCxbZF06aH0pO3JldHVybnsuLi5tLGRhdGE6e3g6bS54LXQseTptLnktbixlbmFibGVkOntbZl06YSxbZF06aX19fX19KSxvcHRpb25zOlt1LGRdfSk7XCJzaGlmdFwiPT09Unx8XCJzaGlmdFwiPT09TXx8XCJjZW50ZXJcIj09PV8/Si5wdXNoKGVyLGVuKTpKLnB1c2goZW4sZXIpLEoucHVzaCh7Li4ue25hbWU6XCJzaXplXCIsb3B0aW9uczpvPWY9ey4uLlksYXBwbHkoe2VsZW1lbnRzOntmbG9hdGluZzplfSxyZWN0czp7cmVmZXJlbmNlOnR9LGF2YWlsYWJsZVdpZHRoOm4sYXZhaWxhYmxlSGVpZ2h0OnJ9KXtPYmplY3QuZW50cmllcyh7XCItLWF2YWlsYWJsZS13aWR0aFwiOmAke259cHhgLFwiLS1hdmFpbGFibGUtaGVpZ2h0XCI6YCR7cn1weGAsXCItLWFuY2hvci13aWR0aFwiOmAke3Qud2lkdGh9cHhgLFwiLS1hbmNob3ItaGVpZ2h0XCI6YCR7dC5oZWlnaHR9cHhgfSkuZm9yRWFjaCgoW3Qsbl0pPT57ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pfSl9fSxhc3luYyBmbihlKXt2YXIgdCxuO2xldCByLGEse3BsYWNlbWVudDppLHJlY3RzOmwscGxhdGZvcm06cyxlbGVtZW50czpjfT1lLHthcHBseTp1PSgpPT57fSwuLi5kfT1pMChvLGUpLGY9YXdhaXQgczUoZSxkKSxwPWkxKGkpLGg9aTIoaSksbT1cInlcIj09PWk2KGkpLHt3aWR0aDpnLGhlaWdodDp5fT1sLmZsb2F0aW5nO1widG9wXCI9PT1wfHxcImJvdHRvbVwiPT09cD8ocj1wLGE9aD09PShhd2FpdCAobnVsbD09cy5pc1JUTD92b2lkIDA6cy5pc1JUTChjLmZsb2F0aW5nKSk/XCJzdGFydFwiOlwiZW5kXCIpP1wibGVmdFwiOlwicmlnaHRcIik6KGE9cCxyPVwiZW5kXCI9PT1oP1widG9wXCI6XCJib3R0b21cIik7bGV0IHY9eS1mLnRvcC1mLmJvdHRvbSxiPWctZi5sZWZ0LWYucmlnaHQsQT1pVyh5LWZbcl0sdikseD1pVyhnLWZbYV0sYiksdz0hZS5taWRkbGV3YXJlRGF0YS5zaGlmdCxDPUEsXz14O2lmKG51bGwhPSh0PWUubWlkZGxld2FyZURhdGEuc2hpZnQpJiZ0LmVuYWJsZWQueCYmKF89YiksbnVsbCE9KG49ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkmJm4uZW5hYmxlZC55JiYoQz12KSx3JiYhaCl7bGV0IGU9aVkoZi5sZWZ0LDApLHQ9aVkoZi5yaWdodCwwKSxuPWlZKGYudG9wLDApLHI9aVkoZi5ib3R0b20sMCk7bT9fPWctMiooMCE9PWV8fDAhPT10P2UrdDppWShmLmxlZnQsZi5yaWdodCkpOkM9eS0yKigwIT09bnx8MCE9PXI/bityOmlZKGYudG9wLGYuYm90dG9tKSl9YXdhaXQgdSh7Li4uZSxhdmFpbGFibGVXaWR0aDpfLGF2YWlsYWJsZUhlaWdodDpDfSk7bGV0IGs9YXdhaXQgcy5nZXREaW1lbnNpb25zKGMuZmxvYXRpbmcpO3JldHVybiBnIT09ay53aWR0aHx8eSE9PWsuaGVpZ2h0P3tyZXNldDp7cmVjdHM6ITB9fTp7fX19LG9wdGlvbnM6W2YscF19LChoPSgpPT4oe2VsZW1lbnQ6Sy5jdXJyZW50fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHBhZGRpbmc6TyxvZmZzZXRQYXJlbnQ6XCJmbG9hdGluZ1wifSksbT1bT10sey4uLntuYW1lOlwiYXJyb3dcIixvcHRpb25zOmc9aCxhc3luYyBmbihlKXtsZXR7eDp0LHk6bixwbGFjZW1lbnQ6cixyZWN0czpvLHBsYXRmb3JtOmEsZWxlbWVudHM6aSxtaWRkbGV3YXJlRGF0YTpsfT1lLHtlbGVtZW50OnMscGFkZGluZzpjPTAsb2Zmc2V0UGFyZW50OnU9XCJyZWFsXCJ9PWkwKGcsZSl8fHt9O2lmKG51bGw9PXMpcmV0dXJue307bGV0IGQ9bHIoYyksZj17eDp0LHk6bn0scD1pNChpNihyKSksaD1pNShwKSxtPWF3YWl0IGEuZ2V0RGltZW5zaW9ucyhzKSx5PVwieVwiPT09cCx2PXk/XCJjbGllbnRIZWlnaHRcIjpcImNsaWVudFdpZHRoXCIsYj1vLnJlZmVyZW5jZVtoXStvLnJlZmVyZW5jZVtwXS1mW3BdLW8uZmxvYXRpbmdbaF0sQT1mW3BdLW8ucmVmZXJlbmNlW3BdLHg9XCJyZWFsXCI9PT11P2F3YWl0IGEuZ2V0T2Zmc2V0UGFyZW50Py4ocyk6aS5mbG9hdGluZyx3PWkuZmxvYXRpbmdbdl18fG8uZmxvYXRpbmdbaF07dyYmYXdhaXQgYS5pc0VsZW1lbnQ/Lih4KXx8KHc9aS5mbG9hdGluZ1t2XXx8by5mbG9hdGluZ1toXSk7bGV0IEM9dy8yLW1baF0vMi0xLF89TWF0aC5taW4oZFt5P1widG9wXCI6XCJsZWZ0XCJdLEMpLGs9TWF0aC5taW4oZFt5P1wiYm90dG9tXCI6XCJyaWdodFwiXSxDKSxFPXctbVtoXS1rLGo9dy8yLW1baF0vMisoYi8yLUEvMiksUz1pWShfLGlXKGosRSkpLE89IWwuYXJyb3cmJm51bGwhPWkyKHIpJiZqIT09UyYmby5yZWZlcmVuY2VbaF0vMi0oajxfP186ayktbVtoXS8yPDAsQj1PP2o8Xz9qLV86ai1FOjA7cmV0dXJue1twXTpmW3BdK0IsZGF0YTp7W3BdOlMsY2VudGVyT2Zmc2V0OmotUy1CLC4uLk8mJnthbGlnbm1lbnRPZmZzZXQ6Qn19LHJlc2V0Ok99fX0sb3B0aW9uczpbaCxtXX0pLHsuLi4odm9pZCAwPT09KGE9eSkmJihhPXt9KSx7bmFtZTpcImhpZGVcIixvcHRpb25zOmEsYXN5bmMgZm4oZSl7bGV0e3JlY3RzOnR9PWUse3N0cmF0ZWd5Om49XCJyZWZlcmVuY2VIaWRkZW5cIiwuLi5yfT1pMChhLGUpO3N3aXRjaChuKXtjYXNlXCJyZWZlcmVuY2VIaWRkZW5cIjp7bGV0IG49czMoYXdhaXQgczUoZSx7Li4ucixlbGVtZW50Q29udGV4dDpcInJlZmVyZW5jZVwifSksdC5yZWZlcmVuY2UpO3JldHVybntkYXRhOntyZWZlcmVuY2VIaWRkZW5PZmZzZXRzOm4scmVmZXJlbmNlSGlkZGVuOnM2KG4pfX19Y2FzZVwiZXNjYXBlZFwiOntsZXQgbj1zMyhhd2FpdCBzNShlLHsuLi5yLGFsdEJvdW5kYXJ5OiEwfSksdC5mbG9hdGluZyk7cmV0dXJue2RhdGE6e2VzY2FwZWRPZmZzZXRzOm4sZXNjYXBlZDpzNihuKX19fWRlZmF1bHQ6cmV0dXJue319fX0pLG9wdGlvbnM6W3ksdl19LHtuYW1lOlwidHJhbnNmb3JtT3JpZ2luXCIsZm4oZSl7bGV0e2VsZW1lbnRzOnQsbWlkZGxld2FyZURhdGE6bixwbGFjZW1lbnQ6cixyZWN0czpvLHk6YX09ZSxpPWkxKHIpLGw9aTYoaSkscz1LLmN1cnJlbnQsYz1uLmFycm93Py54fHwwLHU9bi5hcnJvdz8ueXx8MCxkPXM/LmNsaWVudFdpZHRofHwwLGY9cz8uY2xpZW50SGVpZ2h0fHwwLHA9YytkLzIsaD11K2YvMixtPU1hdGguYWJzKG4uc2hpZnQ/Lnl8fDApLGc9by5yZWZlcmVuY2UuaGVpZ2h0LzIseT1tPihcImZ1bmN0aW9uXCI9PXR5cGVvZiBDP0MoY0MoZSx3LFYpKTpDKSx2PXt0b3A6YCR7cH1weCBjYWxjKDEwMCUgKyAke0N9cHgpYCxib3R0b206YCR7cH1weCAkey1DfXB4YCxsZWZ0OmBjYWxjKDEwMCUgKyAke0N9cHgpICR7aH1weGAscmlnaHQ6YCR7LUN9cHggJHtofXB4YH1baV0sYj1gJHtwfXB4ICR7by5yZWZlcmVuY2UueStnLWF9cHhgO3JldHVybiB0LmZsb2F0aW5nLnN0eWxlLnNldFByb3BlcnR5KFwiLS10cmFuc2Zvcm0tb3JpZ2luXCIsZXQmJlwieVwiPT09bCYmeT9iOnYpLHt9fX0sTik7bGV0IGVvPUk7IXomJkkmJihlbz17Li4uSSxlbGVtZW50czp7cmVmZXJlbmNlOm51bGwsZmxvYXRpbmc6bnVsbCxkb21SZWZlcmVuY2U6bnVsbH19KTtsZXQgZWE9eC51c2VNZW1vKCgpPT4oe2VsZW1lbnRSZXNpemU6QiYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFJlc2l6ZU9ic2VydmVyLGxheW91dFNoaWZ0OkImJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcn0pLFtCXSkse3JlZnM6ZWksZWxlbWVudHM6ZWwseDplcyx5OmVjLG1pZGRsZXdhcmVEYXRhOmV1LHVwZGF0ZTplZCxwbGFjZW1lbnQ6ZXAsY29udGV4dDplaCxpc1Bvc2l0aW9uZWQ6ZW0sZmxvYXRpbmdTdHlsZXM6ZWd9PWZ1bmN0aW9uKGU9e30pe2xldHtub2RlSWQ6dH09ZSxuPWFTKHsuLi5lLGVsZW1lbnRzOntyZWZlcmVuY2U6bnVsbCxmbG9hdGluZzpudWxsLC4uLmUuZWxlbWVudHN9fSkscj1lLnJvb3RDb250ZXh0fHxuLG89ci5lbGVtZW50cyxbYSxpXT14LnVzZVN0YXRlKG51bGwpLFtsLHNdPXgudXNlU3RhdGUobnVsbCksYz1vPy5kb21SZWZlcmVuY2V8fGEsdT14LnVzZVJlZihudWxsKSxkPWFrKCk7YXgoKCk9PntjJiYodS5jdXJyZW50PWMpfSxbY10pO2xldCBmPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPXt9KTtsZXR7cGxhY2VtZW50OnQ9XCJib3R0b21cIixzdHJhdGVneTpuPVwiYWJzb2x1dGVcIixtaWRkbGV3YXJlOnI9W10scGxhdGZvcm06byxlbGVtZW50czp7cmVmZXJlbmNlOmEsZmxvYXRpbmc6aX09e30sdHJhbnNmb3JtOmw9ITAsd2hpbGVFbGVtZW50c01vdW50ZWQ6cyxvcGVuOmN9PWUsW3UsZF09eC51c2VTdGF0ZSh7eDowLHk6MCxzdHJhdGVneTpuLHBsYWNlbWVudDp0LG1pZGRsZXdhcmVEYXRhOnt9LGlzUG9zaXRpb25lZDohMX0pLFtmLHBdPXgudXNlU3RhdGUocik7Y3YoZixyKXx8cChyKTtsZXRbaCxtXT14LnVzZVN0YXRlKG51bGwpLFtnLHldPXgudXNlU3RhdGUobnVsbCksdj14LnVzZUNhbGxiYWNrKGU9PntlIT09Qy5jdXJyZW50JiYoQy5jdXJyZW50PWUsbShlKSl9LFtdKSxiPXgudXNlQ2FsbGJhY2soZT0+e2UhPT1fLmN1cnJlbnQmJihfLmN1cnJlbnQ9ZSx5KGUpKX0sW10pLEE9YXx8aCx3PWl8fGcsQz14LnVzZVJlZihudWxsKSxfPXgudXNlUmVmKG51bGwpLGs9eC51c2VSZWYodSksRT1udWxsIT1zLGo9Y3gocyksUz1jeChvKSxPPWN4KGMpLEI9eC51c2VDYWxsYmFjaygoKT0+e2lmKCFDLmN1cnJlbnR8fCFfLmN1cnJlbnQpcmV0dXJuO2xldCBlPXtwbGFjZW1lbnQ6dCxzdHJhdGVneTpuLG1pZGRsZXdhcmU6Zn07Uy5jdXJyZW50JiYoZS5wbGF0Zm9ybT1TLmN1cnJlbnQpLCgoZSx0LG4pPT57bGV0IHI9bmV3IE1hcCxvPXtwbGF0Zm9ybTpjcCwuLi5ufSxhPXsuLi5vLnBsYXRmb3JtLF9jOnJ9O3JldHVybiBzNChlLHQsey4uLm8scGxhdGZvcm06YX0pfSkoQy5jdXJyZW50LF8uY3VycmVudCxlKS50aGVuKGU9PntsZXQgdD17Li4uZSxpc1Bvc2l0aW9uZWQ6ITEhPT1PLmN1cnJlbnR9O1AuY3VycmVudCYmIWN2KGsuY3VycmVudCx0KSYmKGsuY3VycmVudD10LGVmLmZsdXNoU3luYygoKT0+e2QodCl9KSl9KX0sW2YsdCxuLFMsT10pO2N5KCgpPT57ITE9PT1jJiZrLmN1cnJlbnQuaXNQb3NpdGlvbmVkJiYoay5jdXJyZW50LmlzUG9zaXRpb25lZD0hMSxkKGU9Pih7Li4uZSxpc1Bvc2l0aW9uZWQ6ITF9KSkpfSxbY10pO2xldCBQPXgudXNlUmVmKCExKTtjeSgoKT0+KFAuY3VycmVudD0hMCwoKT0+e1AuY3VycmVudD0hMX0pLFtdKSxjeSgoKT0+e2lmKEEmJihDLmN1cnJlbnQ9QSksdyYmKF8uY3VycmVudD13KSxBJiZ3KXtpZihqLmN1cnJlbnQpcmV0dXJuIGouY3VycmVudChBLHcsQik7QigpfX0sW0EsdyxCLGosRV0pO2xldCBJPXgudXNlTWVtbygoKT0+KHtyZWZlcmVuY2U6QyxmbG9hdGluZzpfLHNldFJlZmVyZW5jZTp2LHNldEZsb2F0aW5nOmJ9KSxbdixiXSksej14LnVzZU1lbW8oKCk9Pih7cmVmZXJlbmNlOkEsZmxvYXRpbmc6d30pLFtBLHddKSxUPXgudXNlTWVtbygoKT0+e2xldCBlPXtwb3NpdGlvbjpuLGxlZnQ6MCx0b3A6MH07aWYoIXouZmxvYXRpbmcpcmV0dXJuIGU7bGV0IHQ9Y0Eoei5mbG9hdGluZyx1LngpLHI9Y0Eoei5mbG9hdGluZyx1LnkpO3JldHVybiBsP3suLi5lLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIit0K1wicHgsIFwiK3IrXCJweClcIiwuLi5jYih6LmZsb2F0aW5nKT49MS41JiZ7d2lsbENoYW5nZTpcInRyYW5zZm9ybVwifX06e3Bvc2l0aW9uOm4sbGVmdDp0LHRvcDpyfX0sW24sbCx6LmZsb2F0aW5nLHUueCx1LnldKTtyZXR1cm4geC51c2VNZW1vKCgpPT4oey4uLnUsdXBkYXRlOkIscmVmczpJLGVsZW1lbnRzOnosZmxvYXRpbmdTdHlsZXM6VH0pLFt1LEIsSSx6LFRdKX0oey4uLmUsZWxlbWVudHM6ey4uLm8sLi4ubCYme3JlZmVyZW5jZTpsfX19KSxwPXgudXNlQ2FsbGJhY2soZT0+e2xldCB0PWFUKGUpP3tnZXRCb3VuZGluZ0NsaWVudFJlY3Q6KCk9PmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZ2V0Q2xpZW50UmVjdHM6KCk9PmUuZ2V0Q2xpZW50UmVjdHMoKSxjb250ZXh0RWxlbWVudDplfTplO3ModCksZi5yZWZzLnNldFJlZmVyZW5jZSh0KX0sW2YucmVmc10pLGg9eC51c2VDYWxsYmFjayhlPT57KGFUKGUpfHxudWxsPT09ZSkmJih1LmN1cnJlbnQ9ZSxpKGUpKSwoYVQoZi5yZWZzLnJlZmVyZW5jZS5jdXJyZW50KXx8bnVsbD09PWYucmVmcy5yZWZlcmVuY2UuY3VycmVudHx8bnVsbCE9PWUmJiFhVChlKSkmJmYucmVmcy5zZXRSZWZlcmVuY2UoZSl9LFtmLnJlZnNdKSxtPXgudXNlTWVtbygoKT0+KHsuLi5mLnJlZnMsc2V0UmVmZXJlbmNlOmgsc2V0UG9zaXRpb25SZWZlcmVuY2U6cCxkb21SZWZlcmVuY2U6dX0pLFtmLnJlZnMsaCxwXSksZz14LnVzZU1lbW8oKCk9Pih7Li4uZi5lbGVtZW50cyxkb21SZWZlcmVuY2U6Y30pLFtmLmVsZW1lbnRzLGNdKSx5PXgudXNlTWVtbygoKT0+KHsuLi5mLC4uLnIscmVmczptLGVsZW1lbnRzOmcsbm9kZUlkOnR9KSxbZixtLGcsdCxyXSk7cmV0dXJuIGF4KCgpPT57ci5kYXRhUmVmLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0PXk7bGV0IGU9ZD8ubm9kZXNSZWYuY3VycmVudC5maW5kKGU9PmUuaWQ9PT10KTtlJiYoZS5jb250ZXh0PXkpfSkseC51c2VNZW1vKCgpPT4oey4uLmYsY29udGV4dDp5LHJlZnM6bSxlbGVtZW50czpnfSksW2YsbSxnLHldKX0oe3Jvb3RDb250ZXh0OmVvLHBsYWNlbWVudDpXLG1pZGRsZXdhcmU6SixzdHJhdGVneTpBLHdoaWxlRWxlbWVudHNNb3VudGVkOlA/dm9pZCAwOiguLi5lKT0+Y20oLi4uZSxlYSksbm9kZUlkOkx9KSx7c2lkZVg6ZXksc2lkZVk6ZXZ9PWV1LmFkYXB0aXZlT3JpZ2lufHx7fSxlYj14LnVzZU1lbW8oKCk9Pk4/e3Bvc2l0aW9uOkEsW2V5XTpgJHtlc31weGAsW2V2XTpgJHtlY31weGB9OmVnLFtOLGV5LGV2LEEsZXMsZWMsZWddKSxlQT14LnVzZVJlZihudWxsKTtheCgoKT0+e2lmKCF6KXJldHVybjtsZXQgZT1ILmN1cnJlbnQsdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UoKTplLG49KGNrKHQpP3QuY3VycmVudDp0KXx8bnVsbDtuIT09ZUEuY3VycmVudCYmKGVpLnNldFBvc2l0aW9uUmVmZXJlbmNlKG4pLGVBLmN1cnJlbnQ9bil9LFt6LGVpLHEsSF0pLHgudXNlRWZmZWN0KCgpPT57aWYoIXopcmV0dXJuO2xldCBlPUguY3VycmVudDtcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZjayhlKSYmZS5jdXJyZW50IT09ZUEuY3VycmVudCYmKGVpLnNldFBvc2l0aW9uUmVmZXJlbmNlKGUuY3VycmVudCksZUEuY3VycmVudD1lLmN1cnJlbnQpfSxbeixlaSxxLEhdKSx4LnVzZUVmZmVjdCgoKT0+e2lmKFAmJnomJmVsLmRvbVJlZmVyZW5jZSYmZWwuZmxvYXRpbmcpcmV0dXJuIGNtKGVsLmRvbVJlZmVyZW5jZSxlbC5mbG9hdGluZyxlZCxlYSl9LFtQLHosZWwsZWQsZWFdKTtsZXQgZXg9Y3codyxpMShlcCksViksZXc9aTIoZXApfHxcImNlbnRlclwiLGVDPSEhZXUuaGlkZT8ucmVmZXJlbmNlSGlkZGVuLGVfPXgudXNlTWVtbygoKT0+KHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOmV1LmFycm93Py55LGxlZnQ6ZXUuYXJyb3c/Lnh9KSxbZXUuYXJyb3ddKSxlaz1ldS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MDtyZXR1cm4geC51c2VNZW1vKCgpPT4oe3Bvc2l0aW9uZXJTdHlsZXM6ZWIsYXJyb3dTdHlsZXM6ZV8sYXJyb3dSZWY6SyxhcnJvd1VuY2VudGVyZWQ6ZWssc2lkZTpleCxhbGlnbjpldyxhbmNob3JIaWRkZW46ZUMscmVmczplaSxjb250ZXh0OmVoLGlzUG9zaXRpb25lZDplbSx1cGRhdGU6ZWR9KSxbZWIsZV8sSyxlayxleCxldyxlQyxlaSxlaCxlbSxlZF0pfWZ1bmN0aW9uIGNrKGUpe3JldHVybiBudWxsIT1lJiZcImN1cnJlbnRcImluIGV9ZnVuY3Rpb24gY0UoZSl7bGV0e2NoaWxkcmVuOnQsZWxlbWVudHNSZWY6bixsYWJlbHNSZWY6cixvbk1hcENoYW5nZTpvfT1lLGE9eC51c2VSZWYoMCksaT1hYShjUykuY3VycmVudCxsPWFhKGNqKS5jdXJyZW50LFtzLGNdPXgudXNlU3RhdGUoMCksdT14LnVzZVJlZihzKSxkPWFmKChlLHQpPT57bC5zZXQoZSx0Pz9udWxsKSx1LmN1cnJlbnQrPTEsYyh1LmN1cnJlbnQpfSksZj1hZihlPT57bC5kZWxldGUoZSksdS5jdXJyZW50Kz0xLGModS5jdXJyZW50KX0pLHA9eC51c2VNZW1vKCgpPT57bGV0IGU9bmV3IE1hcDtyZXR1cm4gQXJyYXkuZnJvbShsLmtleXMoKSkuc29ydChjTykuZm9yRWFjaCgodCxuKT0+e2xldCByPWwuZ2V0KHQpPz97fTtlLnNldCh0LHsuLi5yLGluZGV4Om59KX0pLGV9LFtsLHNdKTtheCgoKT0+e3UuY3VycmVudD09PXMmJihuLmN1cnJlbnQubGVuZ3RoIT09cC5zaXplJiYobi5jdXJyZW50Lmxlbmd0aD1wLnNpemUpLHImJnIuY3VycmVudC5sZW5ndGghPT1wLnNpemUmJihyLmN1cnJlbnQubGVuZ3RoPXAuc2l6ZSkpLG8/LihwKX0sW28scCxuLHIscyx1XSk7bGV0IGg9YWYoZT0+KGkuYWRkKGUpLCgpPT57aS5kZWxldGUoZSl9KSk7YXgoKCk9PntpLmZvckVhY2goZT0+ZShwKSl9LFtpLHBdKTtsZXQgbT14LnVzZU1lbW8oKCk9Pih7cmVnaXN0ZXI6ZCx1bnJlZ2lzdGVyOmYsc3Vic2NyaWJlTWFwQ2hhbmdlOmgsZWxlbWVudHNSZWY6bixsYWJlbHNSZWY6cixuZXh0SW5kZXhSZWY6YX0pLFtkLGYsaCxuLHIsYV0pO3JldHVybigwLGIuanN4KShzbC5Qcm92aWRlcix7dmFsdWU6bSxjaGlsZHJlbjp0fSl9ZnVuY3Rpb24gY2ooKXtyZXR1cm4gbmV3IE1hcH1mdW5jdGlvbiBjUygpe3JldHVybiBuZXcgU2V0fWZ1bmN0aW9uIGNPKGUsdCl7bGV0IG49ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KTtyZXR1cm4gbiZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lOR3x8biZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWT8tMTpuJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HfHxuJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlM/MTowfWxldCBjQj14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXQgbix7Y3V0b3V0OnIsLi4ub309ZTtpZihyKXtsZXQgZT1yPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtuPWBwb2x5Z29uKFxuICAgICAgMCUgMCUsXG4gICAgICAxMDAlIDAlLFxuICAgICAgMTAwJSAxMDAlLFxuICAgICAgMCUgMTAwJSxcbiAgICAgIDAlIDAlLFxuICAgICAgJHtlLmxlZnR9cHggJHtlLnRvcH1weCxcbiAgICAgICR7ZS5sZWZ0fXB4ICR7ZS5ib3R0b219cHgsXG4gICAgICAke2UucmlnaHR9cHggJHtlLmJvdHRvbX1weCxcbiAgICAgICR7ZS5yaWdodH1weCAke2UudG9wfXB4LFxuICAgICAgJHtlLmxlZnR9cHggJHtlLnRvcH1weFxuICAgIClgfXJldHVybigwLGIuanN4KShcImRpdlwiLHtyZWY6dCxyb2xlOlwicHJlc2VudGF0aW9uXCIsXCJkYXRhLWJhc2UtdWktaW5lcnRcIjpcIlwiLC4uLm8sc3R5bGU6e3Bvc2l0aW9uOlwiZml4ZWRcIixpbnNldDowLHVzZXJTZWxlY3Q6XCJub25lXCIsV2Via2l0VXNlclNlbGVjdDpcIm5vbmVcIixjbGlwUGF0aDpufX0pfSksY1A9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7dmFyIG47bGV0e2FuY2hvcjpyLHBvc2l0aW9uTWV0aG9kOm89XCJhYnNvbHV0ZVwiLGNsYXNzTmFtZTphLHJlbmRlcjppLHNpZGU6bCxhbGlnbjpzLHNpZGVPZmZzZXQ6Yz0wLGFsaWduT2Zmc2V0OnU9MCxjb2xsaXNpb25Cb3VuZGFyeTpkPVwiY2xpcHBpbmctYW5jZXN0b3JzXCIsY29sbGlzaW9uUGFkZGluZzpmPTUsYXJyb3dQYWRkaW5nOnA9NSxzdGlja3k6aD0hMSx0cmFja0FuY2hvcjptPSEwLGNvbGxpc2lvbkF2b2lkYW5jZTpnPWlaLC4uLnl9PWUse29wZW46dixzZXRPcGVuOkEsZmxvYXRpbmdSb290Q29udGV4dDp3LHNldFBvc2l0aW9uZXJFbGVtZW50OkMsaXRlbURvbUVsZW1lbnRzOl8saXRlbUxhYmVsczprLG1vdW50ZWQ6RSxtb2RhbDpqLGxhc3RPcGVuQ2hhbmdlUmVhc29uOlMscGFyZW50Ok8sc2V0SG92ZXJFbmFibGVkOkIsdHJpZ2dlckVsZW1lbnQ6UH09bEEoKSxJPWZ1bmN0aW9uKCl7bGV0IGU9eC51c2VDb250ZXh0KHNKKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogPE1lbnUuUG9ydGFsPiBpcyBtaXNzaW5nLlwiKTtyZXR1cm4gZX0oKSx6PWZ1bmN0aW9uKGUpe2xldCB0PWFiKCksbj1haygpLHI9YV8oKSxvPXI7cmV0dXJuIGF4KCgpPT57aWYoIXQpcmV0dXJuO2xldCBlPXtpZDp0LHBhcmVudElkOm99O3JldHVybiBuPy5hZGROb2RlKGUpLCgpPT57bj8ucmVtb3ZlTm9kZShlKX19LFtuLHQsb10pLHR9KCksVD1hXygpLEQ9bEQoITApLEw9cixOPWMsUj11LE09cztcImNvbnRleHQtbWVudVwiPT09Ty50eXBlJiYoTD1PLmNvbnRleHQ/LmFuY2hvcj8/cixNPWUuYWxpZ24/P1wic3RhcnRcIixSPWUuYWxpZ25PZmZzZXQ/PzIsTj1lLnNpZGVPZmZzZXQ/Py01KTtsZXQgWj1sLFU9TTtcIm1lbnVcIj09PU8udHlwZT8oWj1aPz9cImlubGluZS1lbmRcIixVPVU/P1wic3RhcnRcIik6XCJtZW51YmFyXCI9PT1PLnR5cGUmJihaPVo/P1wiYm90dG9tXCIsVT1VPz9cInN0YXJ0XCIpO2xldCBGPVwiY29udGV4dC1tZW51XCI9PT1PLnR5cGUscT1jXyh7YW5jaG9yOkwsZmxvYXRpbmdSb290Q29udGV4dDp3LHBvc2l0aW9uTWV0aG9kOkQ/XCJmaXhlZFwiOm8sbW91bnRlZDpFLHNpZGU6WixzaWRlT2Zmc2V0Ok4sYWxpZ246VSxhbGlnbk9mZnNldDpSLGFycm93UGFkZGluZzpGPzA6cCxjb2xsaXNpb25Cb3VuZGFyeTpkLGNvbGxpc2lvblBhZGRpbmc6ZixzdGlja3k6aCxub2RlSWQ6eixrZWVwTW91bnRlZDpJLHRyYWNrQW5jaG9yOm0sY29sbGlzaW9uQXZvaWRhbmNlOmcsc2hpZnRDcm9zc0F4aXM6Rn0pLHtldmVudHM6SH09YWsoKSxWPXgudXNlTWVtbygoKT0+e2xldCBlPXt9O3JldHVybiB2fHwoZS5wb2ludGVyRXZlbnRzPVwibm9uZVwiKSx7cm9sZTpcInByZXNlbnRhdGlvblwiLGhpZGRlbjohRSxzdHlsZTp7Li4ucS5wb3NpdGlvbmVyU3R5bGVzLC4uLmV9fX0sW3YsRSxxLnBvc2l0aW9uZXJTdHlsZXNdKTt4LnVzZUVmZmVjdCgoKT0+e2Z1bmN0aW9uIGUoZSl7ZS5vcGVuPyhlLnBhcmVudE5vZGVJZD09PXomJkIoITEpLGUubm9kZUlkIT09eiYmZS5wYXJlbnROb2RlSWQ9PT1UJiZBKCExLHZvaWQgMCxcInNpYmxpbmctb3BlblwiKSk6ZS5wYXJlbnROb2RlSWQ9PT16JiZCKCEwKX1yZXR1cm4gSC5vbihcIm9wZW5jaGFuZ2VcIixlKSwoKT0+e0gub2ZmKFwib3BlbmNoYW5nZVwiLGUpfX0sW0gseixULEEsQl0pLHgudXNlRWZmZWN0KCgpPT57SC5lbWl0KFwib3BlbmNoYW5nZVwiLHtvcGVuOnYsbm9kZUlkOnoscGFyZW50Tm9kZUlkOlR9KX0sW0gsdix6LFRdKTtsZXQgJD14LnVzZU1lbW8oKCk9Pih7b3Blbjp2LHNpZGU6cS5zaWRlLGFsaWduOnEuYWxpZ24sYW5jaG9ySGlkZGVuOnEuYW5jaG9ySGlkZGVuLG5lc3RlZDpcIm1lbnVcIj09PU8udHlwZX0pLFt2LHEuc2lkZSxxLmFsaWduLHEuYW5jaG9ySGlkZGVuLE8udHlwZV0pLFc9eC51c2VNZW1vKCgpPT4oe3NpZGU6cS5zaWRlLGFsaWduOnEuYWxpZ24sYXJyb3dSZWY6cS5hcnJvd1JlZixhcnJvd1VuY2VudGVyZWQ6cS5hcnJvd1VuY2VudGVyZWQsYXJyb3dTdHlsZXM6cS5hcnJvd1N0eWxlcyxmbG9hdGluZ0NvbnRleHQ6cS5jb250ZXh0fSksW3Euc2lkZSxxLmFsaWduLHEuYXJyb3dSZWYscS5hcnJvd1VuY2VudGVyZWQscS5hcnJvd1N0eWxlcyxxLmNvbnRleHRdKSxZPXNuKFwiZGl2XCIsZSx7c3RhdGU6JCxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOnNlLHJlZjpbdCxDXSxwcm9wczp7Li4uViwuLi55fX0pLEs9RSYmXCJtZW51XCIhPT1PLnR5cGUmJihcIm1lbnViYXJcIiE9PU8udHlwZSYmaiYmXCJ0cmlnZ2VyLWhvdmVyXCIhPT1TfHxcIm1lbnViYXJcIj09PU8udHlwZSYmTy5jb250ZXh0Lm1vZGFsKSxYPW51bGw7cmV0dXJuXCJtZW51YmFyXCI9PT1PLnR5cGU/WD1PLmNvbnRleHQuY29udGVudEVsZW1lbnQ6dm9pZCAwPT09Ty50eXBlJiYoWD1QKSwoMCxiLmpzeHMpKHMxLlByb3ZpZGVyLHt2YWx1ZTpXLGNoaWxkcmVuOltLJiYoMCxiLmpzeCkoY0Ise3JlZjpcImNvbnRleHQtbWVudVwiPT09Ty50eXBlfHxcIm5lc3RlZC1jb250ZXh0LW1lbnVcIj09PU8udHlwZT9PLmNvbnRleHQuaW50ZXJuYWxCYWNrZHJvcFJlZjpudWxsLGluZXJ0OihuPSF2LHN0Pj0xOT9uOm4/XCJ0cnVlXCI6dm9pZCAwKSxjdXRvdXQ6WH0pLCgwLGIuanN4KShhRSx7aWQ6eixjaGlsZHJlbjooMCxiLmpzeCkoY0Use2VsZW1lbnRzUmVmOl8sbGFiZWxzUmVmOmssY2hpbGRyZW46WX0pfSldfSl9KSxjST17aW5lcnQ6bmV3IFdlYWtNYXAsXCJhcmlhLWhpZGRlblwiOm5ldyBXZWFrTWFwLG5vbmU6bmV3IFdlYWtNYXB9O2Z1bmN0aW9uIGN6KGUpe3JldHVyblwiaW5lcnRcIj09PWU/Y0kuaW5lcnQ6XCJhcmlhLWhpZGRlblwiPT09ZT9jSVtcImFyaWEtaGlkZGVuXCJdOmNJLm5vbmV9bGV0IGNUPW5ldyBXZWFrU2V0LGNEPXt9LGNMPTAsY049ZT0+ZSYmKGUuaG9zdHx8Y04oZS5wYXJlbnROb2RlKSksY1I9W107ZnVuY3Rpb24gY00oKXtjUj1jUi5maWx0ZXIoZT0+ZS5pc0Nvbm5lY3RlZCl9ZnVuY3Rpb24gY1ooKXtyZXR1cm4gY00oKSxjUltjUi5sZW5ndGgtMV19ZnVuY3Rpb24gY1UoZSx0KXtpZighdC5jdXJyZW50LmluY2x1ZGVzKFwiZmxvYXRpbmdcIikmJiFlLmdldEF0dHJpYnV0ZShcInJvbGVcIik/LmluY2x1ZGVzKFwiZGlhbG9nXCIpKXJldHVybjtsZXQgbj1zVSgpLHI9c00oZSxuKS5maWx0ZXIoZT0+e2xldCB0PWUuZ2V0QXR0cmlidXRlKFwiZGF0YS10YWJpbmRleFwiKXx8XCJcIjtyZXR1cm4gc1ooZSxuKXx8ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXRhYmluZGV4XCIpJiYhdC5zdGFydHNXaXRoKFwiLVwiKX0pLG89ZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKTt0LmN1cnJlbnQuaW5jbHVkZXMoXCJmbG9hdGluZ1wiKXx8MD09PXIubGVuZ3RoP1wiMFwiIT09byYmZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiMFwiKTooXCItMVwiIT09b3x8ZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXRhYmluZGV4XCIpJiZcIi0xXCIhPT1lLmdldEF0dHJpYnV0ZShcImRhdGEtdGFiaW5kZXhcIikpJiYoZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIiksZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXRhYmluZGV4XCIsXCItMVwiKSl9ZnVuY3Rpb24gY0YoZSl7bGV0e2NvbnRleHQ6dCxjaGlsZHJlbjpuLGRpc2FibGVkOnI9ITEsb3JkZXI6bz1bXCJjb250ZW50XCJdLGluaXRpYWxGb2N1czphPTAscmV0dXJuRm9jdXM6aT0hMCxyZXN0b3JlRm9jdXM6bD0hMSxtb2RhbDpzPSEwLGNsb3NlT25Gb2N1c091dDpjPSEwLGdldEluc2lkZUVsZW1lbnRzOnU9KCk9PltdfT1lLHtvcGVuOmQsb25PcGVuQ2hhbmdlOmYsZXZlbnRzOnAsZGF0YVJlZjpoLGVsZW1lbnRzOntkb21SZWZlcmVuY2U6bSxmbG9hdGluZzpnfX09dCx5PWFmKCgpPT5oLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0Py5ub2RlSWQpLHY9YWYodSksQT1cIm51bWJlclwiPT10eXBlb2YgYSYmYTwwLHc9aXgobSkmJkEsQz1hMChvKSxfPWEwKGEpLGs9YTAoaSksRT1haygpLGo9c0soKSxTPXgudXNlUmVmKG51bGwpLE89eC51c2VSZWYobnVsbCksQj14LnVzZVJlZighMSksUD14LnVzZVJlZighMSksST14LnVzZVJlZigtMSksej1hYygpLFQ9bnVsbCE9aixEPWl3KGcpLEw9YWYoKGU9RCk9PmU/c1IoZSxzVSgpKTpbXSksTj1hZihlPT57bGV0IHQ9TChlKTtyZXR1cm4gQy5jdXJyZW50Lm1hcCgoKT0+dCkuZmlsdGVyKEJvb2xlYW4pLmZsYXQoKX0pO3gudXNlRWZmZWN0KCgpPT57aWYocnx8IXMpcmV0dXJuO2Z1bmN0aW9uIGUoZSl7XCJUYWJcIj09PWUua2V5JiZpZyhELGltKGliKEQpKSkmJjA9PT1MKCkubGVuZ3RoJiYhdyYmaXIoZSl9bGV0IHQ9aWIoRCk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKX19LFtyLG0sRCxzLEMsdyxMLE5dKSx4LnVzZUVmZmVjdCgoKT0+e2lmKCFyJiZnKXJldHVybiBnLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsZSksKCk9PntnLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsZSl9O2Z1bmN0aW9uIGUoZSl7bGV0IHQ9aXkoZSksbj1MKCkuaW5kZXhPZih0KTstMSE9PW4mJihJLmN1cnJlbnQ9bil9fSxbcixnLExdKSx4LnVzZUVmZmVjdCgoKT0+e2lmKHJ8fCFjKXJldHVybjtmdW5jdGlvbiBlKCl7UC5jdXJyZW50PSEwfWZ1bmN0aW9uIHQoZSl7bGV0IHQ9ZS5yZWxhdGVkVGFyZ2V0LG49ZS5jdXJyZW50VGFyZ2V0LHI9aXkoZSk7cXVldWVNaWNyb3Rhc2soKCk9PntsZXQgbz15KCksYT0hKGlnKG0sdCl8fGlnKGcsdCl8fGlnKHQsZyl8fGlnKGo/LnBvcnRhbE5vZGUsdCl8fHQ/Lmhhc0F0dHJpYnV0ZShpQyhcImZvY3VzLWd1YXJkXCIpKXx8RSYmKGlTKEUubm9kZXNSZWYuY3VycmVudCxvKS5maW5kKGU9PmlnKGUuY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcsdCl8fGlnKGUuY29udGV4dD8uZWxlbWVudHMuZG9tUmVmZXJlbmNlLHQpKXx8aU8oRS5ub2Rlc1JlZi5jdXJyZW50LG8pLmZpbmQoZT0+W2UuY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcsaXcoZS5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZyldLmluY2x1ZGVzKHQpfHxlLmNvbnRleHQ/LmVsZW1lbnRzLmRvbVJlZmVyZW5jZT09PXQpKSk7aWYobj09PW0mJkQmJmNVKEQsQyksbCYmbiE9PW0mJiFyPy5pc0Nvbm5lY3RlZCYmaW0oaWIoRCkpPT09aWIoRCkuYm9keSl7YUQoRCkmJkQuZm9jdXMoKTtsZXQgZT1JLmN1cnJlbnQsdD1MKCksbj10W2VdfHx0W3QubGVuZ3RoLTFdfHxEO2FEKG4pJiZuLmZvY3VzKCl9aWYoaC5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZSl7aC5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMTtyZXR1cm59aWYoUC5jdXJyZW50KXtQLmN1cnJlbnQ9ITE7cmV0dXJufSh3fHwhcykmJnQmJmEmJnQhPT1jWigpJiYoQi5jdXJyZW50PSEwLGYoITEsZSxcImZvY3VzLW91dFwiKSl9KX1sZXQgbj0hISghRSYmaik7ZnVuY3Rpb24gbygpe2guY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITAsei5zdGFydCgwLCgpPT57aC5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMX0pfWlmKGcmJmFEKG0pKXJldHVybiBtLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLHQpLG0uYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsZSksZy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIix0KSxuJiZnLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLG8sITApLCgpPT57bS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIix0KSxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLGUpLGcucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsdCksbiYmZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIixvLCEwKX19LFtyLG0sZyxELHMsRSxqLGYsYyxsLEwsdyx5LEMsaCx6XSk7bGV0IFI9eC51c2VSZWYobnVsbCksTT14LnVzZVJlZihudWxsKSxaPWxZKFIsaj8uYmVmb3JlSW5zaWRlUmVmKSxVPWxZKE0saj8uYWZ0ZXJJbnNpZGVSZWYpO3gudXNlRWZmZWN0KCgpPT57aWYocnx8IWcpcmV0dXJuO2xldCBlPUFycmF5LmZyb20oaj8ucG9ydGFsTm9kZT8ucXVlcnlTZWxlY3RvckFsbChgWyR7aUMoXCJwb3J0YWxcIil9XWApfHxbXSksdD1FP2lPKEUubm9kZXNSZWYuY3VycmVudCx5KCkpOltdLG49ZnVuY3Rpb24oZSx0PSExLG49ITEpe2xldCByPWliKGVbMF0pLmJvZHk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2xldCBvLGE9XCJkYXRhLWJhc2UtdWktaW5lcnRcIixpPXI/XCJpbmVydFwiOm4/XCJhcmlhLWhpZGRlblwiOm51bGwsbD0obz10LGUubWFwKGU9PntpZihvLmNvbnRhaW5zKGUpKXJldHVybiBlO2xldCB0PWNOKGUpO3JldHVybiBvLmNvbnRhaW5zKHQpP3Q6bnVsbH0pLmZpbHRlcihlPT5udWxsIT1lKSkscz1uZXcgU2V0LGM9bmV3IFNldChsKSx1PVtdO2NEW2FdfHwoY0RbYV09bmV3IFdlYWtNYXApO2xldCBkPWNEW2FdO3JldHVybiBsLmZvckVhY2goZnVuY3Rpb24gZSh0KXshKCF0fHxzLmhhcyh0KSkmJihzLmFkZCh0KSx0LnBhcmVudE5vZGUmJmUodC5wYXJlbnROb2RlKSl9KSxmdW5jdGlvbiBlKHQpeyF0fHxjLmhhcyh0KXx8W10uZm9yRWFjaC5jYWxsKHQuY2hpbGRyZW4sdD0+e2lmKFwic2NyaXB0XCIhPT1hQih0KSlpZihzLmhhcyh0KSllKHQpO2Vsc2V7bGV0IGU9aT90LmdldEF0dHJpYnV0ZShpKTpudWxsLG49bnVsbCE9PWUmJlwiZmFsc2VcIiE9PWUscj1jeihpKSxvPShyLmdldCh0KXx8MCkrMSxsPShkLmdldCh0KXx8MCkrMTtyLnNldCh0LG8pLGQuc2V0KHQsbCksdS5wdXNoKHQpLDE9PT1vJiZuJiZjVC5hZGQodCksMT09PWwmJnQuc2V0QXR0cmlidXRlKGEsXCJcIiksIW4mJmkmJnQuc2V0QXR0cmlidXRlKGksXCJpbmVydFwiPT09aT9cIlwiOlwidHJ1ZVwiKX19KX0odCkscy5jbGVhcigpLGNMKz0xLCgpPT57dS5mb3JFYWNoKGU9PntsZXQgdD1jeihpKSxuPSh0LmdldChlKXx8MCktMSxyPShkLmdldChlKXx8MCktMTt0LnNldChlLG4pLGQuc2V0KGUsciksbnx8KCFjVC5oYXMoZSkmJmkmJmUucmVtb3ZlQXR0cmlidXRlKGkpLGNULmRlbGV0ZShlKSkscnx8ZS5yZW1vdmVBdHRyaWJ1dGUoYSl9KSwoY0wtPTEpfHwoY0kuaW5lcnQ9bmV3IFdlYWtNYXAsY0lbXCJhcmlhLWhpZGRlblwiXT1uZXcgV2Vha01hcCxjSS5ub25lPW5ldyBXZWFrTWFwLGNUPW5ldyBXZWFrU2V0LGNEPXt9KX19KGUuY29uY2F0KEFycmF5LmZyb20oci5xdWVyeVNlbGVjdG9yQWxsKFwiW2FyaWEtbGl2ZV1cIikpKSxyLHQsbil9KFtnLHQuZmluZChlPT5peChlLmNvbnRleHQ/LmVsZW1lbnRzLmRvbVJlZmVyZW5jZXx8bnVsbCkpPy5jb250ZXh0Py5lbGVtZW50cy5kb21SZWZlcmVuY2UsLi4uZSwuLi52KCksUy5jdXJyZW50LE8uY3VycmVudCxSLmN1cnJlbnQsTS5jdXJyZW50LGo/LmJlZm9yZU91dHNpZGVSZWYuY3VycmVudCxqPy5hZnRlck91dHNpZGVSZWYuY3VycmVudCx3P206bnVsbF0uZmlsdGVyKGU9Pm51bGwhPWUpLHN8fHcpO3JldHVybigpPT57bigpfX0sW3IsbSxnLHMsQyxqLHcsRSx5LHZdKSxheCgoKT0+e2lmKHJ8fCFhRChEKSlyZXR1cm47bGV0IGU9aW0oaWIoRCkpO3F1ZXVlTWljcm90YXNrKCgpPT57bGV0IHQ9TihEKSxuPV8uY3VycmVudCxyPShcIm51bWJlclwiPT10eXBlb2Ygbj90W25dOm4uY3VycmVudCl8fEQsbz1pZyhELGUpO0F8fG98fCFkfHxsZihyLHtwcmV2ZW50U2Nyb2xsOnI9PT1EfSl9KX0sW3IsZCxELEEsTixfXSksYXgoKCk9Pnt2YXIgZTtpZihyfHwhRClyZXR1cm47bGV0IHQ9aWIoRCk7ZnVuY3Rpb24gbih7cmVhc29uOmUsZXZlbnQ6dCxuZXN0ZWQ6bn0pe2lmKFtcImhvdmVyXCIsXCJzYWZlLXBvbHlnb25cIl0uaW5jbHVkZXMoZSkmJlwibW91c2VsZWF2ZVwiPT09dC50eXBlJiYoQi5jdXJyZW50PSEwKSxcIm91dHNpZGUtcHJlc3NcIj09PWUpaWYobilCLmN1cnJlbnQ9ITE7ZWxzZSBpZihpbyh0KXx8aWEodCkpQi5jdXJyZW50PSExO2Vsc2V7bGV0IGU9ITE7ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5mb2N1cyh7Z2V0IHByZXZlbnRTY3JvbGwoKXtyZXR1cm4gZT0hMCwhMX19KSxlP0IuY3VycmVudD0hMTpCLmN1cnJlbnQ9ITB9fWU9aW0odCksY00oKSxlJiZcImJvZHlcIiE9PWFCKGUpJiYoY1IucHVzaChlKSxjUi5sZW5ndGg+MjAmJihjUj1jUi5zbGljZSgtMjApKSkscC5vbihcIm9wZW5jaGFuZ2VcIixuKTtsZXQgbz10LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO3JldHVybiBvLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKSxvLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLE9iamVjdC5hc3NpZ24oby5zdHlsZSxzZiksVCYmbSYmbS5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmVuZFwiLG8pLCgpPT57cC5vZmYoXCJvcGVuY2hhbmdlXCIsbik7bGV0IGU9aW0odCkscj1pZyhnLGUpfHxFJiZpUyhFLm5vZGVzUmVmLmN1cnJlbnQseSgpLCExKS5zb21lKHQ9PmlnKHQuY29udGV4dD8uZWxlbWVudHMuZmxvYXRpbmcsZSkpLGE9ZnVuY3Rpb24oKXtpZihcImJvb2xlYW5cIj09dHlwZW9mIGsuY3VycmVudCl7bGV0IGU9bXx8Y1ooKTtyZXR1cm4gZSYmZS5pc0Nvbm5lY3RlZD9lOm99cmV0dXJuIGsuY3VycmVudC5jdXJyZW50fHxvfSgpO3F1ZXVlTWljcm90YXNrKCgpPT57bGV0IG49ZnVuY3Rpb24oZSl7bGV0IHQ9c1UoKTtyZXR1cm4gc1ooZSx0KT9lOnNSKGUsdClbMF18fGV9KGEpO2suY3VycmVudCYmIUIuY3VycmVudCYmYUQobikmJihuPT09ZXx8ZT09PXQuYm9keXx8cikmJm4uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxvLnJlbW92ZSgpfSl9fSxbcixnLEQsayxoLHAsRSxULG0seV0pLHgudXNlRWZmZWN0KCgpPT57cXVldWVNaWNyb3Rhc2soKCk9PntCLmN1cnJlbnQ9ITF9KX0sW3JdKSx4LnVzZUVmZmVjdCgoKT0+e2lmKHJ8fCFkKXJldHVybjtmdW5jdGlvbiBlKGUpe2xldCB0PWl5KGUpO3Q/LmNsb3Nlc3QoXCJbZGF0YS1iYXNlLXVpLWNsaWNrLXRyaWdnZXJdXCIpJiYoUC5jdXJyZW50PSEwKX1sZXQgdD1pYihEKTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixlLCEwKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsZSwhMCl9fSxbcixkLERdKSxheCgoKT0+e2lmKCFyJiZqKXJldHVybiBqLnNldEZvY3VzTWFuYWdlclN0YXRlKHttb2RhbDpzLGNsb3NlT25Gb2N1c091dDpjLG9wZW46ZCxvbk9wZW5DaGFuZ2U6Zixkb21SZWZlcmVuY2U6bX0pLCgpPT57ai5zZXRGb2N1c01hbmFnZXJTdGF0ZShudWxsKX19LFtyLGoscyxkLGYsYyxtXSksYXgoKCk9PntpZighciYmRClyZXR1cm4gY1UoRCxDKSwoKT0+e3F1ZXVlTWljcm90YXNrKGNNKX19LFtyLEQsQ10pO2xldCBGPSFyJiYoIXN8fCF3KSYmKFR8fHMpO3JldHVybigwLGIuanN4cykoeC5GcmFnbWVudCx7Y2hpbGRyZW46W0YmJigwLGIuanN4KShzcCx7XCJkYXRhLXR5cGVcIjpcImluc2lkZVwiLHJlZjpaLG9uRm9jdXM6ZT0+e2lmKHMpe2xldCBlPU4oKTtsZihlW2UubGVuZ3RoLTFdKX1lbHNlIGlmKGo/LnByZXNlcnZlVGFiT3JkZXImJmoucG9ydGFsTm9kZSlpZihCLmN1cnJlbnQ9ITEsc1YoZSxqLnBvcnRhbE5vZGUpKXtsZXQgZT1zcShtKTtlPy5mb2N1cygpfWVsc2Ugai5iZWZvcmVPdXRzaWRlUmVmLmN1cnJlbnQ/LmZvY3VzKCl9fSksbixGJiYoMCxiLmpzeCkoc3Ase1wiZGF0YS10eXBlXCI6XCJpbnNpZGVcIixyZWY6VSxvbkZvY3VzOmU9PntpZihzKWxmKE4oKVswXSk7ZWxzZSBpZihqPy5wcmVzZXJ2ZVRhYk9yZGVyJiZqLnBvcnRhbE5vZGUpaWYoYyYmKEIuY3VycmVudD0hMCksc1YoZSxqLnBvcnRhbE5vZGUpKXtsZXQgZT1zSChtKTtlPy5mb2N1cygpfWVsc2Ugai5hZnRlck91dHNpZGVSZWYuY3VycmVudD8uZm9jdXMoKX19KV19KX1sZXQgY3E9ey4uLnNlLC4uLmwwfSxjSD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7cmVuZGVyOm4sY2xhc3NOYW1lOnIsZmluYWxGb2N1czpvLC4uLmF9PWUse29wZW46aSxzZXRPcGVuOmwscG9wdXBSZWY6cyx0cmFuc2l0aW9uU3RhdHVzOmMscG9wdXBQcm9wczp1LG1vdW50ZWQ6ZCxpbnN0YW50VHlwZTpmLG9uT3BlbkNoYW5nZUNvbXBsZXRlOnAscGFyZW50OmgsbGFzdE9wZW5DaGFuZ2VSZWFzb246bSxyb290SWQ6Z309bEEoKSx7c2lkZTp5LGFsaWduOnYsZmxvYXRpbmdDb250ZXh0OkF9PWZ1bmN0aW9uKCl7bGV0IGU9eC51c2VDb250ZXh0KHMxKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogTWVudVBvc2l0aW9uZXJDb250ZXh0IGlzIG1pc3NpbmcuIE1lbnVQb3NpdGlvbmVyIHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8TWVudS5Qb3NpdGlvbmVyPi5cIik7cmV0dXJuIGV9KCk7bEMoe29wZW46aSxyZWY6cyxvbkNvbXBsZXRlKCl7aSYmcD8uKCEwKX19KTtsZXR7ZXZlbnRzOnd9PWFrKCk7eC51c2VFZmZlY3QoKCk9PntmdW5jdGlvbiBlKGUpe2woITEsZS5kb21FdmVudCxlLnJlYXNvbil9cmV0dXJuIHcub24oXCJjbG9zZVwiLGUpLCgpPT57dy5vZmYoXCJjbG9zZVwiLGUpfX0sW3csbF0pO2xldCBDPXNuKFwiZGl2XCIsZSx7c3RhdGU6eC51c2VNZW1vKCgpPT4oe3RyYW5zaXRpb25TdGF0dXM6YyxzaWRlOnksYWxpZ246dixvcGVuOmksbmVzdGVkOlwibWVudVwiPT09aC50eXBlLGluc3RhbnQ6Zn0pLFtjLHksdixpLGgudHlwZSxmXSkscmVmOlt0LHNdLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6Y3EscHJvcHM6W3UsXCJzdGFydGluZ1wiPT09Yz9pTjppUixhLHtcImRhdGEtcm9vdG93bmVyaWRcIjpnfV19KSxfPXZvaWQgMD09PWgudHlwZXx8XCJjb250ZXh0LW1lbnVcIj09PWgudHlwZTtyZXR1cm5cIm1lbnViYXJcIj09PWgudHlwZSYmXCJvdXRzaWRlLXByZXNzXCIhPT1tJiYoXz0hMCksKDAsYi5qc3gpKGNGLHtjb250ZXh0OkEsbW9kYWw6ITEsZGlzYWJsZWQ6IWQscmV0dXJuRm9jdXM6b3x8Xyxpbml0aWFsRm9jdXM6XCJtZW51XCI9PT1oLnR5cGU/LTE6MCxyZXN0b3JlRm9jdXM6ITAsY2hpbGRyZW46Q30pfSksY1Y9eC5jcmVhdGVDb250ZXh0KHZvaWQgMCksYyQ9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e3JlbmRlcjpuLGNsYXNzTmFtZTpyLC4uLm99PWUsW2EsaV09eC51c2VTdGF0ZSh2b2lkIDApLGw9eC51c2VNZW1vKCgpPT4oe3NldExhYmVsSWQ6aX0pLFtpXSkscz1zbihcImRpdlwiLGUse3JlZjp0LHByb3BzOntyb2xlOlwiZ3JvdXBcIixcImFyaWEtbGFiZWxsZWRieVwiOmEsLi4ub319KTtyZXR1cm4oMCxiLmpzeCkoY1YuUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46c30pfSk7ZnVuY3Rpb24gY1coZSl7cmV0dXJuIGFiKGUsXCJiYXNlLXVpXCIpfWxldCBjWT14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7Y2xhc3NOYW1lOm4scmVuZGVyOnIsaWQ6bywuLi5hfT1lLGk9Y1cobykse3NldExhYmVsSWQ6bH09ZnVuY3Rpb24oKXtsZXQgZT14LnVzZUNvbnRleHQoY1YpO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBNZW51R3JvdXBSb290Q29udGV4dCBpcyBtaXNzaW5nLiBNZW51IGdyb3VwIHBhcnRzIG11c3QgYmUgdXNlZCB3aXRoaW4gPE1lbnUuR3JvdXA+LlwiKTtyZXR1cm4gZX0oKTtyZXR1cm4gYXgoKCk9PihsKGkpLCgpPT57bCh2b2lkIDApfSksW2wsaV0pLHNuKFwiZGl2XCIsZSx7cmVmOnQscHJvcHM6e2lkOmkscm9sZTpcInByZXNlbnRhdGlvblwiLC4uLmF9fSl9KSxjSz17dHlwZTpcInJlZ3VsYXItaXRlbVwifSxjWD14Lm1lbW8oeC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2NsYXNzTmFtZTpuLGNsb3NlT25DbGljazpyPSEwLGRpc2FibGVkOm89ITEsaGlnaGxpZ2h0ZWQ6YSxpZDppLG1lbnVFdmVudHM6bCxpdGVtUHJvcHM6cyxyZW5kZXI6YyxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOnUsdHlwaW5nUmVmOmQsbmF0aXZlQnV0dG9uOmYsLi4ucH09ZSx7Z2V0SXRlbVByb3BzOmgsaXRlbVJlZjptfT1mdW5jdGlvbihlKXtsZXR7Y2xvc2VPbkNsaWNrOnQsZGlzYWJsZWQ6bj0hMSxoaWdobGlnaHRlZDpyLGlkOm8sbWVudUV2ZW50czphLGFsbG93TW91c2VVcFRyaWdnZXJSZWY6aSx0eXBpbmdSZWY6bCxuYXRpdmVCdXR0b246cyxpdGVtTWV0YWRhdGE6Y309ZSx1PXgudXNlUmVmKG51bGwpLHtnZXRCdXR0b25Qcm9wczpkLGJ1dHRvblJlZjpmfT1zaSh7ZGlzYWJsZWQ6bixmb2N1c2FibGVXaGVuRGlzYWJsZWQ6ITAsbmF0aXZlOnN9KSxwPXgudXNlQ2FsbGJhY2soZT0+bE0oe2lkOm8scm9sZTpcIm1lbnVpdGVtXCIsdGFiSW5kZXg6cj8wOi0xLG9uTW91c2VFbnRlcigpe1wic3VibWVudS10cmlnZ2VyXCI9PT1jLnR5cGUmJmMuc2V0QWN0aXZlKCl9LG9uS2V5VXA6ZT0+e1wiIFwiPT09ZS5rZXkmJmwuY3VycmVudCYmZS5wcmV2ZW50QmFzZVVJSGFuZGxlcigpfSxvbkNsaWNrOmU9Pnt0JiZhLmVtaXQoXCJjbG9zZVwiLHtkb21FdmVudDplLHJlYXNvbjpcIml0ZW0tcHJlc3NcIn0pfSxvbk1vdXNlVXA6KCk9Pnt1LmN1cnJlbnQmJmkuY3VycmVudCYmXCJyZWd1bGFyLWl0ZW1cIj09PWMudHlwZSYmdS5jdXJyZW50LmNsaWNrKCl9fSxlLGQpLFtvLHIsZCxsLHQsYSxpLGNdKSxoPWxZKHUsZik7cmV0dXJuIHgudXNlTWVtbygoKT0+KHtnZXRJdGVtUHJvcHM6cCxpdGVtUmVmOmh9KSxbcCxoXSl9KHtjbG9zZU9uQ2xpY2s6cixkaXNhYmxlZDpvLGhpZ2hsaWdodGVkOmEsaWQ6aSxtZW51RXZlbnRzOmwsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjp1LHR5cGluZ1JlZjpkLG5hdGl2ZUJ1dHRvbjpmLGl0ZW1NZXRhZGF0YTpjS30pO3JldHVybiBzbihcImRpdlwiLGUse3N0YXRlOngudXNlTWVtbygoKT0+KHtkaXNhYmxlZDpvLGhpZ2hsaWdodGVkOmF9KSxbbyxhXSkscmVmOlttLHRdLHByb3BzOltzLHAsaF19KX0pKSxjRz14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7aWQ6bixsYWJlbDpyLG5hdGl2ZUJ1dHRvbjpvPSExLC4uLmF9PWUsaT14LnVzZVJlZihudWxsKSxsPXNjKHtsYWJlbDpyfSkscz1sWSh0LGwucmVmLGkpLHtpdGVtUHJvcHM6YyxhY3RpdmVJbmRleDp1LGFsbG93TW91c2VVcFRyaWdnZXJSZWY6ZCx0eXBpbmdSZWY6Zn09bEEoKSxwPWNXKG4pLGg9bC5pbmRleD09PXUse2V2ZW50czptfT1haygpO3JldHVybigwLGIuanN4KShjWCx7Li4uYSxpZDpwLHJlZjpzLGhpZ2hsaWdodGVkOmgsbWVudUV2ZW50czptLGl0ZW1Qcm9wczpjLGFsbG93TW91c2VVcFRyaWdnZXJSZWY6ZCx0eXBpbmdSZWY6ZixuYXRpdmVCdXR0b246b30pfSk7dmFyIGNRPVwiX19uZXh0X2J1aWx0aW5fX1wiO2Z1bmN0aW9uIGNKKGUpe3JldHVybiBlLnJlcGxhY2UobmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoY1EpKSxcIlwiKS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcIi5jb25jYXQoXCJAYm91bmRhcnlcIixcIiRcIikpLFwiXCIpfXZhciBjMD1cImJvdW5kYXJ5OlwiO2Z1bmN0aW9uIGMxKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoYzApfWZ1bmN0aW9uIGMyKGUpe3JldHVybiBlLnJlcGxhY2UoYzAsXCJcIil9ZnVuY3Rpb24gYzQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGM1KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBjMyhlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gYzYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGM0KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIGM0KGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfXZhciBjOT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGZ1bmN0aW9uKGUpe3QuZm9yRWFjaChmdW5jdGlvbih0KXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QoZSk6dCYmKHQuY3VycmVudD1lKX0pfX07ZnVuY3Rpb24gYzgoZSl7dmFyIHQsbj1lLm5vZGVTdGF0ZSxyPWUuYm91bmRhcmllcyxvPW4ucGFnZVBhdGgsYT1uLmJvdW5kYXJ5VHlwZSxpPW4uc2V0Qm91bmRhcnlUeXBlLGw9YzYoKDAseC51c2VTdGF0ZSkoITEpLDIpLHM9bFswXSxjPWxbMV0sdT1kYSgpLnNoYWRvd1Jvb3QsZD0oMCx4LnVzZVJlZikobnVsbCksZj0oMCx4LnVzZVJlZikobnVsbCk7dDgoZixkLHMsZnVuY3Rpb24oKXtjKCExKX0sbnVsbD09KHQ9ZC5jdXJyZW50KT92b2lkIDA6dC5vd25lckRvY3VtZW50KTt2YXIgcD0oT2JqZWN0LnZhbHVlcyhyKS5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZX0pfHxcIlwiKS5zcGxpdChcIi5cIikucG9wKCl8fFwianNcIixoPSgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHIpLm1hcChmdW5jdGlvbihlKXt2YXIgdD1jNihlLDIpLG49dFswXSxyPWNKKCh0WzFdfHxcIlwiKS5zcGxpdChcIi9cIikucG9wKCl8fFwiXCIuY29uY2F0KG4sXCIuXCIpLmNvbmNhdChwKSk7cmV0dXJuW24scl19KSl9LFtyLHBdKSxtPShvfHxcIlwiKS5zcGxpdChcIi9cIikucG9wKCl8fFwiXCIsZz1jSihhP1wicGFnZS5cIi5jb25jYXQocCk6bXx8XCJwYWdlLlwiLmNvbmNhdChwKSkseT1be2xhYmVsOmgubG9hZGluZyx2YWx1ZTpcImxvYWRpbmdcIixpY29uOigwLGIuanN4KShjNyx7fSksZGlzYWJsZWQ6IXIubG9hZGluZ30se2xhYmVsOmguZXJyb3IsdmFsdWU6XCJlcnJvclwiLGljb246KDAsYi5qc3gpKHVlLHt9KSxkaXNhYmxlZDohci5lcnJvcn0se2xhYmVsOmhbXCJub3QtZm91bmRcIl0sdmFsdWU6XCJub3QtZm91bmRcIixpY29uOigwLGIuanN4KSh1dCx7fSksZGlzYWJsZWQ6IXJbXCJub3QtZm91bmRcIl19XSx2PXtsYWJlbDphP1wiUmVzZXRcIjpnLHZhbHVlOlwicmVzZXRcIixpY29uOigwLGIuanN4KSh1bix7fSksZGlzYWJsZWQ6bnVsbD09PWF9LEE9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTFNlYXJjaFBhcmFtcyh7ZmlsZTplLmZpbGVQYXRoLGlzQXBwUmVsYXRpdmVQYXRoOlwiMVwifSk7ZmV0Y2goXCJcIi5jb25jYXQocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSHx8XCJcIixcIi9fX25leHRqc19sYXVuY2gtZWRpdG9yP1wiKS5jb25jYXQodC50b1N0cmluZygpKSkuY2F0Y2goY29uc29sZS53YXJuKX0sW10pLHc9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2VcIm5vdC1mb3VuZFwiOmNhc2VcImxvYWRpbmdcIjpjYXNlXCJlcnJvclwiOmkoZSk7YnJlYWs7Y2FzZVwicmVzZXRcIjppKG51bGwpO2JyZWFrO2Nhc2VcIm9wZW4tZWRpdG9yXCI6byYmQSh7ZmlsZVBhdGg6b30pfX0sW2ksbyxBXSksQz0oMCx4LnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuXCJsYXlvdXRcIiE9PW4udHlwZSYmXCJ0ZW1wbGF0ZVwiIT09bi50eXBlJiZPYmplY3QudmFsdWVzKHIpLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lfSl9LFtuLnR5cGUscl0pO3JldHVybigwLGIuanN4cykobFcse2RlbGF5OjAsbW9kYWw6ITEsb3BlbjpzLG9uT3BlbkNoYW5nZTpjLGNoaWxkcmVuOlsoMCxiLmpzeCkoc2Qse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktdHJpZ2dlclwiLFwiZGF0YS1uZXh0anMtZGV2LW92ZXJsYXktc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLWJ1dHRvblwiOiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD1jOShlLnJlZixkKTtyZXR1cm4oMCxiLmpzeCkodW8sYzMoYzUoe30sZSkse3JlZjp0fSkpfSxkaXNhYmxlZDohQ30pLCgwLGIuanN4KShzMCx7Y29udGFpbmVyOnUsY2hpbGRyZW46KDAsYi5qc3gpKGNQLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLXBvc2l0aW9uZXJcIixzaWRlOlwiYm90dG9tXCIsYWxpZ246XCJjZW50ZXJcIixzaWRlT2Zmc2V0OjYsYXJyb3dQYWRkaW5nOjgscmVmOmYsY2hpbGRyZW46KDAsYi5qc3hzKShjSCx7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS1kcm9wZG93blwiLGNoaWxkcmVuOlsoMCxiLmpzeHMpKGMkLHtjaGlsZHJlbjpbKDAsYi5qc3gpKGNZLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LWdyb3VwLWxhYmVsXCIsY2hpbGRyZW46XCJUb2dnbGUgT3ZlcnJpZGVzXCJ9KSx5Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4oMCxiLmpzeHMpKGNHLHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW1cIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHcoZS52YWx1ZSl9LGRpc2FibGVkOmUuZGlzYWJsZWQsY2hpbGRyZW46W2UuaWNvbixlLmxhYmVsXX0sZS52YWx1ZSl9KV19KSwoMCxiLmpzeCkoYyQse2NoaWxkcmVuOigwLGIuanN4cykoY0cse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbVwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdyh2LnZhbHVlKX0sZGlzYWJsZWQ6di5kaXNhYmxlZCxjaGlsZHJlbjpbdi5pY29uLHYubGFiZWxdfSx2LnZhbHVlKX0pXX0pfSl9KV19KX1mdW5jdGlvbiBjNygpe3ZhciBlLHQsbj0oMCxBLmMpKDIpO3JldHVybiBuWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwiZ1wiLHtjbGlwUGF0aDpcInVybCgjY2xpcDBfMjc1OV8xODY2KVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMCAzLjVDMTMuNTg5OSAzLjUgMTYuNSA2LjQxMDE1IDE2LjUgMTBDMTYuNSAxMy41ODk5IDEzLjU4OTkgMTYuNSAxMCAxNi41QzYuNDEwMTUgMTYuNSAzLjUgMTMuNTg5OSAzLjUgMTBDMy41IDYuNDEwMTUgNi40MTAxNSAzLjUgMTAgMy41Wk0yIDEwQzIgMTQuNDE4MyA1LjU4MTcyIDE4IDEwIDE4QzE0LjQxODMgMTggMTggMTQuNDE4MyAxOCAxMEMxOCA1LjU4MTcyIDE0LjQxODMgMiAxMCAyQzUuNTgxNzIgMiAyIDUuNTgxNzIgMiAxMFpNMTAuNzUgOS42MjQwMlY2SDkuMjVWOS44NzVDOS4yNSAxMC4xODk4IDkuMzk4NTggMTAuNDg2IDkuNjUwMzkgMTAuNjc0OEwxMS41NDk4IDEyLjA5OTZMMTIuMTUwNCAxMi41NDk4TDEzLjA0OTggMTEuMzQ5NkwxMi40NTAyIDEwLjkwMDRMMTAuNzUgOS42MjQwMlpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLG5bMF09ZSk6ZT1uWzBdLG5bMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeHMpKFwic3ZnXCIse3dpZHRoOlwiMjBweFwiLGhlaWdodDpcIjIwcHhcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46W2UsKDAsYi5qc3gpKFwiZGVmc1wiLHtjaGlsZHJlbjooMCxiLmpzeCkoXCJjbGlwUGF0aFwiLHtpZDpcImNsaXAwXzI3NTlfMTg2NlwiLGNoaWxkcmVuOigwLGIuanN4KShcInJlY3RcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsZmlsbDpcIndoaXRlXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKDIgMilcIn0pfSl9KV19KSxuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIHVlKCl7dmFyIGUsdCxuPSgwLEEuYykoMik7cmV0dXJuIG5bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJnXCIse2NsaXBQYXRoOlwidXJsKCNjbGlwMF8yNzU5XzE4ODEpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTMuNSA3LjMwNzYyVjEyLjY5MjRMNy4zMDc2MiAxNi41SDEyLjY5MjRMMTYuNSAxMi42OTI0VjcuMzA3NjJMMTIuNjkyNCAzLjVINy4zMDc2MkwzLjUgNy4zMDc2MlpNMTggMTIuODk5NEwxNy45OTUxIDEyLjk5OEMxNy45NzI0IDEzLjIyNzEgMTcuODcxMiAxMy40NDIzIDE3LjcwNyAxMy42MDY0TDEzLjYwNjQgMTcuNzA3TDEzLjUzMzIgMTcuNzczNEMxMy4zODA2IDE3Ljg5ODUgMTMuMTk0NCAxNy45NzU3IDEyLjk5OCAxNy45OTUxTDEyLjg5OTQgMThINy4xMDA1OUw3LjAwMTk1IDE3Ljk5NTFDNi44MDU2MiAxNy45NzU3IDYuNjE5NCAxNy44OTg1IDYuNDY2OCAxNy43NzM0TDYuMzkzNTUgMTcuNzA3TDIuMjkyOTcgMTMuNjA2NEMyLjEyODgzIDEzLjQ0MjMgMi4wMjc1NiAxMy4yMjcxIDIuMDA0ODggMTIuOTk4TDIgMTIuODk5NFY3LjEwMDU5QzIgNi44MzUzOSAyLjEwNTQ2IDYuNTgxMDkgMi4yOTI5NyA2LjM5MzU1TDYuMzkzNTUgMi4yOTI5N0M2LjU1NzcxIDIuMTI4ODMgNi43NzI5NCAyLjAyNzU2IDcuMDAxOTUgMi4wMDQ4OEw3LjEwMDU5IDJIMTIuODk5NEwxMi45OTggMi4wMDQ4OEMxMy4yMjcxIDIuMDI3NTYgMTMuNDQyMyAyLjEyODgzIDEzLjYwNjQgMi4yOTI5N0wxNy43MDcgNi4zOTM1NUMxNy44OTQ1IDYuNTgxMDkgMTggNi44MzUzOSAxOCA3LjEwMDU5VjEyLjg5OTRaTTkuMjUgNS43NUgxMC43NUwxMC43NSAxMC43NUg5LjI1TDkuMjUgNS43NVpNMTAgMTRDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzQzExIDEyLjQ0NzcgMTAuNTUyMyAxMiAxMCAxMkM5LjQ0NzcyIDEyIDkgMTIuNDQ3NyA5IDEzQzkgMTMuNTUyMyA5LjQ0NzcyIDE0IDEwIDE0WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksblswXT1lKTplPW5bMF0sblsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4cykoXCJzdmdcIix7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOltlLCgwLGIuanN4KShcImRlZnNcIix7Y2hpbGRyZW46KDAsYi5qc3gpKFwiY2xpcFBhdGhcIix7aWQ6XCJjbGlwMF8yNzU5XzE4ODFcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLGZpbGw6XCJ3aGl0ZVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgyIDIpXCJ9KX0pfSldfSksblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB1dCgpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjIwcHhcIixoZWlnaHQ6XCIyMHB4XCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMC41NTg2IDIuNUMxMS4xMzQxIDIuNTAwMDQgMTEuNjU4OCAyLjgyOTQgMTEuOTA5MSAzLjM0NzY2TDE3LjgwNzYgMTUuNTY1NEMxOC4xMjc4IDE2LjIyOTIgMTcuNjQ0MiAxNi45OTk3IDE2LjkwNzIgMTdIMy4wOTI3NEMyLjM1NTc0IDE2Ljk5OTcgMS44NzIxIDE2LjIyOTIgMi4xOTIzNSAxNS41NjU0TDguMDkwNzkgMy4zNDc2NkM4LjM0MTA5IDIuODI5NCA4Ljg2NTgzIDIuNTAwMDQgOS40NDEzNyAyLjVIMTAuNTU4NlpNMy44OTA1OSAxNS41SDE2LjEwOTNMMTAuNTU4NiA0SDkuNDQxMzdMMy44OTA1OSAxNS41Wk05LjI0OTk3IDYuNzVIMTAuNzVMMTAuNzUgMTAuNzVIOS4yNDk5N0w5LjI0OTk3IDYuNzVaTTkuOTk5OTcgMTRDMTAuNTUyMyAxNCAxMSAxMy41NTIzIDExIDEzQzExIDEyLjQ0NzcgMTAuNTUyMyAxMiA5Ljk5OTk3IDEyQzkuNDQ3NjggMTIgOC45OTk5NyAxMi40NDc3IDguOTk5OTcgMTNDOC45OTk5NyAxMy41NTIzIDkuNDQ3NjggMTQgOS45OTk5NyAxNFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gdW4oKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIyMFwiLGhlaWdodDpcIjIwXCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk05Ljk2NDg0IDNDMTMuODQ2MyAzLjAwMDE4IDE3IDYuMTMwMTIgMTcgMTBDMTcgMTMuODY5OSAxMy44NDYzIDE2Ljk5OTggOS45NjQ4NCAxN0M3LjYyNDA0IDE3IDUuNTQ4NzcgMTUuODYxNyA0LjI3MDUxIDE0LjExMjNMMy44MjgxMiAxMy41MDY4TDUuMDM5MDYgMTIuNjIyMUw1LjQ4MTQ1IDEzLjIyNzVDNi40ODgxNSAxNC42MDUzIDguMTIwOTIgMTUuNSA5Ljk2NDg0IDE1LjVDMTMuMDI1OSAxNS40OTk4IDE1LjUgMTMuMDMzNSAxNS41IDEwQzE1LjUgNi45NjY1NCAxMy4wMjU5IDQuNTAwMTggOS45NjQ4NCA0LjVDNy40MjkwNSA0LjUgNS4yOTU0NCA2LjE5NDI5IDQuNjM4NjcgOC41SDhWMTBIMi43NUMyLjMzNTc5IDEwIDIgOS42NjQyMSAyIDkuMjVWNEgzLjVWNy4yMzczQzQuNTc3ODEgNC43NDM3NiA3LjA2NzQ5IDMgOS45NjQ4NCAzWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiB1cihlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk04LjcwNzEgMi4zOTY0NEM4LjMxNjU4IDIuMDA1OTIgNy42ODM0MSAyLjAwNTkyIDcuMjkyODkgMi4zOTY0NEw0LjQ2OTY2IDUuMjE5NjZMMy45MzkzMyA1Ljc0OTk5TDQuOTk5OTkgNi44MTA2NUw1LjUzMDMyIDYuMjgwMzJMNy45OTk5OSAzLjgxMDY1TDEwLjQ2OTcgNi4yODAzMkwxMSA2LjgxMDY1TDEyLjA2MDcgNS43NDk5OUwxMS41MzAzIDUuMjE5NjZMOC43MDcxIDIuMzk2NDRaTTUuNTMwMzIgOS43MTk2Nkw0Ljk5OTk5IDkuMTg5MzNMMy45MzkzMyAxMC4yNUw0LjQ2OTY2IDEwLjc4MDNMNy4yOTI4OSAxMy42MDM1QzcuNjgzNDEgMTMuOTk0MSA4LjMxNjU4IDEzLjk5NDEgOC43MDcxIDEzLjYwMzVMMTEuNTMwMyAxMC43ODAzTDEyLjA2MDcgMTAuMjVMMTEgOS4xODkzM0wxMC40Njk3IDkuNzE5NjZMNy45OTk5OSAxMi4xODkzTDUuNTMwMzIgOS43MTk2NlpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxiLmpzeCkoXCJzdmdcIixjMyhjNSh7c3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIn0sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gdW8oZSl7dmFyIHQsbixyPSgwLEEuYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0XCIsY2hpbGRyZW46KDAsYi5qc3gpKHVyLHtjbGFzc05hbWU6XCJwbHVzLWljb25cIn0pfSksclswXT10KTp0PXJbMF0sclsxXSE9PWU/KG49KDAsYi5qc3gpKFwiYnV0dG9uXCIsYzMoYzUoe30sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59bGV0IHVhPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIHVpKCl7bGV0IGU9eC51c2VDb250ZXh0KHVhKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogVG9vbHRpcFJvb3RDb250ZXh0IGlzIG1pc3NpbmcuIFRvb2x0aXAgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxUb29sdGlwLlJvb3Q+LlwiKTtyZXR1cm4gZX1sZXQgdWw9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2NsYXNzTmFtZTpuLHJlbmRlcjpyLC4uLm99PWUse29wZW46YSxzZXRUcmlnZ2VyRWxlbWVudDppLHRyaWdnZXJQcm9wczpsfT11aSgpO3JldHVybiBzbihcImJ1dHRvblwiLGUse3N0YXRlOngudXNlTWVtbygoKT0+KHtvcGVuOmF9KSxbYV0pLHJlZjpbdCxpXSxwcm9wczpbbCxvXSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmw4fSl9KSx1cz14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiB1Yygpe2xldCBlPXgudXNlQ29udGV4dCh1cyk7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IFRvb2x0aXBQb3NpdGlvbmVyQ29udGV4dCBpcyBtaXNzaW5nLiBUb29sdGlwUG9zaXRpb25lciBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPFRvb2x0aXAuUG9zaXRpb25lcj4uXCIpO3JldHVybiBlfWxldCB1dT14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7Y2xhc3NOYW1lOm4scmVuZGVyOnIsLi4ub309ZSx7b3BlbjphLGFycm93UmVmOmksc2lkZTpsLGFsaWduOnMsYXJyb3dVbmNlbnRlcmVkOmMsYXJyb3dTdHlsZXM6dX09dWMoKTtyZXR1cm4gc24oXCJkaXZcIixlLHtzdGF0ZTp4LnVzZU1lbW8oKCk9Pih7b3BlbjphLHNpZGU6bCxhbGlnbjpzLHVuY2VudGVyZWQ6Y30pLFthLGwscyxjXSkscmVmOlt0LGldLHByb3BzOlt7c3R5bGU6dSxcImFyaWEtaGlkZGVuXCI6ITB9LG9dLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6c2V9KX0pLHVkPXsuLi5zZSwuLi5sMH0sdWY9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e2NsYXNzTmFtZTpuLHJlbmRlcjpyLC4uLm99PWUse29wZW46YSxpbnN0YW50VHlwZTppLHRyYW5zaXRpb25TdGF0dXM6bCxwb3B1cFByb3BzOnMscG9wdXBSZWY6Yyxvbk9wZW5DaGFuZ2VDb21wbGV0ZTp1fT11aSgpLHtzaWRlOmQsYWxpZ246Zn09dWMoKTtyZXR1cm4gbEMoe29wZW46YSxyZWY6YyxvbkNvbXBsZXRlKCl7YSYmdT8uKCEwKX19KSxzbihcImRpdlwiLGUse3N0YXRlOngudXNlTWVtbygoKT0+KHtvcGVuOmEsc2lkZTpkLGFsaWduOmYsaW5zdGFudDppLHRyYW5zaXRpb25TdGF0dXM6bH0pLFthLGQsZixpLGxdKSxyZWY6W3QsY10scHJvcHM6W3MsXCJzdGFydGluZ1wiPT09bD9pTjppUixvXSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOnVkfSl9KSx1cD14LmNyZWF0ZUNvbnRleHQodm9pZCAwKSx1aD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7cmVuZGVyOm4sY2xhc3NOYW1lOnIsYW5jaG9yOm8scG9zaXRpb25NZXRob2Q6YT1cImFic29sdXRlXCIsc2lkZTppPVwidG9wXCIsYWxpZ246bD1cImNlbnRlclwiLHNpZGVPZmZzZXQ6cz0wLGFsaWduT2Zmc2V0OmM9MCxjb2xsaXNpb25Cb3VuZGFyeTp1PVwiY2xpcHBpbmctYW5jZXN0b3JzXCIsY29sbGlzaW9uUGFkZGluZzpkPTUsYXJyb3dQYWRkaW5nOmY9NSxzdGlja3k6cD0hMSx0cmFja0FuY2hvcjpoPSEwLGNvbGxpc2lvbkF2b2lkYW5jZTptPWlVLC4uLmd9PWUse29wZW46eSxzZXRQb3NpdGlvbmVyRWxlbWVudDp2LG1vdW50ZWQ6QSxmbG9hdGluZ1Jvb3RDb250ZXh0OncsdHJhY2tDdXJzb3JBeGlzOkMsaG92ZXJhYmxlOl99PXVpKCksaz1jXyh7YW5jaG9yOm8scG9zaXRpb25NZXRob2Q6YSxmbG9hdGluZ1Jvb3RDb250ZXh0OncsbW91bnRlZDpBLHNpZGU6aSxzaWRlT2Zmc2V0OnMsYWxpZ246bCxhbGlnbk9mZnNldDpjLGNvbGxpc2lvbkJvdW5kYXJ5OnUsY29sbGlzaW9uUGFkZGluZzpkLHN0aWNreTpwLGFycm93UGFkZGluZzpmLHRyYWNrQW5jaG9yOmgsa2VlcE1vdW50ZWQ6ZnVuY3Rpb24oKXtsZXQgZT14LnVzZUNvbnRleHQodXApO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiA8VG9vbHRpcC5Qb3J0YWw+IGlzIG1pc3NpbmcuXCIpO3JldHVybiBlfSgpLGNvbGxpc2lvbkF2b2lkYW5jZTptfSksRT14LnVzZU1lbW8oKCk9PntsZXQgZT17fTtyZXR1cm4geSYmXCJib3RoXCIhPT1DJiZffHwoZS5wb2ludGVyRXZlbnRzPVwibm9uZVwiKSx7cm9sZTpcInByZXNlbnRhdGlvblwiLGhpZGRlbjohQSxzdHlsZTp7Li4uay5wb3NpdGlvbmVyU3R5bGVzLC4uLmV9fX0sW3ksQyxfLEEsay5wb3NpdGlvbmVyU3R5bGVzXSksaj14LnVzZU1lbW8oKCk9Pih7cHJvcHM6RSwuLi5rfSksW0Usa10pLFM9eC51c2VNZW1vKCgpPT4oe29wZW46eSxzaWRlOmouc2lkZSxhbGlnbjpqLmFsaWduLGFuY2hvckhpZGRlbjpqLmFuY2hvckhpZGRlbn0pLFt5LGouc2lkZSxqLmFsaWduLGouYW5jaG9ySGlkZGVuXSksTz14LnVzZU1lbW8oKCk9Pih7Li4uUyxhcnJvd1JlZjpqLmFycm93UmVmLGFycm93U3R5bGVzOmouYXJyb3dTdHlsZXMsYXJyb3dVbmNlbnRlcmVkOmouYXJyb3dVbmNlbnRlcmVkfSksW1Msai5hcnJvd1JlZixqLmFycm93U3R5bGVzLGouYXJyb3dVbmNlbnRlcmVkXSksQj1zbihcImRpdlwiLGUse3N0YXRlOlMscHJvcHM6W2oucHJvcHMsZ10scmVmOlt0LHZdLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6c2V9KTtyZXR1cm4oMCxiLmpzeCkodXMuUHJvdmlkZXIse3ZhbHVlOk8sY2hpbGRyZW46Qn0pfSk7ZnVuY3Rpb24gdW0oZSl7bGV0IHQ9c0coe3Jvb3Q6ZS5yb290fSk7cmV0dXJuIHQmJmVmLmNyZWF0ZVBvcnRhbChlLmNoaWxkcmVuLHQpfWZ1bmN0aW9uIHVnKGUpe2xldHtjaGlsZHJlbjp0LGtlZXBNb3VudGVkOm49ITEsY29udGFpbmVyOnJ9PWUse21vdW50ZWQ6b309dWkoKTtyZXR1cm4gb3x8bj8oMCxiLmpzeCkodXAuUHJvdmlkZXIse3ZhbHVlOm4sY2hpbGRyZW46KDAsYi5qc3gpKHVtLHtyb290OnIsY2hpbGRyZW46dH0pfSk6bnVsbH1sZXQgdXk9eC5jcmVhdGVDb250ZXh0KHtoYXNQcm92aWRlcjohMSx0aW1lb3V0TXM6MCxkZWxheVJlZjp7Y3VycmVudDowfSxpbml0aWFsRGVsYXlSZWY6e2N1cnJlbnQ6MH0sdGltZW91dDpuZXcgYXMsY3VycmVudElkUmVmOntjdXJyZW50Om51bGx9LGN1cnJlbnRDb250ZXh0UmVmOntjdXJyZW50Om51bGx9fSk7ZnVuY3Rpb24gdXYoZSl7bGV0e2NoaWxkcmVuOnQsZGVsYXk6bix0aW1lb3V0TXM6cj0wfT1lLG89eC51c2VSZWYobiksYT14LnVzZVJlZihuKSxpPXgudXNlUmVmKG51bGwpLGw9eC51c2VSZWYobnVsbCkscz1hYygpO3JldHVybigwLGIuanN4KSh1eS5Qcm92aWRlcix7dmFsdWU6eC51c2VNZW1vKCgpPT4oe2hhc1Byb3ZpZGVyOiEwLGRlbGF5UmVmOm8saW5pdGlhbERlbGF5UmVmOmEsY3VycmVudElkUmVmOmksdGltZW91dE1zOnIsY3VycmVudENvbnRleHRSZWY6bCx0aW1lb3V0OnN9KSxbcixzXSksY2hpbGRyZW46dH0pfWxldCB1Yj14LmNyZWF0ZUNvbnRleHQodm9pZCAwKSx1QT1mdW5jdGlvbihlKXtsZXR7ZGVsYXk6dCxjbG9zZURlbGF5Om4sdGltZW91dDpyPTQwMH09ZSxvPXgudXNlTWVtbygoKT0+KHtkZWxheTp0LGNsb3NlRGVsYXk6bn0pLFt0LG5dKSxhPXgudXNlTWVtbygoKT0+KHtvcGVuOnQsY2xvc2U6bn0pLFt0LG5dKTtyZXR1cm4oMCxiLmpzeCkodWIuUHJvdmlkZXIse3ZhbHVlOm8sY2hpbGRyZW46KDAsYi5qc3gpKHV2LHtkZWxheTphLHRpbWVvdXRNczpyLGNoaWxkcmVuOmUuY2hpbGRyZW59KX0pfTtmdW5jdGlvbiB1eChlKXtyZXR1cm4gbnVsbCE9ZSYmbnVsbCE9ZS5jbGllbnRYfWZ1bmN0aW9uIHV3KGUpe2xldHtkaXNhYmxlZDp0PSExLGRlZmF1bHRPcGVuOm49ITEsb25PcGVuQ2hhbmdlOnIsb3BlbjpvLGRlbGF5OmEsY2xvc2VEZWxheTppLGhvdmVyYWJsZTpsPSEwLHRyYWNrQ3Vyc29yQXhpczpzPVwibm9uZVwiLGFjdGlvbnNSZWY6Yyxvbk9wZW5DaGFuZ2VDb21wbGV0ZTp1fT1lLGQ9YT8/NjAwLGY9aT8/MCxbcCxoXT14LnVzZVN0YXRlKG51bGwpLFttLGddPXgudXNlU3RhdGUobnVsbCksW3ksdl09eC51c2VTdGF0ZSgpLEE9eC51c2VSZWYobnVsbCksW3csQ109YW0oe2NvbnRyb2xsZWQ6byxkZWZhdWx0Om4sbmFtZTpcIlRvb2x0aXBcIixzdGF0ZTpcIm9wZW5cIn0pLF89IXQmJnc7ZnVuY3Rpb24gayhlLHQsbil7bGV0IG89XCJ0cmlnZ2VyLWhvdmVyXCI9PT1uLGE9ZSYmXCJ0cmlnZ2VyLWZvY3VzXCI9PT1uLGk9IWUmJihcInRyaWdnZXItcHJlc3NcIj09PW58fFwiZXNjYXBlLWtleVwiPT09bik7ZnVuY3Rpb24gbCgpe3I/LihlLHQsbiksQyhlKX1vP2VmLmZsdXNoU3luYyhsKTpsKCksYXx8aT92KGE/XCJmb2N1c1wiOlwiZGlzbWlzc1wiKTpcInRyaWdnZXItaG92ZXJcIj09PW4mJnYodm9pZCAwKX1sZXQgRT1hZihrKTt3JiZ0JiZrKCExLHZvaWQgMCxcImRpc2FibGVkXCIpO2xldHttb3VudGVkOmosc2V0TW91bnRlZDpTLHRyYW5zaXRpb25TdGF0dXM6T309bHcoXyksQj1hZigoKT0+e1MoITEpLHU/LighMSl9KTtsQyh7ZW5hYmxlZDohYyxvcGVuOl8scmVmOkEsb25Db21wbGV0ZSgpe198fEIoKX19KSx4LnVzZUltcGVyYXRpdmVIYW5kbGUoYywoKT0+KHt1bm1vdW50OkJ9KSxbQl0pO2xldCBQPWFTKHtlbGVtZW50czp7cmVmZXJlbmNlOnAsZmxvYXRpbmc6bX0sb3BlbjpfLG9uT3BlbkNoYW5nZShlLHQsbil7RShlLHQsbHoobikpfX0pLEk9eC51c2VDb250ZXh0KHViKSx7ZGVsYXlSZWY6eixpc0luc3RhbnRQaGFzZTpULGhhc1Byb3ZpZGVyOkR9PWZ1bmN0aW9uKGUsdD17fSl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixmbG9hdGluZ0lkOm99PWUse2VuYWJsZWQ6YT0hMH09dCx7Y3VycmVudElkUmVmOmksZGVsYXlSZWY6bCx0aW1lb3V0TXM6cyxpbml0aWFsRGVsYXlSZWY6YyxjdXJyZW50Q29udGV4dFJlZjp1LGhhc1Byb3ZpZGVyOmQsdGltZW91dDpmfT14LnVzZUNvbnRleHQodXkpLFtwLGhdPXgudXNlU3RhdGUoITEpO3JldHVybiBheCgoKT0+e2Z1bmN0aW9uIGUoKXtoKCExKSx1LmN1cnJlbnQ/LnNldElzSW5zdGFudFBoYXNlKCExKSxpLmN1cnJlbnQ9bnVsbCx1LmN1cnJlbnQ9bnVsbCxsLmN1cnJlbnQ9Yy5jdXJyZW50fWlmKGEmJmkuY3VycmVudCYmIW4mJmkuY3VycmVudD09PW8pe2lmKGgoITEpLHMpcmV0dXJuIGYuc3RhcnQocyxlKSwoKT0+e2YuY2xlYXIoKX07ZSgpfX0sW2EsbixvLGksbCxzLGMsdSxmXSksYXgoKCk9PntpZighYXx8IW4pcmV0dXJuO2xldCBlPXUuY3VycmVudCx0PWkuY3VycmVudDt1LmN1cnJlbnQ9e29uT3BlbkNoYW5nZTpyLHNldElzSW5zdGFudFBoYXNlOmh9LGkuY3VycmVudD1vLGwuY3VycmVudD17b3BlbjowLGNsb3NlOmlrKGMuY3VycmVudCxcImNsb3NlXCIpfSxudWxsIT09dCYmdCE9PW8/KGYuY2xlYXIoKSxoKCEwKSxlPy5zZXRJc0luc3RhbnRQaGFzZSghMCksZT8ub25PcGVuQ2hhbmdlKCExKSk6KGgoITEpLGU/LnNldElzSW5zdGFudFBoYXNlKCExKSl9LFthLG4sbyxyLGksbCxzLGMsdSxmXSksYXgoKCk9PigpPT57dS5jdXJyZW50PW51bGx9LFt1XSkseC51c2VNZW1vKCgpPT4oe2hhc1Byb3ZpZGVyOmQsZGVsYXlSZWY6bCxpc0luc3RhbnRQaGFzZTpwfSksW2QsbCxwXSl9KFApLEw9VD9cImRlbGF5XCI6eSxOPWlqKFAse2VuYWJsZWQ6IXQsbW91c2VPbmx5OiEwLG1vdmU6ITEsaGFuZGxlQ2xvc2U6bCYmXCJib3RoXCIhPT1zP2lQKCk6bnVsbCxyZXN0TXMoKXtsZXQgZT1JPy5kZWxheSx0PVwib2JqZWN0XCI9PXR5cGVvZiB6LmN1cnJlbnQ/ei5jdXJyZW50Lm9wZW46dm9pZCAwLG49ZDtyZXR1cm4gRCYmKG49MCE9PXQ/YT8/ZT8/ZDowKSxufSxkZWxheSgpe2xldCBlPVwib2JqZWN0XCI9PXR5cGVvZiB6LmN1cnJlbnQ/ei5jdXJyZW50LmNsb3NlOnZvaWQgMCx0PWY7cmV0dXJuIG51bGw9PWkmJkQmJih0PWUpLHtjbG9zZTp0fX19KSxSPWl6KFAse2VuYWJsZWQ6IXR9KSxNPWlIKFAse2VuYWJsZWQ6IXQscmVmZXJlbmNlUHJlc3M6ITB9KSx7Z2V0UmVmZXJlbmNlUHJvcHM6WixnZXRGbG9hdGluZ1Byb3BzOlV9PWxnKFtOLFIsTSxmdW5jdGlvbihlLHQ9e30pe2xldHtvcGVuOm4sZGF0YVJlZjpyLGVsZW1lbnRzOntmbG9hdGluZzpvLGRvbVJlZmVyZW5jZTphfSxyZWZzOml9PWUse2VuYWJsZWQ6bD0hMCxheGlzOnM9XCJib3RoXCIseDpjPW51bGwseTp1PW51bGx9PXQsZD14LnVzZVJlZighMSksZj14LnVzZVJlZihudWxsKSxbcCxoXT14LnVzZVN0YXRlKCksW20sZ109eC51c2VTdGF0ZShbXSkseT1hZigoZSx0KT0+e2lmKCFkLmN1cnJlbnQmJighci5jdXJyZW50Lm9wZW5FdmVudHx8dXgoci5jdXJyZW50Lm9wZW5FdmVudCkpKXt2YXIgbixvO2xldCBsLGMsdTtpLnNldFBvc2l0aW9uUmVmZXJlbmNlKChuPWEsbz17eDplLHk6dCxheGlzOnMsZGF0YVJlZjpyLHBvaW50ZXJUeXBlOnB9LGw9bnVsbCxjPW51bGwsdT0hMSx7Y29udGV4dEVsZW1lbnQ6bnx8dm9pZCAwLGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpe2xldCBlPW4/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfHx7d2lkdGg6MCxoZWlnaHQ6MCx4OjAseTowfSx0PVwieFwiPT09by5heGlzfHxcImJvdGhcIj09PW8uYXhpcyxyPVwieVwiPT09by5heGlzfHxcImJvdGhcIj09PW8uYXhpcyxhPVtcIm1vdXNlZW50ZXJcIixcIm1vdXNlbW92ZVwiXS5pbmNsdWRlcyhvLmRhdGFSZWYuY3VycmVudC5vcGVuRXZlbnQ/LnR5cGV8fFwiXCIpJiZcInRvdWNoXCIhPT1vLnBvaW50ZXJUeXBlLGk9ZS53aWR0aCxzPWUuaGVpZ2h0LGQ9ZS54LGY9ZS55O3JldHVybiBudWxsPT1sJiZvLngmJnQmJihsPWUueC1vLngpLG51bGw9PWMmJm8ueSYmciYmKGM9ZS55LW8ueSksZC09bHx8MCxmLT1jfHwwLGk9MCxzPTAsIXV8fGE/KGk9XCJ5XCI9PT1vLmF4aXM/ZS53aWR0aDowLHM9XCJ4XCI9PT1vLmF4aXM/ZS5oZWlnaHQ6MCxkPXQmJm51bGwhPW8ueD9vLng6ZCxmPXImJm51bGwhPW8ueT9vLnk6Zik6dSYmIWEmJihzPVwieFwiPT09by5heGlzP2UuaGVpZ2h0OnMsaT1cInlcIj09PW8uYXhpcz9lLndpZHRoOmkpLHU9ITAse3dpZHRoOmksaGVpZ2h0OnMseDpkLHk6Zix0b3A6ZixyaWdodDpkK2ksYm90dG9tOmYrcyxsZWZ0OmR9fX0pKX19KSx2PWFmKGU9PntudWxsPT1jJiZudWxsPT11JiYobj9mLmN1cnJlbnR8fGcoW10pOnkoZS5jbGllbnRYLGUuY2xpZW50WSkpfSksYj1paShwKT9vOm4sQT14LnVzZUNhbGxiYWNrKCgpPT57aWYoIWJ8fCFsfHxudWxsIT1jfHxudWxsIT11KXJldHVybjtsZXQgZT1hUChvKTtmdW5jdGlvbiB0KG4pe2lnKG8saXkobikpPyhlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0KSxmLmN1cnJlbnQ9bnVsbCk6eShuLmNsaWVudFgsbi5jbGllbnRZKX1pZighci5jdXJyZW50Lm9wZW5FdmVudHx8dXgoci5jdXJyZW50Lm9wZW5FdmVudCkpe2UuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQpO2xldCBuPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdCksZi5jdXJyZW50PW51bGx9O3JldHVybiBmLmN1cnJlbnQ9bixufWkuc2V0UG9zaXRpb25SZWZlcmVuY2UoYSl9LFtiLGwsYyx1LG8scixpLGEseV0pO3gudXNlRWZmZWN0KCgpPT5BKCksW0EsbV0pLHgudXNlRWZmZWN0KCgpPT57bCYmIW8mJihkLmN1cnJlbnQ9ITEpfSxbbCxvXSkseC51c2VFZmZlY3QoKCk9PnshbCYmbiYmKGQuY3VycmVudD0hMCl9LFtsLG5dKSxheCgoKT0+e2wmJihudWxsIT1jfHxudWxsIT11KSYmKGQuY3VycmVudD0hMSx5KGMsdSkpfSxbbCxjLHUseV0pO2xldCB3PXgudXNlTWVtbygoKT0+e2Z1bmN0aW9uIGUoZSl7aChlLnBvaW50ZXJUeXBlKX1yZXR1cm57b25Qb2ludGVyRG93bjplLG9uUG9pbnRlckVudGVyOmUsb25Nb3VzZU1vdmU6dixvbk1vdXNlRW50ZXI6dn19LFt2XSk7cmV0dXJuIHgudXNlTWVtbygoKT0+bD97cmVmZXJlbmNlOnd9Ont9LFtsLHddKX0oUCx7ZW5hYmxlZDohdCYmXCJub25lXCIhPT1zLGF4aXM6XCJub25lXCI9PT1zP3ZvaWQgMDpzfSldKSxGPXgudXNlTWVtbygoKT0+KHtvcGVuOl8sc2V0T3BlbjpFLG1vdW50ZWQ6aixzZXRNb3VudGVkOlMsc2V0VHJpZ2dlckVsZW1lbnQ6aCxwb3NpdGlvbmVyRWxlbWVudDptLHNldFBvc2l0aW9uZXJFbGVtZW50OmcscG9wdXBSZWY6QSx0cmlnZ2VyUHJvcHM6WigpLHBvcHVwUHJvcHM6VSgpLGZsb2F0aW5nUm9vdENvbnRleHQ6UCxpbnN0YW50VHlwZTpMLHRyYW5zaXRpb25TdGF0dXM6Tyxvbk9wZW5DaGFuZ2VDb21wbGV0ZTp1fSksW18sRSxqLFMsaCxtLGcsQSxaLFUsUCxMLE8sdV0pLHE9eC51c2VNZW1vKCgpPT4oey4uLkYsZGVsYXk6ZCxjbG9zZURlbGF5OmYsdHJhY2tDdXJzb3JBeGlzOnMsaG92ZXJhYmxlOmx9KSxbRixkLGYscyxsXSk7cmV0dXJuKDAsYi5qc3gpKHVhLlByb3ZpZGVyLHt2YWx1ZTpxLGNoaWxkcmVuOmUuY2hpbGRyZW59KX12YXIgdUM9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jc3NcIiksdV89e307dV8uc3R5bGVUYWdUcmFuc2Zvcm09aCgpLHVfLnNldEF0dHJpYnV0ZXM9dSgpLHVfLmluc2VydD1zKCksdV8uZG9tQVBJPWkoKSx1Xy5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKSh1Qy5aLHVfKSx1Qy5aJiZ1Qy5aLmxvY2FscyYmdUMuWi5sb2NhbHM7dmFyIHVrPSgwLHguZm9yd2FyZFJlZikoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCxBLmMpKDM1KSxtPWUuY2xhc3NOYW1lLGc9ZS5jaGlsZHJlbix5PWUudGl0bGUsdj1lLmRpcmVjdGlvbix4PWUuYXJyb3dTaXplLHc9ZS5vZmZzZXQsQz12b2lkIDA9PT12P1widG9wXCI6dixfPXZvaWQgMD09PXg/Njp4LGs9ZGEoKS5zaGFkb3dSb290O2lmKCF5KXJldHVybiBnO2hbMF0hPT1nPyhuPWZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuKDAsYi5qc3gpKFwic3BhblwiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sZSksbj1uPXtjaGlsZHJlbjpnfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKX0saFswXT1nLGhbMV09bik6bj1oWzFdLGhbMl0hPT10fHxoWzNdIT09bj8ocj0oMCxiLmpzeCkodWwse3JlZjp0LHJlbmRlcjpufSksaFsyXT10LGhbM109bixoWzRdPXIpOnI9aFs0XTt2YXIgRT0odm9pZCAwPT09dz84OncpK18saj1cIlwiLmNvbmNhdChfLFwicHhcIiksUz1cIlwiLmNvbmNhdChfLFwicHhcIik7aFs1XSE9PWp8fGhbNl0hPT1TPyhvPXtcIi0tYW5jaG9yLXdpZHRoXCI6aixcIi0tYW5jaG9yLWhlaWdodFwiOlN9LGhbNV09aixoWzZdPVMsaFs3XT1vKTpvPWhbN107dmFyIE89bztoWzhdIT09bT8oYT1lRyhcInRvb2x0aXBcIixtKSxoWzhdPW0saFs5XT1hKTphPWhbOV07dmFyIEI9XCJcIi5jb25jYXQoXyxcInB4XCIpO2hbMTBdIT09Qj8oaT17XCItLWFycm93LXNpemVcIjpCfSxoWzEwXT1CLGhbMTFdPWkpOmk9aFsxMV07dmFyIFA9aSxJPVwidG9vbHRpcC1hcnJvdy0tXCIuY29uY2F0KEMpO2hbMTJdIT09ST8obD1lRyhcInRvb2x0aXAtYXJyb3dcIixJKSxoWzEyXT1JLGhbMTNdPWwpOmw9aFsxM107dmFyIHo9XCJcIi5jb25jYXQoXyxcInB4XCIpO2hbMTRdIT09ej8ocz17XCItLWFycm93LXNpemVcIjp6fSxoWzE0XT16LGhbMTVdPXMpOnM9aFsxNV07dmFyIFQ9cztyZXR1cm4gaFsxNl0hPT1sfHxoWzE3XSE9PVQ/KGM9KDAsYi5qc3gpKHV1LHtjbGFzc05hbWU6bCxzdHlsZTpUfSksaFsxNl09bCxoWzE3XT1ULGhbMThdPWMpOmM9aFsxOF0saFsxOV0hPT1hfHxoWzIwXSE9PVB8fGhbMjFdIT09Y3x8aFsyMl0hPT15Pyh1PSgwLGIuanN4cykodWYse2NsYXNzTmFtZTphLHN0eWxlOlAsY2hpbGRyZW46W3ksY119KSxoWzE5XT1hLGhbMjBdPVAsaFsyMV09YyxoWzIyXT15LGhbMjNdPXUpOnU9aFsyM10saFsyNF0hPT1DfHxoWzI1XSE9PU98fGhbMjZdIT09dXx8aFsyN10hPT1FPyhkPSgwLGIuanN4KSh1aCx7c2lkZTpDLHNpZGVPZmZzZXQ6RSxjbGFzc05hbWU6XCJ0b29sdGlwLXBvc2l0aW9uZXJcIixzdHlsZTpPLGNoaWxkcmVuOnV9KSxoWzI0XT1DLGhbMjVdPU8saFsyNl09dSxoWzI3XT1FLGhbMjhdPWQpOmQ9aFsyOF0saFsyOV0hPT1rfHxoWzMwXSE9PWQ/KGY9KDAsYi5qc3gpKHVnLHtjb250YWluZXI6ayxjaGlsZHJlbjpkfSksaFsyOV09ayxoWzMwXT1kLGhbMzFdPWYpOmY9aFszMV0saFszMl0hPT1mfHxoWzMzXSE9PXI/KHA9KDAsYi5qc3gpKHVBLHtjaGlsZHJlbjooMCxiLmpzeHMpKHV3LHtkZWxheTo0MDAsY2hpbGRyZW46W3IsZl19KX0pLGhbMzJdPWYsaFszM109cixoWzM0XT1wKTpwPWhbMzRdLHB9KTtmdW5jdGlvbiB1RShlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKSxvPWUucG9zc2libGVFeHRlbnNpb24sYT1lLm1pc3NpbmdHbG9iYWxFcnJvcj9cIk5vIGdsb2JhbC1lcnJvci5cIi5jb25jYXQobyxcIiBmb3VuZDogQWRkIG9uZSB0byBlbnN1cmUgdXNlcnMgc2VlIGEgaGVscGZ1bCBtZXNzYWdlIHdoZW4gYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnMuXCIpOm51bGw7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkodUwse30pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1hPyhuPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9uc1wiLGNoaWxkcmVuOigwLGIuanN4KSh1ayx7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9ucy10b29sdGlwXCIsdGl0bGU6YSxjaGlsZHJlbjp0fSl9KSxyWzFdPWEsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB1aihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gdVMoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfXZhciB1Tz1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEhKG51bGw9PSh0PWUudmFsdWUpP3ZvaWQgMDp0LnR5cGUpJiYhIShudWxsPT0obj1lLnZhbHVlKT92b2lkIDA6bi5wYWdlUGF0aCl9O2Z1bmN0aW9uIHVCKGUpe3ZhciB0LG4scj0oMCxBLmMpKDMpLG89ZS5wYWdlO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKHVOLHt9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09bz8obj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXJcIixjaGlsZHJlbjpbdCwoMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXItcGF0aFwiLGNoaWxkcmVuOm99KV19KSxyWzFdPW8sclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB1UChlKXt2YXIgdCxuLHIsbz0oMCxBLmMpKDkpLGE9ZS5hY3RpdmVCb3VuZGFyaWVzQ291bnQsaT1lLm9uR2xvYmFsUmVzZXQsbD1hPjAscz1cInNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbiBcIi5jb25jYXQobD9cIlwiOlwic2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uLS1kaXNhYmxlZFwiKSxjPWw/aTp2b2lkIDAsdT0hbDtyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1mb290ZXItdGV4dFwiLGNoaWxkcmVuOlwiQ2xlYXIgU2VnbWVudCBPdmVycmlkZXNcIn0pLG9bMF09dCk6dD1vWzBdLG9bMV0hPT1hfHxvWzJdIT09bD8obj1sJiYoMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJhZGdlXCIsY2hpbGRyZW46YX0pLG9bMV09YSxvWzJdPWwsb1szXT1uKTpuPW9bM10sb1s0XSE9PXN8fG9bNV0hPT1jfHxvWzZdIT09dXx8b1s3XSE9PW4/KHI9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZm9vdGVyXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImJ1dHRvblwiLHtjbGFzc05hbWU6cyxvbkNsaWNrOmMsZGlzYWJsZWQ6dSx0eXBlOlwiYnV0dG9uXCIsY2hpbGRyZW46W3Qsbl19KX0pLG9bNF09cyxvWzVdPWMsb1s2XT11LG9bN109bixvWzhdPXIpOnI9b1s4XSxyfWZ1bmN0aW9uIHVJKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDE1KSxsPWUudHlwZSxzPWUuaXNCdWlsdGluLGM9ZS5pc092ZXJyaWRkZW4sdT1lLmZpbGVQYXRoLGQ9ZS5maWxlTmFtZSxmPVwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1cIi5jb25jYXQobCkscD1zJiZcInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tYnVpbHRpblwiLGg9YyYmXCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLW92ZXJyaWRkZW5cIjtyZXR1cm4gaVswXSE9PWZ8fGlbMV0hPT1wfHxpWzJdIT09aD8odD1lRyhcInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbFwiLGYscCxoKSxpWzBdPWYsaVsxXT1wLGlbMl09aCxpWzNdPXQpOnQ9aVszXSxpWzRdIT09dT8obj1mdW5jdGlvbigpe3ZhciBlO2U9bmV3IFVSTFNlYXJjaFBhcmFtcyh7ZmlsZTp7ZmlsZVBhdGg6dX0uZmlsZVBhdGgsaXNBcHBSZWxhdGl2ZVBhdGg6XCIxXCJ9KSxmZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/XCIpLmNvbmNhdChlLnRvU3RyaW5nKCkpKX0saVs0XT11LGlbNV09bik6bj1pWzVdLGlbNl0hPT1kPyhyPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRleHRcIixjaGlsZHJlbjpkfSksaVs2XT1kLGlbN109cik6cj1pWzddLGlbOF0hPT1zPyhvPXM/KDAsYi5qc3gpKHVMLHt9KTooMCxiLmpzeCkodVIse2NsYXNzTmFtZTpcImNvZGUtaWNvblwifSksaVs4XT1zLGlbOV09byk6bz1pWzldLGlbMTBdIT09dHx8aVsxMV0hPT1ufHxpWzEyXSE9PXJ8fGlbMTNdIT09bz8oYT0oMCxiLmpzeHMpKFwic3BhblwiLHtjbGFzc05hbWU6dCxvbkNsaWNrOm4sY2hpbGRyZW46W3Isb119KSxpWzEwXT10LGlbMTFdPW4saVsxMl09cixpWzEzXT1vLGlbMTRdPWEpOmE9aVsxNF0sYX1mdW5jdGlvbiB1eihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdT0oMCxBLmMpKDE3KSxkPWUucGFnZSxmPSgwLHgudXNlU3luY0V4dGVybmFsU3RvcmUpKG82LG85LG84KTt1WzBdIT09Zj8obj1mdW5jdGlvbiBlKHQpe3ZhciBuLHI9MDtyZXR1cm4obnVsbD09KG49dC52YWx1ZSk/dm9pZCAwOm4uc2V0Qm91bmRhcnlUeXBlKSYmbnVsbCE9PXQudmFsdWUuYm91bmRhcnlUeXBlJiYhYzEodC52YWx1ZS50eXBlKSYmcisrLE9iamVjdC52YWx1ZXModC5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbih0KXt0JiYocis9ZSh0KSl9KSxyfShmKSx1WzBdPWYsdVsxXT1uKTpuPXVbMV0sdD1uLHVbMl0hPT1mPyhyPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uIGUodCl7dmFyIG47KG51bGw9PShuPXQudmFsdWUpP3ZvaWQgMDpuLnNldEJvdW5kYXJ5VHlwZSkmJnQudmFsdWUuc2V0Qm91bmRhcnlUeXBlKG51bGwpLE9iamVjdC52YWx1ZXModC5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbih0KXt0JiZlKHQpfSl9KGYpfSx1WzJdPWYsdVszXT1yKTpyPXVbM107dmFyIHA9cjtyZXR1cm4gdVs0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXtkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixoZWlnaHQ6XCIxMDAlXCJ9LHVbNF09byk6bz11WzRdLHVbNV0hPT1kPyhhPSgwLGIuanN4KSh1Qix7cGFnZTpkfSksdVs1XT1kLHVbNl09YSk6YT11WzZdLHVbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaT17ZmxleDpcIjEgMSBhdXRvXCIsb3ZlcmZsb3c6XCJhdXRvXCJ9LHVbN109aSk6aT11WzddLHVbOF0hPT1mPyhsPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWNvbnRlbnRcIixcImRhdGEtbmV4dGpzLWRldnRvb2wtc2VnbWVudC1leHBsb3JlclwiOiEwLHN0eWxlOmksY2hpbGRyZW46KDAsYi5qc3gpKHVELHtub2RlOmYsbGV2ZWw6MCxzZWdtZW50OlwiXCJ9KX0pLHVbOF09Zix1WzldPWwpOmw9dVs5XSx1WzEwXSE9PXR8fHVbMTFdIT09cD8ocz0oMCxiLmpzeCkodVAse2FjdGl2ZUJvdW5kYXJpZXNDb3VudDp0LG9uR2xvYmFsUmVzZXQ6cH0pLHVbMTBdPXQsdVsxMV09cCx1WzEyXT1zKTpzPXVbMTJdLHVbMTNdIT09YXx8dVsxNF0hPT1sfHx1WzE1XSE9PXM/KGM9KDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRldnRvb2xzLXBhbmVsLXNlZ21lbnRzLWV4cGxvcmVyXCI6ITAsc3R5bGU6byxjaGlsZHJlbjpbYSxsLHNdfSksdVsxM109YSx1WzE0XT1sLHVbMTVdPXMsdVsxNl09Yyk6Yz11WzE2XSxjfXZhciB1VD1cImdsb2JhbC1lcnJvclwiO2Z1bmN0aW9uIHVEKGUpe3ZhciB0PWUuc2VnbWVudCxuPWUubm9kZSxyPWUubGV2ZWwsbz0oMCx4LnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKG4uY2hpbGRyZW4pfSxbbi5jaGlsZHJlbl0pLGE9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHI9bi5jaGlsZHJlblt0XTtpZihyJiZyLnZhbHVlKXt2YXIgbz1jMihyLnZhbHVlLnR5cGUpLGE9bz09PXVUOyhhJiYhci52YWx1ZS5wYWdlUGF0aC5zdGFydHNXaXRoKGNRKXx8IWEmJmMxKHIudmFsdWUudHlwZSkpJiZlLnB1c2gobyl9fSksMD09PXImJiFlLmluY2x1ZGVzKHVUKX0sW24uY2hpbGRyZW4sbyxyXSksaT1vLnNvcnQoZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmluY2x1ZGVzKFwiLlwiKSxvPXQuaW5jbHVkZXMoXCIuXCIpO2lmKHImJiFvKXJldHVybiAtMTtpZighciYmbylyZXR1cm4gMTtpZihyJiZvKXt2YXIgYSxpLGwscyxjLHUsZCxmLHA9bnVsbD09KGk9bi5jaGlsZHJlbltlXSl8fG51bGw9PShhPWkudmFsdWUpP3ZvaWQgMDphLnR5cGUsaD1udWxsPT0ocz1uLmNoaWxkcmVuW3RdKXx8bnVsbD09KGw9cy52YWx1ZSk/dm9pZCAwOmwudHlwZSxtPWZ1bmN0aW9uKGUpe3JldHVybiBlP1wibGF5b3V0XCI9PT1lPzE6XCJ0ZW1wbGF0ZVwiPT09ZT8yOlwicGFnZVwiPT09ZT8zOmMxKGUpPzQ6NTo1fSxnPW0ocCkseT1tKGgpO2lmKGchPT15KXJldHVybiBnLXk7dmFyIHY9KG51bGw9PSh1PW4uY2hpbGRyZW5bZV0pfHxudWxsPT0oYz11LnZhbHVlKT92b2lkIDA6Yy5wYWdlUGF0aCl8fFwiXCIsYj0obnVsbD09KGY9bi5jaGlsZHJlblt0XSl8fG51bGw9PShkPWYudmFsdWUpP3ZvaWQgMDpkLnBhZ2VQYXRoKXx8XCJcIjtyZXR1cm4gdi5sb2NhbGVDb21wYXJlKGIpfXJldHVybiBlLmxvY2FsZUNvbXBhcmUodCl9KSxsPTAhPT1yfHx0P3Q6XCJhcHBcIixzPVtdLGM9W10sdT0hMCxkPSExLGY9dm9pZCAwO3RyeXtmb3IodmFyIHAsaD1pW1N5bWJvbC5pdGVyYXRvcl0oKTshKHU9KHA9aC5uZXh0KCkpLmRvbmUpO3U9ITApe3ZhciBtPXAudmFsdWUsZz1uLmNoaWxkcmVuW21dO2lmKGcpe2lmKHVPKGcpKXtjLnB1c2gobSk7Y29udGludWV9cy5wdXNoKG0pfX19Y2F0Y2goZSl7ZD0hMCxmPWV9ZmluYWxseXt0cnl7dXx8bnVsbD09aC5yZXR1cm58fGgucmV0dXJuKCl9ZmluYWxseXtpZihkKXRocm93IGZ9fWZvcih2YXIgeT1jSihjWzBdfHxcIlwiKS5zcGxpdChcIi5cIikucG9wKCl8fFwianNcIix2PW51bGwsQT1pLmxlbmd0aC0xO0E+PTA7QS0tKXt2YXIgdz1uLmNoaWxkcmVuW2lbQV1dO2lmKHcmJncudmFsdWUpe3ZhciBDPWMxKHcudmFsdWUudHlwZSk7aWYoIXYmJiFDKXt2PXc7YnJlYWt9fX12YXIgXz1udWxsLGs9ITAsRT0hMSxqPXZvaWQgMDt0cnl7Zm9yKHZhciBTLE89aVtTeW1ib2wuaXRlcmF0b3JdKCk7IShrPShTPU8ubmV4dCgpKS5kb25lKTtrPSEwKXt2YXIgQj1TLnZhbHVlLFA9bi5jaGlsZHJlbltCXTtpZihQJiZQLnZhbHVlJiZjMShQLnZhbHVlLnR5cGUpKXtfPVA7YnJlYWt9fX1jYXRjaChlKXtFPSEwLGo9ZX1maW5hbGx5e3RyeXtrfHxudWxsPT1PLnJldHVybnx8Ty5yZXR1cm4oKX1maW5hbGx5e2lmKEUpdGhyb3cgan19dj12fHxfO3ZhciBJPWMubGVuZ3RoPjAsej17XCJub3QtZm91bmRcIjpudWxsLGxvYWRpbmc6bnVsbCxlcnJvcjpudWxsLFwiZ2xvYmFsLWVycm9yXCI6bnVsbH07cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uLmNoaWxkcmVuW2VdO2lmKHQmJnQudmFsdWUmJmMxKHQudmFsdWUudHlwZSkpe3ZhciByPWMyKHQudmFsdWUudHlwZSk7ciBpbiB6JiYoeltyXT10LnZhbHVlLnBhZ2VQYXRofHxudWxsKX19KSwoMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOltJJiYoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1pdGVtXCIsXCJkYXRhLW5leHRqcy1kZXZ0b29sLXNlZ21lbnQtZXhwbG9yZXItc2VnbWVudFwiOnQrXCItXCIrcixjaGlsZHJlbjooMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1pdGVtLXJvd1wiLHN0eWxlOnVqKHt9LHtwYWRkaW5nTGVmdDpcIlwiLmNvbmNhdCgocisxKSo4LFwicHhcIil9KSxjaGlsZHJlbjooMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1pdGVtLXJvdy1tYWluXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lXCIsY2hpbGRyZW46W2wmJigwLGIuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLXBhdGhcIixjaGlsZHJlbjpbbCwoMCxiLmpzeCkoXCJzbWFsbFwiLHtjaGlsZHJlbjpcIi9cIn0pXX0pLGEmJigwLGIuanN4KSh1RSx7cG9zc2libGVFeHRlbnNpb246eSxtaXNzaW5nR2xvYmFsRXJyb3I6YX0pLGMubGVuZ3RoPjAmJigwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1maWxlc1wiLGNoaWxkcmVuOmMubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PW4uY2hpbGRyZW5bZV07aWYoIXR8fCF0LnZhbHVlfHxjMSh0LnZhbHVlLnR5cGUpKXJldHVybiBudWxsO3ZhciByPXQudmFsdWUucGFnZVBhdGgsbz1yLnNwbGl0KFwiL1wiKS5wb3AoKXx8XCJcIixhPXIuc3RhcnRzV2l0aChjUSksaT1jSihvKSxsPWE/XCJUaGUgZGVmYXVsdCBOZXh0LmpzIFwiLmNvbmNhdCh0LnZhbHVlLnR5cGUsXCIgaXMgYmVpbmcgc2hvd24uIFlvdSBjYW4gY3VzdG9taXplIHRoaXMgcGFnZSBieSBhZGRpbmcgeW91ciBvd24gXCIpLmNvbmNhdChpLFwiIGZpbGUgdG8gdGhlIGFwcC8gZGlyZWN0b3J5LlwiKTpudWxsLHM9bnVsbCE9PXQudmFsdWUuYm91bmRhcnlUeXBlO3JldHVybigwLGIuanN4KSh1ayx7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRvb2x0aXAtLVwiKyhhP1wibGdcIjpcInNtXCIpLGRpcmVjdGlvbjphP1wicmlnaHRcIjpcInRvcFwiLHRpdGxlOmwsb2Zmc2V0OjEyLGNoaWxkcmVuOigwLGIuanN4KSh1SSx7dHlwZTp0LnZhbHVlLnR5cGUsaXNCdWlsdGluOmEsaXNPdmVycmlkZGVuOnMsZmlsZVBhdGg6cixmaWxlTmFtZTppfSl9LGUpfSl9KSx2JiZ2LnZhbHVlJiYoMCxiLmpzeCkoYzgse25vZGVTdGF0ZTp2LnZhbHVlLGJvdW5kYXJpZXM6en0pXX0pfSl9KX0pLHMubWFwKGZ1bmN0aW9uKGUpe3ZhciBvPW4uY2hpbGRyZW5bZV07aWYoIW8pcmV0dXJuIG51bGw7dmFyIGE9ST9lOnQrXCIgLyBcIitlO3JldHVybigwLGIuanN4KSh1RCx7c2VnbWVudDphLG5vZGU6byxsZXZlbDpJP3IrMTpyfSxlKX0pXX0pfWZ1bmN0aW9uIHVMKGUpe3ZhciB0LG4scixvPSgwLEEuYykoNCk7cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTQgOEMxNCAxMS4zMTM3IDExLjMxMzcgMTQgOCAxNEM0LjY4NjI5IDE0IDIgMTEuMzEzNyAyIDhDMiA0LjY4NjI5IDQuNjg2MjkgMiA4IDJDMTEuMzEzNyAyIDE0IDQuNjg2MjkgMTQgOFpcIixmaWxsOlwidmFyKC0tY29sb3ItZ3JheS00MDApXCJ9KSxuPSgwLGIuanN4KShcInBhdGhcIix7ZDpcIk03Ljc1IDdDOC4zMDIyOCA3LjAwMDAxIDguNzUgNy40NDc3MiA4Ljc1IDhWMTEuMjVINy4yNVY4LjVINi4yNVY3SDcuNzVaTTggNEM4LjU1MjI4IDQgOSA0LjQ0NzcyIDkgNUM5IDUuNTUyMjggOC41NTIyOCA2IDggNkM3LjQ0NzcyIDYgNyA1LjU1MjI4IDcgNUM3IDQuNDQ3NzIgNy40NDc3MiA0IDggNFpcIixmaWxsOlwidmFyKC0tY29sb3ItZ3JheS05MDApXCJ9KSxvWzBdPXQsb1sxXT1uKToodD1vWzBdLG49b1sxXSksb1syXSE9PWU/KHI9KDAsYi5qc3hzKShcInN2Z1wiLHVTKHVqKHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLHtjaGlsZHJlbjpbdCxuXX0pKSxvWzJdPWUsb1szXT1yKTpyPW9bM10scn1mdW5jdGlvbiB1Tigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcInZhcigtLWNvbG9yLWdyYXktNjAwKVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNNC41IDExLjI1QzQuNSAxMS4zODgxIDQuNjExOTMgMTEuNSA0Ljc1IDExLjVIMTQuNDM5NUwxMS45Mzk1IDlMMTMgNy45Mzk0NUwxNi43ODAzIDExLjcxOTdMMTYuODMyIDExLjc3NjRDMTcuMDcyMyAxMi4wNzA5IDE3LjA1NDkgMTIuNTA1NyAxNi43ODAzIDEyLjc4MDNMMTMgMTYuNTYwNUwxMS45Mzk1IDE1LjVMMTQuNDM5NSAxM0g0Ljc1QzMuNzgzNSAxMyAzIDEyLjIxNjUgMyAxMS4yNVY0LjI1SDQuNVYxMS4yNVpcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiB1UihlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk03LjIyNzYzIDE0LjE4MTlMMTAuMjI3NiAyLjE4MTkzTDEwLjQwOTUgMS40NTQzMkw4Ljk1NDMyIDEuMDkwNTJMOC43NzI0MiAxLjgxODEyTDUuNzcyNDIgMTMuODE4MUw1LjU5MDUxIDE0LjU0NTdMNy4wNDU3MyAxNC45MDk1TDcuMjI3NjMgMTQuMTgxOVpNMy43NTAwMiAxMi4wNjA3TDMuMjE5NjkgMTEuNTMwNEwwLjM5NjQ3IDguNzA3MTNDMC4wMDU5NDU1OSA4LjMxNjYxIDAuMDA1OTQ1NTkgNy42ODM0NCAwLjM5NjQ3IDcuMjkyOTJMMy4yMTk2OSA0LjQ2OTY5TDMuNzUwMDIgMy45MzkzNkw0LjgxMDY4IDUuMDAwMDJMNC4yODAzNSA1LjUzMDM1TDEuODEwNjggOC4wMDAwM0w0LjI4MDM1IDEwLjQ2OTdMNC44MTA2OCAxMUwzLjc1MDAyIDEyLjA2MDdaTTEyLjI1IDEyLjA2MDdMMTIuNzgwNCAxMS41MzA0TDE1LjYwMzYgOC43MDcxM0MxNS45OTQxIDguMzE2NjEgMTUuOTk0MSA3LjY4MzQ0IDE1LjYwMzYgNy4yOTI5MkwxMi43ODA0IDQuNDY5NjlMMTIuMjUgMy45MzkzNkwxMS4xODk0IDUuMDAwMDJMMTEuNzE5NyA1LjUzMDM1TDE0LjE4OTQgOC4wMDAwM0wxMS43MTk3IDEwLjQ2OTdMMTEuMTg5NCAxMUwxMi4yNSAxMi4wNjA3WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLGIuanN4KShcInN2Z1wiLHVTKHVqKHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gdU0oKXt2YXIgZSx0LG49KGU9W1wiXFxuICAgICAgICAuZGV2LXRvb2xzLWluZm8tY2xvc2UtYnV0dG9uOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgIH1cXG4gICAgICBcIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gdU09ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn1mdW5jdGlvbiB1WihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGY9KDAsQS5jKSgxOCkscD1lLnRpdGxlLGg9ZS5jaGlsZHJlbixtPWUucmVmLGc9cjIoKS5zZXRQYW5lbCx5PSgwLHgudXNlUmVmKShudWxsKTtyZXR1cm4gZlswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PWZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09KGU9eS5jdXJyZW50KXx8ZS5mb2N1cygpfSxuPVtdLGZbMF09dCxmWzFdPW4pOih0PWZbMF0sbj1mWzFdKSwoMCx4LnVzZUxheW91dEVmZmVjdCkodCxuKSxmWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9e3dpZHRoOlwiMTAwJVwiLGRpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwiLGp1c3RpZnlDb250ZW50Olwic3BhY2UtYmV0d2VlblwiLHBhZGRpbmc6XCI4cHggMjBweFwiLHVzZXJTZWxlY3Q6XCJub25lXCIsV2Via2l0VXNlclNlbGVjdDpcIm5vbmVcIixib3JkZXJCb3R0b206XCIxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApXCJ9LGZbMl09cik6cj1mWzJdLGZbM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz17bWFyZ2luOjAsZm9udFNpemU6XCIxNHB4XCIsY29sb3I6XCJ2YXIoLS1jb2xvci10ZXh0LXByaW1hcnkpXCIsZm9udFdlaWdodDpcIm5vcm1hbFwifSxmWzNdPW8pOm89ZlszXSxmWzRdIT09cD8oYT0oMCxiLmpzeCkoXCJoM1wiLHtzdHlsZTpvLGNoaWxkcmVuOnB9KSxmWzRdPXAsZls1XT1hKTphPWZbNV0sZls2XSE9PWc/KGk9ZnVuY3Rpb24oKXtnKFwicGFuZWwtc2VsZWN0b3JcIil9LGZbNl09ZyxmWzddPWkpOmk9Zls3XSxmWzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9e2JhY2tncm91bmQ6XCJub25lXCIsYm9yZGVyOlwibm9uZVwiLGN1cnNvcjpcInBvaW50ZXJcIixwYWRkaW5nOlwiNHB4XCIsZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIixib3JkZXJSYWRpdXM6XCI0cHhcIixjb2xvcjpcInZhcigtLWNvbG9yLWdyYXktOTAwKVwifSxzPSgwLGIuanN4KSh1VSx7fSksZls4XT1sLGZbOV09cyk6KGw9Zls4XSxzPWZbOV0pLGZbMTBdIT09aT8oYz0oMCxiLmpzeCkoXCJidXR0b25cIix7cmVmOnksaWQ6XCJfbmV4dC1kZXZ0b29scy1wYW5lbC1jbG9zZVwiLGNsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNsb3NlLWJ1dHRvblwiLG9uQ2xpY2s6aSxcImFyaWEtbGFiZWxcIjpcIkNsb3NlIGRldnRvb2xzIHBhbmVsXCIsc3R5bGU6bCxjaGlsZHJlbjpzfSksZlsxMF09aSxmWzExXT1jKTpjPWZbMTFdLGZbMTJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3gpKFwic3R5bGVcIix7Y2hpbGRyZW46ZXModU0oKSl9KSxmWzEyXT11KTp1PWZbMTJdLGZbMTNdIT09aHx8ZlsxNF0hPT1tfHxmWzE1XSE9PWF8fGZbMTZdIT09Yz8oZD0oMCxiLmpzeHMpKFwiZGl2XCIse3N0eWxlOnIscmVmOm0sY2hpbGRyZW46W2EsaCxjLHVdfSksZlsxM109aCxmWzE0XT1tLGZbMTVdPWEsZlsxNl09YyxmWzE3XT1kKTpkPWZbMTddLGR9ZnVuY3Rpb24gdVUoZSl7dmFyIHQsbixyLG89KDAsQS5jKSg0KSxhPWUuc2l6ZSxpPXZvaWQgMD09PWE/MjI6YTtyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xOCA2IDYgMThcIn0pLG49KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwibTYgNiAxMiAxMlwifSksb1swXT10LG9bMV09bik6KHQ9b1swXSxuPW9bMV0pLG9bMl0hPT1pPyhyPSgwLGIuanN4cykoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOmksaGVpZ2h0Omksdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLGNoaWxkcmVuOlt0LG5dfSksb1syXT1pLG9bM109cik6cj1vWzNdLHJ9ZnVuY3Rpb24gdUYoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwibm9uZVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGZpbGxSdWxlOlwiZXZlbm9kZFwiLGQ6XCJtOS43IDMuNzM2LjA0NS0uMjM2aC41MWwuMDQ0LjIzNmEyLjAyNCAyLjAyNCAwIDAgMCAxLjMzNCAxLjUzNmMuMTkuMDY2LjM3NS4xNDMuNTU0LjIzLjYxOC4zMDEgMS4zOTguMjkgMi4wMy0uMTQzbC4xOTktLjEzNi4zNi4zNjEtLjEzNS4xOTlhMi4wMjQgMi4wMjQgMCAwIDAtLjE0MyAyLjAzYy4wODcuMTc5LjE2NC4zNjQuMjMuNTU0LjIyNC42NS43ODMgMS4xOTIgMS41MzYgMS4zMzRsLjIzNi4wNDR2LjUxbC0uMjM2LjA0NGEyLjAyNCAyLjAyNCAwIDAgMC0xLjUzNiAxLjMzNCA0Ljk1IDQuOTUgMCAwIDEtLjIzLjU1NCAyLjAyNCAyLjAyNCAwIDAgMCAuMTQzIDIuMDNsLjEzNi4xOTktLjM2MS4zNi0uMTk5LS4xMzVhMi4wMjQgMi4wMjQgMCAwIDAtMi4wMy0uMTQzYy0uMTc5LjA4Ny0uMzY0LjE2NC0uNTU0LjIzYTIuMDI0IDIuMDI0IDAgMCAwLTEuMzM0IDEuNTM2bC0uMDQ0LjIzNmgtLjUxbC0uMDQ0LS4yMzZhMi4wMjQgMi4wMjQgMCAwIDAtMS4zMzQtMS41MzYgNC45NTIgNC45NTIgMCAwIDEtLjU1NC0uMjMgMi4wMjQgMi4wMjQgMCAwIDAtMi4wMy4xNDNsLS4xOTkuMTM2LS4zNi0uMzYxLjEzNS0uMTk5YTIuMDI0IDIuMDI0IDAgMCAwIC4xNDMtMi4wMyA0Ljk1OCA0Ljk1OCAwIDAgMS0uMjMtLjU1NCAyLjAyNCAyLjAyNCAwIDAgMC0xLjUzNi0xLjMzNGwtLjIzNi0uMDQ0di0uNTFsLjIzNi0uMDQ0YTIuMDI0IDIuMDI0IDAgMCAwIDEuNTM2LTEuMzM0IDQuOTYgNC45NiAwIDAgMSAuMjMtLjU1NCAyLjAyNCAyLjAyNCAwIDAgMC0uMTQzLTIuMDNsLS4xMzYtLjE5OS4zNjEtLjM2LjE5OS4xMzVhMi4wMjQgMi4wMjQgMCAwIDAgMi4wMy4xNDNjLjE3OS0uMDg3LjM2NC0uMTY0LjU1NC0uMjNhMi4wMjQgMi4wMjQgMCAwIDAgMS4zMzQtMS41MzZaTTguNSAyaDNsLjI3NCAxLjQ2Yy4wMzQuMTg1LjE3LjMzMy4zNDguMzk0LjI0OC4wODYuNDkuMTg2LjcyMi4zLjE3LjA4Mi4zNy4wNzQuNTI2LS4wMzNsMS4yMjYtLjgzOSAyLjEyMiAyLjEyMi0uODQgMS4yMjZhLjUyNC41MjQgMCAwIDAtLjAzMi41MjZjLjExNC4yMzMuMjE0LjQ3NC4zLjcyMi4wNjEuMTc3LjIxLjMxNC4zOTQuMzQ4TDE4IDguNXYzbC0xLjQ2LjI3NGEuNTI0LjUyNCAwIDAgMC0uMzk0LjM0OCA2LjQ3IDYuNDcgMCAwIDEtLjMuNzIyLjUyNC41MjQgMCAwIDAgLjAzMy41MjZsLjgzOSAxLjIyNi0yLjEyMiAyLjEyMi0xLjIyNi0uODRhLjUyNC41MjQgMCAwIDAtLjUyNi0uMDMyIDYuNDc3IDYuNDc3IDAgMCAxLS43MjIuMy41MjQuNTI0IDAgMCAwLS4zNDguMzk0TDExLjUgMThoLTNsLS4yNzQtMS40NmEuNTI0LjUyNCAwIDAgMC0uMzQ4LS4zOTQgNi40NzcgNi40NzcgMCAwIDEtLjcyMi0uMy41MjQuNTI0IDAgMCAwLS41MjYuMDMzbC0xLjIyNi44MzktMi4xMjItMi4xMjIuODQtMS4yMjZhLjUyNC41MjQgMCAwIDAgLjAzMi0uNTI2IDYuNDUzIDYuNDUzIDAgMCAxLS4zLS43MjIuNTI0LjUyNCAwIDAgMC0uMzk0LS4zNDhMMiAxMS41di0zbDEuNDYtLjI3NGEuNTI0LjUyNCAwIDAgMCAuMzk0LS4zNDhjLjA4Ni0uMjQ4LjE4Ni0uNDkuMy0uNzIyYS41MjQuNTI0IDAgMCAwLS4wMzMtLjUyNmwtLjgzOS0xLjIyNiAyLjEyMi0yLjEyMiAxLjIyNi44NGEuNTI0LjUyNCAwIDAgMCAuNTI2LjAzMiA2LjQ2IDYuNDYgMCAwIDEgLjcyMi0uMy41MjQuNTI0IDAgMCAwIC4zNDgtLjM5NEw4LjUgMlptMyA4YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwWm0xLjUgMGEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDBaXCIsY2xpcFJ1bGU6XCJldmVub2RkXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9dmFyIHVxPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbWVudS9wYW5lbC1yb3V0ZXIuY3NzXCIpLHVIPXt9O3VILnN0eWxlVGFnVHJhbnNmb3JtPWgoKSx1SC5zZXRBdHRyaWJ1dGVzPXUoKSx1SC5pbnNlcnQ9cygpLHVILmRvbUFQST1pKCksdUguaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkodXEuWix1SCksdXEuWiYmdXEuWi5sb2NhbHMmJnVxLloubG9jYWxzO3ZhciB1Vj1mdW5jdGlvbigpe3ZhciBlLHQsbixyLG8sYSxpLGwscyxjLHUsZD0oMCxBLmMpKDMyKSxmPXIyKCkscD1mLnNldFBhbmVsLGg9Zi5zZXRTZWxlY3RlZEluZGV4LG09ZGEoKSxnPW0uc3RhdGUseT1tLmRpc3BhdGNoLHY9dTQoKS50b3RhbEVycm9yQ291bnQseD1cImFwcFwiPT09Zy5yb3V0ZXJUeXBlO2RbMF0hPT15fHxkWzFdIT09cHx8ZFsyXSE9PWh8fGRbM10hPT1nLmlzRXJyb3JPdmVybGF5T3Blbnx8ZFs0XSE9PXY/KGU9dj4wJiZ7dGl0bGU6XCJcIi5jb25jYXQodixcIiBcIikuY29uY2F0KDE9PT12P1wiaXNzdWVcIjpcImlzc3Vlc1wiLFwiIGZvdW5kLiBDbGljayB0byB2aWV3IGRldGFpbHMgaW4gdGhlIGRldiBvdmVybGF5LlwiKSxsYWJlbDpcIklzc3Vlc1wiLHZhbHVlOigwLGIuanN4KShveix7Y2hpbGRyZW46dn0pLG9uQ2xpY2s6ZnVuY3Rpb24oKXtpZihnLmlzRXJyb3JPdmVybGF5T3Blbil7eSh7dHlwZTpGfSkscChudWxsKTtyZXR1cm59cChudWxsKSxoKC0xKSx2PjAmJnkoe3R5cGU6VX0pfX0sZFswXT15LGRbMV09cCxkWzJdPWgsZFszXT1nLmlzRXJyb3JPdmVybGF5T3BlbixkWzRdPXYsZFs1XT1lKTplPWRbNV07dmFyIHc9XCJDdXJyZW50IHJvdXRlIGlzIFwiLmNvbmNhdChnLnN0YXRpY0luZGljYXRvcj9cInN0YXRpY1wiOlwiZHluYW1pY1wiLFwiLlwiKSxDPWcuc3RhdGljSW5kaWNhdG9yP1wiU3RhdGljXCI6XCJEeW5hbWljXCI7ZFs2XSE9PXA/KHQ9ZnVuY3Rpb24oKXtyZXR1cm4gcChcInJvdXRlLXR5cGVcIil9LGRbNl09cCxkWzddPXQpOnQ9ZFs3XTt2YXIgXz1nLnN0YXRpY0luZGljYXRvcj9cInN0YXRpY1wiOlwiZHluYW1pY1wiO3JldHVybiBkWzhdIT09Xz8obj17XCJkYXRhLW5leHRqcy1yb3V0ZS10eXBlXCI6X30sZFs4XT1fLGRbOV09bik6bj1kWzldLGRbMTBdIT09d3x8ZFsxMV0hPT1DfHxkWzEyXSE9PXR8fGRbMTNdIT09bj8ocj17dGl0bGU6dyxsYWJlbDpcIlJvdXRlXCIsdmFsdWU6QyxvbkNsaWNrOnQsYXR0cmlidXRlczpufSxkWzEwXT13LGRbMTFdPUMsZFsxMl09dCxkWzEzXT1uLGRbMTRdPXIpOnI9ZFsxNF0sZFsxNV0hPT1wPyhvPXByb2Nlc3MuZW52LlRVUkJPUEFDSz97dGl0bGU6XCJUdXJib3BhY2sgaXMgZW5hYmxlZC5cIixsYWJlbDpcIlR1cmJvcGFja1wiLHZhbHVlOlwiRW5hYmxlZFwifTp7dGl0bGU6XCJMZWFybiBhYm91dCBUdXJib3BhY2sgYW5kIGhvdyB0byBlbmFibGUgaXQgaW4geW91ciBhcHBsaWNhdGlvbi5cIixsYWJlbDpcIlRyeSBUdXJib3BhY2tcIix2YWx1ZTooMCxiLmpzeCkob1Qse30pLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gcChcInR1cmJvLWluZm9cIil9fSxkWzE1XT1wLGRbMTZdPW8pOm89ZFsxNl0sZFsxN10hPT14fHxkWzE4XSE9PXA/KGE9ISFwcm9jZXNzLmVudi5fX05FWFRfREVWVE9PTF9TRUdNRU5UX0VYUExPUkVSJiZ4JiZ7bGFiZWw6XCJSb3V0ZSBJbmZvXCIsdmFsdWU6KDAsYi5qc3gpKG9ULHt9KSxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHAoXCJzZWdtZW50LWV4cGxvcmVyXCIpfSxhdHRyaWJ1dGVzOntcImRhdGEtc2VnbWVudC1leHBsb3JlclwiOiEwfX0sZFsxN109eCxkWzE4XT1wLGRbMTldPWEpOmE9ZFsxOV0sZFsyMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaT0oMCxiLmpzeCkodUYse30pLGRbMjBdPWkpOmk9ZFsyMF0sZFsyMV0hPT1wPyhsPWZ1bmN0aW9uKCl7cmV0dXJuIHAoXCJwcmVmZXJlbmNlc1wiKX0sZFsyMV09cCxkWzIyXT1sKTpsPWRbMjJdLGRbMjNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHM9e1wiZGF0YS1wcmVmZXJlbmNlc1wiOiEwfSxkWzIzXT1zKTpzPWRbMjNdLGRbMjRdIT09bD8oYz17bGFiZWw6XCJQcmVmZXJlbmNlc1wiLHZhbHVlOmksb25DbGljazpsLGZvb3RlcjohMCxhdHRyaWJ1dGVzOnN9LGRbMjRdPWwsZFsyNV09Yyk6Yz1kWzI1XSxkWzI2XSE9PWV8fGRbMjddIT09Y3x8ZFsyOF0hPT1yfHxkWzI5XSE9PW98fGRbMzBdIT09YT8odT0oMCxiLmpzeCkob1Ase2l0ZW1zOltlLHIsbyxhLGNdfSksZFsyNl09ZSxkWzI3XT1jLGRbMjhdPXIsZFsyOV09byxkWzMwXT1hLGRbMzFdPXUpOnU9ZFszMV0sdX0sdSQ9ZnVuY3Rpb24oKXt2YXIgZSx0PSgwLEEuYykoNCksbj1kYSgpLHI9bi5zdGF0ZSxvPW4uZGlzcGF0Y2gsYT1uLnNoYWRvd1Jvb3Q7cmV0dXJuIHRbMF0hPT1vfHx0WzFdIT09YXx8dFsyXSE9PXIuZGlzYWJsZURldkluZGljYXRvcj8oZT1mdW5jdGlvbigpe28oe3R5cGU6WixkaXNhYmxlZDohci5kaXNhYmxlRGV2SW5kaWNhdG9yfSk7dmFyIGU9YS5nZXRFbGVtZW50QnlJZChcInBhbmVsLXJvdXRlXCIpLHQ9YS5nZXRFbGVtZW50QnlJZChcImRhdGEtZGV2dG9vbHMtaW5kaWNhdG9yXCIpO2lmKGUmJmUuZmlyc3RFbGVtZW50Q2hpbGQpe3ZhciBuPWUuZmlyc3RFbGVtZW50Q2hpbGQsaT1cIm5vbmVcIj09PW4uc3R5bGUuZGlzcGxheTtuLnN0eWxlLmRpc3BsYXk9aT9cIlwiOlwibm9uZVwifWlmKHQpe3ZhciBsPVwibm9uZVwiPT09dC5zdHlsZS5kaXNwbGF5O3Quc3R5bGUuZGlzcGxheT1sP1wiXCI6XCJub25lXCJ9fSx0WzBdPW8sdFsxXT1hLHRbMl09ci5kaXNhYmxlRGV2SW5kaWNhdG9yLHRbM109ZSk6ZT10WzNdLGV9LHVXPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYsdyxDLF8sayxFLGosUyxPPSgwLEEuYykoNDQpLEI9ZGEoKS5zdGF0ZSxQPXIyKCkudHJpZ2dlclJlZixJPXUkKCksej1cImFwcFwiPT09Qi5yb3V0ZXJUeXBlO09bMF0hPT1CLmhpZGVTaG9ydGN1dHx8T1sxXSE9PUk/KHM9Qi5oaWRlU2hvcnRjdXQ/KGU9e30sdD1CLmhpZGVTaG9ydGN1dCxuPUksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZSk6e30sT1swXT1CLmhpZGVTaG9ydGN1dCxPWzFdPUksT1syXT1zKTpzPU9bMl0scj1zLG89UCwobD0oMCxBLmMpKDQpKVswXSE9PW98fGxbMV0hPT1yPyhhPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSl7aWYoISgobj10OSgodD1vKS5jdXJyZW50KSkmJihcInRydWVcIj09PW4uY29udGVudEVkaXRhYmxlfHxcIklOUFVUXCI9PT1uLnRhZ05hbWV8fFwiVEVYVEFSRUFcIj09PW4udGFnTmFtZXx8XCJTRUxFQ1RcIj09PW4udGFnTmFtZXx8XCJ0cnVlXCI9PT1uLmRhdGFzZXRbXCJzaG9ydGN1dC1yZWNvcmRlclwiXSkmJiFuLmhhc0F0dHJpYnV0ZShcInJlYWRvbmx5XCIpKSl7dmFyIHQsbixhPVtdO2UubWV0YUtleSYmYS5wdXNoKFwiTWV0YVwiKSxlLmN0cmxLZXkmJmEucHVzaChcIkNvbnRyb2xcIiksZS5hbHRLZXkmJmEucHVzaChcIkFsdFwiKSxlLnNoaWZ0S2V5JiZhLnB1c2goXCJTaGlmdFwiKSxcIk1ldGFcIiE9PWUua2V5JiZcIkNvbnRyb2xcIiE9PWUua2V5JiZcIkFsdFwiIT09ZS5rZXkmJlwiU2hpZnRcIiE9PWUua2V5JiZhLnB1c2goZS5jb2RlKTt2YXIgaT1hLmpvaW4oXCIrXCIpO3JbaV0mJihlLnByZXZlbnREZWZhdWx0KCkscltpXSgpKX19O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKSxmdW5jdGlvbigpe3JldHVybiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixlKX19LGk9W28scl0sbFswXT1vLGxbMV09cixsWzJdPWEsbFszXT1pKTooYT1sWzJdLGk9bFszXSksKDAseC51c2VFZmZlY3QpKGEsaSksT1szXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhjPSgwLGIuanN4KSh1USx7bmFtZTpcInBhbmVsLXNlbGVjdG9yXCIsY2hpbGRyZW46KDAsYi5qc3gpKHVWLHt9KX0pLE9bM109Yyk6Yz1PWzNdO3ZhciBUPTUwMC9CLnNjYWxlO09bNF0hPT1UPyh1PXtraW5kOlwiZml4ZWRcIixoZWlnaHQ6VCx3aWR0aDo1MTJ9LE9bNF09VCxPWzVdPXUpOnU9T1s1XSxPWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGQ9KDAsYi5qc3gpKHVaLHt0aXRsZTpcIlByZWZlcmVuY2VzXCJ9KSxmPSgwLGIuanN4KSh1Syx7fSksT1s2XT1kLE9bN109Zik6KGQ9T1s2XSxmPU9bN10pLE9bOF0hPT11PyhwPSgwLGIuanN4KSh1USx7bmFtZTpcInByZWZlcmVuY2VzXCIsY2hpbGRyZW46KDAsYi5qc3gpKG8wLHtzaGFyZVBhbmVsU2l6ZUdsb2JhbGx5OiExLHNpemVDb25maWc6dSxjbG9zZU9uQ2xpY2tPdXRzaWRlOiEwLGhlYWRlcjpkLGNoaWxkcmVuOmZ9KX0pLE9bOF09dSxPWzldPXApOnA9T1s5XTt2YXIgRD1CLnN0YXRpY0luZGljYXRvcj9cInN0YXRpY1wiOlwiZHluYW1pY1wiLEw9Qi5zdGF0aWNJbmRpY2F0b3I/MzAwL0Iuc2NhbGU6MzI1L0Iuc2NhbGUsTj00MDAvQi5zY2FsZTtPWzEwXSE9PUx8fE9bMTFdIT09Tj8oaD17a2luZDpcImZpeGVkXCIsaGVpZ2h0Okwsd2lkdGg6Tn0sT1sxMF09TCxPWzExXT1OLE9bMTJdPWgpOmg9T1sxMl07dmFyIFI9XCJcIi5jb25jYXQoQi5zdGF0aWNJbmRpY2F0b3I/XCJTdGF0aWNcIjpcIkR5bmFtaWNcIixcIiBSb3V0ZVwiKTtPWzEzXSE9PVI/KG09KDAsYi5qc3gpKHVaLHt0aXRsZTpSfSksT1sxM109UixPWzE0XT1tKTptPU9bMTRdLE9bMTVdIT09Qi5yb3V0ZXJUeXBlfHxPWzE2XSE9PUIuc3RhdGljSW5kaWNhdG9yPyhnPSgwLGIuanN4KShuMSx7cm91dGVyVHlwZTpCLnJvdXRlclR5cGUsaXNTdGF0aWNSb3V0ZTpCLnN0YXRpY0luZGljYXRvcn0pLE9bMTVdPUIucm91dGVyVHlwZSxPWzE2XT1CLnN0YXRpY0luZGljYXRvcixPWzE3XT1nKTpnPU9bMTddO3ZhciBNPW4wW0Iucm91dGVyVHlwZV1bQi5zdGF0aWNJbmRpY2F0b3I/XCJzdGF0aWNcIjpcImR5bmFtaWNcIl07T1sxOF0hPT1NPyh5PSgwLGIuanN4KSh1WSx7aHJlZjpNfSksT1sxOF09TSxPWzE5XT15KTp5PU9bMTldLE9bMjBdIT09Z3x8T1syMV0hPT15Pyh2PSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicGFuZWwtY29udGVudFwiLGNoaWxkcmVuOltnLHldfSksT1syMF09ZyxPWzIxXT15LE9bMjJdPXYpOnY9T1syMl0sT1syM10hPT1ofHxPWzI0XSE9PW18fE9bMjVdIT09dnx8T1syNl0hPT1EPyh3PSgwLGIuanN4KSh1USx7bmFtZTpcInJvdXRlLXR5cGVcIixjaGlsZHJlbjooMCxiLmpzeCkobzAse3NoYXJlUGFuZWxTaXplR2xvYmFsbHk6ITEsc2l6ZUNvbmZpZzpoLGNsb3NlT25DbGlja091dHNpZGU6ITAsaGVhZGVyOm0sY2hpbGRyZW46dn0sRCl9KSxPWzIzXT1oLE9bMjRdPW0sT1syNV09dixPWzI2XT1ELE9bMjddPXcpOnc9T1syN10sT1syOF0hPT16fHxPWzI5XSE9PUIucGFnZXx8T1szMF0hPT1CLnNjYWxlPyhDPXByb2Nlc3MuZW52Ll9fTkVYVF9ERVZUT09MX1NFR01FTlRfRVhQTE9SRVImJnomJigwLGIuanN4KSh1USx7bmFtZTpcInNlZ21lbnQtZXhwbG9yZXJcIixjaGlsZHJlbjooMCxiLmpzeCkobzAse3NoYXJlUGFuZWxTaXplR2xvYmFsbHk6ITEsc2hhcmVQYW5lbFBvc2l0aW9uR2xvYmFsbHk6ITEsZHJhZ2dhYmxlOiEwLHNpemVDb25maWc6e2tpbmQ6XCJyZXNpemFibGVcIixtYXhIZWlnaHQ6XCI5MHZoXCIsbWF4V2lkdGg6XCI5MHZ3XCIsbWluSGVpZ2h0OjIwMC9CLnNjYWxlLG1pbldpZHRoOjI1MC9CLnNjYWxlLGluaXRpYWxTaXplOntoZWlnaHQ6Mzc1L0Iuc2NhbGUsd2lkdGg6NDAwL0Iuc2NhbGV9fSxoZWFkZXI6KDAsYi5qc3gpKHVaLHt0aXRsZTpcIlJvdXRlIEluZm9cIn0pLGNoaWxkcmVuOigwLGIuanN4KSh1eix7cGFnZTpCLnBhZ2V9KX0pfSksT1syOF09eixPWzI5XT1CLnBhZ2UsT1szMF09Qi5zY2FsZSxPWzMxXT1DKTpDPU9bMzFdO3ZhciBaPTQ3MC9CLnNjYWxlLFU9NDAwL0Iuc2NhbGU7cmV0dXJuIE9bMzJdIT09Wnx8T1szM10hPT1VPyhfPXtraW5kOlwiZml4ZWRcIixoZWlnaHQ6Wix3aWR0aDpVfSxPWzMyXT1aLE9bMzNdPVUsT1szNF09Xyk6Xz1PWzM0XSxPWzM1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhrPSgwLGIuanN4KSh1Wix7dGl0bGU6XCJUcnkgVHVyYm9wYWNrXCJ9KSxPWzM1XT1rKTprPU9bMzVdLE9bMzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KEU9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwYW5lbC1jb250ZW50XCIsY2hpbGRyZW46WygwLGIuanN4KShuWSx7fSksKDAsYi5qc3gpKHVZLHtocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvdHVyYm9wYWNrXCJ9KV19KSxPWzM2XT1FKTpFPU9bMzZdLE9bMzddIT09Xz8oaj0oMCxiLmpzeCkodVEse25hbWU6XCJ0dXJiby1pbmZvXCIsY2hpbGRyZW46KDAsYi5qc3gpKG8wLHtzaGFyZVBhbmVsU2l6ZUdsb2JhbGx5OiExLHNpemVDb25maWc6XyxjbG9zZU9uQ2xpY2tPdXRzaWRlOiEwLGhlYWRlcjprLGNoaWxkcmVuOkV9KX0pLE9bMzddPV8sT1szOF09aik6aj1PWzM4XSxPWzM5XSE9PXd8fE9bNDBdIT09Q3x8T1s0MV0hPT1qfHxPWzQyXSE9PXA/KFM9KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbYyxwLHcsQyxqXX0pLE9bMzldPXcsT1s0MF09QyxPWzQxXT1qLE9bNDJdPXAsT1s0M109Uyk6Uz1PWzQzXSxTfSx1WT1mdW5jdGlvbihlKXt2YXIgdCxuPSgwLEEuYykoMikscj1lLmhyZWY7cmV0dXJuIG5bMF0hPT1yPyh0PSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1idXR0b24tY29udGFpbmVyXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwiYVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1sZWFybi1tb3JlLWJ1dHRvblwiLGhyZWY6cix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyIG5vb3BlbmVyXCIsY2hpbGRyZW46XCJMZWFybiBNb3JlXCJ9KX0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fSx1Sz1mdW5jdGlvbigpe3ZhciBlLHQsbixyLG89KDAsQS5jKSgxNyksYT1kYSgpLGk9YS5kaXNwYXRjaCxsPWEuc3RhdGUscz1yMigpLGM9cy5zZXRQYW5lbCx1PXMuc2V0U2VsZWN0ZWRJbmRleCxkPW93KCk7cmV0dXJuIG9bMF0hPT1pPyhlPWZ1bmN0aW9uKGUpe2koe3R5cGU6WCxzY2FsZTplfSl9LG9bMF09aSxvWzFdPWUpOmU9b1sxXSxvWzJdIT09aXx8b1szXSE9PWQ/KHQ9ZnVuY3Rpb24oZSl7aSh7dHlwZTpZLGRldlRvb2xzUG9zaXRpb246ZX0pLGQoZSl9LG9bMl09aSxvWzNdPWQsb1s0XT10KTp0PW9bNF0sb1s1XSE9PWl8fG9bNl0hPT1jfHxvWzddIT09dT8obj1mdW5jdGlvbigpe2koe3R5cGU6WixkaXNhYmxlZDohMH0pLHUoLTEpLGMobnVsbCksZmV0Y2goXCIvX19uZXh0anNfZGlzYWJsZV9kZXZfaW5kaWNhdG9yXCIse21ldGhvZDpcIlBPU1RcIn0pfSxvWzVdPWksb1s2XT1jLG9bN109dSxvWzhdPW4pOm49b1s4XSxvWzldIT09bC5kZXZUb29sc1Bvc2l0aW9ufHxvWzEwXSE9PWwuaGlkZVNob3J0Y3V0fHxvWzExXSE9PWwuc2NhbGV8fG9bMTJdIT09bC50aGVtZXx8b1sxM10hPT1lfHxvWzE0XSE9PXR8fG9bMTVdIT09bj8ocj0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwidXNlci1wcmVmZXJlbmNlcy13cmFwcGVyXCIsY2hpbGRyZW46KDAsYi5qc3gpKHJDLHt0aGVtZTpsLnRoZW1lLHBvc2l0aW9uOmwuZGV2VG9vbHNQb3NpdGlvbixzY2FsZTpsLnNjYWxlLHNldFNjYWxlOmUsc2V0UG9zaXRpb246dCxoaWRlU2hvcnRjdXQ6bC5oaWRlU2hvcnRjdXQsc2V0SGlkZVNob3J0Y3V0OnVKLGhpZGU6bn0pfSksb1s5XT1sLmRldlRvb2xzUG9zaXRpb24sb1sxMF09bC5oaWRlU2hvcnRjdXQsb1sxMV09bC5zY2FsZSxvWzEyXT1sLnRoZW1lLG9bMTNdPWUsb1sxNF09dCxvWzE1XT1uLG9bMTZdPXIpOnI9b1sxNl0scn0sdVg9ZnVuY3Rpb24oKXtyZXR1cm4oMCx4LnVzZUNvbnRleHQpKHVHKX0sdUc9KDAseC5jcmVhdGVDb250ZXh0KShudWxsKTtmdW5jdGlvbiB1UShlKXt2YXIgdCxuLHIsbyxhLGk9KDAsQS5jKSgxMiksbD1lLmNoaWxkcmVuLHM9ZS5uYW1lLGM9cjIoKS5wYW5lbDtpWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e2VudGVyRGVsYXk6MCxleGl0RGVsYXk6MjAwfSxpWzBdPXQpOnQ9aVswXTt2YXIgdT1yRChzPT09Yyx0KSxkPXUubW91bnRlZCxmPXUucmVuZGVyZWQ7aWYoIWQpcmV0dXJuIG51bGw7aVsxXSE9PWR8fGlbMl0hPT1zPyhuPXtuYW1lOnMsbW91bnRlZDpkfSxpWzFdPWQsaVsyXT1zLGlbM109bik6bj1pWzNdO3ZhciBwPSshIWY7aVs0XSE9PXA/KHI9e1wiLS1wYW5lbC1vcGFjaXR5XCI6cCxcIi0tcGFuZWwtdHJhbnNpdGlvblwiOlwib3BhY2l0eSBcIi5jb25jYXQoMjAwLFwibXMgXCIpLmNvbmNhdCh0Nyl9LGlbNF09cCxpWzVdPXIpOnI9aVs1XTt2YXIgaD1yO3JldHVybiBpWzZdIT09bHx8aVs3XSE9PWg/KG89KDAsYi5qc3gpKFwiZGl2XCIse2lkOlwicGFuZWwtcm91dGVcIixjbGFzc05hbWU6XCJwYW5lbC1yb3V0ZVwiLHN0eWxlOmgsY2hpbGRyZW46bH0pLGlbNl09bCxpWzddPWgsaVs4XT1vKTpvPWlbOF0saVs5XSE9PW58fGlbMTBdIT09bz8oYT0oMCxiLmpzeCkodUcse3ZhbHVlOm4sY2hpbGRyZW46b30pLGlbOV09bixpWzEwXT1vLGlbMTFdPWEpOmE9aVsxMV0sYX1mdW5jdGlvbiB1SihlKXtyQSh7aGlkZVNob3J0Y3V0OmV9KX1mdW5jdGlvbiB1MChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdTEoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHUwKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHUwKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfXZhciB1Mj0oMCx4LmNyZWF0ZUNvbnRleHQpKG51bGwpLHU0PWZ1bmN0aW9uKCl7cmV0dXJuKDAseC51c2VDb250ZXh0KSh1Mil9O2Z1bmN0aW9uIHU1KCl7dmFyIGUsdCxuLHIsbz0oMCxBLmMpKDExKSxhPXUxKCgwLHgudXNlU3RhdGUpKG51bGwpLDIpLGk9YVswXSxsPWFbMV0scz11MSgoMCx4LnVzZVN0YXRlKSgtMSksMiksYz1zWzBdLHU9c1sxXSxkPWRhKCksZj1kLnN0YXRlLHA9ZC5kaXNwYXRjaCxoPWQuZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHMsbT0oMCx4LnVzZVJlZikobnVsbCk7cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkociQse30pLHQ9KDAsYi5qc3gpKHJJLHt9KSxvWzBdPWUsb1sxXT10KTooZT1vWzBdLHQ9b1sxXSksb1syXSE9PXB8fG9bM10hPT1ofHxvWzRdIT09aXx8b1s1XSE9PWN8fG9bNl0hPT1mPyhuPWZ1bmN0aW9uKGUpe3ZhciB0PWUucnVudGltZUVycm9ycyxuPWUudG90YWxFcnJvckNvdW50O3JldHVybigwLGIuanN4KShiLkZyYWdtZW50LHtjaGlsZHJlbjpmLnNob3dJbmRpY2F0b3I/KDAsYi5qc3gpKGIuRnJhZ21lbnQse2NoaWxkcmVuOigwLGIuanN4KSh1Mix7dmFsdWU6e3J1bnRpbWVFcnJvcnM6dCx0b3RhbEVycm9yQ291bnQ6bn0sY2hpbGRyZW46KDAsYi5qc3hzKShyMSx7dmFsdWU6e3BhbmVsOmksc2V0UGFuZWw6bCx0cmlnZ2VyUmVmOm0sc2VsZWN0ZWRJbmRleDpjLHNldFNlbGVjdGVkSW5kZXg6dX0sY2hpbGRyZW46WygwLGIuanN4KShyUix7c3RhdGU6ZixkaXNwYXRjaDpwLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOmgscnVudGltZUVycm9yczp0LGVycm9yQ291bnQ6bn0pLCgwLGIuanN4KSh1Vyx7fSksKDAsYi5qc3gpKG94LHt9KV19KX0pfSk6bnVsbH0pfSxvWzJdPXAsb1szXT1oLG9bNF09aSxvWzVdPWMsb1s2XT1mLG9bN109bik6bj1vWzddLG9bOF0hPT1mfHxvWzldIT09bj8ocj0oMCxiLmpzeHMpKGVwLHtjaGlsZHJlbjpbZSx0LCgwLGIuanN4KShycSx7c3RhdGU6Zixpc0FwcERpcjohMCxjaGlsZHJlbjpufSldfSksb1s4XT1mLG9bOV09bixvWzEwXT1yKTpyPW9bMTBdLHJ9ZnVuY3Rpb24gdTMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHU2KGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB1MyhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHx1OShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gdTkoZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdTMoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdTMoZSx0KX19dmFyIHU4PW51bGwsdTc9W107ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPWFyZ3VtZW50c1tyXTt1OD9lLmFwcGx5KHZvaWQgMCxbdThdLmNvbmNhdCh1NihuKSkpOnU3LnB1c2goZnVuY3Rpb24odCl7ZS5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdCh1NihuKSkpfSl9fXZhciBkdD17b25CdWlsZE9rOmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6UH0pfSksb25CdWlsZEVycm9yOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpJLG1lc3NhZ2U6dH0pfSksb25CZWZvcmVSZWZyZXNoOmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6en0pfSksb25SZWZyZXNoOmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6VH0pfSksb25WZXJzaW9uSW5mbzpkZShmdW5jdGlvbihlLHQpe2Uoe3R5cGU6RCx2ZXJzaW9uSW5mbzp0fSl9KSxvblN0YXRpY0luZGljYXRvcjpkZShmdW5jdGlvbihlLHQpe2Uoe3R5cGU6QixzdGF0aWNJbmRpY2F0b3I6dH0pfSksb25EZWJ1Z0luZm86ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOlIsZGVidWdJbmZvOnR9KX0pLG9uRGV2SW5kaWNhdG9yOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpNLGRldkluZGljYXRvcjp0fSl9KSxvbkRldlRvb2xzQ29uZmlnOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpHLGRldlRvb2xzQ29uZmlnOnR9KX0pLG9uVW5oYW5kbGVkRXJyb3I6ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOkwscmVhc29uOnR9KX0pLG9uVW5oYW5kbGVkUmVqZWN0aW9uOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpOLHJlYXNvbjp0fSl9KSxvcGVuRXJyb3JPdmVybGF5OmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6VX0pfSksY2xvc2VFcnJvck92ZXJsYXk6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpGfSl9KSx0b2dnbGVFcnJvck92ZXJsYXk6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpxfSl9KSxidWlsZGluZ0luZGljYXRvckhpZGU6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpWfSl9KSxidWlsZGluZ0luZGljYXRvclNob3c6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpIfSl9KSxyZW5kZXJpbmdJbmRpY2F0b3JIaWRlOmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6V30pfSkscmVuZGVyaW5nSW5kaWNhdG9yU2hvdzpkZShmdW5jdGlvbihlKXtlKHt0eXBlOiR9KX0pLHNlZ21lbnRFeHBsb3Jlck5vZGVBZGQ6ZGUoZnVuY3Rpb24oZSx0KXthZSh0KX0pLHNlZ21lbnRFeHBsb3Jlck5vZGVSZW1vdmU6ZGUoZnVuY3Rpb24oZSx0KXthdCh0KX0pLHNlZ21lbnRFeHBsb3JlclVwZGF0ZVJvdXRlU3RhdGU6ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOmVuLHBhZ2U6dH0pfSl9O2Z1bmN0aW9uIGRuKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LE89KDAsQS5jKSgxOCksUT1lLmdldE93bmVyU3RhY2ssSj1lLmdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzLGVlPWUuaXNSZWNvdmVyYWJsZUVycm9yLGV0PWUucm91dGVyVHlwZSxlcj1lLnNoYWRvd1Jvb3QsZWw9KHQ9ZXQsbj1RLHI9ZWUsKHM9KDAsQS5jKSg3KSlbMF0hPT1ufHxzWzFdIT09cj8oYT1mdW5jdGlvbihlLHQsbyl7dmFyIGEsaT1uKG8pLGw9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnByb2Nlc3MuZW52Ll9fTkVYVF9ESVNUX0RJUjtyZXR1cm4gZT8oZT1lLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbmNsdWRlcyhcIihldmFsIFwiKSYmKGU9ZS5yZXBsYWNlKC9ldmFsIGNvZGUvZyxcImV2YWxcIikucmVwbGFjZSgvXFwoZXZhbCBhdCBbXigpXSogXFwoLyxcIihmaWxlOi8vXCIpLnJlcGxhY2UoL1xcKSwuKiQvZyxcIilcIikpLGV9KS5qb2luKFwiXFxuXCIpLCgwLEMucGFyc2UpKGUpLm1hcChmdW5jdGlvbihlKXt0cnl7dmFyIG49bmV3IFVSTChlLmZpbGUpLHI9Xy5leGVjKG4ucGF0aG5hbWUpO2lmKHIpe3ZhciBvLGE9bnVsbD09dHx8bnVsbD09KG89dC5yZXBsYWNlKC9cXFxcL2csXCIvXCIpKT92b2lkIDA6by5yZXBsYWNlKC9cXC8kLyxcIlwiKTthJiYoZS5maWxlPVwiZmlsZTovL1wiK2EuY29uY2F0KHIucG9wKCkpK24uc2VhcmNoKX19Y2F0Y2goZSl7fXJldHVybntmaWxlOmUuZmlsZSxsaW5lMTplLmxpbmVOdW1iZXIsY29sdW1uMTplLmNvbHVtbixtZXRob2ROYW1lOmUubWV0aG9kTmFtZSxhcmd1bWVudHM6ZS5hcmd1bWVudHN9fSkpOltdfSgoby5zdGFja3x8XCJcIikrKGl8fFwiXCIpKSxzPXtpZDp0LGVycm9yOm8sZnJhbWVzOmwsdHlwZTpyKG8pP1wicmVjb3ZlcmFibGVcIjooYT1vKSYmXCJORVhUX0NPTlNPTEVfRVJST1JcIj09PWFba10/XCJjb25zb2xlXCI6XCJydW50aW1lXCJ9LGM9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3Iuc3RhY2shPT1zLmVycm9yLnN0YWNrJiZlbyhlLmVycm9yLnN0YWNrKSE9PWVvKHMuZXJyb3Iuc3RhY2spfHxuKGUuZXJyb3IpIT09bihzLmVycm9yKX0pO3JldHVybiBjLmxlbmd0aD09PWUubGVuZ3RoPyhjLnB1c2gocyksYyk6ZX0sc1swXT1uLHNbMV09cixzWzJdPWEpOmE9c1syXSxjPWEsKHNbM10hPT1jPyhpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSBSOnJldHVybiBTKGooe30sZSkse2RlYnVnSW5mbzp0LmRlYnVnSW5mb30pO2Nhc2UgQjpyZXR1cm4gUyhqKHt9LGUpLHtzdGF0aWNJbmRpY2F0b3I6dC5zdGF0aWNJbmRpY2F0b3J9KTtjYXNlIFA6cmV0dXJuIFMoaih7fSxlKSx7YnVpbGRFcnJvcjpudWxsfSk7Y2FzZSBJOnJldHVybiBTKGooe30sZSkse2J1aWxkRXJyb3I6dC5tZXNzYWdlfSk7Y2FzZSB6OnJldHVybiBTKGooe30sZSkse3JlZnJlc2hTdGF0ZTp7dHlwZTpcInBlbmRpbmdcIixlcnJvcnM6W119fSk7Y2FzZSBUOnJldHVybiBTKGooe30sZSkse2J1aWxkRXJyb3I6bnVsbCxlcnJvcnM6XCJwZW5kaW5nXCI9PT1lLnJlZnJlc2hTdGF0ZS50eXBlP2UucmVmcmVzaFN0YXRlLmVycm9yczpbXSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJpZGxlXCJ9fSk7Y2FzZSBMOmNhc2UgTjpzd2l0Y2goZS5yZWZyZXNoU3RhdGUudHlwZSl7Y2FzZVwiaWRsZVwiOnJldHVybiBTKGooe30sZSkse25leHRJZDplLm5leHRJZCsxLGVycm9yczpjKGUuZXJyb3JzLGUubmV4dElkLHQucmVhc29uKX0pO2Nhc2VcInBlbmRpbmdcIjpyZXR1cm4gUyhqKHt9LGUpLHtuZXh0SWQ6ZS5uZXh0SWQrMSxyZWZyZXNoU3RhdGU6UyhqKHt9LGUucmVmcmVzaFN0YXRlKSx7ZXJyb3JzOmMoZS5lcnJvcnMsZS5uZXh0SWQsdC5yZWFzb24pfSl9KTtkZWZhdWx0OnJldHVybiBlfWNhc2UgRDpyZXR1cm4gUyhqKHt9LGUpLHt2ZXJzaW9uSW5mbzp0LnZlcnNpb25JbmZvfSk7Y2FzZSBaOnJldHVybiBTKGooe30sZSkse2Rpc2FibGVEZXZJbmRpY2F0b3I6dC5kaXNhYmxlZH0pO2Nhc2UgTTpyZXR1cm4gUyhqKHt9LGUpLHtzaG93SW5kaWNhdG9yOiEwLGRpc2FibGVEZXZJbmRpY2F0b3I6ZWF8fCEhdC5kZXZJbmRpY2F0b3IuZGlzYWJsZWRVbnRpbH0pO2Nhc2UgVTpyZXR1cm4gUyhqKHt9LGUpLHtpc0Vycm9yT3ZlcmxheU9wZW46ITB9KTtjYXNlIEY6cmV0dXJuIFMoaih7fSxlKSx7aXNFcnJvck92ZXJsYXlPcGVuOiExfSk7Y2FzZSBxOnJldHVybiBTKGooe30sZSkse2lzRXJyb3JPdmVybGF5T3BlbjohZS5pc0Vycm9yT3ZlcmxheU9wZW59KTtjYXNlIEg6cmV0dXJuIFMoaih7fSxlKSx7YnVpbGRpbmdJbmRpY2F0b3I6ITB9KTtjYXNlIFY6cmV0dXJuIFMoaih7fSxlKSx7YnVpbGRpbmdJbmRpY2F0b3I6ITF9KTtjYXNlICQ6cmV0dXJuIFMoaih7fSxlKSx7cmVuZGVyaW5nSW5kaWNhdG9yOiEwfSk7Y2FzZSBXOnJldHVybiBTKGooe30sZSkse3JlbmRlcmluZ0luZGljYXRvcjohMX0pO2Nhc2UgWTpyZXR1cm4gUyhqKHt9LGUpLHtkZXZUb29sc1Bvc2l0aW9uOnQuZGV2VG9vbHNQb3NpdGlvbn0pO2Nhc2UgSzpyZXR1cm4gUyhqKHt9LGUpLHtkZXZUb29sc1BhbmVsUG9zaXRpb246UyhqKHt9LGUuZGV2VG9vbHNQYW5lbFBvc2l0aW9uKSxFKHt9LHQua2V5LHQuZGV2VG9vbHNQYW5lbFBvc2l0aW9uKSl9KTtjYXNlIFg6cmV0dXJuIFMoaih7fSxlKSx7c2NhbGU6dC5zY2FsZX0pO2Nhc2UgZW46cmV0dXJuIFMoaih7fSxlKSx7cGFnZTp0LnBhZ2V9KTtjYXNlIEc6dmFyIG49dC5kZXZUb29sc0NvbmZpZyxyPW4udGhlbWUsbz1uLmRpc2FibGVEZXZJbmRpY2F0b3IsYT1uLmRldlRvb2xzUG9zaXRpb24saT1uLmRldlRvb2xzUGFuZWxQb3NpdGlvbixsPW4uZGV2VG9vbHNQYW5lbFNpemUscz1uLnNjYWxlLHU9bi5oaWRlU2hvcnRjdXQ7cmV0dXJuIFMoaih7fSxlKSx7dGhlbWU6bnVsbCE9cj9yOmUudGhlbWUsZGlzYWJsZURldkluZGljYXRvcjpudWxsIT1vP286ZS5kaXNhYmxlRGV2SW5kaWNhdG9yLGRldlRvb2xzUG9zaXRpb246bnVsbCE9YT9hOmUuZGV2VG9vbHNQb3NpdGlvbixkZXZUb29sc1BhbmVsUG9zaXRpb246bnVsbCE9aT9pOmUuZGV2VG9vbHNQYW5lbFBvc2l0aW9uLHNjYWxlOm51bGwhPXM/czplLnNjYWxlLGRldlRvb2xzUGFuZWxTaXplOm51bGwhPWw/bDplLmRldlRvb2xzUGFuZWxTaXplLGhpZGVTaG9ydGN1dDp2b2lkIDAhPT11P3U6ZS5oaWRlU2hvcnRjdXR9KTtkZWZhdWx0OnJldHVybiBlfX0sc1szXT1jLHNbNF09aSk6aT1zWzRdLHNbNV0hPT10KT8obz10LGw9UyhqKHt9LGVpKSx7aXNFcnJvck92ZXJsYXlPcGVuOlwicGFnZXNcIj09PW8scm91dGVyVHlwZTpvfSksc1s1XT10LHNbNl09bCk6bD1zWzZdLHU9KDAseC51c2VSZWR1Y2VyKShpLGwpLGQ9MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh1KXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh1LDIpfHx1OSh1LGQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxlcz1lbFswXSxlYz1lbFsxXTtyZXR1cm4gT1swXSE9PWVyLmhvc3R8fE9bMV0hPT1lcy50aGVtZT8oZj1mdW5jdGlvbigpe3ZhciBlPWVyLmhvc3Q7XCJkYXJrXCI9PT1lcy50aGVtZT8oZS5jbGFzc0xpc3QuYWRkKFwiZGFya1wiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJsaWdodFwiKSk6XCJsaWdodFwiPT09ZXMudGhlbWU/KGUuY2xhc3NMaXN0LmFkZChcImxpZ2h0XCIpLGUuY2xhc3NMaXN0LnJlbW92ZShcImRhcmtcIikpOihlLmNsYXNzTGlzdC5yZW1vdmUoXCJkYXJrXCIpLGUuY2xhc3NMaXN0LnJlbW92ZShcImxpZ2h0XCIpKX0sT1swXT1lci5ob3N0LE9bMV09ZXMudGhlbWUsT1syXT1mKTpmPU9bMl0sT1szXSE9PWVyfHxPWzRdIT09ZXMudGhlbWU/KHA9W2VyLGVzLnRoZW1lXSxPWzNdPWVyLE9bNF09ZXMudGhlbWUsT1s1XT1wKTpwPU9bNV0sKDAseC51c2VMYXlvdXRFZmZlY3QpKGYscCksT1s2XSE9PWVjPyhoPWZ1bmN0aW9uKCl7dTg9ZWM7dmFyIGU9c2V0VGltZW91dChmdW5jdGlvbigpeyFmdW5jdGlvbihlKXt0cnl7dmFyIHQ9ITAsbj0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBvLGE9dTdbU3ltYm9sLml0ZXJhdG9yXSgpOyEodD0obz1hLm5leHQoKSkuZG9uZSk7dD0hMCkoMCxvLnZhbHVlKShlKX1jYXRjaChlKXtuPSEwLHI9ZX1maW5hbGx5e3RyeXt0fHxudWxsPT1hLnJldHVybnx8YS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgcn19fWZpbmFsbHl7dTcubGVuZ3RoPTB9fShlYyl9KTtyZXR1cm4gZnVuY3Rpb24oKXt1OD1udWxsLGNsZWFyVGltZW91dChlKX19LE9bNl09ZWMsT1s3XT1oKTpoPU9bN10sT1s4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhtPVtdLE9bOF09bSk6bT1PWzhdLCgwLHgudXNlSW5zZXJ0aW9uRWZmZWN0KShoLG0pLE9bOV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZz0oMCxiLmpzeCkoZXUse30pLE9bOV09Zyk6Zz1PWzldLE9bMTBdIT09ZWN8fE9bMTFdIT09Snx8T1sxMl0hPT1lcnx8T1sxM10hPT1lcz8oeT17ZGlzcGF0Y2g6ZWMsZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6SixzaGFkb3dSb290OmVyLHN0YXRlOmVzfSxPWzEwXT1lYyxPWzExXT1KLE9bMTJdPWVyLE9bMTNdPWVzLE9bMTRdPXkpOnk9T1sxNF0sT1sxNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odj0oMCxiLmpzeCkodTUse30pLE9bMTVdPXYpOnY9T1sxNV0sT1sxNl0hPT15Pyh3PSgwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46W2csKDAsYi5qc3gpKGRyLHt2YWx1ZTp5LGNoaWxkcmVuOnZ9KV19KSxPWzE2XT15LE9bMTddPXcpOnc9T1sxN10sd312YXIgZHI9KDAseC5jcmVhdGVDb250ZXh0KShudWxsKSxkYT1mdW5jdGlvbigpe3JldHVybigwLHgudXNlQ29udGV4dCkoZHIpfSxkaT0hMSxkbD0hMTtmdW5jdGlvbiBkcygpe3JldHVybiBudWxsfWZ1bmN0aW9uIGRjKGUsdCl7aWYoZGkpdGhyb3cgRXJyb3IoXCJOZXh0IERldlRvb2xzOiBQYWdlcyBEZXYgT3ZlcmxheSBpcyBhbHJlYWR5IG1vdW50ZWQuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qc1wiKTtpZighZGwpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7bi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIixuLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixuLnNldEF0dHJpYnV0ZShcImRhdGEtbmV4dGpzLWRldi1vdmVybGF5XCIsXCJ0cnVlXCIpO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJuZXh0anMtcG9ydGFsXCIpO24uYXBwZW5kQ2hpbGQociksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKTt2YXIgbz0oMCxlbC5jcmVhdGVSb290KShyLHtpZGVudGlmaWVyUHJlZml4OlwibmR0LVwifSksYT1yLmF0dGFjaFNoYWRvdyh7bW9kZTpcIm9wZW5cIn0pOygwLHguc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe28ucmVuZGVyKCgwLGIuanN4KShkbix7Z2V0T3duZXJTdGFjazplLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOmRzLGlzUmVjb3ZlcmFibGVFcnJvcjp0LHJvdXRlclR5cGU6XCJhcHBcIixzaGFkb3dSb290OmF9KSl9KSxkbD0hMH19ZnVuY3Rpb24gZHUoZSx0LG4pe2lmKGRsKXRocm93IEVycm9yKFwiTmV4dCBEZXZUb29sczogQXBwIERldiBPdmVybGF5IGlzIGFscmVhZHkgbW91bnRlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzXCIpO2lmKCFkaSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm5leHRqcy1wb3J0YWxcIik7ci5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIsbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZSl7dmFyIHQ9ITAsbj0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBhLGk9ZVtTeW1ib2wuaXRlcmF0b3JdKCk7ISh0PShhPWkubmV4dCgpKS5kb25lKTt0PSEwKXt2YXIgbD1hLnZhbHVlO2lmKFwiY2hpbGRMaXN0XCI9PT1sLnR5cGUpe3ZhciBzPSEwLGM9ITEsdT12b2lkIDA7dHJ5e2Zvcih2YXIgZCxmPWwucmVtb3ZlZE5vZGVzW1N5bWJvbC5pdGVyYXRvcl0oKTshKHM9KGQ9Zi5uZXh0KCkpLmRvbmUpO3M9ITApZC52YWx1ZT09PXImJmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocil9Y2F0Y2goZSl7Yz0hMCx1PWV9ZmluYWxseXt0cnl7c3x8bnVsbD09Zi5yZXR1cm58fGYucmV0dXJuKCl9ZmluYWxseXtpZihjKXRocm93IHV9fX19fWNhdGNoKGUpe249ITAsbz1lfWZpbmFsbHl7dHJ5e3R8fG51bGw9PWkucmV0dXJufHxpLnJldHVybigpfWZpbmFsbHl7aWYobil0aHJvdyBvfX19KS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMH0pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocik7dmFyIG89KDAsZWwuY3JlYXRlUm9vdCkocix7aWRlbnRpZmllclByZWZpeDpcIm5kdC1cIn0pLGE9ci5hdHRhY2hTaGFkb3coe21vZGU6XCJvcGVuXCJ9KTsoMCx4LnN0YXJ0VHJhbnNpdGlvbikoZnVuY3Rpb24oKXtvLnJlbmRlcigoMCxiLmpzeCkoZG4se2dldE93bmVyU3RhY2s6ZSxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczp0LGlzUmVjb3ZlcmFibGVFcnJvcjpuLHJvdXRlclR5cGU6XCJwYWdlc1wiLHNoYWRvd1Jvb3Q6YX0pKX0pLGRpPSEwfX19KSgpLGV4cG9ydHMuRGV2T3ZlcmxheUNvbnRleHQ9X193ZWJwYWNrX2V4cG9ydHNfXy5EZXZPdmVybGF5Q29udGV4dCxleHBvcnRzLmRpc3BhdGNoZXI9X193ZWJwYWNrX2V4cG9ydHNfXy5kaXNwYXRjaGVyLGV4cG9ydHMucmVuZGVyQXBwRGV2T3ZlcmxheT1fX3dlYnBhY2tfZXhwb3J0c19fLnJlbmRlckFwcERldk92ZXJsYXksZXhwb3J0cy5yZW5kZXJQYWdlc0Rldk92ZXJsYXk9X193ZWJwYWNrX2V4cG9ydHNfXy5yZW5kZXJQYWdlc0Rldk92ZXJsYXksZXhwb3J0cy51c2VEZXZPdmVybGF5Q29udGV4dD1fX3dlYnBhY2tfZXhwb3J0c19fLnVzZURldk92ZXJsYXlDb250ZXh0LF9fd2VicGFja19leHBvcnRzX18pLTE9PT1bXCJEZXZPdmVybGF5Q29udGV4dFwiLFwiZGlzcGF0Y2hlclwiLFwicmVuZGVyQXBwRGV2T3ZlcmxheVwiLFwicmVuZGVyUGFnZXNEZXZPdmVybGF5XCIsXCJ1c2VEZXZPdmVybGF5Q29udGV4dFwiXS5pbmRleE9mKF9fd2VicGFja19pX18pJiYoZXhwb3J0c1tfX3dlYnBhY2tfaV9fXT1fX3dlYnBhY2tfZXhwb3J0c19fW19fd2VicGFja19pX19dKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cyxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/next-devtools/index.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/next/dist/compiled/process/browser.js": /*!************************************************************!*\ !*** ./node_modules/next/dist/compiled/process/browser.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={229:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;r { "use strict"; eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\");\n/**\n * @license React\n * react-dom-client.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\n true &&\n (function () {\n function findHook(fiber, id) {\n for (fiber = fiber.memoizedState; null !== fiber && 0 < id; )\n (fiber = fiber.next), id--;\n return fiber;\n }\n function copyWithSetImpl(obj, path, index, value) {\n if (index >= path.length) return value;\n var key = path[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n return updated;\n }\n function copyWithRename(obj, oldPath, newPath) {\n if (oldPath.length !== newPath.length)\n console.warn(\"copyWithRename() expects paths of the same length\");\n else {\n for (var i = 0; i < newPath.length - 1; i++)\n if (oldPath[i] !== newPath[i]) {\n console.warn(\n \"copyWithRename() expects paths to be the same except for the deepest key\"\n );\n return;\n }\n return copyWithRenameImpl(obj, oldPath, newPath, 0);\n }\n }\n function copyWithRenameImpl(obj, oldPath, newPath, index) {\n var oldKey = oldPath[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n index + 1 === oldPath.length\n ? ((updated[newPath[index]] = updated[oldKey]),\n isArrayImpl(updated)\n ? updated.splice(oldKey, 1)\n : delete updated[oldKey])\n : (updated[oldKey] = copyWithRenameImpl(\n obj[oldKey],\n oldPath,\n newPath,\n index + 1\n ));\n return updated;\n }\n function copyWithDeleteImpl(obj, path, index) {\n var key = path[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n if (index + 1 === path.length)\n return (\n isArrayImpl(updated) ? updated.splice(key, 1) : delete updated[key],\n updated\n );\n updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n return updated;\n }\n function shouldSuspendImpl() {\n return !1;\n }\n function shouldErrorImpl() {\n return null;\n }\n function warnInvalidHookAccess() {\n console.error(\n \"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks\"\n );\n }\n function warnInvalidContextAccess() {\n console.error(\n \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n );\n }\n function noop() {}\n function warnForMissingKey() {}\n function setToSortedString(set) {\n var array = [];\n set.forEach(function (value) {\n array.push(value);\n });\n return array.sort().join(\", \");\n }\n function createFiber(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n }\n function scheduleRoot(root, element) {\n root.context === emptyContextObject &&\n (updateContainerImpl(root.current, 2, element, root, null, null),\n flushSyncWork$1());\n }\n function scheduleRefresh(root, update) {\n if (null !== resolveFamily) {\n var staleFamilies = update.staleFamilies;\n update = update.updatedFamilies;\n flushPendingEffects();\n scheduleFibersWithFamiliesRecursively(\n root.current,\n update,\n staleFamilies\n );\n flushSyncWork$1();\n }\n }\n function setRefreshHandler(handler) {\n resolveFamily = handler;\n }\n function isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n }\n function getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n }\n function getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n }\n function getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n }\n function assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(\"Unable to find node on an unmounted component.\");\n }\n function findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate)\n throw Error(\"Unable to find node on an unmounted component.\");\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(\"Unable to find node on an unmounted component.\");\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, _child = parentA.child; _child; ) {\n if (_child === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (_child === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n _child = _child.sibling;\n }\n if (!didFindChild) {\n for (_child = parentB.child; _child; ) {\n if (_child === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (_child === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n _child = _child.sibling;\n }\n if (!didFindChild)\n throw Error(\n \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n );\n }\n }\n if (a.alternate !== b)\n throw Error(\n \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n if (3 !== a.tag)\n throw Error(\"Unable to find node on an unmounted component.\");\n return a.stateNode.current === a ? fiber : alternate;\n }\n function findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getComponentNameFromOwner(owner) {\n return \"number\" === typeof owner.tag\n ? getComponentNameFromFiber(owner)\n : \"string\" === typeof owner.name\n ? owner.name\n : null;\n }\n function getComponentNameFromFiber(fiber) {\n var type = fiber.type;\n switch (fiber.tag) {\n case 31:\n return \"Activity\";\n case 24:\n return \"Cache\";\n case 9:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case 10:\n return type.displayName || \"Context\";\n case 18:\n return \"DehydratedFragment\";\n case 11:\n return (\n (fiber = type.render),\n (fiber = fiber.displayName || fiber.name || \"\"),\n type.displayName ||\n (\"\" !== fiber ? \"ForwardRef(\" + fiber + \")\" : \"ForwardRef\")\n );\n case 7:\n return \"Fragment\";\n case 26:\n case 27:\n case 5:\n return type;\n case 4:\n return \"Portal\";\n case 3:\n return \"Root\";\n case 6:\n return \"Text\";\n case 16:\n return getComponentNameFromType(type);\n case 8:\n return type === REACT_STRICT_MODE_TYPE ? \"StrictMode\" : \"Mode\";\n case 22:\n return \"Offscreen\";\n case 12:\n return \"Profiler\";\n case 21:\n return \"Scope\";\n case 13:\n return \"Suspense\";\n case 19:\n return \"SuspenseList\";\n case 25:\n return \"TracingMarker\";\n case 1:\n case 0:\n case 14:\n case 15:\n if (\"function\" === typeof type)\n return type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n break;\n case 29:\n type = fiber._debugInfo;\n if (null != type)\n for (var i = type.length - 1; 0 <= i; i--)\n if (\"string\" === typeof type[i].name) return type[i].name;\n if (null !== fiber.return)\n return getComponentNameFromFiber(fiber.return);\n }\n return null;\n }\n function createCursor(defaultValue) {\n return { current: defaultValue };\n }\n function pop(cursor, fiber) {\n 0 > index$jscomp$0\n ? console.error(\"Unexpected pop.\")\n : (fiber !== fiberStack[index$jscomp$0] &&\n console.error(\"Unexpected Fiber popped.\"),\n (cursor.current = valueStack[index$jscomp$0]),\n (valueStack[index$jscomp$0] = null),\n (fiberStack[index$jscomp$0] = null),\n index$jscomp$0--);\n }\n function push(cursor, value, fiber) {\n index$jscomp$0++;\n valueStack[index$jscomp$0] = cursor.current;\n fiberStack[index$jscomp$0] = fiber;\n cursor.current = value;\n }\n function requiredContext(c) {\n null === c &&\n console.error(\n \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n );\n return c;\n }\n function pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance, fiber);\n push(contextFiberStackCursor, fiber, fiber);\n push(contextStackCursor, null, fiber);\n var nextRootContext = nextRootInstance.nodeType;\n switch (nextRootContext) {\n case 9:\n case 11:\n nextRootContext = 9 === nextRootContext ? \"#document\" : \"#fragment\";\n nextRootInstance = (nextRootInstance =\n nextRootInstance.documentElement)\n ? (nextRootInstance = nextRootInstance.namespaceURI)\n ? getOwnHostContext(nextRootInstance)\n : HostContextNamespaceNone\n : HostContextNamespaceNone;\n break;\n default:\n if (\n ((nextRootContext = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (nextRootInstance = getChildHostContextProd(\n nextRootInstance,\n nextRootContext\n ));\n else\n switch (nextRootContext) {\n case \"svg\":\n nextRootInstance = HostContextNamespaceSvg;\n break;\n case \"math\":\n nextRootInstance = HostContextNamespaceMath;\n break;\n default:\n nextRootInstance = HostContextNamespaceNone;\n }\n }\n nextRootContext = nextRootContext.toLowerCase();\n nextRootContext = updatedAncestorInfoDev(null, nextRootContext);\n nextRootContext = {\n context: nextRootInstance,\n ancestorInfo: nextRootContext\n };\n pop(contextStackCursor, fiber);\n push(contextStackCursor, nextRootContext, fiber);\n }\n function popHostContainer(fiber) {\n pop(contextStackCursor, fiber);\n pop(contextFiberStackCursor, fiber);\n pop(rootInstanceStackCursor, fiber);\n }\n function getHostContext() {\n return requiredContext(contextStackCursor.current);\n }\n function pushHostContext(fiber) {\n null !== fiber.memoizedState &&\n push(hostTransitionProviderCursor, fiber, fiber);\n var context = requiredContext(contextStackCursor.current);\n var type = fiber.type;\n var nextContext = getChildHostContextProd(context.context, type);\n type = updatedAncestorInfoDev(context.ancestorInfo, type);\n nextContext = { context: nextContext, ancestorInfo: type };\n context !== nextContext &&\n (push(contextFiberStackCursor, fiber, fiber),\n push(contextStackCursor, nextContext, fiber));\n }\n function popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor, fiber), pop(contextFiberStackCursor, fiber));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor, fiber),\n (HostTransitionContext._currentValue = NotPendingTransition));\n }\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function formatOwnerStack(error) {\n var prevPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n error = error.stack;\n Error.prepareStackTrace = prevPrepareStackTrace;\n error.startsWith(\"Error: react-stack-top-frame\\n\") &&\n (error = error.slice(29));\n prevPrepareStackTrace = error.indexOf(\"\\n\");\n -1 !== prevPrepareStackTrace &&\n (error = error.slice(prevPrepareStackTrace + 1));\n prevPrepareStackTrace = error.indexOf(\"react_stack_bottom_frame\");\n -1 !== prevPrepareStackTrace &&\n (prevPrepareStackTrace = error.lastIndexOf(\n \"\\n\",\n prevPrepareStackTrace\n ));\n if (-1 !== prevPrepareStackTrace)\n error = error.slice(0, prevPrepareStackTrace);\n else return \"\";\n return error;\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" ()\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"\") &&\n (_frame = _frame.replace(\"\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n }\n function getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do {\n info += describeFiber(workInProgress, previous);\n var debugInfo = workInProgress._debugInfo;\n if (debugInfo)\n for (var i = debugInfo.length - 1; 0 <= i; i--) {\n var entry = debugInfo[i];\n if (\"string\" === typeof entry.name) {\n var JSCompiler_temp_const = info;\n a: {\n var name = entry.name,\n env = entry.env,\n location = entry.debugLocation;\n if (null != location) {\n var childStack = formatOwnerStack(location),\n idx = childStack.lastIndexOf(\"\\n\"),\n lastLine =\n -1 === idx ? childStack : childStack.slice(idx + 1);\n if (-1 !== lastLine.indexOf(name)) {\n var JSCompiler_inline_result = \"\\n\" + lastLine;\n break a;\n }\n }\n JSCompiler_inline_result = describeBuiltInComponentFrame(\n name + (env ? \" [\" + env + \"]\" : \"\")\n );\n }\n info = JSCompiler_temp_const + JSCompiler_inline_result;\n }\n }\n previous = workInProgress;\n workInProgress = workInProgress.return;\n } while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n }\n function describeFunctionComponentFrameWithoutLineNumber(fn) {\n return (fn = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(fn)\n : \"\";\n }\n function getCurrentFiberOwnerNameInDevOrNull() {\n if (null === current) return null;\n var owner = current._debugOwner;\n return null != owner ? getComponentNameFromOwner(owner) : null;\n }\n function getCurrentFiberStackInDev() {\n if (null === current) return \"\";\n var workInProgress = current;\n try {\n var info = \"\";\n 6 === workInProgress.tag && (workInProgress = workInProgress.return);\n switch (workInProgress.tag) {\n case 26:\n case 27:\n case 5:\n info += describeBuiltInComponentFrame(workInProgress.type);\n break;\n case 13:\n info += describeBuiltInComponentFrame(\"Suspense\");\n break;\n case 19:\n info += describeBuiltInComponentFrame(\"SuspenseList\");\n break;\n case 31:\n info += describeBuiltInComponentFrame(\"Activity\");\n break;\n case 30:\n case 0:\n case 15:\n case 1:\n workInProgress._debugOwner ||\n \"\" !== info ||\n (info += describeFunctionComponentFrameWithoutLineNumber(\n workInProgress.type\n ));\n break;\n case 11:\n workInProgress._debugOwner ||\n \"\" !== info ||\n (info += describeFunctionComponentFrameWithoutLineNumber(\n workInProgress.type.render\n ));\n }\n for (; workInProgress; )\n if (\"number\" === typeof workInProgress.tag) {\n var fiber = workInProgress;\n workInProgress = fiber._debugOwner;\n var debugStack = fiber._debugStack;\n if (workInProgress && debugStack) {\n var formattedStack = formatOwnerStack(debugStack);\n \"\" !== formattedStack && (info += \"\\n\" + formattedStack);\n }\n } else if (null != workInProgress.debugStack) {\n var ownerStack = workInProgress.debugStack;\n (workInProgress = workInProgress.owner) &&\n ownerStack &&\n (info += \"\\n\" + formatOwnerStack(ownerStack));\n } else break;\n var JSCompiler_inline_result = info;\n } catch (x) {\n JSCompiler_inline_result =\n \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n return JSCompiler_inline_result;\n }\n function runWithFiberInDEV(fiber, callback, arg0, arg1, arg2, arg3, arg4) {\n var previousFiber = current;\n setCurrentFiber(fiber);\n try {\n return null !== fiber && fiber._debugTask\n ? fiber._debugTask.run(\n callback.bind(null, arg0, arg1, arg2, arg3, arg4)\n )\n : callback(arg0, arg1, arg2, arg3, arg4);\n } finally {\n setCurrentFiber(previousFiber);\n }\n throw Error(\n \"runWithFiberInDEV should never be called in production. This is a bug in React.\"\n );\n }\n function setCurrentFiber(fiber) {\n ReactSharedInternals.getCurrentStack =\n null === fiber ? null : getCurrentFiberStackInDev;\n isRendering = !1;\n current = fiber;\n }\n function typeName(value) {\n return (\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\"\n );\n }\n function willCoercionThrow(value) {\n try {\n return testStringCoercion(value), !1;\n } catch (e) {\n return !0;\n }\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkAttributeStringCoercion(value, attributeName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.\",\n attributeName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkCSSPropertyStringCoercion(value, propName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.\",\n propName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkFormFieldValueStringCoercion(value) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.\",\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function injectInternals(internals) {\n if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (hook.isDisabled) return !0;\n if (!hook.supportsFiber)\n return (\n console.error(\n \"The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools\"\n ),\n !0\n );\n try {\n (rendererID = hook.inject(internals)), (injectedHook = hook);\n } catch (err) {\n console.error(\"React instrumentation encountered an error: %o.\", err);\n }\n return hook.checkDCE ? !0 : !1;\n }\n function setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 &&\n unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {\n hasLoggedError ||\n ((hasLoggedError = !0),\n console.error(\n \"React instrumentation encountered an error: %o\",\n err\n ));\n }\n }\n function injectProfilingHooks(profilingHooks) {\n injectedProfilingHooks = profilingHooks;\n }\n function markCommitStopped() {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markCommitStopped &&\n injectedProfilingHooks.markCommitStopped();\n }\n function markComponentRenderStarted(fiber) {\n null !== injectedProfilingHooks &&\n \"function\" ===\n typeof injectedProfilingHooks.markComponentRenderStarted &&\n injectedProfilingHooks.markComponentRenderStarted(fiber);\n }\n function markComponentRenderStopped() {\n null !== injectedProfilingHooks &&\n \"function\" ===\n typeof injectedProfilingHooks.markComponentRenderStopped &&\n injectedProfilingHooks.markComponentRenderStopped();\n }\n function markRenderStarted(lanes) {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markRenderStarted &&\n injectedProfilingHooks.markRenderStarted(lanes);\n }\n function markRenderStopped() {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markRenderStopped &&\n injectedProfilingHooks.markRenderStopped();\n }\n function markStateUpdateScheduled(fiber, lane) {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markStateUpdateScheduled &&\n injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n }\n function clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n }\n function getLabelForLane(lane) {\n if (lane & 1) return \"SyncHydrationLane\";\n if (lane & 2) return \"Sync\";\n if (lane & 4) return \"InputContinuousHydration\";\n if (lane & 8) return \"InputContinuous\";\n if (lane & 16) return \"DefaultHydration\";\n if (lane & 32) return \"Default\";\n if (lane & 128) return \"TransitionHydration\";\n if (lane & 4194048) return \"Transition\";\n if (lane & 62914560) return \"Retry\";\n if (lane & 67108864) return \"SelectiveHydration\";\n if (lane & 134217728) return \"IdleHydration\";\n if (lane & 268435456) return \"Idle\";\n if (lane & 536870912) return \"Offscreen\";\n if (lane & 1073741824) return \"Deferred\";\n }\n function getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194048;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return (\n console.error(\n \"Should have found matching lanes. This is a bug in React.\"\n ),\n lanes\n );\n }\n }\n function getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes =\n getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n }\n function checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n }\n function computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return (\n console.error(\n \"Should have found matching lanes. This is a bug in React.\"\n ),\n -1\n );\n }\n }\n function claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n return lane;\n }\n function claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n }\n function createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n }\n function markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0),\n (root.pingedLanes = 0),\n (root.warmLanes = 0));\n }\n function markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n ) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index = 31 - clz32(remainingLanes),\n lane = 1 << index;\n entanglements[index] = 0;\n expirationTimes[index] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index] = null, index = 0;\n index < hiddenUpdatesForLane.length;\n index++\n ) {\n var update = hiddenUpdatesForLane[index];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n }\n function markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194090);\n }\n function markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index = 31 - clz32(rootEntangledLanes),\n lane = 1 << index;\n (lane & entangledLanes) | (root[index] & entangledLanes) &&\n (root[index] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n }\n function getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42)\n ? 1\n : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n }\n function getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n }\n function addFiberToLanesMap(root, fiber, lanes) {\n if (isDevToolsPresent)\n for (root = root.pendingUpdatersLaneMap; 0 < lanes; ) {\n var index = 31 - clz32(lanes),\n lane = 1 << index;\n root[index].add(fiber);\n lanes &= ~lane;\n }\n }\n function movePendingFibersToMemoized(root, lanes) {\n if (isDevToolsPresent)\n for (\n var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap,\n memoizedUpdaters = root.memoizedUpdaters;\n 0 < lanes;\n\n ) {\n var index = 31 - clz32(lanes);\n root = 1 << index;\n index = pendingUpdatersLaneMap[index];\n 0 < index.size &&\n (index.forEach(function (fiber) {\n var alternate = fiber.alternate;\n (null !== alternate && memoizedUpdaters.has(alternate)) ||\n memoizedUpdaters.add(fiber);\n }),\n index.clear());\n lanes &= ~root;\n }\n }\n function lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 0 !== DiscreteEventPriority && DiscreteEventPriority < lanes\n ? 0 !== ContinuousEventPriority && ContinuousEventPriority < lanes\n ? 0 !== (lanes & 134217727)\n ? DefaultEventPriority\n : IdleEventPriority\n : ContinuousEventPriority\n : DiscreteEventPriority;\n }\n function resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority\n ? DefaultEventPriority\n : getEventPriority(updatePriority.type);\n }\n function runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n }\n function detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n }\n function getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey]))\n return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n }\n function getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n }\n function getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag)\n return inst.stateNode;\n throw Error(\"getNodeFromInstance: Invalid argument.\");\n }\n function getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n }\n function markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n }\n function registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n }\n function registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] &&\n console.error(\n \"EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.\",\n registrationName\n );\n registrationNameDependencies[registrationName] = dependencies;\n var lowerCasedName = registrationName.toLowerCase();\n possibleRegistrationNames[lowerCasedName] = registrationName;\n \"onDoubleClick\" === registrationName &&\n (possibleRegistrationNames.ondblclick = registrationName);\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n }\n function checkControlledValueProps(tagName, props) {\n hasReadOnlyValue[props.type] ||\n props.onChange ||\n props.onInput ||\n props.readOnly ||\n props.disabled ||\n null == props.value ||\n (\"select\" === tagName\n ? console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.\"\n )\n : console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.\"\n ));\n props.onChange ||\n props.readOnly ||\n props.disabled ||\n null == props.checked ||\n console.error(\n \"You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.\"\n );\n }\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName))\n return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n console.error(\"Invalid attribute name: `%s`\", attributeName);\n return !1;\n }\n function getValueForAttributeOnCustomComponent(node, name, expected) {\n if (isAttributeNameSafe(name)) {\n if (!node.hasAttribute(name)) {\n switch (typeof expected) {\n case \"symbol\":\n case \"object\":\n return expected;\n case \"function\":\n return expected;\n case \"boolean\":\n if (!1 === expected) return expected;\n }\n return void 0 === expected ? void 0 : null;\n }\n node = node.getAttribute(name);\n if (\"\" === node && !0 === expected) return !0;\n checkAttributeStringCoercion(expected, name);\n return node === \"\" + expected ? expected : node;\n }\n }\n function setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix && \"aria-\" !== prefix) {\n node.removeAttribute(name);\n return;\n }\n }\n checkAttributeStringCoercion(value, name);\n node.setAttribute(name, \"\" + value);\n }\n }\n function setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n checkAttributeStringCoercion(value, name);\n node.setAttribute(name, \"\" + value);\n }\n }\n function setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n checkAttributeStringCoercion(value, name);\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n }\n function getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return checkFormFieldValueStringCoercion(value), value;\n default:\n return \"\";\n }\n }\n function isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n }\n function trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n checkFormFieldValueStringCoercion(value);\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n checkFormFieldValueStringCoercion(value);\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n }\n function track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n }\n function updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n }\n function getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n }\n function escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n }\n function validateInputProps(element, props) {\n void 0 === props.checked ||\n void 0 === props.defaultChecked ||\n didWarnCheckedDefaultChecked ||\n (console.error(\n \"%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n getCurrentFiberOwnerNameInDevOrNull() || \"A component\",\n props.type\n ),\n (didWarnCheckedDefaultChecked = !0));\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnValueDefaultValue$1 ||\n (console.error(\n \"%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n getCurrentFiberOwnerNameInDevOrNull() || \"A component\",\n props.type\n ),\n (didWarnValueDefaultValue$1 = !0));\n }\n function updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n ) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (checkAttributeStringCoercion(type, \"type\"), (element.type = type))\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) ||\n element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked &&\n \"function\" !== typeof checked &&\n \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (checkAttributeStringCoercion(name, \"name\"),\n (element.name = \"\" + getToStringValue(name)))\n : element.removeAttribute(\"name\");\n }\n function initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n ) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (checkAttributeStringCoercion(type, \"type\"), (element.type = type));\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked &&\n \"symbol\" !== typeof checked &&\n !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (checkAttributeStringCoercion(name, \"name\"), (element.name = name));\n track(element);\n }\n function setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n }\n function validateOptionProps(element, props) {\n null == props.value &&\n (\"object\" === typeof props.children && null !== props.children\n ? React.Children.forEach(props.children, function (child) {\n null == child ||\n \"string\" === typeof child ||\n \"number\" === typeof child ||\n \"bigint\" === typeof child ||\n didWarnInvalidChild ||\n ((didWarnInvalidChild = !0),\n console.error(\n \"Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to