1(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{105:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ createApp; });\n__webpack_require__.d(__webpack_exports__, "a", function() { return /* reexport */ nuxt_error; });\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\nvar asyncToGenerator = __webpack_require__(0);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 3 modules\nvar defineProperty = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js\nvar es_array_reduce = __webpack_require__(65);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(71);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.js\nvar es_promise = __webpack_require__(13);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(21);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(30);\n\n// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm.js\nvar vue_runtime_esm = __webpack_require__(5);\n\n// EXTERNAL MODULE: ./node_modules/vuex/dist/vuex.esm.js\nvar vuex_esm = __webpack_require__(44);\n\n// EXTERNAL MODULE: ./node_modules/vue-meta/dist/vue-meta.esm.browser.js\nvar vue_meta_esm_browser = __webpack_require__(193);\n\n// EXTERNAL MODULE: ./node_modules/vue-client-only/dist/vue-client-only.common.js\nvar vue_client_only_common = __webpack_require__(357);\nvar vue_client_only_common_default = /*#__PURE__*/__webpack_require__.n(vue_client_only_common);\n\n// EXTERNAL MODULE: ./node_modules/vue-no-ssr/dist/vue-no-ssr.common.js\nvar vue_no_ssr_common = __webpack_require__(161);\nvar vue_no_ssr_common_default = /*#__PURE__*/__webpack_require__.n(vue_no_ssr_common);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(18);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(20);\n\n// EXTERNAL MODULE: ./node_modules/vue-router/dist/vue-router.esm.js\nvar vue_router_esm = __webpack_require__(358);\n\n// EXTERNAL MODULE: ./node_modules/ufo/dist/index.mjs\nvar dist = __webpack_require__(104);\n\n// EXTERNAL MODULE: ./.nuxt/emerald/utils.js\nvar utils = __webpack_require__(6);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/router.scrollBehavior.js\n\n\n\n\nif (true) {\n if (\'scrollRestoration\' in window.history) {\n Object(utils["u" /* setScrollRestoration */])(\'manual\');\n\n // reset scrollRestoration to auto when leaving page, allowing page reload\n // and back-navigation from other pages to use the browser to restore the\n // scrolling position.\n window.addEventListener(\'beforeunload\', () => {\n Object(utils["u" /* setScrollRestoration */])(\'auto\');\n });\n\n // Setting scrollRestoration to manual again when returning to this page.\n window.addEventListener(\'load\', () => {\n Object(utils["u" /* setScrollRestoration */])(\'manual\');\n });\n }\n}\nfunction shouldScrollToTop(route) {\n var Pages = Object(utils["g" /* getMatchedComponents */])(route);\n if (Pages.length === 1) {\n var {\n options = {}\n } = Pages[0];\n return options.scrollToTop !== false;\n }\n return Pages.some(_ref => {\n var {\n options\n } = _ref;\n return options && options.scrollToTop;\n });\n}\n/* harmony default export */ var router_scrollBehavior = (function (to, from, savedPosition) {\n // If the returned position is falsy or an empty object, will retain current scroll position\n var position = false;\n var isRouteChanged = to !== from;\n\n // savedPosition is only available for popstate navigations (back button)\n if (savedPosition) {\n position = savedPosition;\n } else if (isRouteChanged && shouldScrollToTop(to)) {\n position = {\n x: 0,\n y: 0\n };\n }\n var nuxt = window.$nuxt;\n if (\n // Initial load (vuejs/vue-router#3199)\n !isRouteChanged ||\n // Route hash changes\n to.path === from.path && to.hash !== from.hash) {\n nuxt.$nextTick(() => nuxt.$emit(\'triggerScroll\'));\n }\n return new Promise(resolve => {\n // wait for the out transition to complete (if necessary)\n nuxt.$once(\'triggerScroll\', () => {\n // coords will be used if no selector is provided,\n // or if the selector didn\'t match any element.\n if (to.hash) {\n var hash = to.hash;\n // CSS.escape() is not supported with IE and Edge.\n if (typeof window.CSS !== \'undefined\' && typeof window.CSS.escape !== \'undefined\') {\n hash = \'#\' + window.CSS.escape(hash.substr(1));\n }\n try {\n var el = document.querySelector(hash);\n if (el) {\n var _getComputedStyle$scr;\n // scroll to anchor by returning the selector\n position = {\n selector: hash\n };\n // Respect any scroll-margin-top set in CSS when scrolling to anchor\n var y = Number((_getComputedStyle$scr = getComputedStyle(el)[\'scroll-margin-top\']) === null || _getComputedStyle$scr === void 0 ? void 0 : _getComputedStyle$scr.replace(\'px\', \'\'));\n if (y) {\n position.offset = {\n y\n };\n }\n }\n } catch (e) {\n console.warn(\'Failed to save scroll position. Please add CSS.escape() polyfill (https://github.com/mathiasbynens/CSS.escape).\');\n }\n }\n resolve(position);\n });\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/router.js\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {};
1 r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\nvar _4c9234a4 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/index */ 125).then(__webpack_require__.bind(null, 2590)));\nvar _05e180a7 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/auth/index */ 134).then(__webpack_require__.bind(null, 2591)));\nvar _6c71bbbe = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/blog/index */ 137).then(__webpack_require__.bind(null, 2592)));\nvar _dc406838 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/blog/index/index */ 138).then(__webpack_require__.bind(null, 2593)));\nvar _14c4de32 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/blog/index/_category/index */ 136).then(__webpack_require__.bind(null, 2594)));\nvar _74afebed = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/blog/index/_category/_slug/index */ 135).then(__webpack_require__.bind(null, 2595)));\nvar _12b5a81f = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/cart/index */ 139).then(__webpack_require__.bind(null, 2584)));\nvar _09855b62 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/cart/index/index */ 140).then(__webpack_require__.bind(null, 2596)));\nvar _87a32e52 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/cart/index/payment-order */ 141).then(__webpack_require__.bind(null, 2585)));\nvar _0737c250 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/cart/index/secure-payment */ 142).then(__webpack_require__.bind(null, 2597)));\nvar _047043f6 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/compare-list/index */ 144).then(__webpack_require__.bind(null, 2573)));\nvar _6cd1a0ac = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/contact-us/index */ 145).then(__webpack_require__.bind(null, 2598)));\nvar _4d2517ca = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/custom-design-emerald-rings-jewelry/index */ 146).then(__webpack_require__.bind(null, 2647)));\nvar _0a843d5f = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/education/index */ 165).then(__webpack_require__.bind(null, 2599)));\nvar _ae41febc = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/education/index/index */ 166).then(__webpack_require__.bind(null, 2600)));\nvar _a1e08520 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/education/index/_category/index */ 164).then(__webpack_require__.bind(null, 2625)));\nvar _0cd9e4ab = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/education/index/_category/_slug/index */ 163).then(__webpack_require__.bind(null, 2626)));\nvar _7abb25af = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/education/index/_ */ 162).then(__webpack_require__.bind(null, 2627)));\nvar _90a5941a = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-wedding-bands/index */ 180).then(__webpack_require__.bind(null, 2648)));\nvar _7b6a28e9 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-wedding-rings-bands/index */ 182).then(__webpack_require__.bind(null, 2879)));\nvar _5e11a30e = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/index */ 188).then(__webpack_require__.bind(null, 1105)));\nvar _03658469 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/extend-protection-
1plan/index */ 193).then(__webpack_require__.bind(null, 2601)));\nvar _e7a81d64 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/favorites/index */ 194).then(__webpack_require__.bind(null, 2574)));\nvar _7eb5aa70 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/featured-designers/index */ 197).then(__webpack_require__.bind(null, 2602)));\nvar _2db6b50e = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/financing/index */ 198).then(__webpack_require__.bind(null, 2603)));\nvar _4410911e = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/michael-arnstein/index */ 200).then(__webpack_require__.bind(null, 2604)));\nvar _e9eaebd4 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/our-staff/index */ 201).then(__webpack_require__.bind(null, 2605)));\nvar _83806b52 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/showroom/index */ 202).then(__webpack_require__.bind(null, 2586)));\nvar _f2090678 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/verify-email */ 206).then(__webpack_require__.bind(null, 2606)));\nvar _5c0fcfc2 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/wedding-bands-without-gemstone/index */ 208).then(__webpack_require__.bind(null, 2880)));\nvar _28454c7a = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/address-book/index */ 121).then(__webpack_require__.bind(null, 2607)));\nvar _7ab0576d = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/change-password/index */ 122).then(__webpack_require__.bind(null, 2608)));\nvar _5d27c286 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/notifications/index */ 126).then(__webpack_require__.bind(null, 2609)));\nvar _09308846 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/orders/index */ 127).then(__webpack_require__.bind(null, 2610)));\nvar _d8eca4d4 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/personal-details/index */ 128).then(__webpack_require__.bind(null, 2611)));\nvar _6b0d2439 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/preview-request-submissions/index */ 129).then(__webpack_require__.bind(null, 2575)));\nvar _0d4574af = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/recommendations/index */ 130).then(__webpack_require__.bind(null, 2612)));\nvar _092267ba = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/reset-password/index */ 132).then(__webpack_require__.bind(null, 2587)));\nvar _29302bf4 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/cart/order-summary */ 143).then(__webpack_require__.bind(null, 2613)));\nvar _36091730 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/colombian-emerald-rings/index */ 168).then(__webpack_require__.bind(null, 2881)));\nvar _1bcc8b20 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-bracelets-bangles/index */ 169).then(__webpack_require__.bind(null, 2882)));\nvar _73bfdd4b = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-bracelets/index */ 170).then(__webpack_require__.bind(null, 2649)));\nvar _329b5739 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-brooches/index */ 171).then(__webpack_require__.bind(null, 2883)));\nvar _982c6bb2 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-cufflinks/index */ 172).then(__webpack_require__.bind(null, 2884)));\nvar _6e0d793a = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-earrings/index */ 173).then(__webpack_require__.bind(null, 2885)));\nvar _f6d43646 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-necklaces-pendants/index */ 174).then(__webpack_require__.bind(null, 2886)));\nvar _15fc3ba3 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/emerald-rings/index */ 175).then(__webpack_require__.bind(null, 2887)));\nvar _02f8500e = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/engagement-emerald-rings/index */ 176).then(__webpack_require__.bind(null, 1066)));\nvar _dc729ed2 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/mens-emerald-rings/index */ 177).then(__webpack_require__.bind(null, 2888)));\nvar _502bd2b0 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/zambian-emerald-rings/index */ 178).then(__webpack_require__.bind(null, 2889)));\nvar _04854aa1 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/colombian-emeralds/index */ 184).then(__webpack_require__.bind(null, 2890)));\nvar _bb1349a2 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/emerald-cabochon/index */ 185).then(__webpack_require__.bind(null, 2891)));\nvar _44a5c807 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/gemologist-favorites/index */ 186).then(__webpack_require__.bind(null, 2892)));\nvar _a8b6f46a = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/gemologist-recommended/index */ 187).then(__webpack_require__.bind(null, 2893)));\nvar _62adf367 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/matched-pairs-of-emeralds/index */ 191).then(__webpack_require__.bind(null, 1733)));\nvar _176f09d9 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/zambian-emeralds/index */ 192).then(__webpack_require__.bind(null, 2894)));\nvar _613e59e6 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/showroom/preview */ 203).then(__webpack_require__.bind(null, 2614)));\nvar _4db41bd0 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/showroom/preview/index */ 204).then(__webpack_require__.bind(null, 2588)));\nvar _54647101 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/showroom/preview/success */ 205).then(__webpack_require__.bind(null, 2615)));\nvar _2ddf34a3 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-bracelet-settings/index */ 149).then(__webpack_require__.bind(null, 2895)));\nvar _01c09836 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-earring-settings/index */ 151).then(__webpack_require__.bind(null, 2896)));\nvar _5932c46d = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-engagement-ring-settings/index */ 153).then(__webpack_require__.bind(null, 1141)));\nvar _e483b374 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-necklace-pendant-settings/index */ 155).then(__webpack_require__.bind(null, 2897))
1);\nvar _73e42964 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-necklaces-settings/index */ 157).then(__webpack_require__.bind(null, 2650)));\nvar _b7580a18 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-pendants-settings/index */ 159).then(__webpack_require__.bind(null, 2651)));\nvar _08e99f82 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/mens-ring-settings/index */ 161).then(__webpack_require__.bind(null, 2898)));\nvar _4418d6a6 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/matched-pairs-of-emeralds/cabochon/index */ 190).then(__webpack_require__.bind(null, 2899)));\nvar _6aa35606 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/index */ 199).then(__webpack_require__.bind(null, 2652)));\nvar _fa1173e4 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-bracelet-settings/_id/index */ 148).then(__webpack_require__.bind(null, 2900)));\nvar _94fb5760 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-earring-settings/_id/index */ 150).then(__webpack_require__.bind(null, 2901)));\nvar _91ec3e50 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-engagement-ring-settings/_id/index */ 152).then(__webpack_require__.bind(null, 1142)));\nvar _10eeae31 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-necklace-pendant-settings/_id/index */ 154).then(__webpack_require__.bind(null, 2902)));\nvar _6244af39 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-necklaces-settings/_id/index */ 156).then(__webpack_require__.bind(null, 2653)));\nvar _ebe30842 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/emerald-pendants-settings/_id/index */ 158).then(__webpack_require__.bind(null, 2654)));\nvar _a9f9ad26 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/setting/mens-ring-settings/_id/index */ 160).then(__webpack_require__.bind(null, 2903)));\nvar _209a8552 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/confirm-change-email/_token/index */ 123).then(__webpack_require__.bind(null, 2628)));\nvar _3d62dbf6 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/confirm-password/_token/index */ 124).then(__webpack_require__.bind(null, 2616)));\nvar _6da0b445 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/reset-password/_token/index */ 131).then(__webpack_require__.bind(null, 2904)));\nvar _26ff3818 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/account/set-password/_token/index */ 133).then(__webpack_require__.bind(null, 2617)));\nvar _6d924c36 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/design-your-own/review/_id/index */ 147).then(__webpack_require__.bind(null, 2618)));\nvar _210102d2 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/matched-pairs-of-emeralds/_id/index */ 189).then(__webpack_require__.bind(null, 2905)));\nvar _1daa38fa = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-jewelry/_id/index */ 167).then(__webpack_require__.bind(null, 2619)));\nvar _ef77c144 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-wedding-bands/_id/index */ 179).then(__webpack_require__.bind(null, 2655)));\nvar _6dc2a754 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emerald-wedding-rings-bands/_id/index */ 181).then(__webpack_require__.bind(null, 2906)));\nvar _5e2686f9 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/emeralds/_id/index */ 183).then(__webpack_require__.bind(null, 1709)));\nvar _00c127e3 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/featured-designers/_name/index */ 196).then(__webpack_require__.bind(null, 2620)));\nvar _b9d18ca6 = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/wedding-bands-without-gemstone/_id/index */ 207).then(__webpack_require__.bind(null, 2907)));\nvar _612d994e = () => Object(utils["m" /* interopDefault */])(__webpack_require__.e(/* import() | pages/featured-designers/_name/_id/index */ 195).then(__webpack_require__.bind(null, 2621)));\nvar emptyFn = () => {};\nvue_runtime_esm["default"].use(vue_router_esm["a" /* default */]);\nvar routerOptions = {\n mode: \'history\',\n base: \'/\',\n linkActiveClass: \'nuxt-link-active\',\n linkExactActiveClass: \'nuxt-link-exact-active\',\n scrollBehavior: router_scrollBehavior,\n routes: [{\n path: "/account/",\n component: _4c9234a4,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account___en"\n }, {\n path: "/auth/",\n component: _05e180a7,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "auth___en"\n }, {\n path: "/blog/",\n component: _6c71bbbe,\n pathToRegexpOptions: {\n "strict": true\n },\n children: [{\n path: "",\n component: _dc406838,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "blog-index___en"\n }, {\n path: ":category/",\n component: _14c4de32,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "blog-index-category___en"\n }, {\n path: ":category/:slug/",\n component: _74afebed,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "blog-index-category-slug___en"\n }]\n }, {\n path: "/cart/",\n component: _12b5a81f,\n pathToRegexpOptions: {\n "strict": true\n },\n children: [{\n path: "",\n component: _09855b62,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "cart-index___en"\n }, {\n path: "payment-order/",\n component: _87a32e52,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "cart-index-payment-order___en"\n }, {\n path: "secure-payment/",\n component: _0737c250,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "cart-index-secure-payment___en"\n }]\n }, {\n path: "/compare-list/",\n component: _047043f6,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "compare-list___en"\n }, {\n path: "/contact-us/",\n component: _6cd1a0ac,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "contact-us___en"\n }, {\n path: "/custom-design-emerald-rings-jewelry/",\n component: _4d2517ca,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "custom-design-emerald-rings-jewelry___en"\n }, {\n path: "/education/",\n component: _0a843d5f,\n pathToRegexpOptions: {\n "strict": true\n },\n children: [{\n path: "",\n component: _ae41febc,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "education-index___en"\n }, {\n path: ":category/",\n component: _a1e08520,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "education-index-category___en"\n }, {\n path: ":category/:slug/",\n component: _0cd9e4ab,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "education-index-category-slug___en"\n }, {\n path: "*/",\n component: _7abb25af,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "education-index-all___en"\n }]\n }, {\n path: "/emerald-wedding-bands/",\n component: _90a5941a,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-wedding-bands___en"\n }, {\n path: "/emerald-wedding-rings-bands/",\n component: _7b6a28e9,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-wedding-rings-bands___en"\n }, {\n path: "/emeralds/",\n component: _5e11a30e,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds___en"\n }
1, {\n path: "/extend-protection-plan/",\n component: _03658469,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "extend-protection-plan___en"\n }, {\n path: "/favorites/",\n component: _e7a81d64,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "favorites___en"\n }, {\n path: "/featured-designers/",\n component: _7eb5aa70,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "featured-designers___en"\n }, {\n path: "/financing/",\n component: _2db6b50e,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "financing___en"\n }, {\n path: "/michael-arnstein/",\n component: _4410911e,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "michael-arnstein___en"\n }, {\n path: "/our-staff/",\n component: _e9eaebd4,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "our-staff___en"\n }, {\n path: "/showroom/",\n component: _83806b52,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "showroom___en"\n }, {\n path: "/verify-email/",\n component: _f2090678,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "verify-email___en"\n }, {\n path: "/wedding-bands-without-gemstone/",\n component: _5c0fcfc2,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "wedding-bands-without-gemstone___en"\n }, {\n path: "/account/address-book/",\n component: _28454c7a,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-address-book___en"\n }, {\n path: "/account/change-password/",\n component: _7ab0576d,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-change-password___en"\n }, {\n path: "/account/notifications/",\n component: _5d27c286,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-notifications___en"\n }, {\n path: "/account/orders/",\n component: _09308846,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-orders___en"\n }, {\n path: "/account/personal-details/",\n component: _d8eca4d4,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-personal-details___en"\n }, {\n path: "/account/preview-request-submissions/",\n component: _6b0d2439,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-preview-request-submissions___en"\n }, {\n path: "/account/recommendations/",\n component: _0d4574af,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-recommendations___en"\n }, {\n path: "/account/reset-password/",\n component: _092267ba,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-reset-password___en"\n }, {\n path: "/cart/order-summary/",\n component: _29302bf4,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "cart-order-summary___en"\n }, {\n path: "/emerald-jewelry/colombian-emerald-rings/",\n component: _36091730,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-colombian-emerald-rings___en"\n }, {\n path: "/emerald-jewelry/emerald-bracelets-bangles/",\n component: _1bcc8b20,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-bracelets-bangles___en"\n }, {\n path: "/emerald-jewelry/emerald-bracelets/",\n component: _73bfdd4b,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-bracelets___en"\n }, {\n path: "/emerald-jewelry/emerald-brooches/",\n component: _329b5739,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-brooches___en"\n }, {\n path: "/emerald-jewelry/emerald-cufflinks/",\n component: _982c6bb2,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-cufflinks___en"\n }, {\n path: "/emerald-jewelry/emerald-earrings/",\n component: _6e0d793a,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-earrings___en"\n }, {\n path: "/emerald-jewelry/emerald-necklaces-pendants/",\n component: _f6d43646,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-necklaces-pendants___en"\n }, {\n path: "/emerald-jewelry/emerald-rings/",\n component: _15fc3ba3,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-emerald-rings___en"\n }, {\n path: "/emerald-jewelry/engagement-emerald-rings/",\n component: _02f8500e,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-engagement-emerald-rings___en"\n }, {\n path: "/emerald-jewelry/mens-emerald-rings/",\n component: _dc729ed2,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-mens-emerald-rings___en"\n }, {\n path: "/emerald-jewelry/zambian-emerald-rings/",\n component: _502bd2b0,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-zambian-emerald-rings___en"\n }, {\n path: "/emeralds/colombian-emeralds/",\n component: _04854aa1,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-colombian-emeralds___en"\n }, {\n path: "/emeralds/emerald-cabochon/",\n component: _bb1349a2,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-emerald-cabochon___en"\n }, {\n path: "/emeralds/gemologist-favorites/",\n component: _44a5c807,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-gemologist-favorites___en"\n }, {\n path: "/emeralds/gemologist-recommended/",\n component: _a8b6f46a,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-gemologist-recommended___en"\n }, {\n path: "/emeralds/matched-pairs-of-emeralds/",\n component: _62adf367,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-matched-pairs-of-emeralds___en"\n }, {\n path: "/emeralds/zambian-emeralds/",\n component: _176f09d9,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-zambian-emeralds___en"\n }, {\n path: "/showroom/preview/",\n component: _613e59e6,\n pathToRegexpOptions: {\n "strict": true\n },\n children: [{\n path: "",\n component: _4db41bd0,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "showroom-preview___en"\n }, {\n path: "success/",\n component: _54647101,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "showroom-preview-success___en"\n }]\n }, {\n path: "/design-your-own/setting/emerald-bracelet-settings/",\n component: _2ddf34a3,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-bracelet-settings___en"\n }, {\n path: "/design-your-own/setting/emerald-earring-settings/",\n component: _01c09836,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-earring-settings___en"\n }, {\n path: "/design-your-own/setting/emerald-engagement-ring-settings/",\n component: _5932c46d,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-engagement-ring-settings___en"\n }, {\n path: "/design-your-own/setting/emerald-necklace-pendant-settings/",\n component: _e483b374,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-necklace-pendant-settings___en"\n }, {\n path: "/design-your-own/setting/emerald-necklaces-settings/",\n component: _73e42964,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-necklaces-settings___en"\n }, {\n path: "/design-your-own/setting/emerald-pendants-settings/",\n component: _b7580a18,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-pendants-settings___en"\n }, {\n path: "/design-your-own/setting/mens-ring-settings/",\n component: _08e99f82,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-mens-ring-settings___en"\n }, {\n path: "/emeralds/matched-pairs-of-emeralds/cabochon/",\n component: _4418d6a6,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-matched-pairs-of-emeralds-cabochon___en"\n }, {\n path: "/",\n component: _6aa35606,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "index___en"\n }, {\n path: "/design-your-own/setting/emerald-bracelet-settings/:id/",\n component: _fa1173e4,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-bracelet-settings-id___en"\n }, {\n path: "/design-your-own/setting/emerald-earring-settings/:id/",\n component: _94fb5760,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-earring-settings-id___en"\n }, {\n path: "/design-your-own/setting/emerald-engagement-ring-settings/:id/",\n component: _91ec3e50,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-engagement-ring-settings-id___en"\n }, {\n path: "/design-your-own/setting/emerald-necklace-pendant-settings/:id/",\n component: _10eeae31,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-necklace-pendant-settings-id___en"\n }, {\n path: "/design-your-own/setting/emerald-necklaces-settings/:id/",\n component: _6244af39,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-necklaces-settings-id___en"\n }, {\n path: "/design-your-own/setting/emerald-pendants-settings/:id/",\n component: _ebe30842,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-emerald-pendants-settings-id___en"\n }, {\n path: "/design-your-own/setting/mens-ring-settings/:id/",\n component: _a9f9ad26,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-setting-mens-ring-settings-id___en"\n }, {\n path: "/account/confirm-change-email/:token/",\n component: _209a8552,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-confirm-change-email-token___en"\n }, {\n path: "/account/confirm-password/:token/",\n component: _3d62dbf6,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-confirm-password-token___en"\n }, {\n path: "/account/reset-password/:token/",\n component: _6da0b445,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-reset-password-token___en"\n }, {\n path: "/account/set-password/:token/",\n component: _26ff3818,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "account-set-password-token___en"\n }, {\n path: "/design-your-own/review/:id/",\n component: _6d924c36,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "design-your-own-review-id___en"\n }, {\n path: "/emeralds/matched-pairs-of-emeralds/:id/",\n component: _210102d2,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-matched-pairs-of-emeralds-id___en"\n }, {\n path: "/emerald-jewelry/:id/",\n component: _1daa38fa,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-jewelry-id___en"\n }, {\n path: "/emerald-wedding-bands/:id/",\n component: _ef77c144,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-wedding-bands-id___en"\n }, {\n path: "/emerald-wedding-rings-bands/:id/",\n component: _6dc2a754,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emerald-wedding-rings-bands-id___en"\n }, {\n path: "/emeralds/:id/",\n component: _5e2686f9,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "emeralds-id___en"\n }, {\n path: "/featured-designers/:name/",\n component: _00c127e3,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "featured-designers-name___en"\n }, {\n path: "/wedding-bands-without-gemstone/:id/",\n component: _b9d18ca6,\n pathToRegexpOptions: {\n "strict": true\n }
1,\n name: "wedding-bands-without-gemstone-id___en"\n }, {\n path: "/featured-designers/:name?/:id/",\n component: _612d994e,\n pathToRegexpOptions: {\n "strict": true\n },\n name: "featured-designers-name-id___en"\n }],\n fallback: false\n};\nfunction createRouter(ssrContext, config) {\n var base = config._app && config._app.basePath || routerOptions.base;\n var router = new vue_router_esm["a" /* default */](_objectSpread(_objectSpread({}, routerOptions), {}, {\n base\n }));\n\n // TODO: remove in Nuxt 3\n var originalPush = router.push;\n router.push = function push(location) {\n var onComplete = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : emptyFn;\n var onAbort = arguments.length > 2 ? arguments[2] : undefined;\n return originalPush.call(this, location, onComplete, onAbort);\n };\n var resolve = router.resolve.bind(router);\n router.resolve = (to, current, append) => {\n if (typeof to === \'string\') {\n to = Object(dist["c" /* normalizeURL */])(to);\n }\n return resolve(to, current, append);\n };\n return router;\n}\n// CONCATENATED MODULE: ./.nuxt/emerald/components/nuxt-child.js\n/* harmony default export */ var nuxt_child = ({\n name: \'NuxtChild\',\n functional: true,\n props: {\n nuxtChildKey: {\n type: String,\n default: \'\'\n },\n keepAlive: Boolean,\n keepAliveProps: {\n type: Object,\n default: undefined\n }\n },\n render(_, _ref) {\n var {\n parent,\n data,\n props\n } = _ref;\n var h = parent.$createElement;\n data.nuxtChild = true;\n var _parent = parent;\n var transitions = parent.$nuxt.nuxt.transitions;\n var defaultTransition = parent.$nuxt.nuxt.defaultTransition;\n var depth = 0;\n while (parent) {\n if (parent.$vnode && parent.$vnode.data.nuxtChild) {\n depth++;\n }\n parent = parent.$parent;\n }\n data.nuxtChildDepth = depth;\n var transition = transitions[depth] || defaultTransition;\n var transitionProps = {};\n transitionsKeys.forEach(key => {\n if (typeof transition[key] !== \'undefined\') {\n transitionProps[key] = transition[key];\n }\n });\n var listeners = {};\n listenersKeys.forEach(key => {\n if (typeof transition[key] === \'function\') {\n listeners[key] = transition[key].bind(_parent);\n }\n });\n if (true) {\n // Add triggerScroll event on beforeEnter (fix #1376)\n var beforeEnter = listeners.beforeEnter;\n listeners.beforeEnter = el => {\n // Ensure to trigger scroll event after calling scrollBehavior\n window.$nuxt.$nextTick(() => {\n window.$nuxt.$emit(\'triggerScroll\');\n });\n if (beforeEnter) {\n return beforeEnter.call(_parent, el);\n }\n };\n }\n\n // make sure that leave is called asynchronous (fix #5703)\n if (transition.css === false) {\n var leave = listeners.leave;\n\n // only add leave listener when user didnt provide one\n // or when it misses the done argument\n if (!leave || leave.length < 2) {\n listeners.leave = (el, done) => {\n if (leave) {\n leave.call(_parent, el);\n }\n _parent.$nextTick(done);\n };\n }\n }\n var routerView = h(\'routerView\', data);\n if (props.keepAlive) {\n routerView = h(\'keep-alive\', {\n props: props.keepAliveProps\n }, [routerView]);\n }\n return h(\'transition\', {\n props: transitionProps,\n on: listeners\n }, [routerView]);\n }\n});\nvar transitionsKeys = [\'name\', \'mode\', \'appear\', \'css\', \'type\', \'duration\', \'enterClass\', \'leaveClass\', \'appearClass\', \'enterActiveClass\', \'enterActiveClass\', \'leaveActiveClass\', \'appearActiveClass\', \'enterToClass\', \'leaveToClass\', \'appearToClass\'];\nvar listenersKeys = [\'beforeEnter\', \'enter\', \'afterEnter\', \'enterCancelled\', \'beforeLeave\', \'leave\', \'afterLeave\', \'leaveCancelled\', \'beforeAppear\', \'appear\', \'afterAppear\', \'appearCancelled\'];\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/vue-loader/lib??vue-loader-options!./.nuxt/emerald/components/nuxt-error.vue?vue&type=template&id=64f76c1e&\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\'div\', {\n staticClass: "__nuxt-error-page"\n }, [_c(\'div\', {\n staticClass: "error"\n }, [_c(\'svg\', {\n attrs: {\n "xmlns": "http://www.w3.org/2000/svg",\n "width": "90",\n "height": "90",\n "fill": "#DBE1EC",\n "viewBox": "0 0 48 48"\n }\n }, [_c(\'path\', {\n attrs: {\n "d": "M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"\n }\n })]), _vm._v(" "), _c(\'div\', {\n staticClass: "title"\n }, [_vm._v(_vm._s(_vm.message))]), _vm._v(" "), _vm.statusCode === 404 ? _c(\'p\', {\n staticClass: "description"\n }, [typeof _vm.$route === \'undefined\' ? _c(\'a\', {\n staticClass: "error-link",\n attrs: {\n "href": "/"\n }\n }) : _c(\'NuxtLink\', {\n staticClass: "error-link",\n attrs: {\n "to": "/"\n }\n }, [_vm._v("Back to the home page")])], 1) : _vm._e(), _vm._v(" "), _vm._m(0)])]);\n};\nvar staticRenderFns = [function () {\n var _vm = this,\n _c = _vm._self._c;\n return _c(\'div\', {\n staticClass: "logo"\n }, [_c(\'a\', {\n attrs: {\n "href": "https://nuxtjs.org",\n "target": "_blank",\n "rel": "noopener"\n }\n }, [_vm._v("Nuxt")])]);\n}];\n\n// CONCATENATED MODULE: ./.nuxt/emerald/components/nuxt-error.vue?vue&type=template&id=64f76c1e&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./.nuxt/emerald/components/nuxt-error.vue?vue&type=script&lang=js&\n/* harmony default export */ var nuxt_errorvue_type_script_lang_js_ = ({\n name: \'NuxtError\',\n props: {\n error: {\n type: Object,\n default: null\n }\n },\n computed: {\n statusCode() {\n return this.error && this.error.statusCode || 500;\n },\n message() {\n return this.error.message || \'Error\';\n }\n },\n head() {\n return {\n title: this.message,\n meta: [{\n name: \'viewport\',\n content: \'width=device-width,initial-scale=1.0,minimum-scale=1.0\'\n }]\n };\n }\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/components/nuxt-error.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_nuxt_errorvue_type_script_lang_js_ = (nuxt_errorvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./.nuxt/emerald/components/nuxt-error.vue?vue&type=style&index=0&id=64f76c1e&prod&lang=css&\nvar nuxt_errorvue_type_style_index_0_id_64f76c1e_prod_lang_css_ = __webpack_require__(651);\n\n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(53);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/components/nuxt-error.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar nuxt_error_component = Object(componentNormalizer["a" /* default */])(\n components_nuxt_errorvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* harmony default export */ var nuxt_error = (nuxt_error_component.exports);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(58);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/components/nuxt.js\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var components_nuxt = ({\n name: \'Nuxt\',\n components: {\n NuxtChild: nuxt_child,\n NuxtError: nuxt_error\n },\n props: {\n nuxtChildKey: {\n type: String,\n default: undefined\n },\n keepAlive: Boolean,\n keepAliveProps: {\n type: Object,\n default: undefined\n }
1,\n name: {\n type: String,\n default: \'default\'\n }\n },\n errorCaptured(error) {\n // if we receive and error while showing the NuxtError component\n // capture the error and force an immediate update so we re-render\n // without the NuxtError component\n if (this.displayingNuxtError) {\n this.errorFromNuxtError = error;\n this.$forceUpdate();\n }\n },\n computed: {\n routerViewKey() {\n // If nuxtChildKey prop is given or current route has children\n if (typeof this.nuxtChildKey !== \'undefined\' || this.$route.matched.length > 1) {\n return this.nuxtChildKey || Object(utils["c" /* compile */])(this.$route.matched[0].path)(this.$route.params);\n }\n var [matchedRoute] = this.$route.matched;\n if (!matchedRoute) {\n return this.$route.path;\n }\n var Component = matchedRoute.components.default;\n if (Component && Component.options) {\n var {\n options\n } = Component;\n if (options.key) {\n return typeof options.key === \'function\' ? options.key(this.$route) : options.key;\n }\n }\n var strict = /\\/$/.test(matchedRoute.path);\n return strict ? this.$route.path : this.$route.path.replace(/\\/$/, \'\');\n }\n },\n beforeCreate() {\n vue_runtime_esm["default"].util.defineReactive(this, \'nuxt\', this.$root.$options.nuxt);\n },\n render(h) {\n // if there is no error\n if (!this.nuxt.err) {\n // Directly return nuxt child\n return h(\'NuxtChild\', {\n key: this.routerViewKey,\n props: this.$props\n });\n }\n\n // if an error occurred within NuxtError show a simple\n // error message instead to prevent looping\n if (this.errorFromNuxtError) {\n this.$nextTick(() => this.errorFromNuxtError = false);\n return h(\'div\', {}, [h(\'h2\', \'An error occurred while showing the error page\'), h(\'p\', \'Unfortunately an error occurred and while showing the error page another error occurred\'), h(\'p\', "Error details: ".concat(this.errorFromNuxtError.toString())), h(\'nuxt-link\', {\n props: {\n to: \'/\'\n }\n }, \'Go back to home\')]);\n }\n\n // track if we are showing the NuxtError component\n this.displayingNuxtError = true;\n this.$nextTick(() => this.displayingNuxtError = false);\n return h(nuxt_error, {\n props: {\n error: this.nuxt.err\n }\n });\n }\n});\n// EXTERNAL MODULE: ./components/Common/LoadingOverlay/LoadingOverlayNuxt.vue + 4 modules\nvar LoadingOverlayNuxt = __webpack_require__(584);\n\n// EXTERNAL MODULE: ./node_modules/@fortawesome/fontawesome-free/css/all.css\nvar css_all = __webpack_require__(655);\n\n// EXTERNAL MODULE: ./projects/emerald/assets/styles/main.sass\nvar main = __webpack_require__(666);\n\n// EXTERNAL MODULE: ./projects/emerald/static/styles/fonts.css\nvar fonts = __webpack_require__(668);\n\n// EXTERNAL MODULE: ./node_modules/vue-js-modal/dist/styles.css\nvar styles = __webpack_require__(670);\n\n// EXTERNAL MODULE: ./node_modules/chat-customer-47net/style.css\nvar style = __webpack_require__(672);\n\n// EXTERNAL MODULE: ./projects/emerald/layouts/default.vue + 2 modules\nvar layouts_default = __webpack_require__(588);\n\n// EXTERNAL MODULE: ./projects/emerald/layouts/summaryOrderLayout.vue + 2 modules\nvar summaryOrderLayout = __webpack_require__(589);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/App.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar layouts = {\n "_default": Object(utils["s" /* sanitizeComponent */])(layouts_default["a" /* default */]),\n "_summaryOrderLayout": Object(utils["s" /* sanitizeComponent */])(summaryOrderLayout["a" /* default */])\n};\n/* harmony default export */ var App = ({\n render(h, props) {\n var loadingEl = h(\'NuxtLoading\', {\n ref: \'loading\'\n });\n var layoutEl = h(this.layout || \'nuxt\');\n var templateEl = h(\'div\', {\n domProps: {\n id: \'__layout\'\n },\n key: this.layoutName\n }, [layoutEl]);\n var transitionEl = h(\'transition\', {\n props: {\n name: \'layout\',\n mode: \'out-in\'\n },\n on: {\n beforeEnter(el) {\n // Ensure to trigger scroll event after calling scrollBehavior\
1n window.$nuxt.$nextTick(() => {\n window.$nuxt.$emit(\'triggerScroll\');\n });\n }\n }\n }, [templateEl]);\n return h(\'div\', {\n domProps: {\n id: \'__nuxt\'\n }\n }, [loadingEl, transitionEl]);\n },\n data: () => ({\n isOnline: true,\n layout: null,\n layoutName: \'\',\n nbFetching: 0\n }),\n beforeCreate() {\n vue_runtime_esm["default"].util.defineReactive(this, \'nuxt\', this.$options.nuxt);\n },\n created() {\n // Add this.$nuxt in child instances\n this.$root.$options.$nuxt = this;\n if (true) {\n // add to window so we can listen when ready\n window.$nuxt = this;\n this.refreshOnlineStatus();\n // Setup the listeners\n window.addEventListener(\'online\', this.refreshOnlineStatus);\n window.addEventListener(\'offline\', this.refreshOnlineStatus);\n }\n // Add $nuxt.error()\n this.error = this.nuxt.error;\n // Add $nuxt.context\n this.context = this.$options.context;\n },\n mounted() {\n var _this = this;\n return Object(asyncToGenerator["a" /* default */])(function* () {\n _this.$loading = _this.$refs.loading;\n })();\n },\n watch: {\n \'nuxt.err\': \'errorChanged\'\n },\n computed: {\n isOffline() {\n return !this.isOnline;\n },\n isFetching() {\n return this.nbFetching > 0;\n }\n },\n methods: {\n refreshOnlineStatus() {\n if (true) {\n if (typeof window.navigator.onLine === \'undefined\') {\n // If the browser doesn\'t support connection status reports\n // assume that we are online because most apps\' only react\n // when they now that the connection has been interrupted\n this.isOnline = true;\n } else {\n this.isOnline = window.navigator.onLine;\n }\n }\n },\n refresh() {\n var _this2 = this;\n return Object(asyncToGenerator["a" /* default */])(function* () {\n var pages = Object(utils["h" /* getMatchedComponentsInstances */])(_this2.$route);\n if (!pages.length) {\n return;\n }\n _this2.$loading.start();\n var promises = pages.map(/*#__PURE__*/function () {\n var _ref = Object(asyncToGenerator["a" /* default */])(function* (page) {\n var p = [];\n\n // Old fetch\n if (page.$options.fetch && page.$options.fetch.length) {\n p.push(Object(utils["q" /* promisify */])(page.$options.fetch, _this2.context));\n }\n if (page.$options.asyncData) {\n p.push(Object(utils["q" /* promisify */])(page.$options.asyncData, _this2.context).then(newData => {\n for (var key in newData) {\n vue_runtime_esm["default"].set(page.$data, key, newData[key]);\n }\n }));\n }\n\n // Wait for asyncData & old fetch to finish\n yield Promise.all(p);\n // Cleanup refs\n p = [];\n if (page.$fetch) {\n p.push(page.$fetch());\n }\n // Get all component instance to call $fetch\n for (var component of Object(utils["e" /* getChildrenComponentInstancesUsingFetch */])(page.$vnode.componentInstance)) {\n p.push(component.$fetch());\n }\n return Promise.all(p);\n });\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n try {\n yield Promise.all(promises);\n } catch (error) {\n _this2.$loading.fail(error);\n Object(utils["k" /* globalHandleError */])(error);\n _this2.error(error);\n }\n _this2.$loading.finish();\n })();\n },\n errorChanged() {\n if (this.nuxt.err) {\n if (this.$loading) {\n if (this.$loading.fail) {\n this.$loading.fail(this.nuxt.err);\n }\n if (this.$loading.finish) {\n this.$loading.finish();\n }\n }\n var errorLayout = (nuxt_error.options || nuxt_error).layout;\n if (typeof errorLayout === \'function\') {\n errorLayout = errorLayout(this.context);\n }\n this.setLayout(errorLayout);\n }\n }
1,\n setLayout(layout) {\n if (!layout || !layouts[\'_\' + layout]) {\n layout = \'default\';\n }\n this.layoutName = layout;\n this.layout = layouts[\'_\' + layout];\n return this.layout;\n },\n loadLayout(layout) {\n if (!layout || !layouts[\'_\' + layout]) {\n layout = \'default\';\n }\n return Promise.resolve(layouts[\'_\' + layout]);\n }\n },\n components: {\n NuxtLoading: LoadingOverlayNuxt["a" /* default */]\n }\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/store.js\n\n\n\nvue_runtime_esm["default"].use(vuex_esm["a" /* default */]);\nvar store_store = {};\n(function updateModules() {\n store_store = normalizeRoot(__webpack_require__(792), \'store/index.js\');\n\n // If store is an exported method = classic mode (deprecated)\n\n // Enforce store modules\n store_store.modules = store_store.modules || {};\n\n // If the environment supports hot reloading...\n})();\n\n// createStore\nvar createStore = store_store instanceof Function ? store_store : () => {\n return new vuex_esm["a" /* default */].Store(Object.assign({\n strict: "production" !== \'production\'\n }, store_store));\n};\nfunction normalizeRoot(moduleData, filePath) {\n moduleData = moduleData.default || moduleData;\n if (moduleData.commit) {\n throw new Error("[nuxt] ".concat(filePath, " should export a method that returns a Vuex instance."));\n }\n if (typeof moduleData !== \'function\') {\n // Avoid TypeError: setting a property that has only a getter when overwriting top level keys\n moduleData = Object.assign({}, moduleData);\n }\n return normalizeModule(moduleData, filePath);\n}\nfunction normalizeModule(moduleData, filePath) {\n if (moduleData.state && typeof moduleData.state !== \'function\') {\n console.warn("\'state\' should be a method that returns an object in ".concat(filePath));\n var _state = Object.assign({}, moduleData.state);\n // Avoid TypeError: setting a property that has only a getter when overwriting top level keys\n moduleData = Object.assign({}, moduleData, {\n state: () => _state\n });\n }\n return moduleData;\n}\n// EXTERNAL MODULE: ./.nuxt/emerald/empty.js\nvar empty = __webpack_require__(355);\n\n// EXTERNAL MODULE: ./node_modules/lodash.mergewith/index.js\nvar lodash_mergewith = __webpack_require__(563);\nvar lodash_mergewith_default = /*#__PURE__*/__webpack_require__.n(lodash_mergewith);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/vue/esm/sdk.js + 4 modules\nvar sdk = __webpack_require__(964);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/core/esm/index.js + 22 modules\nvar esm = __webpack_require__(75);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/browser/esm/sdk.js + 17 modules\nvar esm_sdk = __webpack_require__(583);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/integrations/esm/extraerrordata.js\nvar extraerrordata = __webpack_require__(962);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/integrations/esm/reportingobserver.js\nvar reportingobserver = __webpack_require__(963);\n\n// EXTERNAL MODULE: ./node_modules/@sentry/integrations/esm/rewriteframes.js + 1 modules\nvar rewriteframes = __webpack_require__(965);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/sentry.client.shared.js\n\nfunction sentry_client_shared_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction sentry_client_shared_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? sentry_client_shared_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : sentry_client_shared_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\nvar SentrySdk = sentry_client_shared_objectSpread(sentry_client_shared_objectSpread({}, esm), esm_sdk);\nfunction getConfig(ctx) {\n /* eslint-disable object-curly-spacing, quote-props, quotes, key-spacing, comma-spacing */\n var config = {\n dsn: "https:\\u002F\\u002F92b118c94b30618b81c905e619710e81@o4505948283011072.ingest.sentry.io\\u002F4505948295725056",\n environment: "production"\n };\n config.integrations = [new extraerrordata["a" /* ExtraErrorData */](), new reportingobserver["a" /* ReportingObserver */]({\n types: ["crash"]\n }), new rewriteframes["a" /* RewriteFrames */]()];\n var runtimeConfigKey = "sentry";\n if (ctx.$config && runtimeConfigKey && ctx.$config[runtimeConfigKey]) {\n lodash_mergewith_default()(config, ctx.$config[runtimeConfigKey].config, ctx.$config[runtimeConfigKey].clientConfig);\n }\n return config;\n}\n// CONCATENATED MODULE: ./.nuxt/emerald/sentry.client.js\n\n\nfunction sentry_client_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction sentry_client_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {};
1 r % 2 ? sentry_client_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : sentry_client_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n/* harmony default export */ var sentry_client = (function (_x, _x2) {\n return sentry_client_ref.apply(this, arguments);\n});\nfunction sentry_client_ref() {\n sentry_client_ref = Object(asyncToGenerator["a" /* default */])(function* (ctx, inject) {\n var config = yield getConfig(ctx);\n Object(sdk["a" /* init */])(sentry_client_objectSpread({\n Vue: vue_runtime_esm["default"]\n }, config));\n inject(\'sentry\', SentrySdk);\n ctx.$sentry = SentrySdk;\n });\n return sentry_client_ref.apply(this, arguments);\n}\n// EXTERNAL MODULE: ./node_modules/cookie-universal/dist/cookie-universal-common.js\nvar cookie_universal_common = __webpack_require__(569);\nvar cookie_universal_common_default = /*#__PURE__*/__webpack_require__.n(cookie_universal_common);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/cookie-universal-nuxt.js\n\n/* harmony default export */ var cookie_universal_nuxt = ((_ref, inject) => {\n var {\n req,\n res\n } = _ref;\n var options = {\n "alias": "cookies",\n "parseJSON": true\n };\n inject(options.alias, cookie_universal_common_default()(req, res, options.parseJSON));\n});\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js\nvar es_array_includes = __webpack_require__(11);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js\nvar es_string_includes = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./node_modules/is-https/dist/index.js\nvar is_https_dist = __webpack_require__(917);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/options.js\n\n\n\nvar Constants = {\n COMPONENT_OPTIONS_KEY: "nuxtI18n",\n STRATEGIES: {\n "PREFIX": "prefix",\n "PREFIX_EXCEPT_DEFAULT": "prefix_except_default",\n "PREFIX_AND_DEFAULT": "prefix_and_default",\n "NO_PREFIX": "no_prefix"\n }\n};\nvar nuxtOptions = {\n isUniversalMode: true,\n trailingSlash: true\n};\nvar options_options = {\n vueI18n: {},\n vueI18nLoader: false,\n locales: [{\n "code": "en",\n "file": "en-US.js"\n }],\n defaultLocale: "en",\n defaultDirection: "ltr",\n routesNameSeparator: "___",\n defaultLocaleRouteNameSuffix: "default",\n sortRoutes: true,\n strategy: "prefix_except_default",\n lazy: true,\n langDir: "/app/projects/emerald/locales",\n rootRedirect: null,\n detectBrowserLanguage: {\n "alwaysRedirect": false,\n "cookieCrossOrigin": false,\n "cookieDomain": null,\n "cookieKey": "i18n_redirected",\n "cookieSecure": false,\n "fallbackLocale": "",\n "onlyOnNoPrefix": false,\n "onlyOnRoot": false,\n "useCookie": true\n },\n differentDomains: false,\n seo: false,\n baseUrl: "",\n vuex: {\n "moduleName": "i18n",\n "syncLocale": false,\n "syncMessages": false,\n "syncRouteParams": true\n },\n parsePages: true,\n pages: {},\n skipSettingLocaleOnNavigate: false,\n beforeLanguageSwitch: () => null,\n onBeforeLanguageSwitch: () => {},\n onLanguageSwitched: () => null,\n normalizedLocales: [{\n "code": "en",\n "file": "en-US.js"\n }],\n localeCodes: ["en"]\n};\nvar localeMessages = {\n \'en-US.js\': () => __webpack_require__.e(/* import() | lang-en-US.js */ 120).then(__webpack_require__.bind(null, 2564))\n};\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.sort.js\nvar es_array_sort = __webpack_require__(266);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.constructor.js\nvar es_regexp_constructor = __webpack_require__(213);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(100);\n\n// EXTERNAL MODULE: ./node_modules/cookie/index.js\nvar cookie = __webpack_require__(252);\n\n// EXTERNAL MODULE: ./node_modules/js-cookie/dist/js.cookie.js\nvar js_cookie = __webpack_require__(363);\nvar js_cookie_default = /*#__PURE__*/__webpack_require__.n(js_cookie);
1\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/utils-common.js\n\n\n\n\n\n\n\n\n\n\n\n\n/** @typedef {import(\'../../types/internal\').ResolvedOptions} ResolvedOptions */\n\n/**\n * Formats a log message, prefixing module\'s name to it.\n *\n * @param {string} text\n * @return {string}\n */\nfunction formatMessage(text) {\n return "[nuxt-i18n] ".concat(text);\n}\n\n/**\n * Parses locales provided from browser through `accept-language` header.\n *\n * @param {string} input\n * @return {string[]} An array of locale codes. Priority determined by order in array.\n */\nfunction parseAcceptLanguage(input) {\n // Example input: en-US,en;q=0.9,nb;q=0.8,no;q=0.7\n // Contains tags separated by comma.\n // Each tag consists of locale code (2-3 letter language code) and optionally country code\n // after dash. Tag can also contain score after semicolon, that is assumed to match order\n // so it\'s not explicitly used.\n return input.split(\',\').map(tag => tag.split(\';\')[0]);\n}\n\n/**\n * Find locale code that best matches provided list of browser locales.\n *\n * @param {ResolvedOptions[\'normalizedLocales\']} appLocales The user-configured locales that are to be matched.\n * @param {readonly string[]} browserLocales The locales to match against configured.\n * @return {string | undefined}\n */\nfunction matchBrowserLocale(appLocales, browserLocales) {\n /** @type {{ code: string, score: number }[]} */\n var matchedLocales = [];\n\n // Normalise appLocales input\n /** @type {{ code: string, iso: string }[]} */\n var normalizedAppLocales = [];\n for (var appLocale of appLocales) {\n var {\n code\n } = appLocale;\n var iso = appLocale.iso || code;\n normalizedAppLocales.push({\n code,\n iso\n });\n }\n\n // First pass: match exact locale.\n var _loop = function _loop(browserCode) {\n var matchedLocale = normalizedAppLocales.find(appLocale => appLocale.iso.toLowerCase() === browserCode.toLowerCase());\n if (matchedLocale) {\n matchedLocales.push({\n code: matchedLocale.code,\n score: 1 - index / browserLocales.length\n });\n return 1; // break\n }\n };\n for (var [index, browserCode] of browserLocales.entries()) {\n if (_loop(browserCode)) break;\n }\n\n // Second pass: match only locale code part of the browser locale (not including country).\n var _loop2 = function _loop2() {\n var languageCode = _browserCode.split(\'-\')[0].toLowerCase();\n var matchedLocale = normalizedAppLocales.find(appLocale => appLocale.iso.split(\'-\')[0].toLowerCase() === languageCode);\n if (matchedLocale) {\n // Deduct a thousandth for being non-exact match.\n matchedLocales.push({\n code: matchedLocale.code,\n score: 0.999 - _index / browserLocales.length\n });\n return 1; // break\n }\n };\n for (var [_index, _browserCode] of browserLocales.entries()) {\n if (_loop2()) break;\n }\n\n // Sort the list by score (0 - lowest, 1 - highest).\n if (matchedLocales.length > 1) {\n matchedLocales.sort((localeA, localeB) => {\n if (localeA.score === localeB.score) {\n // If scores are equal then pick more specific (longer) code.\n return localeB.code.length - localeA.code.length;\n }\n return localeB.score - localeA.score;\n });\n }\n return matchedLocales.length ? matchedLocales[0].code : undefined;\n}
1\n\n/**\n * Get locale code that corresponds to current hostname\n *\n * @param {ResolvedOptions[\'normalizedLocales\']} locales\n * @param {import(\'http\').IncomingMessage | undefined} req\n * @return {string} Locale code found if any\n */\nfunction getLocaleDomain(locales, req) {\n /** @type {string | undefined} */\n var host;\n if (true) {\n host = window.location.host;\n } else { var detectedHost; }\n if (host) {\n var matchingLocale = locales.find(l => l.domain === host);\n if (matchingLocale) {\n return matchingLocale.code;\n }\n }\n return \'\';\n}\n\n/**\n * Creates a RegExp for route paths\n *\n * @param {readonly string[]} localeCodes\n * @return {RegExp}\n */\nfunction getLocalesRegex(localeCodes) {\n return new RegExp("^/(".concat(localeCodes.join(\'|\'), ")(?:/|$)"), \'i\');\n}\n\n/**\n * Creates getter for getLocaleFromRoute\n *\n * @param {readonly string[]} localeCodes\n * @param {Pick<ResolvedOptions, \'routesNameSeparator\' | \'defaultLocaleRouteNameSuffix\'>} options\n */\nfunction createLocaleFromRouteGetter(localeCodes, _ref) {\n var {\n routesNameSeparator,\n defaultLocaleRouteNameSuffix\n } = _ref;\n var localesPattern = "(".concat(localeCodes.join(\'|\'), ")");\n var defaultSuffixPattern = "(?:".concat(routesNameSeparator).concat(defaultLocaleRouteNameSuffix, ")?");\n var regexpName = new RegExp("".concat(routesNameSeparator).concat(localesPattern).concat(defaultSuffixPattern, "$"), \'i\');\n var regexpPath = getLocalesRegex(localeCodes);\n /**\n * Extract locale code from given route:\n * - If route has a name, try to extract locale from it\n * - Otherwise, fall back to using the routes\'path\n * @param {import(\'vue-router\').Route} route\n * @return {string} Locale code found if any\n */\n var getLocaleFromRoute = route => {\n // Extract from route name\n if (route.name) {\n var matches = route.name.match(regexpName);\n if (matches && matches.length > 1) {\n return matches[1];\n }\n } else if (route.path) {\n // Extract from path\n var _matches = route.path.match(regexpPath);\n if (_matches && _matches.length > 1) {\n return _matches[1];\n }\n }\n return \'\';\n };\n return getLocaleFromRoute;\n}\n\n/**\n * @param {import(\'http\').IncomingMessage | undefined} req\n * @param {{ useCookie: boolean, cookieKey: string, localeCodes: readonly string[] }} options\n * @return {string | undefined}\n */\nfunction getLocaleCookie(req, _ref2) {\n var {\n useCookie,\n cookieKey,\n localeCodes\n } = _ref2;\n if (useCookie) {\n var localeCode;\n if (true) {\n localeCode = js_cookie_default.a.get(cookieKey);\n } else { var cookies; }\n if (localeCode && localeCodes.includes(localeCode)) {\n return localeCode;\n }\n }\n}\n\n/**\n * @param {string} locale\n * @param {import(\'http\').ServerResponse | undefined} res\n * @param {{ useCookie: boolean, cookieDomain: string | null, cookieKey: string, cookieSecure: boolean, cookieCrossOrigin: boolean}} options\n */\nfunction setLocaleCookie(locale, res, _ref3) {\n var {\n useCookie,\n cookieDomain,\n cookieKey,\n cookieSecure,\n cookieCrossOrigin\n } = _ref3;\n if (!useCookie) {\n return;\n }\n var date = new Date();\n /** @type {import(\'cookie\').CookieSerializeOptions} */\n var cookieOptions = {\n expires: new Date(date.setDate(date.getDate() + 365)),\n path: \'/\',\n sameSite: cookieCrossOrigin ? \'none\' : \'lax\',\n secure: cookieCrossOrigin || cookieSecure\n };\n if (cookieDomain) {\n cookieOptions.domain = cookieDomain;\n }\n if (true) {\n // @ts-ignore\n js_cookie_default.a.set(cookieKey, locale, cookieOptions);\n } else { var redirectCookie, headers; }\n}\n// EXTERNAL MODULE: ./node_modules/nuxt-i18n/node_modules/ufo/dist/index.cjs\nvar ufo_dist = __webpack_require__(160);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/plugin.utils.js\n\n\n\n\n\n\n\nfunction plugin_utils_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction plugin_utils_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {};
1 r % 2 ? plugin_utils_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : plugin_utils_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n// @ts-ignore\n\n\n/** @typedef {import(\'../../types/internal\').ResolvedOptions} ResolvedOptions */\n\n/**\n * Asynchronously load messages from translation files\n *\n * @param {import(\'@nuxt/types\').Context} context\n * @param {string} locale Language code to load\n * @return {Promise<void>}\n */\nfunction loadLanguageAsync(_x, _x2) {\n return _loadLanguageAsync.apply(this, arguments);\n}\n\n/**\n * Resolves base URL value if provided as function. Otherwise just returns verbatim.\n *\n * @param {string | ((context: import(\'@nuxt/types\').Context) => string)} baseUrl\n * @param {import(\'@nuxt/types\').Context} context\n * @param {import(\'../../types\').Locale} localeCode\n * @param {Pick<ResolvedOptions, \'differentDomains\' | \'normalizedLocales\'>} options\n * @return {string}\n */\nfunction _loadLanguageAsync() {\n _loadLanguageAsync = Object(asyncToGenerator["a" /* default */])(function* (context, locale) {\n var {\n app\n } = context;\n var {\n i18n\n } = app;\n if (!i18n.loadedLanguages) {\n i18n.loadedLanguages = [];\n }\n if (!i18n.loadedLanguages.includes(locale)) {\n var localeObject = options_options.normalizedLocales.find(l => l.code === locale);\n if (localeObject) {\n var {\n file\n } = localeObject;\n if (file) {\n /* */\n /** @type {import(\'vue-i18n\').LocaleMessageObject | undefined} */\n var messages;\n if (true) {\n var {\n nuxtState\n } = context;\n if (nuxtState && nuxtState.__i18n && nuxtState.__i18n.langs[locale]) {\n messages = nuxtState.__i18n.langs[locale];\n // Even if already cached in Nuxt state, trigger locale import so that HMR kicks-in on changes to that file.\n if (context.isDev) {\n localeMessages[file]();\n }\n }\n }\n if (!messages) {\n try {\n // @ts-ignore\n var getter = yield localeMessages[file]().then(m => m.default || m);\n messages = typeof getter === \'function\' ? yield Promise.resolve(getter(context, locale)) : getter;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(formatMessage("Failed loading async locale export: ".concat(error.message)));\n }\n }\n if (messages) {\n i18n.setLocaleMessage(locale, messages);\n i18n.loadedLanguages.push(locale);\n }\n /* */\n } else {\n console.warn(formatMessage("Could not find lang file for locale ".concat(locale)));\n }\n } else {\n console.warn(formatMessage("Attempted to load messages for non-existant locale code \\"".concat(locale, "\\"")));\n }\n }\n });\n return _loadLanguageAsync.apply(this, arguments);\n}\nfunction resolveBaseUrl(baseUrl, context, localeCode, _ref) {\n var {\n differentDomains,\n normalizedLocales\n } = _ref;\n if (typeof baseUrl === \'function\') {\n return baseUrl(context);\n }\n if (differentDomains && localeCode) {\n // Lookup the `differentDomain` origin associated with given locale.\n var domain = getDomainFromLocale(localeCode, context.req, {\n normalizedLocales\n });\n if (domain) {\n return domain;\n }\n }\n return baseUrl;\n}\n\n/**\n * Gets the `differentDomain` domain from locale.\n *\n * @param {string} localeCode\n * @param {import(\'http\').IncomingMessage | undefined} req\n * @param {Pick<ResolvedOptions, \'normalizedLocales\'>} options\n * @return {string | undefined}\n */\nfunction getDomainFromLocale(localeCode, req, _ref2) {\n var {\n normalizedLocales\n } = _ref2;\n // Lookup the `differentDomain` origin associated with given locale.\n var lang = normalizedLocales.find(locale => locale.code === localeCode);\n if (lang && lang.domain) {\n if (Object(ufo_dist["hasProtocol"])(lang.domain)) {\n return lang.domain;\n }\n var protocol;\n if (false) {} else {\n protocol = window.location.protocol.split(\':\')[0];\n }\n return "".concat(protocol, "://").concat(lang.domain);\n }\n\n // eslint-disable-next-line no-console\n console.warn(formatMessage("Could not find domain name for locale ".concat(localeCode)));\n}\n\n/**\n * @param {import(\'vuex\').Store<Record<string, boolean>>}
1 store\n * @param {Required<import(\'../../types\').VuexOptions>} vuex\n * @param {readonly string[]} localeCodes\n */\nfunction registerStore(store, vuex, localeCodes) {\n /** @typedef {{\n * locale?: string\n * messages?: Record<string, string>\n * routeParams?: Record<string, Record<string, string>>\n * }} ModuleStore\n *\n * @type {import(\'vuex\').Module<ModuleStore, {}>}\n */\n var storeModule = {\n namespaced: true,\n state: () => plugin_utils_objectSpread(plugin_utils_objectSpread(plugin_utils_objectSpread({}, vuex.syncLocale ? {\n locale: \'\'\n } : {}), vuex.syncMessages ? {\n messages: {}\n } : {}), vuex.syncRouteParams ? {\n routeParams: {}\n } : {}),\n actions: plugin_utils_objectSpread(plugin_utils_objectSpread(plugin_utils_objectSpread({}, vuex.syncLocale ? {\n setLocale(_ref3, locale) {\n var {\n commit\n } = _ref3;\n commit(\'setLocale\', locale);\n }\n } : {}), vuex.syncMessages ? {\n setMessages(_ref4, messages) {\n var {\n commit\n } = _ref4;\n commit(\'setMessages\', messages);\n }\n } : {}), vuex.syncRouteParams ? {\n setRouteParams(_ref5, params) {\n var {\n commit\n } = _ref5;\n if (false) {}\n commit(\'setRouteParams\', params);\n }\n } : {}),\n mutations: plugin_utils_objectSpread(plugin_utils_objectSpread(plugin_utils_objectSpread({}, vuex.syncLocale ? {\n setLocale(state, locale) {\n state.locale = locale;\n }\n } : {}), vuex.syncMessages ? {\n setMessages(state, messages) {\n state.messages = messages;\n }\n } : {}), vuex.syncRouteParams ? {\n setRouteParams(state, params) {\n state.routeParams = params;\n }\n } : {}),\n getters: plugin_utils_objectSpread({}, vuex.syncRouteParams ? {\n localeRouteParams: _ref6 => {\n var {\n routeParams\n } = _ref6;\n /** @type {(locale: string) => Record<string, string>} */\n var paramsGetter = locale => routeParams && routeParams[locale] || {};\n return paramsGetter;\n }\n } : {})\n };\n store.registerModule(vuex.moduleName, storeModule, {\n preserveState: !!store.state[vuex.moduleName]\n });\n}\n\n/**\n * Dispatch store module actions to keep it in sync with app\'s locale data\n *\n * @param {import(\'vuex\').Store<void>} store\n * @param {string | null} locale The current locale\n * @param {object | null} messages Current messages\n * @param {ResolvedOptions[\'vuex\']} vuex\n * @return {Promise<void>}\n */\nfunction syncVuex(_x3) {\n return _syncVuex.apply(this, arguments);\n}\n\n/**\n * Validate setRouteParams action\'s payload\n *\n * @param {object} routeParams The action\'s payload\n * @param {readonly string[]} localeCodes\n */\nfunction _syncVuex() {\n _syncVuex = Object(asyncToGenerator["a" /* default */])(function* (store) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var messages = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var vuex = arguments.length > 3 ? arguments[3] : undefined;\n if (vuex && store) {\n if (locale !== null && vuex.syncLocale) {\n yield store.dispatch(vuex.moduleName + \'/setLocale\', locale);\n }\n if (messages !== null && vuex.syncMessages) {\n yield store.dispatch(vuex.moduleName + \'/setMessages\', messages);\n }\n }\n });\n return _syncVuex.apply(this, arguments);\n}\nfunction validateRouteParams(routeParams, localeCodes) {\n if (!isObject(routeParams)) {\n // eslint-disable-next-line no-console\n console.warn(formatMessage(\'Route params should be an object\'));\n return;\n }\n for (var [key, value] of Object.entries(routeParams)) {\n if (!localeCodes.includes(key)) {\n // eslint-disable-next-line no-console\n console.warn(formatMessage("Trying to set route params for key ".concat(key, " which is not a valid locale")));\n } else if (!isObject(value)) {\n // eslint-disable-next-line no-console\n console.warn(formatMessage("Trying to set route params for locale ".concat(key, " with a non-object value")));\n }\n }\n}\n\n/**\n * @param {any} value\n * @return {boolean}\n */\nfunction isObject(value) {\n return value && !Array.isArray(value) && typeof value === \'object\';\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules\nvar objectWithoutProperties = __webpack_require__(257);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(398);\n\n// EXTERNAL MODULE: ./.nuxt/emerald/middleware.js\nvar middleware = __webpack_require__(132);
1\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/middleware.js\n\n\n\n// @ts-ignore\n\n\n/** @type {import(\'@nuxt/types\').Middleware} */\nvar i18nMiddleware = /*#__PURE__*/function () {\n var _ref = Object(asyncToGenerator["a" /* default */])(function* (context) {\n var {\n app,\n isHMR\n } = context;\n if (isHMR) {\n return;\n }\n var [status, redirectPath, preserveQuery] = yield app.i18n.__onNavigate(context.route);\n if (status && redirectPath) {\n var query = preserveQuery ? context.route.query : undefined;\n context.redirect(status, redirectPath, query);\n }\n });\n return function i18nMiddleware(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nmiddleware["a" /* default */].nuxti18n = i18nMiddleware;\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/plugin.routing.js\n\n\nvar _excluded = ["params"];\nfunction plugin_routing_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction plugin_routing_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? plugin_routing_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : plugin_routing_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\n\n\n// @ts-ignore\n\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @type {Vue[\'localePath\']}\n */\nfunction plugin_routing_localePath(route, locale) {\n var localizedRoute = resolveRoute.call(this, route, locale);\n return localizedRoute ? localizedRoute.route.fullPath : \'\';\n}\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @type {Vue[\'localeRoute\']}\n */\nfunction localeRoute(route, locale) {\n var resolved = resolveRoute.call(this, route, locale);\n return resolved ? resolved.route : undefined;\n}\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @type {Vue[\'localeLocation\']}\n */\nfunction localeLocation(route, locale) {\n var resolved = resolveRoute.call(this, route, locale);\n return resolved ? resolved.location : undefined;\n}\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @param {import(\'vue-router\').RawLocation} route\n * @param {string} [locale]\n * @return {ReturnType<import(\'vue-router\').default[\'resolve\']> | undefined}\n */\nfunction resolveRoute(route, locale) {\n // Abort if no route or no locale\n if (!route) {\n return;\n }\n var {\n i18n\n } = this;\n locale = locale || i18n.locale;\n if (!locale) {\n return;\n }\n\n // If route parameter is a string, check if it\'s a path or name of route.\n if (typeof route === \'string\') {\n if (route[0] === \'/\') {\n // If route parameter is a path, create route object with path.\n route = {\n path: route\n };\n } else {\n // Else use it as route name.\n route = {\n name: route\n };\n }\n }\n var localizedRoute = Object.assign({}, route);\n if (localizedRoute.path && !localizedRoute.name) {\n var _resolvedRoute = this.router.resolve(localizedRoute).route;\n var resolvedRouteName = this.getRouteBaseName(_resolvedRoute);\n if (resolvedRouteName) {\n localizedRoute = {\n name: getLocaleRouteName(resolvedRouteName, locale),\n params: _resolvedRoute.params,\n query: _resolvedRoute.query,\n hash: _resolvedRoute.hash\n };\n } else {\n var isDefaultLocale = locale === options_options.defaultLocale;\n // if route has a path defined but no name, resolve full route using the path\n var isPrefixed =\n // don\'t prefix default locale\n !(isDefaultLocale && [Constants.STRATEGIES.PREFIX_EXCEPT_DEFAULT, Constants.STRATEGIES.PREFIX_AND_DEFAULT].includes(options_options.strategy)) &&\n // no prefix for any language\n !(options_options.strategy === Constants.STRATEGIES.NO_PREFIX) &&\n // no prefix for different domains\n !i18n.differentDomains;\n if (isPrefixed) {\n localizedRoute.path = "/".concat(locale).concat(localizedRoute.path);\n }\n localizedRoute.path = nuxtOptions.trailingSlash ? Object(ufo_dist["withTrailingSlash"])(localizedRoute.path, true) : Object(ufo_dist["withoutTrailingSlash"])(localizedRoute.path, true);\n }\n } else {\n if (!localizedRoute.name && !localizedRoute.path) {\n localizedRoute.name = this.getRouteBaseName();\n }\n localizedRoute.name = getLocaleRouteName(localizedRoute.name, locale);\n var {\n params\n } = localizedRoute;\n if (params && params[\'0\'] === undefined && params.pathMatch) {\n params[\'0\'] = params.pathMatch;\n }\n }\n var resolvedRoute = this.router.resolve(localizedRoute);\n if (resolvedRoute.route.name) {\n return resolvedRoute;\n }\n // If didn\'t resolve to an existing route then just return resolved route based on original input.\n return this.router.resolve(route);\n}\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @type {Vue[\'switchLocalePath\']}\n */\nfunction switchLocalePath(locale) {\n var name = this.getRouteBaseName();\n if (!name) {\n return \'\';\n }\n var {\n i18n,\n route,\n store\n } = this;\n var {\n params\n }
1 = route,\n routeCopy = Object(objectWithoutProperties["a" /* default */])(route, _excluded);\n var langSwitchParams = {};\n if (options_options.vuex && options_options.vuex.syncRouteParams && store) {\n langSwitchParams = store.getters["".concat(options_options.vuex.moduleName, "/localeRouteParams")](locale);\n }\n var baseRoute = Object.assign({}, routeCopy, {\n name,\n params: plugin_routing_objectSpread(plugin_routing_objectSpread(plugin_routing_objectSpread({}, params), langSwitchParams), {}, {\n 0: params.pathMatch\n })\n });\n var path = this.localePath(baseRoute, locale);\n\n // Handle different domains\n if (i18n.differentDomains) {\n var getDomainOptions = {\n differentDomains: i18n.differentDomains,\n normalizedLocales: options_options.normalizedLocales\n };\n var domain = getDomainFromLocale(locale, this.req, getDomainOptions);\n if (domain) {\n path = domain + path;\n }\n }\n return path;\n}\n\n/**\n * @this {import(\'../../types/internal\').PluginProxy}\n * @type {Vue[\'getRouteBaseName\']}\n */\nfunction getRouteBaseName(givenRoute) {\n var route = givenRoute !== undefined ? givenRoute : this.route;\n if (!route || !route.name) {\n return;\n }\n return route.name.split(options_options.routesNameSeparator)[0];\n}\n\n/**\n * @param {string | undefined} routeName\n * @param {string} locale\n */\nfunction getLocaleRouteName(routeName, locale) {\n var name = routeName + (options_options.strategy === Constants.STRATEGIES.NO_PREFIX ? \'\' : options_options.routesNameSeparator + locale);\n if (locale === options_options.defaultLocale && options_options.strategy === Constants.STRATEGIES.PREFIX_AND_DEFAULT) {\n name += options_options.routesNameSeparator + options_options.defaultLocaleRouteNameSuffix;\n }\n return name;\n}\n\n/**\n * @template {(...args: any[]) => any} T\n * @param {T} targetFunction\n * @return {(this: Vue, ...args: Parameters<T>) => ReturnType<T>}\n */\nvar VueInstanceProxy = function VueInstanceProxy(targetFunction) {\n return function () {\n var proxy = {\n getRouteBaseName: this.getRouteBaseName,\n i18n: this.$i18n,\n localePath: this.localePath,\n localeRoute: this.localeRoute,\n localeLocation: this.localeLocation,\n req: false ? undefined : null,\n route: this.$route,\n router: this.$router,\n store: this.$store\n };\n return targetFunction.call(proxy, ...arguments);\n };\n};\n\n/**\n * @template {(...args: any[]) => any} T\n * @param {import(\'@nuxt/types\').Context} context\n * @param {T} targetFunction\n * @return {(...args: Parameters<T>) => ReturnType<T>}\n */\nvar NuxtContextProxy = function NuxtContextProxy(context, targetFunction) {\n return function () {\n var {\n app,\n req,\n route,\n store\n } = context;\n var proxy = {\n getRouteBaseName: app.getRouteBaseName,\n i18n: app.i18n,\n localePath: app.localePath,\n localeLocation: app.localeLocation,\n localeRoute: app.localeRoute,\n req: false ? undefined : null,\n route,\n router: app.router,\n store\n };\n return targetFunction.call(proxy, ...arguments);\n };\n};\n\n/** @type {import(\'vue\').PluginObject<void>} */\nvar plugin_routing_plugin = {\n install(Vue) {\n Vue.mixin({\n methods: {\n localePath: VueInstanceProxy(plugin_routing_localePath),\n localeRoute: VueInstanceProxy(localeRoute),\n localeLocation: VueInstanceProxy(localeLocation),\n switchLocalePath: VueInstanceProxy(switchLocalePath),\n getRouteBaseName: VueInstanceProxy(getRouteBaseName)\n }\n });\n }\n};\n\n/** @type {import(\'@nuxt/types\').Plugin} */\n/* harmony default export */ var plugin_routing = (context => {\n vue_runtime_esm["default"].use(plugin_routing_plugin);\n var {\n app,\n store\n } = context;\n app.localePath = context.localePath = NuxtContextProxy(context, plugin_routing_localePath);\n app.localeRoute = context.localeRoute = NuxtContextProxy(context, localeRoute);\n app.localeLocation = context.localeLocation = NuxtContextProxy(context, localeLocation);\n app.switchLocalePath = context.switchLocalePath = NuxtContextProxy(context, switchLocalePath);\n app.getRouteBaseName = context.getRouteBaseName = NuxtContextProxy(context, getRouteBaseName);\n if (store) {\n store.localePath = app.localePath;\n store.localeRoute = app.localeRoute;\n store.localeLocation = app.localeLocation;\n store.switchLocalePath = app.switchLocalePath;\n store.getRouteBaseName = app.getRouteBaseName;\n }\n});\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.starts-with.js\nvar es_string_starts_with = __webpack_require__(142);
1\n\n// EXTERNAL MODULE: ./node_modules/vue-i18n/dist/vue-i18n.esm.js\nvar vue_i18n_esm = __webpack_require__(364);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.delete-all.js\nvar esnext_map_delete_all = __webpack_require__(268);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.every.js\nvar esnext_map_every = __webpack_require__(269);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.filter.js\nvar esnext_map_filter = __webpack_require__(270);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.find.js\nvar esnext_map_find = __webpack_require__(271);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.find-key.js\nvar esnext_map_find_key = __webpack_require__(272);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.includes.js\nvar esnext_map_includes = __webpack_require__(273);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.key-of.js\nvar esnext_map_key_of = __webpack_require__(274);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.map-keys.js\nvar esnext_map_map_keys = __webpack_require__(275);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.map-values.js\nvar esnext_map_map_values = __webpack_require__(276);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.merge.js\nvar esnext_map_merge = __webpack_require__(277);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.reduce.js\nvar esnext_map_reduce = __webpack_require__(278);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.some.js\nvar esnext_map_some = __webpack_require__(279);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.map.update.js\nvar esnext_map_update = __webpack_require__(280);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/head-meta.js\n\nfunction head_meta_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction head_meta_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? head_meta_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : head_meta_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @this {import(\'vue/types/vue\').Vue}\n * @return {import(\'vue-meta\').MetaInfo}\n */\nfunction nuxtI18nHead() {\n var {\n addDirAttribute = true,\n addSeoAttributes = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Can happen when using from a global mixin.\n if (!this.$i18n) {\n return {};\n }\n\n /** @type {import(\'../../types/vue\').NuxtI18nMeta} */\n var metaObject = {\n htmlAttrs: {},\n link: [],\n meta: []\n };\n var currentLocale = this.$i18n.localeProperties;\n var currentLocaleIso = currentLocale.iso;\n var currentLocaleDir = currentLocale.dir || options_options.defaultDirection;\n\n /**\n * Adding Direction Attribute:\n */\n if (addDirAttribute) {\n metaObject.htmlAttrs.dir = currentLocaleDir;\n }\n\n /**\n * Adding SEO Meta:\n */\n if (addSeoAttributes && (\n // @ts-ignore\n vue_meta_esm_browser["a" /* default */].hasMetaInfo ? vue_meta_esm_browser["a" /* default */].hasMetaInfo(this) : this._hasMetaInfo) && this.$i18n.locale && this.$i18n.locales && this.$options[Constants.COMPONENT_OPTIONS_KEY] !== false &&\n // @ts-ignore\n !(this.$options[Constants.COMPONENT_OPTIONS_KEY] && this.$options[Constants.COMPONENT_OPTIONS_KEY].seo === false)) {\n if (currentLocaleIso) {\n metaObject.htmlAttrs.lang = currentLocaleIso; // TODO: simple lang or "specific" lang with territory?\n }\n var locales = /** @type {import(\'../../types\').LocaleObject[]} */this.$i18n.locales;\n addHreflangLinks.bind(this)(locales, this.$i18n.__baseUrl, metaObject.link);\n addCanonicalLinks.bind(this)(this.$i18n.__baseUrl, metaObject.link);\n addCurrentOgLocale.bind(this)(currentLocale, currentLocaleIso, metaObject.meta);\n addAlternateOgLocales.bind(this)(locales, currentLocaleIso, metaObject.meta);\n }\n\n /**\n * Internals:\n */\n\n /**\n * @this {import(\'vue/types/vue\').Vue}\n *\n * @param {import(\'../../types\').LocaleObject[]} locales\n * @param {string} baseUrl\n * @param {import(\'../../types/vue\').NuxtI18nMeta[\'link\']} link\n */\n function addHreflangLinks(locales, baseUrl, link) {\n if (options_options.strategy === Constants.STRATEGIES.NO_PREFIX) {\n return;\n }\n /** @type {Map<string, import(\'../../types\').LocaleObject>} */\n var localeMap = new Map();\n for (var locale of locales) {\n var localeIso = locale.iso;\n if (!localeIso) {\n // eslint-disable-next-line no-console\n console.warn(formatMessage(\'Locale ISO code is required to generate alternate link\'));\n continue;\n }\n var [language, region] = localeIso.split(\'-\');\n if (language && region && (locale.isCatchallLocale || !localeMap.has(language))) {\n localeMap.set(language, locale);\n }\n localeMap.set(localeIso, locale);\n }\n for (var [iso, mapLocale] of localeMap.entries()) {\n var localePath = this.switchLocalePath(mapLocale.code);\n if (localePath) {\n link.push({\n hid: "i18n-alt-".concat(iso),\n rel: \'alternate\',\n href: toAbsoluteUrl(localePath, baseUrl),\n hreflang: iso\n });\n }\n }\n if (options_options.defaultLocale) {\n var _localePath = this.switchLocalePath(options_options.defaultLocale);\n if (_localePath) {\n link.push({\n hid: \'i18n-xd\',\n rel: \'alternate\',\n href: toAbsoluteUrl(_localePath, baseUrl),\n hreflang: \'x-default\'\n });\n }\n }\n }\n\n /**\n * @this {import(\'vue/types/vue\').Vue}\n *\n * @param {string} baseUrl\n * @param {import(\'../../types/vue\').NuxtI18nMeta[\'link\']} link\n */\n function addCanonicalLinks(baseUrl, link) {\n var currentRoute = this.localeRoute(head_meta_objectSpread(head_meta_objectSpread({}, this.$route), {}, {\n name: this.getRouteBaseName()\n }));\n var canonicalPath = currentRoute ? currentRoute.path : null;\n if (canonicalPath) {\n link.push({\n hid: \'i18n-can\',\n rel: \'canonical\',\n href: toAbsoluteUrl(canonicalPath, baseUrl)\n });\n }\n }\n\n /**\n * @this {import(\'vue/types/vue\').Vue}\n *\n * @param {import(\'../../types\').LocaleObject} currentLocale\n * @param {string | undefined} currentLocaleIso\n * @param {import(\'../../types/vue\').NuxtI18nMeta[\'meta\']} meta\n */\n function addCurrentOgLocale(currentLocale, currentLocaleIso, meta) {\n var hasCurrentLocaleAndIso = currentLocale && currentLocaleIso;\n if (!hasCurrentLocaleAndIso) {\n return;\n }\n meta.push({\n hid: \'i18n-og\',\n property: \'og:locale\',\n // Replace dash with underscore as defined in spec: language_TERRITORY\n content: hy
1penToUnderscore(currentLocaleIso)\n });\n }\n\n /**\n * @this {import(\'vue/types/vue\').Vue}\n *\n * @param {import(\'../../types\').LocaleObject[]} locales\n * @param {string | undefined} currentLocaleIso\n * @param {import(\'../../types/vue\').NuxtI18nMeta[\'meta\']} meta\n */\n function addAlternateOgLocales(locales, currentLocaleIso, meta) {\n var localesWithoutCurrent = locales.filter(locale => {\n var localeIso = locale.iso;\n return localeIso && localeIso !== currentLocaleIso;\n });\n if (localesWithoutCurrent.length) {\n var alternateLocales = localesWithoutCurrent.map(locale => ({\n hid: "i18n-og-alt-".concat(locale.iso),\n property: \'og:locale:alternate\',\n content: hypenToUnderscore(locale.iso)\n }));\n meta.push(...alternateLocales);\n }\n }\n\n /**\n * @param {string | undefined} str\n * @return {string}\n */\n function hypenToUnderscore(str) {\n return (str || \'\').replace(/-/g, \'_\');\n }\n\n /**\n * @param {string} urlOrPath\n * @param {string} baseUrl\n */\n function toAbsoluteUrl(urlOrPath, baseUrl) {\n if (urlOrPath.match(/^https?:\\/\\//)) {\n return urlOrPath;\n }\n return baseUrl + urlOrPath;\n }\n return metaObject;\n}\n\n/**\n * @deprecated Use `nuxtI18nHead()` instead.\n * @this {import(\'vue/types/vue\').Vue}\n */\nfunction nuxtI18nSeo() {\n return nuxtI18nHead.call(this, {\n addDirAttribute: false,\n addSeoAttributes: true\n });\n}\n// EXTERNAL MODULE: ./node_modules/klona/full/index.mjs\nvar full = __webpack_require__(164);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/nuxt-i18n/plugin.main.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// @ts-ignore\n\n// @ts-ignore\n\nvue_runtime_esm["default"].use(vue_i18n_esm["a" /* default */]);\n\n/** @type {import(\'@nuxt/types\').Plugin} */\n/* harmony default export */ var plugin_main = (/*#__PURE__*/function () {\n var _ref = Object(asyncToGenerator["a" /* default */])(function* (context) {\n var {\n app,\n route,\n store,\n req,\n res,\n redirect\n } = context;\n if (options_options.vuex && store) {\n registerStore(store, options_options.vuex, options_options.localeCodes);\n }\n var {\n lazy\n } = options_options;\n var injectInNuxtState = lazy && (lazy === true || lazy.skipNuxtState !== true);\n if (false) { var devalue; }\n var {\n alwaysRedirect,\n fallbackLocale,\n onlyOnNoPrefix,\n onlyOnRoot,\n useCookie,\n cookieKey,\n cookieDomain,\n cookieSecure,\n cookieCrossOrigin\n } = /** @type {Required<import(\'../../types\').DetectBrowserLanguageOptions>} */options_options.detectBrowserLanguage;\n\n /**\n * @param {string | undefined} newLocale\n * @param {{ initialSetup?: boolean }} [options=false]\n */\n var loadAndSetLocale = /*#__PURE__*/function () {\n var _ref3 = Object(asyncToGenerator["a" /* default */])(function* (newLocale) {\n var {\n initialSetup = false\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!newLocale) {\n return;\n }\n\n // Abort if different domains option enabled\n if (!initialSetup && app.i18n.differentDomains) {\n return;\n }\n var oldLocale = app.i18n.locale;\n if (newLocale === oldLocale) {\n return;\n }\n var localeOverride = app.i18n.onBeforeLanguageSwitch(oldLocale, newLocale, initialSetup, context);\n if (localeOverride && app.i18n.localeCodes.includes(localeOverride)) {\n if (localeOverride === oldLocale) {\n return;\n }\n newLocale = localeOverride;\n }\n if (!initialSetup) {\n app.i18n.beforeLanguageSwitch(oldLocale, newLocale);\n }\n if (useCookie) {\n app.i18n.setLocaleCookie(newLocale);\n }\n if (options_options.langDir) {\n var i18nFallbackLocale = app.i18n.fallbackLocale;\n if (options_options.lazy) {\n // Load fallback locale(s).\n if (i18nFallbackLocale) {\n /** @type {Promise<void>[]} */\n var localesToLoadPromises = [];
1\n if (Array.isArray(i18nFallbackLocale)) {\n localesToLoadPromises = i18nFallbackLocale.map(fbLocale => loadLanguageAsync(context, fbLocale));\n } else if (typeof i18nFallbackLocale === \'object\') {\n if (i18nFallbackLocale[newLocale]) {\n localesToLoadPromises = localesToLoadPromises.concat(i18nFallbackLocale[newLocale].map(fbLocale => loadLanguageAsync(context, fbLocale)));\n }\n if (i18nFallbackLocale.default) {\n localesToLoadPromises = localesToLoadPromises.concat(i18nFallbackLocale.default.map(fbLocale => loadLanguageAsync(context, fbLocale)));\n }\n } else if (newLocale !== i18nFallbackLocale) {\n localesToLoadPromises.push(loadLanguageAsync(context, i18nFallbackLocale));\n }\n yield Promise.all(localesToLoadPromises);\n }\n yield loadLanguageAsync(context, newLocale);\n } else {\n // Load all locales.\n yield Promise.all(options_options.localeCodes.map(locale => loadLanguageAsync(context, locale)));\n }\n }\n app.i18n.locale = newLocale;\n /** @type {import(\'../../types\').LocaleObject} */\n var newLocaleProperties = options_options.normalizedLocales.find(l => l.code === newLocale) || {\n code: newLocale\n };\n // In case certain locale has more properties than another, reset all the properties.\n for (var key of Object.keys(app.i18n.localeProperties)) {\n app.i18n.localeProperties[key] = undefined;\n }\n // Copy properties of the new locale\n for (var [_key, value] of Object.entries(newLocaleProperties)) {\n vue_runtime_esm["default"].set(app.i18n.localeProperties, _key, Object(full["a" /* klona */])(value));\n }\n if (options_options.vuex) {\n yield syncVuex(store, newLocale, app.i18n.getLocaleMessage(newLocale), options_options.vuex);\n }\n\n // Must retrieve from context as it might have changed since plugin initialization.\n var {\n route\n } = context;\n var redirectPath = getRedirectPathForLocale(route, newLocale);\n if (initialSetup) {\n // Redirect will be delayed until middleware runs as redirecting from plugin does not\n // work in SPA (https://github.com/nuxt/nuxt.js/issues/4491).\n app.i18n.__redirect = redirectPath;\n } else {\n app.i18n.onLanguageSwitched(oldLocale, newLocale);\n if (redirectPath) {\n redirect(redirectPath);\n }\n }\n });\n return function loadAndSetLocale(_x2) {\n return _ref3.apply(this, arguments);\n };\n }();\n var getLocaleFromRoute = createLocaleFromRouteGetter(options_options.localeCodes, {\n routesNameSeparator: options_options.routesNameSeparator,\n defaultLocaleRouteNameSuffix: options_options.defaultLocaleRouteNameSuffix\n });\n\n /**\n * Gets the redirect path for locale.\n *\n * @param {import("vue-router").Route} route\n * @param {string | undefined} locale\n * @return {string} The redirect path for locale.\n */\n var getRedirectPathForLocale = (route, locale) => {\n // Redirects are ignored if it is a nuxt generate.\n if (false) {}\n if (!locale || app.i18n.differentDomains || options_options.strategy === Constants.STRATEGIES.NO_PREFIX) {\n return \'\';\n }\n if (getLocaleFromRoute(route) === locale) {\n // If "onlyOnRoot" or "onlyOnNoPrefix" is set and strategy is "prefix_and_default", prefer unprefixed route for\n // default locale.\n if (!(onlyOnRoot || onlyOnNoPrefix) || locale !== options_options.defaultLocale || options_options.strategy !== Constants.STRATEGIES.PREFIX_AND_DEFAULT) {\n return \'\';\n }\n }\n\n // At this point we are left with route that either has no or different locale.\n var redirectPath = app.switchLocalePath(locale);\n if (!redirectPath) {\n // Current route could be 404 in which case attempt to find matching route for given locale.\n redirectPath = app.localePath(route.fullPath, locale);\n }\n if (!redirectPath || redirectPath === route.fullPath || redirectPath.startsWith(\'//\')) {\n return \'\';\n }\n return redirectPath;\n };\n\n /**\n * Called by middleware on navigation (also on the initial one).\n *\n * @type {import(\'../../types/internal\').onNavigateInternal}\n */\n var onNavigate = /*#__PURE__*/function () {\n var _ref4 = Object(asyncToGenerator["a" /* default */])(function* (route) {\n // Handle root path redirect\n if (route.path === \'/\' && options_options.rootRedirect) {\n var statusCode = 302;\n var path = options_options.rootRedirect;\n if (typeof options_options.rootRedirect !== \'string\') {\n statusCode = options_options.rootRedirect.statusCode;\n path = options_options.rootRedirect.path;\n }\n return [statusCode, "/".concat(path), /* preserve query */true];\n }\n var storedRedirect = app.i18n.__redirect;\n if (storedRedirect) {\n app.i18n.__redirect = null;\n return [302, storedRedirect];\n }\n var resolveBaseUrlOptions = {\n differentDomains: options_options.differentDomains,\n normalizedLocales: options_options.normalizedLocales\n };\n app.i18n.__baseUrl = resolveBaseUrl(options_options.baseUrl, context, app.i18n.locale, resolveBaseUrlOptions);\n var finalLocale = options_options.detectBrowserLanguage && doDetectBrowserLanguage(route) || getLocaleFromRoute(route) || app.i18n.locale || app.i18n.defaultLocale || \'\';\n if (options_options.skipSettingLocaleOnNavigate) {\n app.i18n.__pendingLocale = finalLocale;\n app.i18n.__pendingLocalePromise = new Promise(resolve => {\n app.i18n.__resolvePendingLocalePromise = resolve;\n });\n } else {\n yield app.i18n.setLocale(finalLocale);\n }\n return [null, null];\n });\n return function onNavigate(_x3) {\n return _ref4.apply(this, arguments);\n };\n }();\n var finalizePendingLocaleChange = /*#__PURE__*/function () {\n var _ref5 = Object(asyncToGenerator["a" /* default */])(function* () {\n if (!app.i18n.__pendingLocale) {\n return;\n }\n yield app.i18n.setLocale(app.i18n.__pendingLocale);\n app.i18n.__resolvePendingLocalePromise(\'\');\n app.i18n.__pendingLocale = null;\n });\n return function finalizePendingLocaleChange() {\n return _ref5.apply(this, arguments);\n };\n }();\n var waitForPendingLocaleChange = /*#__PURE__*/function () {\n var _ref6 = Object(asyncToGenerator["a" /* default */])(function* () {\n if (app.i18n.__pendingLocale) {\n yield app.i18n.__pendingLocalePromise;\n }\n });\n return function waitForPendingLocaleChange() {\n return _ref6.apply(this, arguments);\n };\n }();\n var getBrowserLocale = () => {\n if ( true && typeof navigator !== \'undefined\' && navigator.languages) {\n // Get browser language either from navigator if running on client side, or from the headers\n return matchBrowserLocale(options_options.normalizedLocales, navigator.languages);\n } else if (req && typeof req.headers[\'accept-language\'] !== \'undefined\') {\n return matchBrowserLocale(options_options.normalizedLocales, parseAcceptLanguage(req.headers[\'accept-language\']));\n } else {\n return undefined;\n }\n };\n\n /**\n * @param {import(\'vue-router\').Route} route\n * @return {string} Returns the browser locale that was detected or an empty string otherwise.\n */\n var doDetectBrowserLanguage = route => {\n // Browser detection is ignored if it is a nuxt generate.\n if (false) {}\n if (options_options.strategy !== Constants.STRATEGIES.NO_PREFIX) {\n if (onlyOnRoot) {\n if (route.path !== \'/\') {\n return \'\';\n }\n } else if (onlyOnNoPrefix) {\n if (!alwaysRedirect && route.path.match(getLocalesRegex(options_options.localeCodes))) {\n return \'\';\n }\n }\n }\n var matchedLocale;\n if (useCookie && (matchedLocale = app.i18n.getLocaleCookie())) {\n // Get preferred language from cookie if present and enabled\n } else {\n // Try to get locale from either navigator or header detection\n matchedLocale = getBrowserLocale();\n }\n var finalLocale = matchedLocale || fallbackLocale;\n\n // Handle cookie option to prevent multiple redirections\n if (finalLocale && (!useCookie || alwaysRedirect || !app.i18n.getLocaleCookie())) {\n if (finalLocale !== app.i18n.locale) {\n return finalLocale;\n }\n }\n return \'\';\n };\n\n /**\n * Extends the newly created vue-i18n instance with nuxt-i18n properties.\n *\n * @param {import(\'vue-i18n\').IVueI18n} i18n\n */\n var extendVueI18nInstance = i18n => {\n i18n.locales = Object(full["a" /* klona */])(options_options.locales);\n i18n.localeCodes = Object(full["a" /* klona */])(options_options.localeCodes);\n i18n.localeProperties = vue_runtime_esm["default"].observable(Object(full["a" /* klona */])(options_options.normalizedLocales.find(l => l.code === i18n.locale) || {\n code: i18n.locale\n }));\n i18n.defaultLocale = options_options.defaultLocale;\n i18n.differentDomains = options_options.differentDomains;\n i18n.beforeLanguageSwitch = options_options.beforeLanguageSwitch;\n i18n.onBeforeLanguageSwitch = options_options.onBeforeLanguageSwitch;\n i18n.onLanguageSwitched = options_options.onLanguageSwitched;\n i18n.setLocaleCookie = locale => setLocaleCookie(locale, res, {\n useCookie,\n cookieDomain,\n cookieKey,\n cookieSecure,\n cookieCrossOrigin\n });\n i18n.getLocaleCookie = () => getLocaleCookie(req, {\n useCookie,\n cookieKey,\n localeCodes: options_options.localeCodes\n });\n i18n.setLocale = locale => loadAndSetLocale(locale);\n i18n.getBrowserLocale = () => getBrowserLocale();\n i18n.finalizePendingLocaleChange = finalizePendingLocaleChange;\n i18n.waitForPendingLocaleChange = waitForPendingLocaleChange;\n i18n.__baseUrl = app.i18n.__baseUrl;\n i18n.__pendingLocale = app.i18n.__pendingLocale;\n i18n.__pendingLocalePromise = app.i18n.__pendingLocalePromise;\n i18n.__resolvePendingLocalePromise = app.i18n.__resolvePendingLocalePromise;\n };\n\n // Set instance options\n var vueI18nOptions = typeof options_options.vueI18
1n === \'function\' ? yield options_options.vueI18n(context) : Object(full["a" /* klona */])(options_options.vueI18n);\n vueI18nOptions.componentInstanceCreatedListener = extendVueI18nInstance;\n // @ts-ignore\n app.i18n = context.i18n = new vue_i18n_esm["a" /* default */](vueI18nOptions);\n // Initialize locale and fallbackLocale as vue-i18n defaults those to \'en-US\' if falsey\n app.i18n.locale = \'\';\n app.i18n.fallbackLocale = vueI18nOptions.fallbackLocale || \'\';\n extendVueI18nInstance(app.i18n);\n var resolveBaseUrlOptions = {\n differentDomains: options_options.differentDomains,\n normalizedLocales: options_options.normalizedLocales\n };\n app.i18n.__baseUrl = resolveBaseUrl(options_options.baseUrl, context, \'\', resolveBaseUrlOptions);\n app.i18n.__onNavigate = onNavigate;\n vue_runtime_esm["default"].prototype.$nuxtI18nSeo = nuxtI18nSeo;\n vue_runtime_esm["default"].prototype.$nuxtI18nHead = nuxtI18nHead;\n if (store) {\n // Inject in store.\n store.$i18n = app.i18n;\n if (store.state.localeDomains) {\n for (var locale of app.i18n.locales) {\n if (typeof locale === \'string\') {\n continue;\n }\n locale.domain = store.state.localeDomains[locale.code];\n }\n }\n }\n\n /** @type {string | undefined} */\n var finalLocale = options_options.detectBrowserLanguage ? doDetectBrowserLanguage(route) : \'\';\n if (!finalLocale) {\n var {\n vuex\n } = options_options;\n if (vuex && vuex.syncLocale && store && store.state[vuex.moduleName].locale !== \'\') {\n finalLocale = store.state[vuex.moduleName].locale;\n } else if (app.i18n.differentDomains) {\n var domainLocale = getLocaleDomain(options_options.normalizedLocales, req);\n finalLocale = domainLocale;\n } else if (options_options.strategy !== Constants.STRATEGIES.NO_PREFIX) {\n var routeLocale = getLocaleFromRoute(route);\n finalLocale = routeLocale;\n }\n }\n if (!finalLocale && useCookie) {\n finalLocale = app.i18n.getLocaleCookie();\n }\n if (!finalLocale) {\n finalLocale = app.i18n.defaultLocale || \'\';\n }\n yield loadAndSetLocale(finalLocale, {\n initialSetup: true\n });\n if (false) { var redirectTo, _; }\n });\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n}());\n// CONCATENATED MODULE: ./.nuxt/emerald/device.plugin.js\n\n\n\n\n\n\n// eslint-disable-next-line\nvar REGEX_MOBILE1 = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|FBAN|FBAV|fennec|hiptop|iemobile|ip(hone|od)|Instagram|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;\n\n// eslint-disable-next-line\nvar REGEX_MOBILE2 = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-
1)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i;\nfunction isMobile(a) {\n return REGEX_MOBILE1.test(a) || REGEX_MOBILE2.test(a.substr(0, 4));\n}\n\n// eslint-disable-next-line\nvar REGEX_MOBILE_OR_TABLET1 = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|FBAN|FBAV|fennec|hiptop|iemobile|ip(hone|od)|Instagram|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i;\n// eslint-disable-next-line\nvar REGEX_MOBILE_OR_TABLET2 = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i;\n\n// eslint-disable-next-line\nvar REGEX_CRAWLER = /Googlebot\\/|Googlebot-Mobile|Googlebot-Image|Googlebot-News|Googlebot-Video|AdsBot-Google([^-]|$)|AdsBot-Google-Mobile|Feedfetcher-Google|Mediapartners-Google|Mediapartners \\(Googlebot\\)|APIs-Google|bingbot|Slurp|[wW]get|LinkedInBot|Python-urllib|python-requests|aiohttp|httpx|libwww-perl|httpunit|nutch|Go-http-client|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|BIGLOTRON|Teoma|convera|seekbot|Gigabot|Gigablast|exabot|ia_archiver|GingerCrawler|webmon |HTTrack|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|findlink|msrbot|panscient|yacybot|AISearchBot|ips-agent|tagoobot|MJ12bot|woriobot|yanga|buzzbot|mlbot|YandexBot|YandexImages|YandexAccessibilityBot|YandexMobileBot|YandexMetrika|YandexTurbo|YandexImageResizer|YandexVideo|YandexAdNet|YandexBlogs|YandexCalendar|YandexDirect|YandexFavicons|YaDirectFetcher|YandexForDomain|YandexMarket|YandexMedia|YandexMobileScreenShotBot|YandexNews|YandexOntoDB|YandexPagechecker|YandexPartner|YandexRCA|YandexSearchShop|YandexSitelinks|YandexSpravBot|YandexTracker|YandexVertis|YandexVerticals|YandexWebmaster|YandexScreenshotBot|purebot|Linguee Bot|CyberPatrol|voilabot|Baiduspider|citeseerxbot|spbot|twengabot|postrank|TurnitinBot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|Ahrefs(Bot|SiteAudit)|fuelbot|CrunchBot|IndeedBot|mappydata|woobot|ZoominfoBot|PrivacyAwareBot|Multiviewbot|SWIMGBot|Grobbot|eright|Apercite|semanticbot|Aboundex|domaincrawler|wbsearchbot|summify|CCBot|edisterbot|seznambot|ec2linkfinder|gslfbot|aiHitBot|intelium_bot|facebookexternalhit|Yeti|RetrevoPageAnalyzer|lb-spider|Sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|OrangeBot\\/|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|S[eE][mM]rushBot|yoozBot|lipperhey|Y!J|Domain Re-Animator Bot|AddThis|Screaming Frog SEO Spider|MetaURI|Scrapy|Livelap[bB]ot|OpenHoseBot|CapsuleChecker|[email protected]|IstellaBot|DeuSu\\/|betaBot|Cliqzbot\\/|MojeekBot\\/|netEstate NE Crawler|SafeSearch microdata crawler|Gluten Free Crawler\\/|Sonic|Sysomos|Trove|deadlinkchecker|Slack-ImgProxy|Embedly|RankActiveLinkBot|iskanie|SafeDNSBot|SkypeUriPreview|Veoozbot|Slackbot|redditbot|datagnionbot|Google-Adwords-Instant|adbeat_bot|WhatsApp|contxbot|pinterest.com.bot|electricmonk|GarlikCrawler|BingPreview\\/|vebidoobot|FemtosearchBot|Yahoo Link Preview|MetaJobBot|DomainStatsBot|mindUpBot|Daum\\/|Jugendschutzprogramm-Crawler|Xenu Link Sleuth|Pcore-HTTP|moatbot|KosmioBot|pingdom|AppInsights|PhantomJS|Gowikibot|PiplBot|Discordbot|TelegramBot|Jetslide|newsharecounts|James BOT|Bark[rR]owler|TinEye|SocialRankIOBot|trendictionbot|Ocarinabot|epicbot|Primalbot|DuckDuckGo-Favicons-Bot|GnowitNewsbot|Leikibot|LinkArchiver|YaK\\/|PaperLiBot|Digg Deeper|dcrawl|Snacktory|AndersPinkBot|Fyrebot|EveryoneSocialBot|Mediatoolkitbot|Luminator-robots|ExtLinksBot|SurveyBot|NING\\/|okhttp|Nuzzel|omgili|PocketParser|YisouSpider|um-LN|ToutiaoSpider|MuckRack|Jamie\'s Spider|AHC\\/|NetcraftSurveyAgent|Laserlikebot|^Apache-HttpClient|AppEngine-Google|Jetty|Upflow|Thinklab|Traackr.com|Twurly|Mastodon|http_get|DnyzBot|botify|007ac9 Crawler|BehloolBot|BrandVerity|check_http|BDCbot|ZumBot|EZID|ICC-Crawler|ArchiveBot|^LCC |filterdb.iss.net\\/crawler|BLP_bbot|BomboraBot|Buck\\/|Companybook-Crawler|Genieo|magpie-crawler|Meltw
1aterNews|Moreover|newspaper\\/|ScoutJet|(^| )sentry\\/|StorygizeBot|UptimeRobot|OutclicksBot|seoscanners|Hatena|Google Web Preview|MauiBot|AlphaBot|SBL-BOT|IAS crawler|adscanner|Netvibes|acapbot|Baidu-YunGuanCe|bitlybot|blogmuraBot|Bot.AraTurka.com|bot-pge.chlooe.com|BoxcarBot|BTWebClient|ContextAd Bot|Digincore bot|Disqus|Feedly|Fetch\\/|Fever|Flamingo_SearchEngine|FlipboardProxy|g2reader-bot|G2 Web Services|imrbot|K7MLWCBot|Kemvibot|Landau-Media-Spider|linkapediabot|vkShare|Siteimprove.com|BLEXBot\\/|DareBoost|ZuperlistBot\\/|Miniflux\\/|Feedspot|Diffbot\\/|SEOkicks|tracemyfile|Nimbostratus-Bot|zgrab|PR-CY.RU|AdsTxtCrawler|Datafeedwatch|Zabbix|TangibleeBot|google-xrawler|axios|Pulsepoint|CloudFlare-AlwaysOnline|Google-Structured-Data-Testing-Tool|WordupInfoSearch|WebDataStats|HttpUrlConnection|Seekport Crawler|ZoomBot|VelenPublicWebCrawler|MoodleBot|jpg-newsbot|outbrain|W3C_Validator|Validator\\.nu|W3C-checklink|W3C-mobileOK|W3C_I18n-Checker|FeedValidator|W3C_CSS_Validator|W3C_Unicorn|Google-PhysicalWeb|Blackboard|ICBot\\/|BazQux|Twingly|Rivva|Experibot|awesomecrawler|Dataprovider.com|GroupHigh\\/|theoldreader.com|AnyEvent|Uptimebot\\.org|Nmap Scripting Engine|2ip.ru|Clickagy|Caliperbot|MBCrawler|online-webceo-bot|B2B Bot|AddSearchBot|Google Favicon|HubSpot|Chrome-Lighthouse|HeadlessChrome|CheckMarkNetwork\\/|www\\.uptime\\.com|Streamline3Bot\\/|serpstatbot\\/|MixnodeCache\\/|^curl|SimpleScraper|RSSingBot|Jooblebot|fedoraplanet|Friendica|NextCloud|Tiny Tiny RSS|RegionStuttgartBot|Bytespider|Datanyze|Google-Site-Verification|TrendsmapResolver|tweetedtimes|NTENTbot|Gwene|SimplePie|SearchAtlas|Superfeedr|feedbot|UT-Dorkbot|Amazonbot|SerendeputyBot|Eyeotabot|officestorebot|Neticle Crawler|SurdotlyBot|LinkisBot|AwarioSmartBot|AwarioRssBot|RyteBot|FreeWebMonitoring SiteChecker|AspiegelBot|NAVER Blog Rssbot|zenback bot|SentiBot|Domains Project\\/|Pandalytics|VKRobot|bidswitchbot|tigerbot|NIXStatsbot|Atom Feed Robot|Curebot|PagePeeker\\/|Vigil\\/|rssbot\\/|startmebot\\/|JobboerseBot|seewithkids|NINJA bot|Cutbot|BublupBot|BrandONbot|RidderBot|Taboolabot|Dubbotbot|FindITAnswersbot|infoobot|Refindbot|BlogTraffic\\/\\d\\.\\d+ Feed-Fetcher|SeobilityBot|Cincraw|Dragonbot|VoluumDSP-content-bot|FreshRSS|BitBot|^PHP-Curl-Class|Google-Certificates-Bridge/;\nfunction isMobileOrTablet(a) {\n return REGEX_MOBILE_OR_TABLET1.test(a) || REGEX_MOBILE_OR_TABLET2.test(a.substr(0, 4));\n}\nfunction isIos(a) {\n return /iPad|iPhone|iPod/.test(a);\n}\nfunction isAndroid(a) {\n return /android/i.test(a);\n}\nfunction isWindows(a) {\n return /Windows/.test(a);\n}\nfunction isMacOS(a) {\n return /Mac OS X/.test(a);\n}\n\n// Following regular expressions are originated from bowser(https://github.com/lancedikson/bowser).\n// Copyright 2015, Dustin Diaz (the "Original Author")\n// https://github.com/lancedikson/bowser/blob/master/LICENSE\nvar browsers = [{\n name: \'Samsung\',\n test: /SamsungBrowser/i\n}, {\n name: \'Edge\',\n test: /edg([ea]|ios|)\\//i\n}, {\n name: \'Firefox\',\n test: /firefox|iceweasel|fxios/i\n}, {\n name: \'Chrome\',\n test: /chrome|crios|crmo/i\n}, {\n name: \'Safari\',\n test: /safari|applewebkit/i\n}];\nfunction getBrowserName(a) {\n for (var b of browsers) {\n if (b.test.test(a)) {\n return b.name;\n }\n }\n return null;\n}\nvar DEFAULT_USER_AGENT = \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36\';\nvar REFRESH_ON_RESIZE = true;\nfunction extractDevices(ctx) {\n var userAgent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_USER_AGENT;\n var mobile = null;\n var mobileOrTablet = null;\n var ios = null;\n var android = null;\n if (userAgent === \'Amazon CloudFront\') {\n if (ctx.req.headers[\'cloudfront-is-mobile-viewer\'] === \'true\') {\n mobile = true;\n mobileOrTablet = true;\n }\n if (ctx.req.headers[\'cloudfront-is-tablet-viewer\'] === \'true\') {\n mobile = false;\n mobileOrTablet = true;\n }\n if (ctx.req.headers[\'cloudfront-is-desktop-viewer\'] === \'true\') {\n mobile = false;\n mobileOrTablet = false;\n }\n if (ctx.req.headers[\'cloudfront-is-ios-viewer\'] === \'true\') {\n ios = true;\n }\n if (ctx.req.headers[\'cloudfront-is-android-viewer\'] === \'true\') {\n android = true;\n }\n } else if (ctx.req && ctx.req.headers[\'cf-device-type\']) {\n // Cloudflare\n switch (ctx.req.headers[\'cf-device-type\']) {\n case \'mobile\':\n mobile = true;\n mobileOrTablet = true;\n break;\n case \'tablet\':\n mobile = false;\n mobileOrTablet = true;\n break;\n case \'desktop\':\n mobile = false;\n mobileOrTablet = false;\n break;\n }\n } else {\n mobile = isMobile(userAgent);\n mobileOrTablet = isMobileOrTablet(userAgent);\n ios = isIos(userAgent);\n android = isAndroid(userAgent);\n }\n var windows = isWindows(userAgent);\n var macOS = isMacOS(userAgent);\n var browserName = getBrowserName(userAgent);\n var isSafari = browserName === \'Safari\';\n var isFirefox = browserName === \'Firefox\';\n var isEdge = browserName === \'Edge\';\n var isChrome = browserName === \'Chrome\';\n var isSamsung = browserName === \'Samsung\';\n var isCrawler = REGEX_CRAWLER.test(userAgent);\n return {\n mobile,\n mobileOrTablet,\n ios,\n android,\n windows,\n macOS,\n isSafari,\n isFirefox,\n isEdge,\n isChrome,\n isSamsung,\n isCrawler\n };\n}\n/* harmony default export */ var device_plugin = (function (_x, _x2) {\n return device_plugin_ref.apply(this, arguments);\n});\nfunction device_plugin_ref() {\n device_plugin_ref = Object(asyncToGenerator["a" /* default */])(function* (ctx, inject) {\n var makeFlags = () => {\n var userAgent = \'\';\n if (typeof ctx.req !== \'undefined\') {\n userAgent = ctx.req.headers[\'user-agent\'];\n } else if (typeof navigator !== \'undefined\') {\n userAgent = navigator.userAgent;\n }\n var {\n mobile,\n mobileOrTablet,\n ios,\n android,\n windows,\n macOS,\n isSafari,\n isFirefox,\n isEdge,\n isChrome,\n isSamsung,\n isCrawler\n } = extractDevices(ctx, userAgent);\n return {\n userAgent,\n isMobile: mobile,\n isMobileOrTablet: mobileOrTablet,\n isTablet: !mobile && mobileOrTablet,\n isDesktop: !mobileOrTablet,\n isIos: ios,\n isAndroid: android,\n isWindows: windows,\n isMacOS: macOS,\n isDesktopOrTablet: !mobile,\n isSafari,\n isFirefox,\n isEdge,\n isChrome,\n isSamsung,\n isCrawler\n };\n };\n var flags = makeFlags(ctx);\n if (REFRESH_ON_RESIZE && typeof window !== \'undefined\') {\n inject(\'device\', vue_runtime_esm["default"].observable(flags));\n window.addEventListener(\'resize\', () => {\n setTimeout(() =>
1 {\n var newFlags = makeFlags(ctx);\n for (var key in newFlags) {\n ctx.$device[key] = newFlags[key];\n }\n }, 50);\n });\n } else {\n inject(\'device\', flags);\n }\n });\n return device_plugin_ref.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./.nuxt/emerald/pwa/icon.plugin.js\n\n/* harmony default export */ var icon_plugin = (function (_x, _x2) {\n return icon_plugin_ref.apply(this, arguments);\n});\nfunction icon_plugin_ref() {\n icon_plugin_ref = Object(asyncToGenerator["a" /* default */])(function* (ctx, inject) {\n var icons = {\n "64x64": "/_nuxt/icons/icon_64x64.3dda57.png",\n "120x120": "/_nuxt/icons/icon_120x120.3dda57.png",\n "144x144": "/_nuxt/icons/icon_144x144.3dda57.png",\n "152x152": "/_nuxt/icons/icon_152x152.3dda57.png",\n "192x192": "/_nuxt/icons/icon_192x192.3dda57.png",\n "384x384": "/_nuxt/icons/icon_384x384.3dda57.png",\n "512x512": "/_nuxt/icons/icon_512x512.3dda57.png",\n "ipad_1536x2048": "/_nuxt/icons/splash_ipad_1536x2048.3dda57.png",\n "ipadpro9_1536x2048": "/_nuxt/icons/splash_ipadpro9_1536x2048.3dda57.png",\n "ipadpro10_1668x2224": "/_nuxt/icons/splash_ipadpro10_1668x2224.3dda57.png",\n "ipadpro12_2048x2732": "/_nuxt/icons/splash_ipadpro12_2048x2732.3dda57.png",\n "iphonese_640x1136": "/_nuxt/icons/splash_iphonese_640x1136.3dda57.png",\n "iphone6_50x1334": "/_
1nuxt/icons/splash_iphone6_50x1334.3dda57.png",\n "iphoneplus_1080x1920": "/_nuxt/icons/splash_iphoneplus_1080x1920.3dda57.png",\n "iphonex_1125x2436": "/_nuxt/icons/splash_iphonex_1125x2436.3dda57.png",\n "iphonexr_828x1792": "/_nuxt/icons/splash_iphonexr_828x1792.3dda57.png",\n "iphonexsmax_1242x2688": "/_nuxt/icons/splash_iphonexsmax_1242x2688.3dda57.png"\n };\n var getIcon = size => icons[size + \'x\' + size] || \'\';\n inject(\'icon\', getIcon);\n });\n return icon_plugin_ref.apply(this, arguments);\n}\n// EXTERNAL MODULE: ./node_modules/axios/index.js\nvar node_modules_axios = __webpack_require__(99);\nvar axios_default = /*#__PURE__*/__webpack_require__.n(node_modules_axios);\n\n// EXTERNAL MODULE: ./node_modules/defu/dist/defu.js\nvar defu = __webpack_require__(393);\nvar defu_default = /*#__PURE__*/__webpack_require__.n(defu);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/axios.js\n\nfunction axios_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction axios_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? axios_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : axios_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n// Axios.prototype cannot be modified\nvar axiosExtra = {\n setBaseURL(baseURL) {\n this.defaults.baseURL = baseURL;\n },\n setHeader(name, value) {\n var scopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \'common\';\n for (var scope of Array.isArray(scopes) ? scopes : [scopes]) {\n if (!value) {\n delete this.defaults.headers[scope][name];\n continue;\n }\n this.defaults.headers[scope][name] = value;\n }\n },\n setToken(token, type) {\n var scopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \'common\';\n var value = !token ? null : (type ? type + \' \' : \'\') + token;\n this.setHeader(\'Authorization\', value, scopes);\n },\n onRequest(fn) {\n this.interceptors.request.use(config => fn(config) || config);\n },\n onResponse(fn) {\n this.interceptors.response.use(response => fn(response) || response);\n },\n onRequestError(fn) {\n this.interceptors.request.use(undefined, error => fn(error) || Promise.reject(error));\n },\n onResponseError(fn) {\n this.interceptors.response.use(undefined, error => fn(error) || Promise.reject(error));\n },\n onError(fn) {\n this.onRequestError(fn);\n this.onResponseError(fn);\n },\n create(options) {\n return createAxiosInstance(defu_default()(options, this.defaults));\n }\n};\n\n// Request helpers ($get, $post, ...)\nvar _loop = function _loop(method) {\n axiosExtra[\'$\' + method] = function () {\n return this[method].apply(this, arguments).then(res => res && res.data);\n };\n};\nfor (var method of [\'request\', \'delete\', \'get\', \'head\', \'options\', \'post\', \'put\', \'patch\']) {\n _loop(method);\n}\nvar extendAxiosInstance = axios => {\n for (var key in axiosExtra) {\n axios[key] = axiosExtra[key].bind(axios);\n }\n};\nvar createAxiosInstance = axiosOptions => {\n // Create new axios instance\n var axios = axios_default.a.create(axiosOptions);\n axios.CancelToken = axios_default.a.CancelToken;\n axios.isCancel = axios_default.a.isCancel;\n\n // Extend axios proto\n extendAxiosInstance(axios);\n\n // Intercept to apply default headers\n axios.onRequest(config => {\n config.headers = axios_objectSpread(axios_objectSpread({}, axios.defaults.headers.common), config.headers);\n });\n\n // Setup interceptors\n\n setupProgress(axios);\n return axios;\n};\nvar setupProgress = axios => {\n if (false) {}\n\n // A noop loading inteterface for when $nuxt is not yet ready\n var noopLoading = {\n finish: () => {},\n start: () => {},\n fail: () => {},\n set: () => {}\n };\n var $loading = () => {\n var $nuxt = typeof window !== \'undefined\' && window[\'$nuxt\'];\n return $nuxt && $nuxt.$loading && $nuxt.$loading.set ? $nuxt.$loading : noopLoading;\n };\n var currentRequests = 0;\n axios.onRequest(config => {\n if (config && config.progress === false) {\n return;\n }\n currentRequests++;\n });\n axios.onResponse(response => {\n if (response && response.config && response.config.progress === false) {\n return;\n }\n currentRequests--;\n if (currentRequests <= 0) {\n currentRequests = 0;\n $loading().finish();\n }\n });\n axios.onError(error => {\n if (error && error.config && error.config.progress === false) {\n return;\n }\n currentRequests--;\n if (axios_default.a.isCancel(error)) {\n if (currentRequests <= 0) {\n currentRequests = 0;\n $loading().finish();\n }\n return;\n }\n $loading().fail();\n $loading().finish();\n });\n var onProgress = e => {\n if (!currentRequests || !e.total) {\n return;\n }\n var progress = e.loaded * 100 / (e.total * currentRequests);\n $loading().set(Math.min(100, progress));\n };\n axios.defaults.onUploadProgress = onProgress;\n axios.defaults.onDownloadProgress = onProgress;\n};\n/* harmony default export */ var emerald_axios = ((ctx, inject) => {\n // runtimeConfig\n var runtimeConfig = ctx.$config && ctx.$config.axios || {};\n // baseURL\n var baseURL = true ? runtimeConfig.browserBaseURL || runtimeConfig.browserBaseUrl || runtimeConfig.baseURL || runtimeConfig.baseUrl || \'https://nxc-api.47thst.com:443/\' : undefined;\n\n // Create fresh objects for all default header scopes\n // Axios creates only one which is shared across SSR requests!\n // https://github.com/mzabriskie/axios/blob/master/lib/defaults.js\n var headers = {\n "common": {\n "Accept": "application/json, text/plain, */*"\n },\n "delete": {},\n "get": {},\n "head": {},\n "post": {},\n "put": {},\n "patch": {}\n };\n var axiosOptions = {\n baseURL,\n headers\n };\n\n // Proxy SSR request headers headers\n if (false) { var h, reqHeaders; }\n if (false) {}\n var axios = createAxiosInstance(axiosOptions);\n\n // Inject axios to the context as $axios\n ctx.$axios = axios;\n inject(\'axios\', axios);\n});\n// EXTERNAL MODULE: ./plugins/logger.js\nvar logger = __webpack_require__(365);\n\n// EXTERNAL MODULE: ./plugins/store.js\nvar plugins_store = __webpack_require__(367);
1\n\n// EXTERNAL MODULE: ./plugins/eventBus.js\nvar eventBus = __webpack_require__(368);\n\n// EXTERNAL MODULE: ./plugins/api.js\nvar api = __webpack_require__(369);\n\n// EXTERNAL MODULE: ./plugins/axios.js\nvar plugins_axios = __webpack_require__(370);\n\n// EXTERNAL MODULE: ./plugins/analytics.client.js\nvar analytics_client = __webpack_require__(372);\n\n// EXTERNAL MODULE: ./plugins/vue-observer.js\nvar vue_observer = __webpack_require__(373);\n\n// EXTERNAL MODULE: ./plugins/events.client.js\nvar events_client = __webpack_require__(374);\n\n// EXTERNAL MODULE: ./plugins/global-components.js\nvar global_components = __webpack_require__(375);\n\n// EXTERNAL MODULE: ./plugins/fonts.client.js\nvar fonts_client = __webpack_require__(376);\n\n// EXTERNAL MODULE: ./plugins/interpolationLinks.client.js\nvar interpolationLinks_client = __webpack_require__(377);\n\n// EXTERNAL MODULE: ./plugins/helpers.js\nvar helpers = __webpack_require__(378);\n\n// EXTERNAL MODULE: ./plugins/localStorage.client.js\nvar localStorage_client = __webpack_require__(379);\n\n// EXTERNAL MODULE: ./plugins/vue-js-modal.js\nvar vue_js_modal = __webpack_require__(381);\n\n// EXTERNAL MODULE: ./plugins/metaTags.js\nvar metaTags = __webpack_require__(382);\n\n// EXTERNAL MODULE: ./plugins/clearQueryParamsUrl.client.js\nvar clearQueryParamsUrl_client = __webpack_require__(383);\n\n// EXTERNAL MODULE: ./plugins/consultChat.client.js\nvar consultChat_client = __webpack_require__(384);\n\n// EXTERNAL MODULE: ./plugins/router.js\nvar plugins_router = __webpack_require__(385);\n\n// EXTERNAL MODULE: ./plugins/google-auth.client.js\nvar google_auth_client = __webpack_require__(386);\n\n// EXTERNAL MODULE: ./plugins/toast.client.js\nvar toast_client = __webpack_require__(387);\n\n// EXTERNAL MODULE: ./node_modules/@nuxtjs/auth-next/dist/runtime.mjs\nvar runtime = __webpack_require__(136);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/auth.js\n\n\n\n// Active schemes\n\nmiddleware["a" /* default */].auth = runtime["d" /* authMiddleware */];\n/* harmony default export */ var auth = (function (ctx, inject) {\n // Options\n var options = {\n "resetOnError": true,\n "ignoreExceptions": false,\n "scopeKey": "scope",\n "rewriteRedirects": true,\n "fullPathRedirect": false,\n "watchLoggedIn": true,\n "redirect": {\n "login": "/auth/",\n "logout": false,\n "home": false,\n "callback": "/login"\n },\n "vuex": {\n "namespace": "auth"\n },\n "cookie": {\n "prefix": "auth.",\n "options": {\n "path": "/",\n "sameSite": "lax",\n "secure": true\n }\n },\n "localStorage": {\n "prefix": "auth."\n },\n "defaultStrategy": "register"\n };\n\n // Create a new Auth instance\n var $auth = new runtime["a" /* Auth */](ctx, options);\n\n // Register strategies\n // register\n $auth.registerStrategy(\'register\', new runtime["c" /* LocalScheme */]($auth, {\n "token": {\n "maxAge": 18000,\n "property": "token",\n "type": "Bearer"\n },\n "user": {\n "property": false,\n "autoFetch": false\n },\n "endpoints": {\n "login": {\n "url": "/public/emerald/account/signup",\n "method": "post"\n },\n "user": {\n "url": "/public/emerald/account/profile",\n "method": "get"\n },\n "logout": false\n },\n "name": "register"\n }));\n\n // login\n $auth.registerStrategy(\'login\', new runtime["c" /* LocalScheme */]($auth, {\n "token": {\n "maxAge": 18000,\n "property": "token",\n "type": "Bearer"\n },\n "user": {\n "property": false,\n "autoFetch": false\n },\n "endpoints": {\n "login": {\n "url": "/public/emerald/account/auth",\n "method": "post"\n },\n "user": {\n "url": "/public/emerald/account/profile",\n "method": "get"\n },\n "logout": false\n },\n "name": "login"\n }));\n\n // Inject it to nuxt context as $auth\n inject(\'auth\', $auth);\n ctx.$auth = $auth;\n\n // Initialize auth\n return $auth.init().catch(error => {\n if (true) {\n // Don\'t console log expired auth session errors. This error is common, and expected to happen.\n // The error happens whenever the user does an ssr request (reload/initial navigation) with an expired refresh\n // token. We don\'t want to log this as an error.\n if (error instanceof runtime["b" /* ExpiredAuthSessionError */]) {\n return;\n }\n console.error(\'[ERROR] [AUTH]\', error);\n }\n });\n});\n// EXTERNAL MODULE: ./plugins/auth.js\nvar plugins_auth = __webpack_require__(389);\n\n// EXTERNAL MODULE: ./utils/helpers/onDemand.js\nvar onDemand = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.accordion.client.56a864dd.js\n\n\n/* harmony default export */ var integrations_accordion_client_56a864dd = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://service.thenaturalsapphirecompany.com/cdn/jquery-3.6.0.min.js\', \'https://about.emeralds.com/wp-content/plugins/easy-accordion-free/public/assets/js/collapse.min.js\', \'https://service.thenaturalsapphirecompany.com/cdn/accordion.min.js\'],\n css: [\'https://about.emeralds.com/wp-content/plugins/easy-accordion-free/public/assets/css/ea-style.css\']\n });\n inject(\'accordion\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() =>
1 {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// EXTERNAL MODULE: ./utils/definitions/affirm.js\nvar affirm = __webpack_require__(135);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.affirm.client.b5a4f4ac.js\n\n\n\n\n// NXC-156: lazy SDK loader for Affirm (Direct API, Modal Mode).\n// Auto-registered as a Nuxt plugin by modules/integrations.js.\n// Only the PUBLIC key is referenced here.\n/* harmony default export */ var integrations_affirm_client_b5a4f4ac = ((ctx, inject) => {\n var publicApiKey = Object(affirm["e" /* getAffirmPublicKey */])();\n var loader = new onDemand["a" /* default */]({\n script: affirm["d" /* affirmScript */]\n });\n inject(\'affirm\', {\n insert: callback => new Promise(resolve => {\n // affirm.js reads its public key + script url from window._affirm_config,\n // which must exist BEFORE the script is appended to the page.\n window._affirm_config = {\n public_api_key: publicApiKey,\n script: affirm["d" /* affirmScript */],\n locale: \'en_US\',\n country_code: \'USA\'\n };\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.agGrid.client.f300b1da.js\n\n\n\n/* global agGrid */\n/* harmony default export */ var integrations_agGrid_client_f300b1da = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://service.thenaturalsapphirecompany.com/cdn/ag-grid-community.min.noStyle.js?v=26.2.1\'],\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/ag-grid.css?v=26.2.1\', \'https://service.thenaturalsapphirecompany.com/cdn/ag-theme-alpine.css?v=26.2.1\']\n });\n inject(\'agGrid\', {\n insert: (eGridDiv, gridOptions, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(new agGrid.Grid(eGridDiv, gridOptions));\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.analytics.client.bc37f4ca.js\n\n\nvar apiKey = {\n ruby: \'G-XYCXVMTQ40\',\n emerald: \'G-MPHM2K3VNK\',\n gemstone: \'G-XWZEXSR87Z\'\n};\n// const apiKey = {\n// ruby: \'UA-187898-6\',\n// emerald: \'UA-187898-5\'\n// }\n\n/* global ga */\n/* harmony default export */ var integrations_analytics_client_bc37f4ca = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'/js/analytics.js\'\n });\n inject(\'analytics\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n ga(\'create\', false ? undefined : apiKey["emerald"], \'auto\');\n ga(\'send\', \'pageview\', location.pathname);\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.bodyScrollLock.client.00afc0e1.js\n\n\n/* harmony default export */ var integrations_bodyScrollLock_client_00afc0e1 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/bodyScrollLock.min.js?v=3.1.5\'\n });\n inject(\'bodyScrollLock\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.clipboard.client.ecec18aa.js\n\n\n\n\n/* global VueClipboard */\n/* harmony default export */ var integrations_clipboard_client_ecec18aa = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/vue-clipboard.min.js\'\n });\n inject(\'clipboard\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n vue_runtime_esm["default"].use(VueClipboard);\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.datePicker.client.7d86b03a.js\n\n\n\n\n/* global VueDatePick */\n/* harmony default export */ var integrations_datePicker_client_7d86b03a = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/vueDatePick.min.js?v=1.4.1\',\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/vueDatePick.min.css?v=1.4.1\']\n });\n inject(\'datePicker\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() =>
1 {\n vue_runtime_esm["default"].component(\'VueDatePick\', VueDatePick);\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.draggable.client.3b95cae2.js\n\n\n\n\n/* global vuedraggable */\n/* harmony default export */ var integrations_draggable_client_3b95cae2 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://service.thenaturalsapphirecompany.com/cdn/Sortable.min.js?v=1.13.0\', \'https://service.thenaturalsapphirecompany.com/cdn/vuedraggable.umd.min.js?v=2.24.3\']\n });\n inject(\'draggable\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n vue_runtime_esm["default"].component(\'Draggable\', vuedraggable);\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.embedsocial.client.d4dd104a.js\n\n\nvar integrations_embedsocial_client_d4dd104a_apiKey = {\n ruby: \'df8e93ea7e41bf7d0851e946331884415a253209\',\n emerald: \'5c640db64249fbd2a98cb6c4aa90b25c72ec7c34\',\n gemstone: \'846145c5699637710c75d9d5537e80a9bc55750d\',\n sapphire: \'8abf49f664cfaa61428d7c54629daf8710fa8c22\'\n};\n/* harmony default export */ var integrations_embedsocial_client_d4dd104a = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://embedsocial.com/cdn/ht.js\'\n });\n var addEmbedSocialScript = callback => {\n var currentApiKey = integrations_embedsocial_client_d4dd104a_apiKey["emerald"];\n var esContainer = document.querySelector(\'.embedsocial-hashtag\');\n if (esContainer) esContainer.setAttribute(\'data-ref\', currentApiKey);\n loader.load(() => {\n if (callback) callback();\n });\n };\n inject(\'embedSocial\', {\n insert: callback => new Promise((resolve, reject) => {\n try {\n addEmbedSocialScript(callback);\n resolve();\n } catch (error) {\n console.error(\'EmbedSocial loading failed:\', error);\n reject(error);\n }\n }),\n kill: () => {\n loader.scriptsLoaded = 0;\n loader.isLoading = false;\n loader.callbacks = [];\n var script = document.querySelector(\'script[src="https://embedsocial.com/cdn/ht.js"]\');\n if (script) script.parentNode.removeChild(script);\n }\n });\n});\n// EXTERNAL MODULE: ./utils/definitions/defaults.js\nvar defaults = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.extendSDK.client.a7d9c756.js\n\n\nfunction integrations_extendSDK_client_a7d9c756_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction integrations_extendSDK_client_a7d9c756_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? integrations_extendSDK_client_a7d9c756_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : integrations_extendSDK_client_a7d9c756_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\n/* global Extend */\n/* harmony default export */ var integrations_extendSDK_client_a7d9c756 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://sdk.helloextend.com/extend-sdk-client/v1/extend-sdk-client.min.js\'\n });\n inject(\'extendSDK\', {\n insert() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new Promise((resolve, reject) => {\n loader.load(() => {\n var defaultConfig = {\n storeId: "c56d453f-1883-44f1-93c6-0d957c8a1693",\n environment: false ? undefined : \'production\'\n };\n Extend.config(integrations_extendSDK_client_a7d9c756_objectSpread(integrations_extendSDK_client_a7d9c756_objectSpread({}, defaultConfig), options));\n resolve();\n if (callback) callback();\n });\n });\n },\n insertButtons() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (!window.Extend) {\n // Extend not initialized\n return;\n }\n var elementId = options.ref || \'#extend-offer\';\n var element = document.getElementById(elementId.replace(\'#\', \'\'));\n\n // if element exists and Extend not inserted\n if (element && !element.childNodes.length) {\n Extend.buttons.render(elementId, options);\n setTimeout(() =>
1 {\n if (callback) callback();\n }, 2000);\n }\n },\n insertSimpleButtons() {\n var _arguments = arguments,\n _this = this;\n return Object(asyncToGenerator["a" /* default */])(function* () {\n var options = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};\n if (!window.Extend) {\n yield _this.insert();\n _this.insertSimpleButtons(options);\n return;\n }\n var elementId = options.ref || \'#extend-offer\';\n var element = document.getElementById(elementId.replace(\'#\', \'\'));\n\n // if element exists and Extend not inserted\n if (element && !element.childNodes.length) {\n Extend.buttons.renderSimpleOffer(elementId, options);\n }\n })();\n },\n showModal() {\n var _arguments2 = arguments,\n _this2 = this;\n return Object(asyncToGenerator["a" /* default */])(function* () {\n var options = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};\n if (!window.Extend) {\n yield Promise.race([_this2.insert(), new Promise(resolve => setTimeout(resolve, defaults["F" /* extendSdkLoadTimeout */]))]);\n if (!window.Extend) {\n if (options.onClose) options.onClose(null);\n return;\n }\n }\n try {\n Extend.modal.open(options);\n } catch (e) {\n if (options.onClose) options.onClose(null);\n }\n })();\n },\n getPlan() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!window.Extend) {\n // Extend not initialized\n return null;\n }\n var elementId = options.ref || \'#extend-offer\';\n if (document.getElementById(elementId.replace(\'#\', \'\'))) {\n /** get the component instance rendered previously */\n var component = Extend.buttons.instance(elementId);\n if (!component) return null;\n\n /** get the users plan selection */\n return component.getPlanSelection();\n }\n return null;\n },\n updateButtons() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!window.Extend) {\n // Extend not initialized\n return null;\n }\n var elementId = options.ref || \'#extend-offer\';\n if (!elementId || !options.extendReferenceId) return;\n if (document.getElementById(elementId.replace(\'#\', \'\'))) {\n /** get the component instance rendered previously */\n var component = Extend.buttons.instance(elementId);\n if (!component) return null;\n\n /** get the users plan selection */\n return component.setActiveProduct(options.extendReferenceId);\n }\n return null;\n }\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.googleBadge.client.e7999782.js\n\n\n/* harmony default export */ var integrations_googleBadge_client_e7999782 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://apis.google.com/js/platform.js\'\n });\n inject(\'googleBadge\', {\n insert: (params, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n window.renderBadge = function () {\n var ratingBadgeContainer = document.createElement(\'div\');\n document.body.appendChild(ratingBadgeContainer);\n window.gapi.load(\'ratingbadge\', function () {\n window.gapi.ratingbadge.render(ratingBadgeContainer, {\n // REQUIRED\n merchant_id: 166899398,\n // OPTIONAL\n position: \'BOTTOM_LEFT\'\n });\n });\n };\n window.renderBadge();\n if (callback) callback();\n resolve();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.googleMaps.client.1464ad12.js\n\n\n/* harmony default export */ var integrations_googleMaps_client_1464ad12 = ((ctx, inject) => {\n try {\n var loader = new onDemand["a" /* default */]({\n script: "https://maps.googleapis.com/ma
1ps/api/js?key=".concat("AIzaSyDHsyaqtbzsihMpZTTlSIYJHApR0kFEAyQ", "&language=en&libraries=places")\n });\n inject(\'googleMaps\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n } catch (e) {\n console.log(e);\n }\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.googleSurvey.client.1ee509fa.js\n\n\n/* harmony default export */ var integrations_googleSurvey_client_1ee509fa = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://apis.google.com/js/platform.js\'\n });\n inject(\'googleSurvey\', {\n insert: (params, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n window.renderOptIn = function () {\n window.gapi.load(\'surveyoptin\', function () {\n window.gapi.surveyoptin.render(params);\n });\n };\n if (callback) callback();\n resolve();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.gtag.client.c1104c4c.js\n\n\n\nvar integrations_gtag_client_c1104c4c_apiKey = {\n ruby: \'G-XYCXVMTQ40\',\n emerald: \'G-MPHM2K3VNK\',\n gemstone: \'G-XWZEXSR87Z\',\n sapphire: \'G-WZKCBJ55TL\'\n};\n\n/* global VueGtag */\n/* harmony default export */ var integrations_gtag_client_c1104c4c = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/vue-gtag.umd.min.js?v=1.11.0\'\n });\n inject(\'vueGTag\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n vue_runtime_esm["default"].use(VueGtag, {\n config: {\n id: false ? undefined : integrations_gtag_client_c1104c4c_apiKey["emerald"]\n },\n params: {\n anonymize_ip: true,\n // anonymize IP\n send_page_view: false,\n // might be necessary to avoid duplicated page track on page reload\n linker: {\n domains: getGtagDomains()\n }\n }\n });\n resolve();\n if (callback) callback();\n });\n })\n });\n function getGtagDomains() {\n if (true) return ["emeralds.com"];\n return [\'localhost:3000\', "emeralds.nxcstaging.com"];\n }\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.hammer.client.7a7038cd.js\n\n\n/* harmony default export */ var integrations_hammer_client_7a7038cd = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/hammer.min.js?v=2.0.8\'\n });\n inject(\'hammer\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.hls.client.0c77b7f8.js\n\n\n/* global Hls */\n/* harmony default export */ var integrations_hls_client_0c77b7f8 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/hls.min.js?v=1.1.5\'\n });\n inject(\'hls\', {\n insert(el, source, options, callback, fallback) {\n loader.load(() => {\n if (Hls && Hls.isSupported()) {\n var player = new Hls(options);\n player.loadSource(source);\n player.attachMedia(el);\n player.on(Hls.Events.BUFFER_CREATED, () => {\n if (options.autoplay) el.play().then(() => {\n if (callback) callback();\n });\n });\n return player;\n } else if (fallback) fallback();\n });\n }\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.imask.client.41ea1cac.js\n\n\n\n/* global IMask */\n/* harmony default export */ var integrations_imask_client_41ea1cac = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/imask.min.js?v=6.0.7\'\n });\n inject(\'imask\', {\n insert: (el, options, callback) => new Promise((resolve, reject) => {\n loader.load(() =>
1 {\n resolve(new IMask(el, options));\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.iv3d.client.1f9faac5.js\n\n\n/* harmony default export */ var integrations_iv3d_client_1f9faac5 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/iv3d.min.js\'\n });\n inject(\'iv3d\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// EXTERNAL MODULE: ./node_modules/lodash/debounce.js\nvar debounce = __webpack_require__(118);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce);\n\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.lazyload.client.1f7825be.js\n\n\n\n\n/* global LazyLoad */\n/* harmony default export */ var integrations_lazyload_client_1f7825be = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/lazyload.min.js?v=17.3.1\'\n });\n inject(\'lazyload\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n window.lazy = new LazyLoad({\n // use_native: true,\n cancel_on_exit: false,\n elements_selector: \'.lazy\',\n class_loaded: \'lazy-loaded\',\n unobserve_entered: true,\n callback_enter: executeLazyFunction,\n threshold: 300\n });\n window.lazyUpdate = debounce_default()(function () {\n if (window.lazy) window.lazy.update();\n }, 50);\n window.lazy.update();\n resolve(window.lazy);\n if (callback) callback();\n });\n })\n });\n window.lazyFunctions = {\n loaded(element) {\n // it\'s better to use specific attribute instead of specific class\n // class list can be overwritten by other scripts\n element.setAttribute(\'lazy-status\', \'entered\');\n }\n };\n function executeLazyFunction(element) {\n var lazyFunctionName = element.getAttribute(\'data-lazy-function\');\n var lazyFunction = window.lazyFunctions[lazyFunctionName];\n if (!lazyFunction) return;\n lazyFunction(element);\n }\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.microsoftClarity.client.143103e6.js\n\n\n/* harmony default export */ var integrations_microsoftClarity_client_143103e6 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'/js/microsoftClarity.js\',\n head: true\n });\n inject(\'microsoftClarity\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.modernizr.client.2d518cf7.js\n\n\n\n/* global Modernizr */\n/* harmony default export */ var integrations_modernizr_client_2d518cf7 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/modernizr-custom.js\'\n });\n inject(\'modernizr\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n var store = ctx.store;\n Modernizr.on(\'webp\', function (result) {\n if (result) {\n // supported\n store.dispatch(\'app/setWebpSupport\', true);\n } else {\n // not-supported\n store.dispatch(\'app/setWebpSupport\', false);\n }\n });\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.nouislider.client.838a4a86.js\n\n\n\n/* global noUiSlider */\n/* harmony default export */ var integrations_nouislider_client_838a4a86 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/nouislider.min.js?v=15.5.1\',\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/nouislider.min.css?v=15.5.1\']\n });\n inject(\'nouislider\', {\n insert: (el, options, callback) => new Promise((resolve, reject) => {\n loader.load(() =>
1 {\n resolve(noUiSlider.create(el, options));\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.perfectScrollbar.client.399c97a0.js\n\n\n\n/* global PerfectScrollbar */\n/* harmony default export */ var integrations_perfectScrollbar_client_399c97a0 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/perfect-scrollbar.min.js?v=1.5.3\',\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/perfect-scrollbar.min.css?v=1.5.3\']\n });\n inject(\'perfectScrollbar\', {\n insert: function insert(el) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n return new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(new PerfectScrollbar(el, options));\n if (callback) callback();\n });\n });\n }\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.popper.client.3bbd309a.js\n\n\n\n/* global Popper */\n/* harmony default export */ var integrations_popper_client_3bbd309a = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/popper.min.js?v=2.11.2\'\n });\n inject(\'popper\', {\n insert: (el, tooltip, options, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(Popper.createPopper(el, tooltip, options));\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.recaptcha.client.3fbd89bc.js\n\n\n/* harmony default export */ var integrations_recaptcha_client_3fbd89bc = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit\']\n });\n inject(\'recaptcha\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.rejoiner.client.3c5ab3de.js\n\n\n/* harmony default export */ var integrations_rejoiner_client_3c5ab3de = ((ctx, inject) => {\n window._rejoiner = window._rejoiner || [];\n window._rejoiner.push([\'setAccount\', "9dMeYYd"]);\n window._rejoiner.push([\'setDomain\', "emeralds.com"]);\n window._rejoiner.push([\'setExcludeFieldName\', [\'cc-name\', \'cc-number\', \'cc-exp-month\', \'cc-exp-year\', \'cc-csc\']]);\n window._rejoiner.push([\'trackPageView\', true]);\n var loader = new onDemand["a" /* default */]({\n script: \'//cdn.rejoiner.com/js/v4/rj2.lib.js\'\n });\n inject(\'rejoiner\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n }),\n push: params => {\n var _window;\n if ((_window = window) !== null && _window !== void 0 && _window._rejoiner) {\n window._rejoiner.push(params);\n return;\n }\n console.log(\'Rejoiner is not initialized\');\n }\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.socialSharing.client.767477f8.js\n\n\n\n\n/* global VueSocialSharing */\n/* harmony default export */ var integrations_socialSharing_client_767477f8 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/vue-social-sharing.min.js?v=3.0.5\'\n });\n inject(\'social\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n vue_runtime_esm["default"].use(VueSocialSharing.default);\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.sweetalert.client.4d00fa73.js\n\n\nfunction integrations_sweetalert_client_4d00fa73_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction integrations_sweetalert_client_4d00fa73_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? integrations_sweetalert_client_4d00fa73_ownKeys(Object(t), !0).forEac
1h(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : integrations_sweetalert_client_4d00fa73_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n/* global Swal */\n/* harmony default export */ var integrations_sweetalert_client_4d00fa73 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/sweetalert2.all.min.js?v=10.16.7\',\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/sweetalert2.min.css?v=10.16.7\']\n });\n var withTestId = options => {\n var originalDidOpen = options && options.didOpen;\n return integrations_sweetalert_client_4d00fa73_objectSpread(integrations_sweetalert_client_4d00fa73_objectSpread({}, options), {}, {\n didOpen: popup => {\n popup.setAttribute(\'data-testid\', \'sweetalert\');\n if (originalDidOpen) originalDidOpen(popup);\n }\n });\n };\n inject(\'sweetalert\', {\n insert: (options, mixin, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n if (mixin) {\n var toast = Swal.mixin(mixin);\n toast.fire(withTestId(options)).then(response => {\n resolve(response);\n }).catch(error => {\n reject(error);\n });\n if (callback) callback();\n } else {\n Swal.fire(withTestId(options)).then(response => {\n resolve(response);\n }).catch(error => {\n reject(error);\n });\n if (callback) callback();\n }\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.swiper.client.28a1cfff.js\n\n\n\n/* global Swiper */\n/* harmony default export */ var integrations_swiper_client_28a1cfff = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: \'https://service.thenaturalsapphirecompany.com/cdn/swiper-bundle.min.js?v=6.8.4\'\n // css: [\n // \'https://service.thenaturalsapphirecompany.com/cdn/swiper-bundle.min.css?v=6.8.4\'\n // ]\n });\n // CSS added on all pages in basePage component\n inject(\'swiper\', {\n insert: (el, options, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(new Swiper(el, options));\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.tabulator.client.473d2152.js\n\n\n\n/* global Tabulator */\n/* harmony default export */ var integrations_tabulator_client_473d2152 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://service.thenaturalsapphirecompany.com/cdn/tabulator.min.js?v=5.0.7\'],\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/tabulator_bulma.min.css?v=5.0.7\']\n });\n inject(\'tabulator\', {\n insert: (el, options, callback) => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(new Tabulator(el, options));\n if (callback) callback(Tabulator);\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.tippy.client.3b1b93f9.js\n\n\n\n/* global tippy */\n/* harmony default export */ var integrations_tippy_client_3b1b93f9 = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: [\'https://service.thenaturalsapphirecompany.com/cdn/popper.min.js?v=2.11.2\', \'https://service.thenaturalsapphirecompany.com/cdn/tippy-bundle.umd.min.js?v=6.3.7\'],\n css: [\'https://service.thenaturalsapphirecompany.com/cdn/light.css?v=6.3.7\']\n });\n inject(\'tippy\', {\n insert: (el, options) => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve(tippy(el, options));\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/integrations.userlike.client.4bbb3aae.js\n\n\nvar integrations_userlike_client_4bbb3aae_apiKey = {\n ruby: \'66ade3c695a58314549ca32d3626f4cffdd06773d091916ab7840527fc4ac9d7\',\n emerald: \'d4c88f7296aa4753a14b616bbdba2159dafb8270ca9242faa9eb0931f0
1d36638\',\n gemstone: \'a81a25ce07ce42e4827686094264c63647a1a896e9a04f98ba0cfacce3e95d8c\',\n sapphire: \'98da5c2ac519405db5f4e75c7d042b3abf5bb5fcc71e4fcc9274da25f260fd7f\'\n};\n/* harmony default export */ var integrations_userlike_client_4bbb3aae = ((ctx, inject) => {\n var loader = new onDemand["a" /* default */]({\n script: "https://userlike-cdn-widgets.s3-eu-west-1.amazonaws.com/".concat(integrations_userlike_client_4bbb3aae_apiKey["emerald"], ".js")\n });\n inject(\'userlike\', {\n insert: callback => new Promise((resolve, reject) => {\n loader.load(() => {\n resolve();\n if (callback) callback();\n });\n })\n });\n});\n// CONCATENATED MODULE: ./.nuxt/emerald/index.js\n\n\n\n\n\n\n\nfunction emerald_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction emerald_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? emerald_ownKeys(Object(t), !0).forEach(function (r) { Object(defineProperty["a" /* default */])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : emerald_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Plugins */\n\n // Source: ./sentry.server.js (mode: \'server\')\n // Source: ./sentry.client.js (mode: \'client\')\n // Source: ./cookie-universal-nuxt.js (mode: \'all\')\n // Source: ./nuxt-i18n/plugin.utils.js (mode: \'all\')\n // Source: ./nuxt-i18n/plugin.routing.js (mode: \'all\')\n // Source: ./nuxt-i18n/plugin.main.js (mode: \'all\')\n // Source: ./device.plugin.js (mode: \'all\')\n // Source: ./pwa/icon.plugin.js (mode: \'all\')\n // Source: ./axios.js (mode: \'all\')\n // Source: ../../plugins/logger (mode: \'all\')\n // Source: ../../plugins/store.js (mode: \'all\')\n // Source: ../../plugins/eventBus.js (mode: \'all\')\n // Source: ../../plugins/api (mode: \'all\')\n // Source: ../../plugins/httpAgents.server (mode: \'server\')\n // Source: ../../plugins/axios (mode: \'all\')\n // Source: ../../plugins/analytics.client (mode: \'client\')\n // Source: ../../plugins/vue-observer (mode: \'all\')\n // Source: ../../plugins/events.client (mode: \'client\')\n // Source: ../../plugins/global-components (mode: \'all\')\n // Source: ../../plugins/fonts.client (mode: \'client\')\n // Source: ../../plugins/interpolationLinks.client (mode: \'client\')\n // Source: ../../plugins/helpers (mode: \'all\')\n // Source: ../../plugins/localStorage.client (mode: \'client\')\n // Source: ../../plugins/vue-js-modal (mode: \'all\')\n // Source: ../../plugins/metaTags (mode: \'all\')\n // Source: ../../plugins/clearQueryParamsUrl.client (mode: \'client\')\n // Source: ../../plugins/icons-loader.server (mode: \'server\')\n // Source: ../../plugins/consultChat.client (mode: \'client\')\n // Source: ../../plugins/router (mode: \'all\')\n // Source: ../../plugins/google-auth.client (mode: \'client\')\n // Source: ../../plugins/toast.client (mode: \'client\')\n // Source: ./auth.js (mode: \'all\')\n // Source: ../../plugins/auth (mode: \'all\')\n // Source: ./integrations.accordion.client.56a864dd.js (mode: \'client\')\n // Source: ./integrations.affirm.client.b5a4f4ac.js (mode: \'client\')\n // Source: ./integrations.agGrid.client.f300b1da.js (mode: \'client\')\n // Source: ./integrations.analytics.client.bc37f4ca.js (mode: \'client\')\n // Source: ./integrations.bodyScrollLock.client.00afc0e1.js (mode: \'client\')\n // Source: ./integrations.clipboard.client.ecec18aa.js (mode: \'client\')\n // Source: ./integrations.datePicker.client.7d86b03a.js (mode: \'client\')\n // Source: ./integrations.draggable.client.3b95cae2.js (mode: \'client\')\n // Source: ./integrations.embedsocial.client.d4dd104a.js (mode: \'client\')\n // Source: ./integrations.extendSDK.client.a7d9c756.js (mode: \'client\')\n // Source: ./integrations.googleBadge.client.e7999782.js (mode: \'client\')\n // Source: ./integrations.googleMaps.client.1464ad12.js (mode: \'client\')\n // Source: ./integrations.googleSurvey.client.1ee509fa.js (mode: \'client\')\n // Source: ./integrations.gtag.client.c1104c4c.js (mode: \'client\')\n // Source: ./integrations.hammer.client.7a7038cd.js (mode: \'client\')\n // Source: ./integrations.hls.client.0c77b7f8.js (mode: \'client\')\n // Source: ./integrations.imask.client.41ea1cac.js (mode: \'client\')\n // Source: ./integrations.iv3d.client.1f9faac5.js (mode: \'client\')\n // Source: ./integrations.lazyload.client.1f7825be.js (mode: \'client\')\n // Source: ./integrations.microsoftClarity.client.143103e6.js (mode: \'client\')\n // Source: ./integrations.modernizr.client.2d518cf7.js (mode: \'client\')\n // Source: ./integrations.nouislider.client.838a4a86.js (mode: \'client\')\n // Source: ./integrations.perfectScrollbar.client.399c97a0.js (mode: \'client\')\n // Source: ./integrations.popper.client.3bbd309a.js (mode: \'client\')\n // Source: ./integrations.recaptcha.client.3fbd89bc.js (mode: \'client\')\n // Source: ./integrations.rejoiner.client.3c5ab3de.js (mode: \'client\')\n // Source: ./integrations.socialSharing.client.767477f8.js (mode: \'client\')\n // Source: ./integrations.sweetalert.client.4d00fa73.js (mode: \'client\')\n // Source: ./integrations.swiper.client.28a1cfff.js (mode: \'client\')\n // Source: ./integrations.tabulator.client.473d2152.js (mode: \'client\')\n // Source: ./integrations.tippy.client.3b1b93f9.js (mode: \'client\')\n // Source: ./integrations.userlike.client.4bbb3aae.js (mode: \'client\')\n\n// Component: <ClientOnly>\nvue_runtime_esm["default"].component(vue_client_only_common_default.a.name, vue_client_only_common_default.a);\n\n// TODO: Remove in Nuxt 3: <NoSsr>\nvue_runtime_esm["default"].component(vue_no_ssr_common_default.a.name, emerald_objectSpread(emerald_objectSpread({}, vue_no_ssr_common_default.a), {}, {\n render(h, ctx) {\n if ( true && !vue_no_ssr_common_default.a._warned) {\n vue_no_ssr_common_default.a._warned = true;\n console.warn(\'<no-ssr> has been deprecated and will be removed in Nuxt 3, please use <client-only> instead\');\n }\n return vue_no_ssr_common_default.a.render(h, ctx);\n }\n}));\n\n// Component: <NuxtChild>\nvue_runtime_esm["default"].component(nuxt_child.name, nuxt_child);\nvue_runtime_esm["default"].component(\'NChild\', nuxt_child);\n\n// Component NuxtLink is imported in server.js or client.js\n\n// Component: <Nuxt>\nvue_runtime_esm["default"].component(components_nuxt.name, components_nuxt);\nObject.defineProperty(vue_runtime_esm["default"].prototype, \'$nuxt\', {\n get() {\n var globalNuxt = this.$root ? this.$root.$options.$nuxt : null;\n if ( true && !globalNuxt && typeof window !== \'undefined\') {\n return window.$nuxt;\n }\n return globalNuxt;\n },\n configurable: true\n});\nvue_runtime_esm["default"].use(vue_meta_esm_browser["a" /* default */], {\n "keyName": "head",\n "attribute": "data-n-head",\n "ssrAttribute": "data-n-head-ssr",\n "tagIDKeyName": "hid"\n});\nvar defaultTransition = {\n "name": "page",\n "mode": "out-in",\n "appear": false,\n "appearClass": "appear",\n "appearActiveClass": "appear-active",\n "appearToClass": "appear-to"\n};\nvar originalRegisterModule = vuex_esm["a" /* default */].Store.prototype.registerModule;\nfunction registerModule(path, rawModule) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var preserveState = true && (Array.isArray(path) ? !!path.reduce((namespacedState, path) => namespacedState && namespacedState[path], this.state) : path in this.state);\n return originalRegisterModule.call(this, path, rawModule, emerald_objectSpread({\n preserveState\n }, options));\n}\nfunction createApp(_x) {\n return _createApp.apply(this, arguments);\n}\nfunction _createApp() {\n _createApp = Object(asyncToGenerator["a" /* default */])(function* (ssrContext) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var store = createStore(ssrContext);\n var router = yield createRouter(ssrContext, config, {\n store\n });\n\n // Add this.$router into store actions/mutations\n store.$router = router;\n\n // Fix SSR caveat https://github.com/nuxt/nuxt.js/issues/3757#issuecomment-414689141\n store.registerModule = registerModule;\n\n // Create Root instance\n\n // here we inject the router and store to all child components,\n // making them available everywhere as `this.$router` and `this.$store`.\n var app = emerald_objectSpread({\n head: {\n "title": "The Natural Emerald Company",\n "meta": [{\n "charset": "utf-8"\n }, {\n "name": "p:domain_verify",\n "content": "a7c4a4085a03860ccd3222ab1738ee5c"\n }, {\n "name": "viewport",\n "content": "width=device-width, initial-scale=1"\n }, {\n "name": "theme-color",\n "content": "#e2e2e2"\n }
1],\n "script": [{\n "src": "https:\\u002F\\u002Ff86a65dca19a.edge.sdk.awswaf.com\\u002Ff86a65dca19a\\u002Fb8b359888e85\\u002Fchallenge.js",\n "defer": true\n }],\n "link": [{\n "rel": "preconnect",\n "href": "https:\\u002F\\u002F360images.thenaturalsapphirecompany.com\\u002F"\n }, {\n "rel": "preconnect",\n "href": "https:\\u002F\\u002Fimages.thenaturalsapphirecompany.com\\u002F"\n }, {\n "rel": "dns-prefetch",\n "href": "https:\\u002F\\u002Fimages.thenaturalsapphirecompany.com\\u002F"\n }, {\n "rel": "preconnect",\n "href": "https:\\u002F\\u002Fservice.thenaturalsapphirecompany.com"\n }, {\n "rel": "preload",\n "as": "font",\n "crossOrigin": "anonymous",\n "href": "\\u002Fstyles\\u002Ffonts\\u002FLora\\u002Fwoff2\\u002FLora-Regular.woff2"\n }, {\n "rel": "preload",\n "as": "font",\n "crossOrigin": "anonymous",\n "href": "\\u002Fstyles\\u002Ffonts\\u002FLora\\u002Fwoff2\\u002FLora-Italic.woff2"\n }, {\n "rel": "preload",\n "as": "font",\n "crossOrigin": "anonymous",\n "href": "\\u002Fstyles\\u002Ffonts\\u002FLato\\u002Fwoff2\\u002FLato-Regular.woff2"\n }],\n "style": []\n },\n store,\n router,\n nuxt: {\n defaultTransition,\n transitions: [defaultTransition],\n setTransitions(transitions) {\n if (!Array.isArray(transitions)) {\n transitions = [transitions];\n }\n transitions = transitions.map(transition => {\n if (!transition) {\n transition = defaultTransition;\n } else if (typeof transition === \'string\') {\n transition = Object.assign({}, defaultTransition, {\n name: transition\n });\n } else {\n transition = Object.assign({}, defaultTransition, transition);\n }\n return transition;\n });\n this.$options.nuxt.transitions = transitions;\n return transitions;\n },\n err: null,\n dateErr: null,\n error(err) {\n err = err || null;\n app.context._errored = Boolean(err);\n err = err ? Object(utils["p" /* normalizeError */])(err) : null;\n var nuxt = app.nuxt; // to work with @vue/composition-api, see https://github.com/nuxt/nuxt.js/issues/6517#issuecomment-573280207\n if (this) {\n nuxt = this.nuxt || this.$options.nuxt;\n }\n nuxt.dateErr = Date.now();\n nuxt.err = err;\n // Used in src/server.js\n if (ssrContext) {\n ssrContext.nuxt.error = err;\n }\n return err;\n }\n }\n }, App);\n\n // Make app available into store via this.app\n store.app = app;\n var next = ssrContext ? ssrContext.next : location => app.router.push(location);\n // Resolve route\n var route;\n if (ssrContext) {\n route = router.resolve(ssrContext.url).route;\n } else {\n var path = Object(utils["f" /* getLocation */])(router.options.base, router.options.mode);\n route = router.resolve(path).route;\n }\n\n // Set context to app.context\n yield Object(utils["t" /* setContext */])(app, {\n store,\n route,\n next,\n error: app.nuxt.error.bind(app),\n payload: ssrContext ? ssrContext.payload : undefined,\n req: ssrContext ? ssrContext.req : undefined,\n res: ssrContext ? ssrContext.res : undefined,\n beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined,\n beforeSerializeFns: ssrContext ? ssrContext.beforeSerializeFns : undefined,\n ssrContext\n });\n function inject(key, value) {\n if (!key) {\n throw new Error(\'inject(key, value) has no key provided\');\n }\n if (value === undefined) {\n throw new Error("inject(\'".concat(key, "\', value) has no value provided"));\n }\n key = \'$\' + key;\n // Add into app\n app[key] = value;\n // Add into context\n if (!app.context[key]) {\n app.context[key] = value;\n }\n\n // Add into store\n store[key] = app[key];\n\n // Check if plugin not already installed\n var installKey = \'__nuxt_\' + key + \'_installed__\';\n if (vue_runtime_esm["default"][installKey]) {\n return;\n }\n vue_runtime_esm["default"][installKey] = true;\n // Call Vue.use() to install the plugin into vm\n vue_runtime_esm["default"].use(() =>
1 {\n if (!Object.prototype.hasOwnProperty.call(vue_runtime_esm["default"].prototype, key)) {\n Object.defineProperty(vue_runtime_esm["default"].prototype, key, {\n get() {\n return this.$root.$options[key];\n }\n });\n }\n });\n }\n\n // Inject runtime config as $config\n inject(\'config\', config);\n if (true) {\n // Replace store state before plugins execution\n if (window.__NUXT__ && window.__NUXT__.state) {\n store.replaceState(window.__NUXT__.state);\n }\n }\n\n // Add enablePreview(previewData = {}) in context for plugins\n if (false) {}\n // Plugin execution\n\n if (false) {}\n if ( true && typeof sentry_client === \'function\') {\n yield sentry_client(app.context, inject);\n }\n if (typeof cookie_universal_nuxt === \'function\') {\n yield cookie_universal_nuxt(app.context, inject);\n }\n if (typeof /* Cannot get final name for export "default" in "./.nuxt/emerald/nuxt-i18n/plugin.utils.js" (known exports: loadLanguageAsync resolveBaseUrl getDomainFromLocale registerStore syncVuex validateRouteParams, known reexports: ) */ undefined === \'function\') {\n yield /* Cannot get final name for export "default" in "./.nuxt/emerald/nuxt-i18n/plugin.utils.js" (known exports: loadLanguageAsync resolveBaseUrl getDomainFromLocale registerStore syncVuex validateRouteParams, known reexports: ) */ undefined(app.context, inject);\n }\n if (typeof plugin_routing === \'function\') {\n yield plugin_routing(app.context, inject);\n }\n if (typeof plugin_main === \'function\') {\n yield plugin_main(app.context, inject);\n }\n if (typeof device_plugin === \'function\') {\n yield device_plugin(app.context, inject);\n }\n if (typeof icon_plugin === \'function\') {\n yield icon_plugin(app.context, inject);\n }\n if (typeof emerald_axios === \'function\') {\n yield emerald_axios(app.context, inject);\n }\n if (typeof logger["a" /* default */] === \'function\') {\n yield Object(logger["a" /* default */])(app.context, inject);\n }\n if (typeof plugins_store["a" /* default */] === \'function\') {\n yield Object(plugins_store["a" /* default */])(app.context, inject);\n }\n if (typeof eventBus["default"] === \'function\') {\n yield Object(eventBus["default"])(app.context, inject);\n }\n if (typeof api["a" /* default */] === \'function\') {\n yield Object(api["a" /* default */])(app.context, inject);\n }\n if (false) {}\n if (typeof plugins_axios["a" /* default */] === \'function\') {\n yield Object(plugins_axios["a" /* default */])(app.context, inject);\n }\n if ( true && typeof analytics_client["a" /* default */] === \'function\') {\n yield Object(analytics_client["a" /* default */])(app.context, inject);\n }\n if (typeof vue_observer["default"] === \'function\') {\n yield Object(vue_observer["default"])(app.context, inject);\n }\n if ( true && typeof events_client["a" /* default */] === \'function\') {\n yield Object(events_client["a" /* default */])(app.context, inject);\n }\n if (typeof global_components["default"] === \'function\') {\n yield Object(global_components["default"])(app.context, inject);\n }\n if ( true && typeof fonts_client["a" /* default */] === \'function\') {\n yield Object(fonts_client["a" /* default */])(app.context, inject);\n }\n if ( true && typeof interpolationLinks_client["a" /* default */] === \'function\') {\n yield Object(interpolationLinks_client["a" /* default */])(app.context, inject);\n }\n if (typeof helpers["a" /* default */] === \'function\') {\n yield Object(helpers["a" /* default */])(app.context, inject);\n }\n if ( true && typeof localStorage_client["a" /* default */] === \'function\') {\n yield Object(localStorage_client["a" /* default */])(app.context, inject);\n }\n if (typeof vue_js_modal["default"] === \'function\') {\n yield Object(vue_js_modal["default"])(app.context, inject);\n }\n if (typeof metaTags["a" /* default */] === \'function\') {\n yield Object(metaTags["a" /* default */])(app.context, inject);\n }\n if ( true && typeof clearQueryParamsUrl_client["a" /* default */] === \'function\') {\n yield Object(clearQueryParamsUrl_client["a" /* default */])(app.context, inject);\n }\n if (false) {}\n if ( true && typeof consultChat_client["a" /* default */] === \'function\') {\n yield Object(consultChat_client["a" /* default */])(app.context, inject);\n }\n if (typeof plugins_router["a" /* default */] === \'function\') {\n yield Object(plugins_router["a" /* default */])(app.context, inject);\n }\n if ( true && typeof google_auth_client["a" /* default */] === \'function\') {\n yield Object(google_auth_client["a" /* default */])(app.context, inject);\n }\n if ( true && typeof toast_client["a" /* default */] === \'function\') {\n yield Object(toast_client["a" /* default */])(app.context, inject);\n }\n if (typeof auth === \'function\') {\n yield auth(app.context, inject);\n }\n if (typeof plugins_auth["a" /* default */] === \'function\') {\n yield Object(plugins_auth["a" /* default */])(app.context, inject);\n }\n if ( true && typeof integrations_accordion_client_56a864dd === \'function\') {\n yield integrations_accordion_client_56a864dd(app.context, inject);\n }\n if ( true && typeof integrations_affirm_client_b5a4f4ac === \'function\') {\n yield integrations_affirm_client_b5a4f4ac(app.context, inject);\n }\n if ( true && typeof integrations_agGrid_client_f300b1da === \'function\') {\n yield integrations_agGrid_client_f300b1da(app.context, inject);\n }\n if ( true && typeof integrations_analytics_client_bc37f4ca === \'function\') {\n yield integrations_analytics_client_bc37f4ca(app.context, inject);\n }\n if ( true && typeof integrations_bodyScrollLock_client_00afc0e1 === \'function\') {\n yield integrations_bodyScrollLock_client_00afc0e1(app.context, inject);\n }\n if ( true && typeof integrations_clipboard_client_ecec18aa === \'function\') {\n yield integrations_clipboard_client_ecec18aa(app.context, inject);\n }\n if ( true && typeof integrations_datePicker_client_7d86b03a === \'function\') {\n yield integrations_datePicker_client_7d86b03a(app.context, inject);\n }\n if ( true && typeof integrations_draggable_client_3b95cae2 === \'function\') {\n yield integrations_draggable_client_3b95cae2(app.context, inject);\n }\n if ( true && typeof integrations_embedsocial_client_d4dd104a === \'function\') {\n yield integrations_embedsocial_client_d4dd104a(app.context, inject);\n }\n if ( true && typeof integrations_extendSDK_client_a7d9c756 === \'function\') {\n yield integrations_extendSDK_client_a7d9c756(app.context, inject);\n }\n if ( true && typeof integrations_googleBadge_client_e7999782 === \'function\') {\n yield integrations_googleBadge_client_e7999782(app.context, inject);\n }\n if ( true && typeof integrations_googleMaps_client_1464ad12 === \'function\') {\n yield integrations_googleMaps_client_1464ad12(app.context, inject);\n }\n if ( true && typeof integrations_googleSurvey_client_1ee509fa === \'function\') {\n yield integrations_googleSurvey_client_1ee509fa(app.context, inject);\n }\n if ( true && typeof integrations_gtag_client_c1104c4c === \'function\') {\n yield integrations_gtag_client_c1104c4c(app.context, inject);\n }\n if ( true && typeof integrations_hammer_client_7a7038cd === \'function\') {\n yield integrations_hammer_client_7a7038cd(app.context, inject);\n }\n if ( true && typeof integrations_hls_client_0c77b7f8 === \'function\') {\n yield integrations_hls_client_0c77b7f8(app.context, inject);\n }\n if ( true && typeof integrations_imask_client_41ea1cac === \'function\') {\n yield integrations_imask_client_41ea1cac(app.context, inject);\n }\n if ( true && typeof integrations_iv3d_client_1f9faac5 === \'function\') {\n yield integrations_iv3d_client_1f9faac5(app.context, inject);\n }\n if ( true && typeof integrations_lazyload_client_1f7825be === \'function\') {\n yield integrations_lazyload_client_1f7825be(app.context, inject);\n }\n if ( true && typeof integrations_microsoftClarity_client_143103e6 === \'function\') {\n yield integrations_microsoftClarity_client_143103e6(app.context, inject);\n }\n if ( true && typeof integrations_modernizr_client_2d518cf7 === \'function\') {\n yield integrations_modernizr_client_2d518cf7(app.context, inject);\n }\n if ( true && typeof integrations_nouislider_client_838a4a86 === \'function\') {\n yield integrations_nouislider_client_838a4a86(app.context, inject);\n }\n if ( true && typeof integrations_perfectScrollbar_client_399c97a0 === \'function\') {\n yield integrations_perfectScrollbar_client_399c97a0(app.context, inject);\n }\n if ( true && typeof integrations_popper_client_3bbd309a === \'function\') {\n yield integrations_popper_client_3bbd309a(app.context, inject);\n }\n if ( true && typeof integrations_recaptcha_client_3fbd89bc === \'function\') {\n yield integrations_recaptcha_client_3fbd89bc(app.context, inject);\n }\n if ( true && typeof integrations_rejoiner_client_3c5ab3de === \'function\') {\n yield integrations_rejoiner_client_3c5ab3de(app.context, inject);\n }\n if ( true && typeof integrations_socialSharing_client_76747
17f8 === \'function\') {\n yield integrations_socialSharing_client_767477f8(app.context, inject);\n }\n if ( true && typeof integrations_sweetalert_client_4d00fa73 === \'function\') {\n yield integrations_sweetalert_client_4d00fa73(app.context, inject);\n }\n if ( true && typeof integrations_swiper_client_28a1cfff === \'function\') {\n yield integrations_swiper_client_28a1cfff(app.context, inject);\n }\n if ( true && typeof integrations_tabulator_client_473d2152 === \'function\') {\n yield integrations_tabulator_client_473d2152(app.context, inject);\n }\n if ( true && typeof integrations_tippy_client_3b1b93f9 === \'function\') {\n yield integrations_tippy_client_3b1b93f9(app.context, inject);\n }\n if ( true && typeof integrations_userlike_client_4bbb3aae === \'function\') {\n yield integrations_userlike_client_4bbb3aae(app.context, inject);\n }\n\n // Lock enablePreview in context\n if (false) {}\n\n // Wait for async component to be resolved first\n yield new Promise((resolve, reject) => {\n // Ignore 404s rather than blindly replacing URL in browser\n if (true) {\n var {\n route: _route\n } = router.resolve(app.context.route.fullPath);\n if (!_route.matched.length) {\n return resolve();\n }\n }\n router.replace(app.context.route.fullPath, resolve, err => {\n // https://github.com/vuejs/vue-router/blob/v3.4.3/src/util/errors.js\n if (!err._isRouter) return reject(err);\n if (err.type !== 2 /* NavigationFailureType.redirected */) return resolve();\n\n // navigated to a different route in router guard\n var unregister = router.afterEach(/*#__PURE__*/function () {\n var _ref = Object(asyncToGenerator["a" /* default */])(function* (to, from) {\n if (false) {}\n app.context.route = yield Object(utils["j" /* getRouteData */])(to);\n app.context.params = to.params || {};\n app.context.query = to.query || {};\n unregister();\n resolve();\n });\n return function (_x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }());\n });\n });\n return {\n store,\n app,\n router\n };\n });\n return _createApp.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL3JvdXRlci5zY3JvbGxCZWhhdmlvci5qcz9hZjJmIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvcm91dGVyLmpzP2NlNWMiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9jb21wb25lbnRzL251eHQtY2hpbGQuanM/ZDU5MSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NvbXBvbmVudHMvbnV4dC1lcnJvci52dWU/MDcwYSIsIndlYnBhY2s6Ly8vLm51eHQvZW1lcmFsZC9jb21wb25lbnRzL251eHQtZXJyb3IudnVlPzQ2YjkiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9jb21wb25lbnRzL251eHQtZXJyb3IudnVlP2Q2NTEiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9jb21wb25lbnRzL251eHQtZXJyb3IudnVlP2MyZmMiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9jb21wb25lbnRzL251eHQuanM/NGM2OSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL0FwcC5qcz8yZWQ1Iiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvc3RvcmUuanM/YTFiNSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL3NlbnRyeS5jbGllbnQuc2hhcmVkLmpzP2QyMjIiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9zZW50cnkuY2xpZW50LmpzPzdkZjQiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9jb29raWUtdW5pdmVyc2FsLW51eHQuanM/MWNmOSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL251eHQtaTE4bi9vcHRpb25zLmpzP2FiN2IiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9udXh0LWkxOG4vdXRpbHMtY29tbW9uLmpzPzM4MTAiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9udXh0LWkxOG4vcGx1Z2luLnV0aWxzLmpzPzg4YjIiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9udXh0LWkxOG4vbWlkZGxld2FyZS5qcz9hMzdjIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvbnV4dC1pMThuL3BsdWdpbi5yb3V0aW5nLmpzPzc0MjciLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9udXh0LWkxOG4vaGVhZC1tZXRhLmpzP2VmMWMiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9udXh0LWkxOG4vcGx1Z2luLm1haW4uanM/NmVlOSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2RldmljZS5wbHVnaW4uanM/YzJjYyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL3B3YS9pY29uLnBsdWdpbi5qcz83MjcxIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvYXhpb3MuanM/ZWE0ZSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2F1dGguanM/Mjc0MSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5hY2NvcmRpb24uY2xpZW50LjU2YTg2NGRkLmpzPzNlZDEiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuYWZmaXJtLmNsaWVudC5iNWE0ZjRhYy5qcz9iNDAxIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmFnR3JpZC5jbGllbnQuZjMwMGIxZGEuanM/Yzg4NyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5hbmFseXRpY3MuY2xpZW50LmJjMzdmNGNhLmpzPzQ0OTMiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuYm9keVNjcm9sbExvY2suY2xpZW50LjAwYWZjMGUxLmpzPzkwZGQiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuY2xpcGJvYXJkLmNsaWVudC5lY2VjMThhYS5qcz80ODYzIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmRh
1dGVQaWNrZXIuY2xpZW50LjdkODZiMDNhLmpzPzFjNGEiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuZHJhZ2dhYmxlLmNsaWVudC4zYjk1Y2FlMi5qcz9jODY1Iiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmVtYmVkc29jaWFsLmNsaWVudC5kNGRkMTA0YS5qcz80YzNhIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmV4dGVuZFNESy5jbGllbnQuYTdkOWM3NTYuanM/YTIyYiIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5nb29nbGVCYWRnZS5jbGllbnQuZTc5OTk3ODIuanM/ZWNjMiIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5nb29nbGVNYXBzLmNsaWVudC4xNDY0YWQxMi5qcz84NjhhIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmdvb2dsZVN1cnZleS5jbGllbnQuMWVlNTA5ZmEuanM/ZDIyMyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5ndGFnLmNsaWVudC5jMTEwNGM0Yy5qcz83YTZkIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLmhhbW1lci5jbGllbnQuN2E3MDM4Y2QuanM/MTZlMyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5obHMuY2xpZW50LjBjNzdiN2Y4LmpzPzg2NjYiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuaW1hc2suY2xpZW50LjQxZWExY2FjLmpzPzRhYzQiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuaXYzZC5jbGllbnQuMWY5ZmFhYzUuanM/ZTFlZSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5sYXp5bG9hZC5jbGllbnQuMWY3ODI1YmUuanM/ODJhMSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5taWNyb3NvZnRDbGFyaXR5LmNsaWVudC4xNDMxMDNlNi5qcz84MzIxIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLm1vZGVybml6ci5jbGllbnQuMmQ1MThjZjcuanM/NDVmYSIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5ub3Vpc2xpZGVyLmNsaWVudC44MzhhNGE4Ni5qcz84ODQ4Iiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLnBlcmZlY3RTY3JvbGxiYXIuY2xpZW50LjM5OWM5N2EwLmpzP2I5MmYiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMucG9wcGVyLmNsaWVudC4zYmJkMzA5YS5qcz9lYWQzIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLnJlY2FwdGNoYS5jbGllbnQuM2ZiZDg5YmMuanM/ODUxNyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5yZWpvaW5lci5jbGllbnQuM2M1YWIzZGUuanM/M2FhZiIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy5zb2NpYWxTaGFyaW5nLmNsaWVudC43Njc0NzdmOC5qcz8xY2RmIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLnN3ZWV0YWxlcnQuY2xpZW50LjRkMDBmYTczLmpzPzJlYjQiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvZW1lcmFsZC9pbnRlZ3JhdGlvbnMuc3dpcGVyLmNsaWVudC4yOGExY2ZmZi5qcz84NjYwIiwid2VicGFjazovLy8uLy5udXh0L2VtZXJhbGQvaW50ZWdyYXRpb25zLnRhYnVsYXRvci5jbGllbnQuNDczZDIxNTIuanM/NjIzNyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy50aXBweS5jbGllbnQuM2IxYjkzZjkuanM/ZGVhNiIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2ludGVncmF0aW9ucy51c2VybGlrZS5jbGllbnQuNGJiYjNhYWUuanM/NmQ4NCIsIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2luZGV4LmpzPzdiYTgiXSwibmFtZXMiOlsicHJvY2VzcyIsIndpbmRvdyIsImhpc3RvcnkiLCJzZXRTY3JvbGxSZXN0b3JhdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJzaG91bGRTY3JvbGxUb1RvcCIsInJvdXRlIiwiUGFnZXMiLCJnZXRNYXRjaGVkQ29tcG9uZW50cyIsImxlbmd0aCIsIm9wdGlvbnMiLCJzY3JvbGxUb1RvcCIsInNvbWUiLCJfcmVmIiwidG8iLCJmcm9tIiwic2F2ZWRQb3NpdGlvbiIsInBvc2l0aW9uIiwiaXNSb3V0ZUNoYW5nZWQiLCJ4IiwieSIsIm51eHQiLCIkbnV4dCIsInBhdGgiLCJoYXNoIiwiJG5leHRUaWNrIiwiJGVtaXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIiRvbmNlIiwiQ1NTIiwiZXNjYXBlIiwic3Vic3RyIiwiZWwiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJfZ2V0Q29tcHV0ZWRTdHlsZSRzY3IiLCJzZWxlY3RvciIsIk51bWJlciIsImdldENvbXB1dGVkU3R5bGUiLCJyZXBsYWNlIiwib2Zmc2V0IiwiZSIsImNvbnNvbGUiLCJ3YXJuIiwiXzRjOTIzNGE0IiwiaW50ZXJvcERlZmF1bHQiLCJfMDVlMTgwYTciLCJfNmM3MWJiYmUiLCJfZGM0MDY4MzgiLCJfMTRjNGRlMzIiLCJfNzRhZmViZWQiLCJfMTJiNWE4MWYiLCJfMDk4NTViNjIiLCJfODdhMzJlNTIiLCJfMDczN2MyNTAiLCJfMDQ3MDQzZjYiLCJfNmNkMWEwYWMiLCJfNGQyNTE3Y2EiLCJfMGE4NDNkNWYiLCJfYWU0MWZlYmMiLCJfYTFlMDg1MjAiLCJfMGNkOWU0YWIiLCJfN2FiYjI1YWYiLCJfOTBhNTk0MWEiLCJfN2I2YTI4ZTkiLCJfNWUxMWEzMGUiLCJfMDM2NTg0NjkiLCJfZTdhODFkNjQiLCJfN2ViNWFhNzAiLCJfMmRiNmI1MGUiLCJfNDQxMDkxMWUiLCJfZTllYWViZDQiLCJfODM4MDZiNTIiLCJfZjIwOTA2NzgiLCJfNWMwZmNmYzIiLCJfMjg0NTRjN2EiLCJfN2FiMDU3NmQiLCJfNWQyN2MyODYiLCJfMDkzMDg4NDYiLCJfZDhlY2E0ZDQiLCJfNmIwZDI0MzkiLCJfMGQ0NTc0YWYiLCJfMDkyMjY3YmEiLCJfMjkzMDJiZjQiLCJfMzYwOTE3MzAiLCJfMWJjYzhiMjAiLCJfNzNiZmRkNGIiLCJfMzI5YjU3MzkiLCJfOTgyYzZiYjIiLCJfNmUwZDc5M2EiLCJfZjZkNDM2NDYiLCJfMTVmYzNiYTMiLCJfMDJmODUwMGUiLCJfZGM3MjllZDIiLCJfNTAyYmQyYjAiLCJfMDQ4NTRhYTEiLCJfYmIxMzQ5YTIiLCJfNDRhNWM4MDciLCJfYThiNmY0NmEiLCJfNjJhZGYzNjciLCJfMTc2ZjA5ZDkiLCJfNjEzZTU5ZTYiLCJfNGRiNDFiZDAiLCJfNTQ2N
1DcxMDEiLCJfMmRkZjM0YTMiLCJfMDFjMDk4MzYiLCJfNTkzMmM0NmQiLCJfZTQ4M2IzNzQiLCJfNzNlNDI5NjQiLCJfYjc1ODBhMTgiLCJfMDhlOTlmODIiLCJfNDQxOGQ2YTYiLCJfNmFhMzU2MDYiLCJfZmExMTczZTQiLCJfOTRmYjU3NjAiLCJfOTFlYzNlNTAiLCJfMTBlZWFlMzEiLCJfNjI0NGFmMzkiLCJfZWJlMzA4NDIiLCJfYTlmOWFkMjYiLCJfMjA5YTg1NTIiLCJfM2Q2MmRiZjYiLCJfNmRhMGI0NDUiLCJfMjZmZjM4MTgiLCJfNmQ5MjRjMzYiLCJfMjEwMTAyZDIiLCJfMWRhYTM4ZmEiLCJfZWY3N2MxNDQiLCJfNmRjMmE3NTQiLCJfNWUyNjg2ZjkiLCJfMDBjMTI3ZTMiLCJfYjlkMThjYTYiLCJfNjEyZDk5NGUiLCJlbXB0eUZuIiwiVnVlIiwidXNlIiwiUm91dGVyIiwicm91dGVyT3B0aW9ucyIsIm1vZGUiLCJiYXNlIiwibGlua0FjdGl2ZUNsYXNzIiwibGlua0V4YWN0QWN0aXZlQ2xhc3MiLCJzY3JvbGxCZWhhdmlvciIsInJvdXRlcyIsImNvbXBvbmVudCIsInBhdGhUb1JlZ2V4cE9wdGlvbnMiLCJuYW1lIiwiY2hpbGRyZW4iLCJmYWxsYmFjayIsImNyZWF0ZVJvdXRlciIsInNzckNvbnRleHQiLCJjb25maWciLCJfYXBwIiwiYmFzZVBhdGgiLCJyb3V0ZXIiLCJfb2JqZWN0U3ByZWFkIiwib3JpZ2luYWxQdXNoIiwicHVzaCIsImxvY2F0aW9uIiwib25Db21wbGV0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uQWJvcnQiLCJjYWxsIiwiYmluZCIsImN1cnJlbnQiLCJhcHBlbmQiLCJub3JtYWxpemVVUkwiLCJmdW5jdGlvbmFsIiwicHJvcHMiLCJudXh0Q2hpbGRLZXkiLCJ0eXBlIiwiU3RyaW5nIiwiZGVmYXVsdCIsImtlZXBBbGl2ZSIsIkJvb2xlYW4iLCJrZWVwQWxpdmVQcm9wcyIsIk9iamVjdCIsInJlbmRlciIsIl8iLCJwYXJlbnQiLCJkYXRhIiwiaCIsIiRjcmVhdGVFbGVtZW50IiwibnV4dENoaWxkIiwiX3BhcmVudCIsInRyYW5zaXRpb25zIiwiZGVmYXVsdFRyYW5zaXRpb24iLCJkZXB0aCIsIiR2bm9kZSIsIiRwYXJlbnQiLCJudXh0Q2hpbGREZXB0aCIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uUHJvcHMiLCJ0cmFuc2l0aW9uc0tleXMiLCJmb3JFYWNoIiwia2V5IiwibGlzdGVuZXJzIiwibGlzdGVuZXJzS2V5cyIsImJlZm9yZUVudGVyIiwiY3NzIiwibGVhdmUiLCJkb25lIiwicm91dGVyVmlldyIsIm9uIiwiX3ZtIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiYXR0cnMiLCJfdiIsIl9zIiwibWVzc2FnZSIsInN0YXR1c0NvZGUiLCIkcm91dGUiLCJfZSIsIl9tIiwic3RhdGljUmVuZGVyRm5zIiwiZXJyb3IiLCJjb21wdXRlZCIsImhlYWQiLCJ0aXRsZSIsIm1ldGEiLCJjb250ZW50IiwiY29tcG9uZW50cyIsIk51eHRDaGlsZCIsIk51eHRFcnJvciIsImVycm9yQ2FwdHVyZWQiLCJkaXNwbGF5aW5nTnV4dEVycm9yIiwiZXJyb3JGcm9tTnV4dEVycm9yIiwiJGZvcmNlVXBkYXRlIiwicm91dGVyVmlld0tleSIsIm1hdGNoZWQiLCJjb21waWxlIiwicGFyYW1zIiwibWF0Y2hlZFJvdXRlIiwiQ29tcG9uZW50Iiwic3RyaWN0IiwidGVzdCIsImJlZm9yZUNyZWF0ZSIsInV0aWwiLCJkZWZpbmVSZWFjdGl2ZSIsIiRyb290IiwiJG9wdGlvbnMiLCJlcnIiLCIkcHJvcHMiLCJjb25jYXQiLCJ0b1N0cmluZyIsImxheW91dHMiLCJzYW5pdGl6ZUNvbXBvbmVudCIsIl82ZjZjMDk4YiIsIl8yMTlmZDMwOCIsImxvYWRpbmdFbCIsInJlZiIsImxheW91dEVsIiwibGF5b3V0IiwidGVtcGxhdGVFbCIsImRvbVByb3BzIiwiaWQiLCJsYXlvdXROYW1lIiwidHJhbnNpdGlvbkVsIiwiaXNPbmxpbmUiLCJuYkZldGNoaW5nIiwiY3JlYXRlZCIsInJlZnJlc2hPbmxpbmVTdGF0dXMiLCJjb250ZXh0IiwibW91bnRlZCIsIl90aGlzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCIkbG9hZGluZyIsIiRyZWZzIiwibG9hZGluZyIsIndhdGNoIiwiaXNPZmZsaW5lIiwiaXNGZXRjaGluZyIsIm1ldGhvZHMiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJyZWZyZXNoIiwiX3RoaXMyIiwicGFnZXMiLCJnZXRNYXRjaGVkQ29tcG9uZW50c0luc3RhbmNlcyIsInN0YXJ0IiwicHJvbWlzZXMiLCJtYXAiLCJwYWdlIiwicCIsImZldGNoIiwicHJvbWlzaWZ5IiwiYXN5bmNEYXRhIiwidGhlbiIsIm5ld0RhdGEiLCJzZXQiLCIkZGF0YSIsImFsbCIsIiRmZXRjaCIsImdldENoaWxkcmVuQ29tcG9uZW50SW5zdGFuY2VzVXNpbmdGZXRjaCIsImNvbXBvbmVudEluc3RhbmNlIiwiX3giLCJhcHBseSIsImZhaWwiLCJnbG9iYWxIYW5kbGVFcnJvciIsImZpbmlzaCIsImVycm9yQ2hhbmdlZCIsImVycm9yTGF5b3V0Iiwic2V0TGF5b3V0IiwibG9hZExheW91dCIsIk51eHRMb2FkaW5nIiwiVnVleCIsInN0b3JlIiwidXBkYXRlTW9kdWxlcyIsIm5vcm1hbGl6ZVJvb3QiLCJyZXF1aXJlIiwibW9kdWxlcyIsImNyZWF0ZVN0b3JlIiwiRnVuY3Rpb24iLCJTdG9yZSIsImFzc2lnbiIsIm1vZHVsZURhdGEiLCJmaWxlUGF0aCIsImNvbW1pdCIsIkVycm9yIiwibm9ybWFsaXplTW9kdWxlIiwic3RhdGUiLCJTZW50cnlTZGsiLCJDb3JlU2RrIiwiQnJvd3NlclNkayIsImdldENvbmZpZyIsImN0eCIsImRzbiIsImVudmlyb25tZW50IiwiaW50ZWdyYXRpb25zIiwiRXh0cmFFcnJvckRhdGEiLCJSZXBvcnRpbmdPYnNlcnZlciIsInR5cGVzIiwiUmV3cml0ZUZyYW1lcyIsInJ1bnRpbWVDb25maWdLZXkiLCIkY29uZmlnIiwibWVyZ2UiLCJjbGllbnRDb25maWciLCJfeDIiLCJpbmplY3QiLCJpbml0IiwiJHNlb
1nRyeSIsInJlcSIsInJlcyIsImFsaWFzIiwiY29va2llVW5pdmVyc2FsIiwicGFyc2VKU09OIiwiQ29uc3RhbnRzIiwiQ09NUE9ORU5UX09QVElPTlNfS0VZIiwiU1RSQVRFR0lFUyIsIm51eHRPcHRpb25zIiwiaXNVbml2ZXJzYWxNb2RlIiwidHJhaWxpbmdTbGFzaCIsInZ1ZUkxOG4iLCJ2dWVJMThuTG9hZGVyIiwibG9jYWxlcyIsImRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0RGlyZWN0aW9uIiwicm91dGVzTmFtZVNlcGFyYXRvciIsImRlZmF1bHRMb2NhbGVSb3V0ZU5hbWVTdWZmaXgiLCJzb3J0Um91dGVzIiwic3RyYXRlZ3kiLCJsYXp5IiwibGFuZ0RpciIsInJvb3RSZWRpcmVjdCIsImRldGVjdEJyb3dzZXJMYW5ndWFnZSIsImRpZmZlcmVudERvbWFpbnMiLCJzZW8iLCJiYXNlVXJsIiwidnVleCIsInBhcnNlUGFnZXMiLCJza2lwU2V0dGluZ0xvY2FsZU9uTmF2aWdhdGUiLCJiZWZvcmVMYW5ndWFnZVN3aXRjaCIsIm9uQmVmb3JlTGFuZ3VhZ2VTd2l0Y2giLCJvbkxhbmd1YWdlU3dpdGNoZWQiLCJub3JtYWxpemVkTG9jYWxlcyIsImxvY2FsZUNvZGVzIiwibG9jYWxlTWVzc2FnZXMiLCJlbi1VUy5qcyIsImZvcm1hdE1lc3NhZ2UiLCJ0ZXh0IiwicGFyc2VBY2NlcHRMYW5ndWFnZSIsImlucHV0Iiwic3BsaXQiLCJ0YWciLCJtYXRjaEJyb3dzZXJMb2NhbGUiLCJhcHBMb2NhbGVzIiwiYnJvd3NlckxvY2FsZXMiLCJtYXRjaGVkTG9jYWxlcyIsIm5vcm1hbGl6ZWRBcHBMb2NhbGVzIiwiYXBwTG9jYWxlIiwiY29kZSIsImlzbyIsIl9sb29wIiwiYnJvd3NlckNvZGUiLCJtYXRjaGVkTG9jYWxlIiwiZmluZCIsInRvTG93ZXJDYXNlIiwic2NvcmUiLCJpbmRleCIsImVudHJpZXMiLCJfbG9vcDIiLCJsYW5ndWFnZUNvZGUiLCJzb3J0IiwibG9jYWxlQSIsImxvY2FsZUIiLCJnZXRMb2NhbGVEb21haW4iLCJob3N0IiwibWF0Y2hpbmdMb2NhbGUiLCJsIiwiZG9tYWluIiwiZ2V0TG9jYWxlc1JlZ2V4IiwiUmVnRXhwIiwiam9pbiIsImNyZWF0ZUxvY2FsZUZyb21Sb3V0ZUdldHRlciIsImxvY2FsZXNQYXR0ZXJuIiwiZGVmYXVsdFN1ZmZpeFBhdHRlcm4iLCJyZWdleHBOYW1lIiwicmVnZXhwUGF0aCIsImdldExvY2FsZUZyb21Sb3V0ZSIsIm1hdGNoZXMiLCJtYXRjaCIsImdldExvY2FsZUNvb2tpZSIsIl9yZWYyIiwidXNlQ29va2llIiwiY29va2llS2V5IiwibG9jYWxlQ29kZSIsIkpzQ29va2llIiwiZ2V0IiwiaW5jbHVkZXMiLCJzZXRMb2NhbGVDb29raWUiLCJsb2NhbGUiLCJfcmVmMyIsImNvb2tpZURvbWFpbiIsImNvb2tpZVNlY3VyZSIsImNvb2tpZUNyb3NzT3JpZ2luIiwiZGF0ZSIsIkRhdGUiLCJjb29raWVPcHRpb25zIiwiZXhwaXJlcyIsInNldERhdGUiLCJnZXREYXRlIiwic2FtZVNpdGUiLCJzZWN1cmUiLCJsb2FkTGFuZ3VhZ2VBc3luYyIsIl9sb2FkTGFuZ3VhZ2VBc3luYyIsImFwcCIsImkxOG4iLCJsb2FkZWRMYW5ndWFnZXMiLCJsb2NhbGVPYmplY3QiLCJmaWxlIiwibWVzc2FnZXMiLCJudXh0U3RhdGUiLCJfX2kxOG4iLCJsYW5ncyIsImlzRGV2IiwiZ2V0dGVyIiwibSIsInNldExvY2FsZU1lc3NhZ2UiLCJyZXNvbHZlQmFzZVVybCIsImdldERvbWFpbkZyb21Mb2NhbGUiLCJsYW5nIiwiaGFzUHJvdG9jb2wiLCJwcm90b2NvbCIsInJlZ2lzdGVyU3RvcmUiLCJzdG9yZU1vZHVsZSIsIm5hbWVzcGFjZWQiLCJzeW5jTG9jYWxlIiwic3luY01lc3NhZ2VzIiwic3luY1JvdXRlUGFyYW1zIiwicm91dGVQYXJhbXMiLCJhY3Rpb25zIiwic2V0TG9jYWxlIiwic2V0TWVzc2FnZXMiLCJfcmVmNCIsInNldFJvdXRlUGFyYW1zIiwiX3JlZjUiLCJtdXRhdGlvbnMiLCJnZXR0ZXJzIiwibG9jYWxlUm91dGVQYXJhbXMiLCJfcmVmNiIsInBhcmFtc0dldHRlciIsInJlZ2lzdGVyTW9kdWxlIiwibW9kdWxlTmFtZSIsInByZXNlcnZlU3RhdGUiLCJzeW5jVnVleCIsIl94MyIsIl9zeW5jVnVleCIsImRpc3BhdGNoIiwidmFsaWRhdGVSb3V0ZVBhcmFtcyIsImlzT2JqZWN0IiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJpMThuTWlkZGxld2FyZSIsImlzSE1SIiwic3RhdHVzIiwicmVkaXJlY3RQYXRoIiwicHJlc2VydmVRdWVyeSIsIl9fb25OYXZpZ2F0ZSIsInF1ZXJ5IiwicmVkaXJlY3QiLCJudXh0TWlkZGxld2FyZSIsIm51eHRpMThuIiwibG9jYWxlUGF0aCIsImxvY2FsaXplZFJvdXRlIiwicmVzb2x2ZVJvdXRlIiwiZnVsbFBhdGgiLCJsb2NhbGVSb3V0ZSIsInJlc29sdmVkIiwibG9jYWxlTG9jYXRpb24iLCJyZXNvbHZlZFJvdXRlIiwicmVzb2x2ZWRSb3V0ZU5hbWUiLCJnZXRSb3V0ZUJhc2VOYW1lIiwiZ2V0TG9jYWxlUm91dGVOYW1lIiwiaXNEZWZhdWx0TG9jYWxlIiwiaXNQcmVmaXhlZCIsIlBSRUZJWF9FWENFUFRfREVGQVVMVCIsIlBSRUZJWF9BTkRfREVGQVVMVCIsIk5PX1BSRUZJWCIsIndpdGhUcmFpbGluZ1NsYXNoIiwid2l0aG91dFRyYWlsaW5nU2xhc2giLCJwYXRoTWF0Y2giLCJzd2l0Y2hMb2NhbGVQYXRoIiwicm91dGVDb3B5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibGFuZ1N3aXRjaFBhcmFtcyIsImJhc2VSb3V0ZSIsImdldERvbWFpbk9wdGlvbnMiLCJnaXZlblJvdXRlIiwicm91dGVOYW1lIiwiVnVlSW5zdGFuY2VQcm94eSIsInRhcmdldEZ1bmN0aW9uIiwicHJveHkiLCIkaTE4biIsIiRyb3V0ZXIiLCIkc3RvcmUiLCJOdXh0Q29udGV4dFByb3h5IiwicGx1Z2luIiwiaW5zdGFsbCIsIm1peGluIiwibnV4dEkxOG5IZWFkIiwiYWRkRGlyQXR0cmlidXRlIiwiYWRkU2VvQXR0cmlidXRlcyIsIm1ldGFPYmplY3QiLCJodG1sQXR0cnMiLCJsaW5rIiwiY3VycmVudExvY2FsZSIsImxvY2FsZVByb3BlcnRpZXMiLCJjdXJyZW50TG9jYWxlSXNvIiwiY3VycmVudExvY2FsZURpciIsImRpciIsIlZ1ZU1ldGEiLCJoYXNNZXRhSW5mbyIsIl9oYXNNZXRhSW5mbyIsImFkZEhyZWZsYW5nTGlua3MiLCJfX2Jhc2VVcmwiLCJhZGRDYW5vbmljYWxMaW5rcyIsImFkZEN1cnJlbnRPZ0xvY2FsZSIsImFkZEFsdGVybmF0ZU9nTG9jYWxlcyIsImxvY2FsZU1hcCIsIk1hcCIsImxvY2FsZUlzbyIsImxhbmd1YWdlIiwicmVnaW9uIiwiaXNDYXRjaGFsbExvY2FsZSIsImhhcyIsIm1hcExvY2FsZSIsImhpZCIsInJlbCIsImhyZWYiLCJ0b0Fic29sdXRlVXJsIiwiaHJlZmxhbmciLCJ
1jdXJyZW50Um91dGUiLCJjYW5vbmljYWxQYXRoIiwiaGFzQ3VycmVudExvY2FsZUFuZElzbyIsInByb3BlcnR5IiwiaHlwZW5Ub1VuZGVyc2NvcmUiLCJsb2NhbGVzV2l0aG91dEN1cnJlbnQiLCJmaWx0ZXIiLCJhbHRlcm5hdGVMb2NhbGVzIiwic3RyIiwidXJsT3JQYXRoIiwibnV4dEkxOG5TZW8iLCJWdWVJMThuIiwiaW5qZWN0SW5OdXh0U3RhdGUiLCJza2lwTnV4dFN0YXRlIiwiYWx3YXlzUmVkaXJlY3QiLCJmYWxsYmFja0xvY2FsZSIsIm9ubHlPbk5vUHJlZml4Iiwib25seU9uUm9vdCIsImxvYWRBbmRTZXRMb2NhbGUiLCJuZXdMb2NhbGUiLCJpbml0aWFsU2V0dXAiLCJvbGRMb2NhbGUiLCJsb2NhbGVPdmVycmlkZSIsImkxOG5GYWxsYmFja0xvY2FsZSIsImxvY2FsZXNUb0xvYWRQcm9taXNlcyIsImZiTG9jYWxlIiwibmV3TG9jYWxlUHJvcGVydGllcyIsImtleXMiLCJrbG9uYSIsImdldExvY2FsZU1lc3NhZ2UiLCJnZXRSZWRpcmVjdFBhdGhGb3JMb2NhbGUiLCJfX3JlZGlyZWN0Iiwic3RhcnRzV2l0aCIsIm9uTmF2aWdhdGUiLCJzdG9yZWRSZWRpcmVjdCIsInJlc29sdmVCYXNlVXJsT3B0aW9ucyIsImZpbmFsTG9jYWxlIiwiZG9EZXRlY3RCcm93c2VyTGFuZ3VhZ2UiLCJfX3BlbmRpbmdMb2NhbGUiLCJfX3BlbmRpbmdMb2NhbGVQcm9taXNlIiwiX19yZXNvbHZlUGVuZGluZ0xvY2FsZVByb21pc2UiLCJmaW5hbGl6ZVBlbmRpbmdMb2NhbGVDaGFuZ2UiLCJ3YWl0Rm9yUGVuZGluZ0xvY2FsZUNoYW5nZSIsImdldEJyb3dzZXJMb2NhbGUiLCJsYW5ndWFnZXMiLCJoZWFkZXJzIiwiZXh0ZW5kVnVlSTE4bkluc3RhbmNlIiwib2JzZXJ2YWJsZSIsInZ1ZUkxOG5PcHRpb25zIiwiY29tcG9uZW50SW5zdGFuY2VDcmVhdGVkTGlzdGVuZXIiLCJwcm90b3R5cGUiLCIkbnV4dEkxOG5TZW8iLCIkbnV4dEkxOG5IZWFkIiwibG9jYWxlRG9tYWlucyIsImRvbWFpbkxvY2FsZSIsInJvdXRlTG9jYWxlIiwiUkVHRVhfTU9CSUxFMSIsIlJFR0VYX01PQklMRTIiLCJpc01vYmlsZSIsImEiLCJSRUdFWF9NT0JJTEVfT1JfVEFCTEVUMSIsIlJFR0VYX01PQklMRV9PUl9UQUJMRVQyIiwiUkVHRVhfQ1JBV0xFUiIsImlzTW9iaWxlT3JUYWJsZXQiLCJpc0lvcyIsImlzQW5kcm9pZCIsImlzV2luZG93cyIsImlzTWFjT1MiLCJicm93c2VycyIsImdldEJyb3dzZXJOYW1lIiwiYiIsIkRFRkFVTFRfVVNFUl9BR0VOVCIsIlJFRlJFU0hfT05fUkVTSVpFIiwiZXh0cmFjdERldmljZXMiLCJ1c2VyQWdlbnQiLCJtb2JpbGUiLCJtb2JpbGVPclRhYmxldCIsImlvcyIsImFuZHJvaWQiLCJ3aW5kb3dzIiwibWFjT1MiLCJicm93c2VyTmFtZSIsImlzU2FmYXJpIiwiaXNGaXJlZm94IiwiaXNFZGdlIiwiaXNDaHJvbWUiLCJpc1NhbXN1bmciLCJpc0NyYXdsZXIiLCJtYWtlRmxhZ3MiLCJpc1RhYmxldCIsImlzRGVza3RvcCIsImlzRGVza3RvcE9yVGFibGV0IiwiZmxhZ3MiLCJzZXRUaW1lb3V0IiwibmV3RmxhZ3MiLCIkZGV2aWNlIiwiaWNvbnMiLCJnZXRJY29uIiwic2l6ZSIsImF4aW9zRXh0cmEiLCJzZXRCYXNlVVJMIiwiYmFzZVVSTCIsImRlZmF1bHRzIiwic2V0SGVhZGVyIiwic2NvcGVzIiwic2NvcGUiLCJzZXRUb2tlbiIsInRva2VuIiwib25SZXF1ZXN0IiwiZm4iLCJpbnRlcmNlcHRvcnMiLCJyZXF1ZXN0Iiwib25SZXNwb25zZSIsInJlc3BvbnNlIiwib25SZXF1ZXN0RXJyb3IiLCJyZWplY3QiLCJvblJlc3BvbnNlRXJyb3IiLCJvbkVycm9yIiwiY3JlYXRlIiwiY3JlYXRlQXhpb3NJbnN0YW5jZSIsImRlZnUiLCJtZXRob2QiLCJleHRlbmRBeGlvc0luc3RhbmNlIiwiYXhpb3MiLCJheGlvc09wdGlvbnMiLCJBeGlvcyIsIkNhbmNlbFRva2VuIiwiaXNDYW5jZWwiLCJjb21tb24iLCJzZXR1cFByb2dyZXNzIiwibm9vcExvYWRpbmciLCJ
1jdXJyZW50UmVxdWVzdHMiLCJwcm9ncmVzcyIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbCIsImxvYWRlZCIsIk1hdGgiLCJtaW4iLCJvblVwbG9hZFByb2dyZXNzIiwib25Eb3dubG9hZFByb2dyZXNzIiwicnVudGltZUNvbmZpZyIsImJyb3dzZXJCYXNlVVJMIiwiYnJvd3NlckJhc2VVcmwiLCIkYXhpb3MiLCJNaWRkbGV3YXJlIiwiYXV0aCIsImF1dGhNaWRkbGV3YXJlIiwiJGF1dGgiLCJBdXRoIiwicmVnaXN0ZXJTdHJhdGVneSIsIkxvY2FsU2NoZW1lIiwiY2F0Y2giLCJFeHBpcmVkQXV0aFNlc3Npb25FcnJvciIsImxvYWRlciIsIk9uRGVtYW5kIiwic2NyaXB0IiwiaW5zZXJ0IiwiY2FsbGJhY2siLCJsb2FkIiwicHVibGljQXBpS2V5IiwiZ2V0QWZmaXJtUHVibGljS2V5IiwiYWZmaXJtU2NyaXB0IiwiX2FmZmlybV9jb25maWciLCJwdWJsaWNfYXBpX2tleSIsImNvdW50cnlfY29kZSIsImVHcmlkRGl2IiwiZ3JpZE9wdGlvbnMiLCJhZ0dyaWQiLCJHcmlkIiwiYXBpS2V5IiwicnVieSIsImVtZXJhbGQiLCJnZW1zdG9uZSIsImdhIiwicGF0aG5hbWUiLCJWdWVDbGlwYm9hcmQiLCJWdWVEYXRlUGljayIsInZ1ZWRyYWdnYWJsZSIsInNhcHBoaXJlIiwiYWRkRW1iZWRTb2NpYWxTY3JpcHQiLCJjdXJyZW50QXBpS2V5IiwiZXNDb250YWluZXIiLCJzZXRBdHRyaWJ1dGUiLCJraWxsIiwic2NyaXB0c0xvYWRlZCIsImlzTG9hZGluZyIsImNhbGxiYWNrcyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImRlZmF1bHRDb25maWciLCJzdG9yZUlkIiwiRXh0ZW5kIiwiaW5zZXJ0QnV0dG9ucyIsImVsZW1lbnRJZCIsImVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNoaWxkTm9kZXMiLCJidXR0b25zIiwiaW5zZXJ0U2ltcGxlQnV0dG9ucyIsIl9hcmd1bWVudHMiLCJyZW5kZXJTaW1wbGVPZmZlciIsInNob3dNb2RhbCIsIl9hcmd1bWVudHMyIiwicmFjZSIsImV4dGVuZFNka0xvYWRUaW1lb3V0Iiwib25DbG9zZSIsIm1vZGFsIiwib3BlbiIsImdldFBsYW4iLCJpbnN0YW5jZSIsImdldFBsYW5TZWxlY3Rpb24iLCJ1cGRhdGVCdXR0b25zIiwiZXh0ZW5kUmVmZXJlbmNlSWQiLCJzZXRBY3RpdmVQcm9kdWN0IiwicmVuZGVyQmFkZ2UiLCJyYXRpbmdCYWRnZUNvbnRhaW5lciIsImNyZWF0ZUVsZW1lbnQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJnYXBpIiwicmF0aW5nYmFkZ2UiLCJtZXJjaGFudF9pZCIsImxvZyIsInJlbmRlck9wdEluIiwic3VydmV5b3B0aW4iLCJWdWVHdGFnIiwiYW5vbnltaXplX2lwIiwic2VuZF9wYWdlX3ZpZXciLCJsaW5rZXIiLCJkb21haW5zIiwiZ2V0R3RhZ0RvbWFpbnMiLCJzb3VyY2UiLCJIbHMiLCJpc1N1cHBvcnRlZCIsInBsYXllciIsImxvYWRTb3VyY2UiLCJhdHRhY2hNZWRpYSIsIkV2ZW50cyIsIkJVRkZFUl9DUkVBVEVEIiwiYXV0b3BsYXkiLCJwbGF5IiwiSU1hc2siLCJMYXp5TG9hZCIsImNhbmNlbF9vbl9leGl0IiwiZWxlbWVudHNfc2VsZWN0b3IiLCJjbGFzc19sb2FkZWQiLCJ1bm9ic2VydmVfZW50ZXJlZCIsImNhbGxiYWNrX2VudGVyIiwiZXhlY3V0ZUxhenlGdW5jdGlvbiIsInRocmVzaG9sZCIsImxhenlVcGRhdGUiLCJkZWJvdW5jZSIsInVwZGF0ZSIsImxhenlGdW5jdGlvbnMiLCJsYXp5RnVuY3Rpb25OYW1lIiwiZ2V0QXR0cmlidXRlIiwibGF6eUZ1bmN0aW9uIiwiTW9kZXJuaXpyIiwicmVzdWx0Iiwibm9VaVNsaWRlciIsIlBlcmZlY3RTY3JvbGxiYXIiLCJ0b29sdGlwIiwiUG9wcGVyIiwiY3JlYXRlUG9wcGVyIiwiX3Jlam9pbmVyIiwiX3dpbmRvdyIsIlZ1ZVNvY2lhbFNoYXJpbmciLCJ3aXRoVGVzdElkIiwib3JpZ2luYWxEaWRPcGVuIiwiZGlkT3BlbiIsInBvcHVwIiwidG9hc3QiLCJTd2FsIiwiZmlyZSIsIlN3aXBlciIsIlRhYnVsYXRvciIsInRpcHB5IiwiQ2xpZW50T25seSIsIk5vU3NyIiwiX3dhcm5lZCIsIk51eHQiLCJkZWZpbmVQcm9wZXJ0eSIsImdsb2JhbE51eHQiLCJjb25maWd1cmFibGUiLCJNZXRhIiwib3JpZ2luYWxSZWdpc3Rlck1vZHVsZSIsInJhd01vZHVsZSIsInJlZHVjZSIsIm5hbWVzcGFjZWRTdGF0ZSIsImNyZWF0ZUFwcCIsIl9jcmVhdGVBcHAiLCJzZXRUcmFuc2l0aW9ucyIsImRhdGVFcnIiLCJfZXJyb3JlZCIsIm5vcm1hbGl6ZUVycm9yIiwibm93IiwiQXBwIiwibmV4dCIsInVybCIsImdldExvY2F0aW9uIiwic2V0Q29udGV4dCIsInBheWxvYWQiLCJiZWZvcmVSZW5kZXJGbnMiLCJiZWZvcmVTZXJpYWxpemVGbnMiLCJpbnN0YWxsS2V5IiwiaGFzT3duUHJvcGVydHkiLCJfX05VWFRfXyIsInJlcGxhY2VTdGF0ZSIsIm51eHRfcGx1Z2luX3NlbnRyeWNsaWVudF82NGU2MzYwZCIsIm51eHRfcGx1Z2luX2Nvb2tpZXVuaXZlcnNhbG51eHRfYzdhMWIzMGUiLCJudXh0X3BsdWdpbl9wbHVnaW51dGlsc18xOTdjN2NlYyIsIm51eHRfcGx1Z2luX3BsdWdpbnJvdXRpbmdfNDA0ZmQ3NTYiLCJudXh0X3BsdWdpbl9wbHVnaW5tYWluXzE0MmY4MThjIiwibnV4dF9wbHVnaW5fZGV2aWNlcGx1Z2luXzI2NzUwMTQ4IiwibnV4dF9wbHVnaW5faWNvbnBsdWdpbl83YTViYmQzNCIsIm51eHRfcGx1Z2luX2F4aW9zX2Q3ZDE2ZTVlIiwibnV4dF9wbHVnaW5fbG9nZ2VyX2FmMDc0NTE2IiwibnV4dF9wbHVnaW5fc3RvcmVfNjhjMzBjMWIiLCJudXh0X3BsdWdpbl9ldmVudEJ1c181MDEwMjQyOCIsIm51eHRfcGx1Z2luX2FwaV8xMmUwYjc1NiIsIm51eHRfcGx1Z2luX2F4aW9zX2RkODhkODFlIiwibnV4dF9wbHVnaW5fYW5hbHl0aWNzXzRmZjBhZTUwIiwibnV4dF9wbHVnaW5fdnVlb2JzZXJ2ZXJfMDBkZThiNjIiLCJudXh0X3BsdWdpbl9ldmVudHNfNGZlMjUyOGEiLCJudXh0X3BsdWdpbl9nbG9iYWxjb21wb25lbnRzXzUzY2QwMzBhIiwibnV4dF9wbHVnaW5fZm9udHNfZjg2ZDkxY2MiLCJudXh0X3BsdWdpbl9pbnRlcnBvbGF0aW9uTGlua3NfMjVlNjhiNWYiLCJudXh0X3BsdWdpbl9oZWxwZXJzX2ZhOWYwOTgwIiwibnV4dF9wbHVnaW5fbG9jYWxTdG9yYWdlXzc3OTNjZjI0IiwibnV4dF9wbHVnaW5fdnVlanNtb2RhbF8wNWJlNzliNSIsIm51eHRfcGx1Z2luX21ldGFUYWdzXzMwZGY5MzNhIiwibnV4dF9wbHVnaW5fY2xlYXJRdWVyeVBhcmFtc1VybF80MDgzOWI1MCIsIm51eHRfcGx1Z2luX2NvbnN1bHRDaGF0X2U5N2JlODBjIiwibnV4dF9wbHVnaW5fcm91dGVyXzlhODAwMWE0IiwibnV4dF9wbHVnaW5fZ29vZ2xlYXV0aF9hNThiYWNiYyIsIm51eHRfcGx1Z2luX3RvYXN0XzViNjI0MTk3IiwibnV4dF9wbHVnaW5fYXV0aF8yMTQ3ODIzZiIsIm51eHRfcGx1Z2luX2F1dGhfNDkzNjBhNjYiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhY2NvcmRpb25jbGllbnQ1NmE4NjRkZF8zZTUxND
1I0MyIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2FmZmlybWNsaWVudGI1YTRmNGFjXzM1ZTYyZTBhIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zYWdHcmlkY2xpZW50ZjMwMGIxZGFfMjc0NzIwODQiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhbmFseXRpY3NjbGllbnRiYzM3ZjRjYV9kMjkzMjNhYyIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2JvZHlTY3JvbGxMb2NrY2xpZW50MDBhZmMwZTFfMzNjY2FiYWEiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNjbGlwYm9hcmRjbGllbnRlY2VjMThhYV9iMzgwODQzMCIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2RhdGVQaWNrZXJjbGllbnQ3ZDg2YjAzYV9jMjkxZjM0MCIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2RyYWdnYWJsZWNsaWVudDNiOTVjYWUyX2IzN2U0Yjg0IiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZW1iZWRzb2NpYWxjbGllbnRkNGRkMTA0YV9hMzg3NGMwMiIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2V4dGVuZFNES2NsaWVudGE3ZDljNzU2XzYxYTNkMDgxIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlQmFkZ2VjbGllbnRlNzk5OTc4Ml83OTk2MjZlNiIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2dvb2dsZU1hcHNjbGllbnQxNDY0YWQxMl82MTY0MjVjZSIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2dvb2dsZVN1cnZleWNsaWVudDFlZTUwOWZhXzI1YTJiN2IwIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ3RhZ2NsaWVudGMxMTA0YzRjXzM3MWFiNDc2IiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zaGFtbWVyY2xpZW50N2E3MDM4Y2RfNmY5MDBiNzQiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNobHNjbGllbnQwYzc3YjdmOF8yNTZhYWU1MCIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc2ltYXNrY2xpZW50NDFlYTFjYWNfMzhlYmJjN2YiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpdjNkY2xpZW50MWY5ZmFhYzVfM2Q4NzgyNWUiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNsYXp5bG9hZGNsaWVudDFmNzgyNWJlXzM0OGEwMjI2IiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbWljcm9zb2Z0Q2xhcml0eWNsaWVudDE0MzEwM2U2Xzg2YzY3ZWIwIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbW9kZXJuaXpyY2xpZW50MmQ1MThjZjdfYTZlOTBiMTYiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNub3Vpc2xpZGVyY2xpZW50ODM4YTRhODZfNTM5NDhmNDQiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwZXJmZWN0U2Nyb2xsYmFyY2xpZW50Mzk5Yzk3YTBfNDc4M2Q2YTYiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwb3BwZXJjbGllbnQzYmJkMzA5YV81ZDQ4YWFhMSIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc3JlY2FwdGNoYWNsaWVudDNmYmQ4OWJjXzYxZWEyYzIzIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zcmVqb2luZXJjbGllbnQzYzVhYjNkZV81MTY3NTFjYiIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc3NvY2lhbFNoYXJpbmdjbGllbnQ3Njc0NzdmOF80MDViZTNhNCIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc3N3ZWV0YWxlcnRjbGllbnQ0ZDAwZmE3M181NjNmZDBiMCIsIm51eHRfcGx1Z2luX2ludGVncmF0aW9uc3N3aXBlcmNsaWVudDI4YTFjZmZmXzFkNDY2YmQyIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zdGFidWxhdG9yY2xpZW50NDczZDIxNTJfMWM4YjYxNmYiLCJudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnN0aXBweWNsaWVudDNiMWI5M2Y5XzE3YmM3MjEwIiwibnV4dF9wbHVnaW5faW50ZWdyYXRpb25zdXNlcmxpa2VjbGllbnQ0YmJiM2FhZV8yNThjMTFmZSIsIl9pc1JvdXRlciIsInVucmVnaXN0ZXIiLCJhZnRlckVhY2giLCJnZXRSb3V0ZURhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW9FO0FBRXBFLElBQUlBLElBQWMsRUFBRTtFQUNsQixJQUFJLG1CQUFtQixJQUFJQyxNQUFNLENBQUNDLE9BQU8sRUFBRTtJQUN6Q0MsNkNBQW9CLENBQUMsUUFBUSxDQUFDOztJQUU5QjtJQUNBO0lBQ0E7SUFDQUYsTUFBTSxDQUFDRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsTUFBTTtNQUM1Q0QsNkNBQW9CLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUMsQ0FBQzs7SUFFRjtJQUNBRixNQUFNLENBQUNHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNO01BQ3BDRCw2Q0FBb0IsQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUVBLFNBQVNFLGlCQUFpQkEsQ0FBQ0MsS0FBSyxFQUFFO0VBQy9CLElBQU1DLEtBQUssR0FBR0MsNkNBQW9CLENBQUNGLEtBQUssQ0FBQztFQUN6QyxJQUFJQyxLQUFLLENBQUNFLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDdEIsSUFBTTtNQUFFQyxPQUFPLEdBQUcsQ0FBQztJQUFFLENBQUMsR0FBR0gsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQyxPQUFPRyxPQUFPLENBQUNDLFdBQVcsS0FBSyxLQUFLO0VBQ3RDO0VBQ0EsT0FBT0osS0FBSyxDQUFDSyxJQUFJLENBQUNDLElBQUE7SUFBQSxJQUFDO01BQUVIO0lBQVEsQ0FBQyxHQUFBRyxJQUFBO0lBQUEsT0FBS0gsT0FBTyxJQUFJQSxPQUFPLENBQUNDLFdBQVc7RUFBQSxFQUFDO0FBQ3JFO0FBRWUsb0VBQVVHLEVBQUUsRUFBRUMsSUFBSSxFQUFFQyxhQUFhLEVBQUU7RUFDaEQ7RUFDQSxJQUFJQyxRQUFRLEdBQUcsS0FBSztFQUNwQixJQUFNQyxjQUFjLEdBQUdKLEVBQUUsS0FBS0MsSUFBSTs7RUFFbEM7RUFDQSxJQUFJQyxhQUFhLEVBQUU7SUFDakJDLFFBQVEsR0FBR0QsYUFBYTtFQUMxQixDQUFDLE1BQU0sSUFBSUUsY0FBYyxJQUFJYixpQkFBaUIsQ0FBQ1MsRUFBRSxDQUFDLEVBQUU7SUFDbERHLFFBQVEsR0FBRztNQUFFRSxDQUFDLEVBQUUsQ0FBQztNQUFFQyxDQUFDLEVBQUU7SUFBRSxDQUFDO0VBQzNCO0VBRUEsSUFBTUMsSUFBSSxHQUFHcEIsTUFBTSxDQUFDcUIsS0FBSztFQUV6QjtFQUNFO0VBQ0EsQ0FBQ0osY0FBYztFQUNmO0VBQ0NKLEVBQUUsQ0FBQ1MsSUFBSSxLQUFLUixJQUFJLENBQUNRLElBQUksSUFBSVQsRUFBRSxDQUFDVSxJQUFJLEtBQUtULElBQUksQ0FBQ1MsSUFBSyxFQUNoRDtJQUNBSCxJQUFJLENBQUNJLFNBQVMsQ0FBQyxNQUFNSixJQUFJLENBQUNLLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztFQUNuRDtFQUVBLE9BQU8sSUFBSUMsT0FBTyxDQUFFQyxPQUFPLElBQUs7SUFDOUI7SUFDQVAsSUFBSSxDQUFDUSxLQUFLLENBQUMsZUFBZSxFQUFFLE1BQU07TUFDaEM7TUFDQTtNQUNBLElBQUlmLEVBQUUsQ0FBQ1UsSUFBSSxFQUFFO1FBQ1gsSUFBSUEsSUFBSSxHQUFHVixFQUFFLENBQUNVLElBQUk7UUFDbEI7UUFDQSxJQUFJLE9BQU92QixNQUFNLENBQUM2QixHQUFHLEtBQUssV0FBVyxJQUFJLE9BQU83QixNQUFNLENBQUM2QixHQUFHLENBQUNDLE1BQU0sS0FBSyxXQUFXLEVBQUU7VUFDakZQLElBQUksR0FBRyxHQU
1FHLEdBQUd2QixNQUFNLENBQUM2QixHQUFHLENBQUNDLE1BQU0sQ0FBQ1AsSUFBSSxDQUFDUSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQ7UUFDQSxJQUFJO1VBQ0YsSUFBTUMsRUFBRSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQ1gsSUFBSSxDQUFDO1VBQ3ZDLElBQUlTLEVBQUUsRUFBRTtZQUFBLElBQUFHLHFCQUFBO1lBQ047WUFDQW5CLFFBQVEsR0FBRztjQUFFb0IsUUFBUSxFQUFFYjtZQUFLLENBQUM7WUFDN0I7WUFDQSxJQUFNSixDQUFDLEdBQUdrQixNQUFNLEVBQUFGLHFCQUFBLEdBQUNHLGdCQUFnQixDQUFDTixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFBRyxxQkFBQSx1QkFBekNBLHFCQUFBLENBQTJDSSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLElBQUlwQixDQUFDLEVBQUU7Y0FDTEgsUUFBUSxDQUFDd0IsTUFBTSxHQUFHO2dCQUFFckI7Y0FBRSxDQUFDO1lBQ3pCO1VBQ0Y7UUFDRixDQUFDLENBQUMsT0FBT3NCLENBQUMsRUFBRTtVQUNWQyxPQUFPLENBQUNDLElBQUksQ0FBQyxpSEFBaUgsQ0FBQztRQUNqSTtNQUNGO01BQ0FoQixPQUFPLENBQUNYLFFBQVEsQ0FBQztJQUNuQixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDOzs7Ozs7OztBQ2pGcUI7QUFDVTtBQUNXO0FBQ0Y7QUFDZTtBQUV2RCxJQUFNNEIsU0FBUyxHQUFHQSxDQUFBLEtBQU1DLHVDQUFjLENBQUMsMEdBQXNHLENBQUM7QUFDOUksSUFBTUMsU0FBUyxHQUFHQSxDQUFBLEtBQU1ELHVDQUFjLENBQUMsdUdBQWdHLENBQUM7QUFDeEksSUFBTUUsU0FBUyxHQUFHQSxDQUFBLEtBQU1GLHVDQUFjLENBQUMsdUdBQWdHLENBQUM7QUFDeEksSUFBTUcsU0FBUyxHQUFHQSxDQUFBLEtBQU1ILHVDQUFjLENBQUMsNkdBQTRHLENBQUM7QUFDcEosSUFBTUksU0FBUyxHQUFHQSxDQUFBLEtBQU1KLHVDQUFjLENBQUMsdUhBQWdJLENBQUM7QUFDeEssSUFBTUssU0FBUyxHQUFHQSxDQUFBLEtBQU1MLHVDQUFjLENBQUMsNkhBQTRJLENBQUM7QUFDcEwsSUFBTU0sU0FBUyxHQUFHQSxDQUFBLEtBQU1OLHVDQUFjLENBQUMsdUdBQWdHLENBQUM7QUFDeEksSUFBTU8sU0FBUyxHQUFHQSxDQUFBLEtBQU1QLHVDQUFjLENBQUMsNkdBQTRHLENBQUM7QUFDcEosSUFBTVEsU0FBUyxHQUFHQSxDQUFBLEtBQU1SLHVDQUFjLENBQUMscUhBQTRILENBQUM7QUFDcEssSUFBTVMsU0FBUyxHQUFHQSxDQUFBLEtBQU1ULHVDQUFjLENBQUMsc0hBQThILENBQUM7QUFDdEssSUFBTVUsU0FBUyxHQUFHQSxDQUFBLEtBQU1WLHVDQUFjLENBQUMsK0dBQWdILENBQUM7QUFDeEosSUFBTVcsU0FBUyxHQUFHQSxDQUFBLEtBQU1YLHVDQUFjLENBQUMsNkdBQTRHLENBQUM7QUFDcEosSUFBTVksU0FBUyxHQUFHQSxDQUFBLEtBQU1aLHVDQUFjLENBQUMsc0lBQThKLENBQUM7QUFDdE0sSUFBTWEsU0FBUyxHQUFHQSxDQUFBLEtBQU1iLHVDQUFjLENBQUMsNEdBQTBHLENBQUM7QUFDbEosSUFBTWMsU0FBUyxHQUFHQSxDQUFBLEtBQU1kLHVDQUFjLENBQUMsa0hBQXNILENBQUM7QUFDOUosSUFBTWUsU0FBUyxHQUFHQSxDQUFBLEtBQU1mLHVDQUFjLENBQUMsNEhBQTBJLENBQUM7QUFDbEwsSUFBTWdCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNaEIsdUNBQWMsQ0FBQyxrSUFBc0osQ0FBQztBQUM5TCxJQUFNaUIsU0FBUyxHQUFHQSxDQUFBLEtBQU1qQix1Q0FBYyxDQUFDLDhHQUE4RyxDQUFDO0FBQ3RKLElBQU1rQixTQUFTLEdBQUdBLENBQUEsS0FBTWxCLHVDQUFjLENBQUMsd0hBQWtJLENBQUM7QUFDMUssSUFBTW1CLFNBQVMsR0FBR0EsQ0FBQSxLQUFNbkIsdUNBQWMsQ0FBQyw4SEFBOEksQ0FBQztBQUN0TCxJQUFNb0IsU0FBUyxHQUFHQSxDQUFBLEtBQU1wQix1Q0FBYyxDQUFDLDJHQUF3RyxDQUFDO0FBQ2hKLElBQU1xQixTQUFTLEdBQUdBLENBQUEsS0FBTXJCLHVDQUFjLENBQUMseUhBQW9JLENBQUM7QUFDNUssSUFBTXNCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNdEIsdUNBQWMsQ0FBQyw0R0FBMEcsQ0FBQztBQUNsSixJQUFNdUIsU0FBUyxHQUFHQSxDQUFBLEtBQU12Qix1Q0FBYyxDQUFDLHFIQUE0SCxDQUFDO0FBQ3BLLElBQU13QixTQUFTLEdBQUdBLENBQUEsS0FBTXhCLHVDQUFjLENBQUMsNEdBQTBHLENBQUM7QUFDbEosSUFBTXlCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNekIsdUNBQWMsQ0FBQyxtSEFBd0gsQ0FBQztBQUNoSyxJQUFNMEIsU0FBUyxHQUFHQSxDQUFBLEtBQU0xQix1Q0FBYyxDQUFDLDRHQUEwRyxDQUFDO0FBQ2xKLElBQU0yQixTQUFTLEdBQUdBLENBQUEsS0FBTTNCLHVDQUFjLENBQUMsMkdBQXdHLENBQUM7QUFDaEosSUFBTTRCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNNUIsdUNBQWMsQ0FBQyx5R0FBb0csQ0FBQztBQUM1SSxJQUFNNkIsU0FBUyxHQUFHQSxDQUFBLEtBQU03Qix1Q0FBYyxDQUFDLGlJQUFvSixDQUFDO0FBQzVMLElBQU04QixTQUFTLEdBQUdBLENBQUEsS0FBTTlCLHVDQUFjLENBQUMsdUhBQWdJLENBQUM7QUFDeEssSUFBTStCLFNBQVMsR0FBR0EsQ0FBQSxLQUFNL0IsdUNBQWMsQ0FBQywwSEFBc0ksQ0FBQztBQUM5SyxJQUFNZ0MsU0FBUyxHQUFHQSxDQUFBLEtBQU1oQyx1Q0FBYyxDQUFDLHdIQUFrSSxDQUFDO0FBQzFLLElBQU1pQyxTQUFTLEdBQUdBLENBQUEsS0FBTWpDLHVDQUFjLENBQUMsaUhBQW9ILENBQUM7QUFDNUosSUFBTWtDLFNBQVMsR0FBR0EsQ0FBQSxLQUFNbEMsdUNBQWMsQ0FBQywySEFBd0ksQ0FBQztBQUNoTCxJQUFNbUMsU0FBUyxHQUFHQSxDQUFBLEtBQU1uQyx1Q0FBYyxDQUFDLHNJQUE4SixDQUFDO0FBQ3RNLElBQU1vQyxTQUFTLEdBQUdBLENBQUEsS0FBTXBDLHVDQUFjLENBQUMsMEhBQXNJLENBQUM7QUFDOUssSUFBTXFDLFNBQVMsR0FBR0EsQ0FBQSxLQUFNckMsdUNBQWMsQ0FBQyx5SEFBb0ksQ0FBQztBQUM1SyxJQUFNc0MsU0FBUyxHQUFHQSxDQUFBLEtBQU10Qyx1Q0FBYyxDQUFDLCtHQUFnSCxDQUFDO0FBQ3hKLElBQU11QyxTQUFTLEdBQUdBLENBQUEsS0FBTXZDLHVDQUFjLENBQUMsMElBQXNLLENBQUM7QUFDOU0sSUFBTXdDLFNBQVMsR0FBR0EsQ0FBQSxLQUFNeEMsdUNBQWMsQ0FBQyw0SUFBMEssQ0FBQztBQUNsTixJQUFNeUMsU0FBUyxHQUFHQSxDQUFBLEtBQU16Qyx1Q0FBYyxDQUFDLG9JQUEwSixDQUFDO0FBQ2xNLElBQU0wQyxTQUFTLEdBQUdBLENBQUEsS0FBTTFDLHVDQUFjLENBQUMsbUlBQXdKLENBQUM7QUFDaE0sSUFBTTJDLFNBQVMsR0FBR0EsQ0FBQSxLQUFNM0MsdUNBQWMsQ0FBQyxvSUFBMEosQ0FBQztBQUNsTSxJQUFNNEMsU0FBUyxHQUFHQSxDQUFBLEtBQU01Qyx1Q0FBYyxDQUFDLG1JQUF3SixDQUFDO0FBQ2hNLElBQU02QyxTQUFTLEdBQUdBLENBQUEsS0FBTTdDLHVDQUFjLENBQUMsNklBQTRLLENBQUM7QUFDcE4sSUFBTThDLFNBQVMsR0FBR0EsQ0FBQSxLQUFNOUMsdUNBQWMsQ0FBQyxnSUFBa0osQ0FBQztBQUMxTCxJQUFNK0MsU0FBUyxHQUFHQSxDQUFBLEtBQU0vQyx1Q0FBYyxDQUFDLDJJQUF3SyxDQUFDO0FBQ2hOLElBQU1nRCxTQUFTLEdBQUdBLENBQUEsS0FBTWhELHVDQUFjLENBQUMscUlBQTRKLENBQUM7QUFDcE0sSUFBTWlELFNBQVMsR0FBR0EsQ0FBQSxLQUFNakQsdUNBQWMsQ0FBQyx3SUFBa0ssQ0FBQztBQUMxTSxJQUFNa0QsU0FBUyxHQUFHQSxDQUFBLEtBQU1sRCx1Q0FBYyxDQUFDLDhIQUE4SSxDQUFDO0FBQ3RMLElBQU1tRCxTQUFTLEdBQUdBLENBQUEsS0FBTW5ELHVDQUFjLENBQUMsNEhBQTBJLENBQUM7QUFDbEwsSUFBTW9ELFNBQVMsR0FBR0EsQ0FBQSxLQUFNcEQsdUNBQWMsQ0FBQyxnSUFBa0osQ0FBQztBQUMxTCxJQUFNcUQsU0FBUyxHQUFHQSxDQUFBLEtBQU1yRCx1Q0FBYyxDQUFDLGtJQUFzSixDQUFDO0FBQzlMLElBQU1zRCxTQUFTLEdBQUdBLENBQUEsS0FBTXRELHVDQUFjLENBQUMscUlBQTRKLENBQUM7QUFDcE0sSUFBTXVELFNBQVMsR0FBR0EsQ0FBQSxLQUFNdkQsdUNBQWMsQ0FBQyw0SEFBMEksQ0FBQztBQUNsTCxJQUFNd0QsU0FBUyxHQUFHQSxDQUFBLEtBQU14RCx1Q0FBYyxDQUFDLDZHQUE0RyxDQUFDO0FBQ3BKLElBQU15RCxTQUFTLEdBQUdBLENBQUEsS0FBTXpELHVDQUFjLENBQUMsbUhBQXdILENBQUM7QUFDaEssSUFBTTBELFNBQVMsR0FBR0EsQ0FBQSxLQUFNMUQsdUNBQWMsQ0FBQyxxSEFBNEgsQ0FBQztBQUNwSyxJQUFNMkQsU0FBUyxHQUFHQSxDQUFBLEtBQU0zRCx1Q0FBYyxDQUFDLG9KQUEwTCxDQUFDO0FBQ2xPLElBQU00RCxTQUFTLEdBQUdBLENBQUEsS0FBTTVELHVDQUFjLENBQUMsbUpBQXdMLENBQUM7QUFDaE8sSUFBTTZELFNBQVMsR0FBR0EsQ0FBQSxLQUFNN0QsdUNBQWMsQ0FBQywySkFBd00sQ0FBQztBQUNoUCxJQUFNOEQsU0FBUyxHQUFHQSxDQUFBLEtBQU05RCx1Q0FBYyxDQUFDLDRKQUEwTSxDQUFDO0FBQ2xQLElBQU0rRCxTQUFTLEdBQUdBLENBQUEsS0FBTS9ELHVDQUFjLENBQUMscUpBQTRMLENBQUM7QUFDcE8sSUFBTWdFLFNBQVMsR0FBR0EsQ0FBQSxLQUFNaEUsdUNBQWMsQ0FBQyxvSkFBMEwsQ0FBQztBQUNsTyxJQUFNaUUsU0FBUyxHQUFHQSxDQUFBLEtBQU1qRSx1Q0FBYyxDQUFDLDZJQUE0SyxDQUFDO0FBQ3BOLElBQU1rRSxTQUFTLEdBQUdBLENBQUEsS0FBTWxFLHVDQUFjLENBQUMsOElBQThLLENBQUM7QUFDdE4sSUFBTW1FLFNBQVMsR0FBR0EsQ0FBQSxLQUFNbkUsdUNBQWMsQ0FBQyxrR0FBc0YsQ0FBQztBQUM5SCxJQUFNb0UsU0FBUyxHQUFHQSxDQUFBLEtBQU1wRSx1Q0FBYyxDQUFDLHdKQUFrTSxDQUFDO0FBQzFPLElBQU1xRSxTQUFTLEdBQUdBLENBQUEsS0FBTXJFLHVDQUFjLENBQUMsdUpBQWdNLENBQUM7QUFDeE8sSUFBTXNFLFNBQVMsR0FBR0EsQ0FBQSxLQUFNdEUsdUNBQWMsQ0FBQywrSkFBZ04sQ0FBQztBQUN4UCxJQUFNdUUsU0FBUyxHQUFHQSxDQUFBLEtBQU12RSx1Q0FBYyxDQUFDLGdLQUFrTixDQUFDO0FBQzFQLElBQU13RSxTQUFTLEdBQUdBLENBQUEsS0FBTXhFLHVDQUFjLENBQUMseUpBQW9NLENBQUM7QUFDNU8sSUFBTXlFLFNBQVMsR0FBR0EsQ0FBQSxLQUFNekUsdUNBQWMsQ0FBQyx3SkFBa00sQ0FBQztBQUMxTyxJQUFNMEUsU0FBUyxHQUFHQSxDQUFBLEtBQU0xRSx1Q0FBYyxDQUFDLGlKQUFvTCxDQUFDO0FBQzVOLElBQU0yRSxTQUFTLEdBQUdBLENBQUEsS0FBTTNFLHVDQUFjLENBQUMsc0lBQThKLENBQUM7QUFDdE0sSUFBTTR
1FLFNBQVMsR0FBR0EsQ0FBQSxLQUFNNUUsdUNBQWMsQ0FBQyxrSUFBc0osQ0FBQztBQUM5TCxJQUFNNkUsU0FBUyxHQUFHQSxDQUFBLEtBQU03RSx1Q0FBYyxDQUFDLGdJQUFrSixDQUFDO0FBQzFMLElBQU04RSxTQUFTLEdBQUdBLENBQUEsS0FBTTlFLHVDQUFjLENBQUMsOEhBQThJLENBQUM7QUFDdEwsSUFBTStFLFNBQVMsR0FBR0EsQ0FBQSxLQUFNL0UsdUNBQWMsQ0FBQyw2SEFBNEksQ0FBQztBQUNwTCxJQUFNZ0YsU0FBUyxHQUFHQSxDQUFBLEtBQU1oRix1Q0FBYyxDQUFDLHlJQUFvSyxDQUFDO0FBQzVNLElBQU1pRixTQUFTLEdBQUdBLENBQUEsS0FBTWpGLHVDQUFjLENBQUMsc0hBQThILENBQUM7QUFDdEssSUFBTWtGLFNBQVMsR0FBR0EsQ0FBQSxLQUFNbEYsdUNBQWMsQ0FBQyw0SEFBMEksQ0FBQztBQUNsTCxJQUFNbUYsU0FBUyxHQUFHQSxDQUFBLEtBQU1uRix1Q0FBYyxDQUFDLGtJQUFzSixDQUFDO0FBQzlMLElBQU1vRixTQUFTLEdBQUdBLENBQUEsS0FBTXBGLHVDQUFjLENBQUMsK0dBQWdILENBQUM7QUFDeEosSUFBTXFGLFNBQVMsR0FBR0EsQ0FBQSxLQUFNckYsdUNBQWMsQ0FBQywySEFBd0ksQ0FBQztBQUNoTCxJQUFNc0YsU0FBUyxHQUFHQSxDQUFBLEtBQU10Rix1Q0FBYyxDQUFDLHFJQUE0SixDQUFDO0FBQ3BNLElBQU11RixTQUFTLEdBQUdBLENBQUEsS0FBTXZGLHVDQUFjLENBQUMsK0hBQWdKLENBQUM7QUFFeEwsSUFBTXdGLE9BQU8sR0FBR0EsQ0FBQSxLQUFNLENBQUMsQ0FBQztBQUV4QkMsMEJBQUcsQ0FBQ0MsR0FBRyxDQUFDQyxpQ0FBTSxDQUFDO0FBRVIsSUFBTUMsYUFBYSxHQUFHO0VBQzNCQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUUsR0FBRztFQUNUQyxlQUFlLEVBQUUsa0JBQWtCO0VBQ25DQyxvQkFBb0IsRUFBRSx3QkFBd0I7RUFDOUNDLHFDQUFjO0VBRWRDLE1BQU0sRUFBRSxDQUFDO0lBQ1B6SCxJQUFJLEVBQUUsV0FBVztJQUNqQjBILFNBQVMsRUFBRXBHLFNBQVM7SUFDcEJxRyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLFFBQVE7SUFDZDBILFNBQVMsRUFBRWxHLFNBQVM7SUFDcEJtRyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLFFBQVE7SUFDZDBILFNBQVMsRUFBRWpHLFNBQVM7SUFDcEJrRyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENFLFFBQVEsRUFBRSxDQUFDO01BQ1Q3SCxJQUFJLEVBQUUsRUFBRTtNQUNSMEgsU0FBUyxFQUFFaEcsU0FBUztNQUNwQmlHLG1CQUFtQixFQUFFO1FBQUMsUUFBUSxFQUFDO01BQUksQ0FBQztNQUNwQ0MsSUFBSSxFQUFFO0lBQ1IsQ0FBQyxFQUFFO01BQ0Q1SCxJQUFJLEVBQUUsWUFBWTtNQUNsQjBILFNBQVMsRUFBRS9GLFNBQVM7TUFDcEJnRyxtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7T
1UFDcENDLElBQUksRUFBRTtJQUNSLENBQUMsRUFBRTtNQUNENUgsSUFBSSxFQUFFLGtCQUFrQjtNQUN4QjBILFNBQVMsRUFBRTlGLFNBQVM7TUFDcEIrRixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUM7RUFDSCxDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxRQUFRO0lBQ2QwSCxTQUFTLEVBQUU3RixTQUFTO0lBQ3BCOEYsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDRSxRQUFRLEVBQUUsQ0FBQztNQUNUN0gsSUFBSSxFQUFFLEVBQUU7TUFDUjBILFNBQVMsRUFBRTVGLFNBQVM7TUFDcEI2RixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUMsRUFBRTtNQUNENUgsSUFBSSxFQUFFLGdCQUFnQjtNQUN0QjBILFNBQVMsRUFBRTNGLFNBQVM7TUFDcEI0RixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUMsRUFBRTtNQUNENUgsSUFBSSxFQUFFLGlCQUFpQjtNQUN2QjBILFNBQVMsRUFBRTFGLFNBQVM7TUFDcEIyRixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUM7RUFDSCxDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxnQkFBZ0I7SUFDdEIwSCxTQUFTLEVBQUV6RixTQUFTO0lBQ3BCMEYsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxjQUFjO0lBQ3BCMEgsU0FBUyxFQUFFeEYsU0FBUztJQUNwQnlGLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsdUNBQXVDO0lBQzdDMEgsU0FBUyxFQUFFdkYsU0FBUztJQUNwQndGLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsYUFBYTtJQUNuQjBILFNBQVMsRUFBRXRGLFNBQVM7SUFDcEJ1RixtQk
1FBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENFLFFBQVEsRUFBRSxDQUFDO01BQ1Q3SCxJQUFJLEVBQUUsRUFBRTtNQUNSMEgsU0FBUyxFQUFFckYsU0FBUztNQUNwQnNGLG1CQUFtQixFQUFFO1FBQUMsUUFBUSxFQUFDO01BQUksQ0FBQztNQUNwQ0MsSUFBSSxFQUFFO0lBQ1IsQ0FBQyxFQUFFO01BQ0Q1SCxJQUFJLEVBQUUsWUFBWTtNQUNsQjBILFNBQVMsRUFBRXBGLFNBQVM7TUFDcEJxRixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUMsRUFBRTtNQUNENUgsSUFBSSxFQUFFLGtCQUFrQjtNQUN4QjBILFNBQVMsRUFBRW5GLFNBQVM7TUFDcEJvRixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUMsRUFBRTtNQUNENUgsSUFBSSxFQUFFLElBQUk7TUFDVjBILFNBQVMsRUFBRWxGLFNBQVM7TUFDcEJtRixtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7TUFDcENDLElBQUksRUFBRTtJQUNSLENBQUM7RUFDSCxDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx5QkFBeUI7SUFDL0IwSCxTQUFTLEVBQUVqRixTQUFTO0lBQ3BCa0YsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSwrQkFBK0I7SUFDckMwSCxTQUFTLEVBQUVoRixTQUFTO0lBQ3BCaUYsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxZQUFZO0lBQ2xCMEgsU0FBUyxFQUFFL0UsU0FBUztJQUNwQmdGLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsMEJBQTBCO0lBQ2hDMEgsU0FBUyxFQUFFOUUsU0FBUztJQUNwQitFLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsYUFBYTtJQUNuQjBILFNBQVMsRUFBRTdFLFNBQVM7SUFDcEI4RSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QjBILFNBQVMsRUFBRTVFLFNBQVM7SUFDcEI2RSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGFBQWE7SUFDbkIwSCxTQUFTLEVBQUUzRSxTQUFTO0lBQ3BCNEUsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxvQkFBb0I7SUFDMUIwSCxTQUFTLEVBQUUxRSxTQUFTO0lBQ3BCMkUsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxhQUFhO0lBQ25CMEgsU0FBUyxFQUFFekUsU0FBUztJQUNwQjBFLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsWUFBWTtJQUNsQjBILFNBQVMsRUFBRXhFLFNBQVM7SUFDcEJ5RSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QjBILFNBQVMsRUFBRXZFLFNBQVM7SUFDcEJ3RSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGtDQUFrQztJQUN4QzBILFNBQVMsRUFBRXRFLFNBQVM7SUFDcEJ1RSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QjBILFNBQVMsRUFBRXJFLFNBQVM7SUFDcEJzRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQzBILFNBQVMsRUFBRXBFLFNBQVM7SUFDcEJxRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHlCQUF5QjtJQUMvQjBILFNBQVMsRUFBRW5FLFNBQVM7SUFDcEJvRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QjBILFNBQVMsRUFBRWxFLFNBQVM7SUFDcEJtRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDRCQUE0QjtJQUNsQzBILFNBQVMsRUFBRWpFLFNBQVM7SUFDcEJrRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHVDQUF1QztJQUM3QzBILFNBQVMsRUFBRWhFLFNBQVM7SUFDcEJpRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQzBILFNBQVMsRUFBRS9ELFNBQVM7SUFDcEJnRSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQzBILFNBQVMsRUFBRTlELFNBQVM7SUFDcEIrRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QjBILFNBQVMsRUFBRTdELFNBQVM7SUFDcEI4RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDJDQUEyQztJQUNqRDBILFNBQVMsRUFBRTVELFNBQVM7SUFDcEI2RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDZDQUE2QztJQUNuRDBILFNBQVMsRUFBRTNELFNBQVM7SUFDcEI0RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHFDQUFxQztJQUMzQzBILFNBQVMsRUFBRTFELFNBQVM7SUFDcEIyRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLG9DQUFvQztJQUMxQzBILFNBQVMsRUFBRXpELFNBQVM7SUFDcEIwRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHFDQUFxQztJQUMzQzBILFNBQVMsRUFBRXhELFNBQVM7SUFDcEJ5RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLG9DQUFvQztJQUMxQzBILFNBQVMsRUFBRXZELFNBQVM7SUFDcEJ3RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDhDQUE4QztJQUNwRDBILFNBQVMsRUFBRXRELFNBQVM7SUFDcEJ1RCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGlDQUFpQztJQUN2QzBILFNBQVMsRUFBRXJELFNBQVM7SUFDcEJzRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDRDQUE0QztJQUNsRDBILFNBQVMsRUFBRXBELFNBQVM7SUFDcEJxRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHNDQUFzQztJQUM1QzBILFNBQVMsRUFBRW5ELFNBQVM7SUFDcEJvRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHlDQUF5QztJQUMvQzBILFNBQVMsRUFBRWxELFNBQVM7SUFDcEJtRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLCtCQUErQjtJQUNyQzBILFNBQVMsRUFBRWpELFNBQVM7SUFDcEJrRCxtQk
1FBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQzBILFNBQVMsRUFBRWhELFNBQVM7SUFDcEJpRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLGlDQUFpQztJQUN2QzBILFNBQVMsRUFBRS9DLFNBQVM7SUFDcEJnRCxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLG1DQUFtQztJQUN6QzBILFNBQVMsRUFBRTlDLFNBQVM7SUFDcEIrQyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLHNDQUFzQztJQUM1QzBILFNBQVMsRUFBRTdDLFNBQVM7SUFDcEI4QyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQzBILFNBQVMsRUFBRTVDLFNBQVM7SUFDcEI2QyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLG9CQUFvQjtJQUMxQjBILFNBQVMsRUFBRTNDLFNBQVM7SUFDcEI0QyxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENFLFFBQVEsRUFBRSxDQUFDO01BQ1Q3SCxJQUFJLEVBQUUsRUFBRTtNQUNSMEgsU0FBUyxFQUFFMUMsU0FBUztNQUNwQjJDLG1CQUFtQixFQUFFO1FBQUMsUUFBUSxFQUFDO01BQUksQ0FBQztNQUNwQ0MsSUFBSSxFQUFFO0lBQ1IsQ0FBQyxFQUFFO01BQ0Q1SCxJQUFJLEVBQUUsVUFBVTtNQUNoQjBILFNBQVMsRUFBRXpDLFNBQVM7TUFDcEIwQyxtQkFBbUIsRUFBRTtRQUFDLFFBQVEsRUFBQztNQUFJLENBQUM7T
1UFDcENDLElBQUksRUFBRTtJQUNSLENBQUM7RUFDSCxDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxxREFBcUQ7SUFDM0QwSCxTQUFTLEVBQUV4QyxTQUFTO0lBQ3BCeUMsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxvREFBb0Q7SUFDMUQwSCxTQUFTLEVBQUV2QyxTQUFTO0lBQ3BCd0MsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSw0REFBNEQ7SUFDbEUwSCxTQUFTLEVBQUV0QyxTQUFTO0lBQ3BCdUMsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSw2REFBNkQ7SUFDbkUwSCxTQUFTLEVBQUVyQyxTQUFTO0lBQ3BCc0MsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxzREFBc0Q7SUFDNUQwSCxTQUFTLEVBQUVwQyxTQUFTO0lBQ3BCcUMsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxxREFBcUQ7SUFDM0QwSCxTQUFTLEVBQUVuQyxTQUFTO0lBQ3BCb0MsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSw4Q0FBOEM7SUFDcEQwSCxTQUFTLEVBQUVsQyxTQUFTO0lBQ3BCbUMsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSwrQ0FBK0M7SUFDckQwSCxTQUFTLEVBQUVqQyxTQUFTO0lBQ3BCa0MsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxHQUFHO0lBQ1QwSCxTQUFTLEVBQUVoQyxTQUFTO0lBQ3BCaUMsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx5REFBeUQ7SUFDL0QwSCxTQUFTLEVBQUUvQixTQUFTO0lBQ3BCZ0MsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx3REFBd0Q7SUFDOUQwSCxTQUFTLEVBQUU5QixTQUFTO0lBQ3BCK0IsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxnRUFBZ0U7SUFDdEUwSCxTQUFTLEVBQUU3QixTQUFTO0lBQ3BCOEIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxpRUFBaUU7SUFDdkUwSCxTQUFTLEVBQUU1QixTQUFTO0lBQ3BCNkIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSwwREFBMEQ7SUFDaEUwSCxTQUFTLEVBQUUzQixTQUFTO0lBQ3BCNEIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx5REFBeUQ7SUFDL0QwSCxTQUFTLEVBQUUxQixTQUFTO0lBQ3BCMkIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxrREFBa0Q7SUFDeEQwSCxTQUFTLEVBQUV6QixTQUFTO0lBQ3BCMEIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx1Q0FBdUM7SUFDN0MwSCxTQUFTLEVBQUV4QixTQUFTO0lBQ3BCeUIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxtQ0FBbUM7SUFDekMwSCxTQUFTLEVBQUV2QixTQUFTO0lBQ3BCd0IsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxpQ0FBaUM7SUFDdkMwSCxTQUFTLEVBQUV0QixTQUFTO0lBQ3BCdUIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSwrQkFBK0I7SUFDckMwSCxTQUFTLEVBQUVyQixTQUFTO0lBQ3BCc0IsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSw4QkFBOEI7SUFDcEMwSCxTQUFTLEVBQUVwQixTQUFTO0lBQ3BCcUIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSwwQ0FBMEM7SUFDaEQwSCxTQUFTLEVBQUVuQixTQUFTO0lBQ3BCb0IsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSx1QkFBdUI7SUFDN0IwSCxTQUFTLEVBQUVsQixTQUFTO0lBQ3BCbUIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSw2QkFBNkI7SUFDbkMwSCxTQUFTLEVBQUVqQixTQUFTO0lBQ3BCa0IsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxtQ0FBbUM7SUFDekMwSCxTQUFTLEVBQUVoQixTQUFTO0lBQ3BCaUIsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxnQkFBZ0I7SUFDdEIwSCxTQUFTLEVBQUVmLFNBQVM7SUFDcEJnQixtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsRUFBRTtJQUNENUgsSUFBSSxFQUFFLDRCQUE0QjtJQUNsQzBILFNBQVMsRUFBRWQsU0FBUztJQUNwQmUsbUJBQW1CLEVBQUU7TUFBQyxRQUFRLEVBQUM7SUFBSSxDQUFDO0lBQ3BDQyxJQUFJLEVBQUU7RUFDUixDQUFDLEVBQUU7SUFDRDVILElBQUksRUFBRSxzQ0FBc0M7SUFDNUMwSCxTQUFTLEVBQUViLFNBQVM7SUFDcEJjLG1CQUFtQixFQUFFO01BQUMsUUFBUSxFQUFDO0lBQUksQ0FBQztJQUNwQ0MsSUFBSSxFQUFFO0VBQ1IsQ0FBQyxFQUFFO0lBQ0Q1SCxJQUFJLEVBQUUsaUNBQWlDO0lBQ3ZDMEgsU0FBUyxFQUFFWixTQUFTO0lBQ3BCYSxtQkFBbUIsRUFBRTtNQUFDLFFBQVEsRUFBQztJQUFJLENBQUM7SUFDcENDLElBQUksRUFBRTtFQUNSLENBQUMsQ0FBQztFQUVGRSxRQUFRLEVBQUU7QUFDWixDQUFDO0FBRU0sU0FBU0MsWUFBWUEsQ0FBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUU7RUFDaEQsSUFBTVosSUFBSSxHQUFJWSxNQUFNLENBQUNDLElBQUksSUFBSUQsTUFBTSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsSUFBS2hCLGFBQWEsQ0FBQ0UsSUFBSTtFQUN4RSxJQUFNZSxNQUFNLEdBQUcsSUFBSWxCLGlDQUFNLENBQUFtQixhQUFBLENBQUFBLGFBQUEsS0FBTWxCLGFBQWE7SUFBRUU7RUFBSSxFQUFHLENBQUM7O0VBRXREO0VBQ0EsSUFBTWlCLFlBQVksR0FBR0YsTUFBTSxDQUFDRyxJQUFJO0VBQ2hDSCxNQUFNLENBQUNHLElBQUksR0FBRyxTQUFTQSxJQUFJQSxDQUFFQyxRQUFRLEVBQWlDO0lBQUEsSUFBL0JDLFVBQVUsR0FBQUMsU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRzNCLE9BQU87SUFBQSxJQUFFNkIsT0FBTyxHQUFBRixTQUFBLENBQUF4SixN
1QUFBLE9BQUF3SixTQUFBLE1BQUFDLFNBQUE7SUFDbEUsT0FBT0wsWUFBWSxDQUFDTyxJQUFJLENBQUMsSUFBSSxFQUFFTCxRQUFRLEVBQUVDLFVBQVUsRUFBRUcsT0FBTyxDQUFDO0VBQy9ELENBQUM7RUFFRCxJQUFNdkksT0FBTyxHQUFHK0gsTUFBTSxDQUFDL0gsT0FBTyxDQUFDeUksSUFBSSxDQUFDVixNQUFNLENBQUM7RUFDM0NBLE1BQU0sQ0FBQy9ILE9BQU8sR0FBRyxDQUFDZCxFQUFFLEVBQUV3SixPQUFPLEVBQUVDLE1BQU0sS0FBSztJQUN4QyxJQUFJLE9BQU96SixFQUFFLEtBQUssUUFBUSxFQUFFO01BQzFCQSxFQUFFLEdBQUcwSixvQ0FBWSxDQUFDMUosRUFBRSxDQUFDO0lBQ3ZCO0lBQ0EsT0FBT2MsT0FBTyxDQUFDZCxFQUFFLEVBQUV3SixPQUFPLEVBQUVDLE1BQU0sQ0FBQztFQUNyQyxDQUFDO0VBRUQsT0FBT1osTUFBTTtBQUNmLEM7O0FDMWpCZTtFQUNiUixJQUFJLEVBQUUsV0FBVztFQUNqQnNCLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxLQUFLLEVBQUU7SUFDTEMsWUFBWSxFQUFFO01BQ1pDLElBQUksRUFBRUMsTUFBTTtNQUNaQyxPQUFPLEVBQUU7SUFDWCxDQUFDO0lBQ0RDLFNBQVMsRUFBRUMsT0FBTztJQUNsQkMsY0FBYyxFQUFFO01BQ2RMLElBQUksRUFBRU0sTUFBTTtNQUNaSixPQUFPLEVBQUVaO0lBQ1g7RUFDRixDQUFDO0VBQ0RpQixNQUFNQSxDQUFFQyxDQUFDLEVBQUF2SyxJQUFBLEVBQTJCO0lBQUEsSUFBekI7TUFBRXdLLE1BQU07TUFBRUMsSUFBSTtNQUFFWjtJQUFNLENBQUMsR0FBQTdKLElBQUE7SUFDaEMsSUFBTTBLLENBQUMsR0FBR0YsTUFBTSxDQUFDRyxjQUFjO0lBRS9CRixJQUFJLENBQUNHLFNBQVMsR0FBRyxJQUFJO0lBQ3JCLElBQU1DLE9BQU8sR0FBR0wsTUFBTTtJQUN0QixJQUFNTSxXQUFXLEdBQUdOLE1BQU0sQ0FBQy9KLEtBQUssQ0FBQ0QsSUFBSSxDQUFDc0ssV0FBVztJQUNqRCxJQUFNQyxpQkFBaUIsR0FBR1AsTUFBTSxDQUFDL0osS0FBSyxDQUFDRCxJQUFJLENBQUN1SyxpQkFBaUI7SUFFN0QsSUFBSUMsS0FBSyxHQUFHLENBQUM7SUFDYixPQUFPUixNQUFNLEVBQUU7TUFDYixJQUFJQSxNQUFNLENBQUNTLE1BQU0sSUFBSVQsTUFBTSxDQUFDUyxNQUFNLENBQUNSLElBQUksQ0FBQ0csU0FBUyxFQUFFO1FBQ2pESSxLQUFLLEVBQUU7TUFDVDtNQUNBUixNQUFNLEdBQUdBLE1BQU0sQ0FBQ1UsT0FBTztJQUN6QjtJQUNBVCxJQUFJLENBQUNVLGNBQWMsR0FBR0gsS0FBSztJQUMzQixJQUFNSSxVQUFVLEdBQUdOLFdBQVcsQ0FBQ0UsS0FBSyxDQUFDLElBQUlELGlCQUFpQjtJQUMxRCxJQUFNTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzFCQyxlQUFlLENBQUNDLE9BQU8sQ0FBRUMsR0FBRyxJQUFLO01BQy9CLElBQUksT0FBT0osVUFBVSxDQUFDSSxHQUFHLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDMUNILGVBQWUsQ0FBQ0csR0FBRyxDQUFDLEdBQUdKLFVBQVUsQ0FBQ0ksR0FBRyxDQUFDO01BQ3hDO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsSUFBTUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNwQkMsYUFBYSxDQUFDSCxPQUFPLENBQUVDLEdBQUcsSUFBSztNQUM3QixJQUFJLE9BQU9KLFVBQVUsQ0FBQ0ksR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO1FBQ3pDQyxTQUFTLENBQUNELEdBQUcsQ0FBQyxHQUFHSixVQUFVLENBQUNJLEdBQUcsQ0FBQyxDQUFDaEMsSUFBSSxDQUFDcUIsT0FBTyxDQUFDO01BQ2hEO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsSUFBSTFMLElBQWMsRUFBRTtNQUNsQjtNQUNBLElBQU13TSxXQUFXLEdBQUdGLFNBQVMsQ0FBQ0UsV0FBVztNQUN6Q0YsU0FBUyxDQUFDRSxXQUFXLEdBQUl2SyxFQUFFLElBQUs7UUFDOUI7UUFDQWhDLE1BQU0sQ0FBQ3FCLEtBQUssQ0FBQ0csU0FBUyxDQUFDLE1BQU07VUFDM0J4QixNQUFNLENBQUNxQixLQUFLLENBQUNJLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBQ0YsSUFBSThLLFdBQVcsRUFBRTtVQUNmLE9BQU9BLFdBQVcsQ0FBQ3BDLElBQUksQ0FBQ3NCLE9BQU8sRUFBRXpKLEVBQUUsQ0FBQztRQUN0QztNQUNGLENBQUM7SUFDSDs7SUFFQTtJQUNBLElBQUlnSyxVQUFVLENBQUNRLEdBQUcsS0FBSyxLQUFLLEVBQUU7TUFDNUIsSUFBTUMsS0FBSyxHQUFHSixTQUFTLENBQUNJLEtBQUs7O01BRTdCO01BQ0E7TUFDQSxJQUFJLENBQUNBLEtBQUssSUFBSUEsS0FBSyxDQUFDak0sTUFBTSxHQUFHLENBQUMsRUFBRTtRQUM5QjZMLFNBQVMsQ0FBQ0ksS0FBSyxHQUFHLENBQUN6SyxFQUFFLEVBQUUwSyxJQUFJLEtBQUs7VUFDOUIsSUFBSUQsS0FBSyxFQUFFO1lBQ1RBLEtBQUssQ0FBQ3RDLElBQUksQ0FBQ3NCLE9BQU8sRUFBRXpKLEVBQUUsQ0FBQztVQUN6QjtVQUVBeUosT0FBTyxDQUFDakssU0FBUyxDQUFDa0wsSUFBSSxDQUFDO1FBQ3pCLENBQUM7TUFDSDtJQUNGO0lBRUEsSUFBSUMsVUFBVSxHQUFHckIsQ0FBQyxDQUFDLFlBQVksRUFBRUQsSUFBSSxDQUFDO0lBRXRDLElBQUlaLEtBQUssQ0FBQ0ssU0FBUyxFQUFFO01BQ25CNkIsVUFBVSxHQUFHckIsQ0FBQyxDQUFDLFlBQVksRUFBRTtRQUFFYixLQUFLLEVBQUVBLEtBQUssQ0FBQ087TUFBZSxDQUFDLEVBQUUsQ0FBQzJCLFVBQVUsQ0FBQyxDQUFDO0lBQzdFO0lBRUEsT0FBT3JCLENBQUMsQ0FBQyxZQUFZLEVBQUU7TUFDckJiLEtBQUssRUFBRXdCLGVBQWU7TUFDdEJXLEVBQUUsRUFBRVA7SUFDTixDQUFDLEVBQUUsQ0FBQ00sVUFBVSxDQUFDLENBQUM7RUFDbEI7QUFDRixDQUFDO0FBRUQsSUFBTVQsZUFBZSxHQUFHLENBQ3RCLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsY0FBYyxFQUNkLGVBQWUsQ0FDaEI7QUFFRCxJQUFNSSxhQUFhLEdBQUcsQ0FDcEIsYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixPQUFPLEVBQ1AsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsQ0FDbEIsQzs7QUN4SEQsSUFBSXBCLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFBLEVBQUU7RUFBQyxJQUFJMkIsR0FBRyxHQU
1FDLElBQUk7SUFBQ0MsRUFBRSxHQUFDRCxHQUFHLENBQUNFLEtBQUssQ0FBQ0QsRUFBRTtFQUFDLE9BQU9BLEVBQUUsQ0FBQyxLQUFLLEVBQUM7SUFBQ0UsV0FBVyxFQUFDO0VBQW1CLENBQUMsRUFBQyxDQUFDRixFQUFFLENBQUMsS0FBSyxFQUFDO0lBQUNFLFdBQVcsRUFBQztFQUFPLENBQUMsRUFBQyxDQUFDRixFQUFFLENBQUMsS0FBSyxFQUFDO0lBQUNHLEtBQUssRUFBQztNQUFDLE9BQU8sRUFBQyw0QkFBNEI7TUFBQyxPQUFPLEVBQUMsSUFBSTtNQUFDLFFBQVEsRUFBQyxJQUFJO01BQUMsTUFBTSxFQUFDLFNBQVM7TUFBQyxTQUFTLEVBQUM7SUFBVztFQUFDLENBQUMsRUFBQyxDQUFDSCxFQUFFLENBQUMsTUFBTSxFQUFDO0lBQUNHLEtBQUssRUFBQztNQUFDLEdBQUcsRUFBQztJQUFrTDtFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0osR0FBRyxDQUFDSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUNKLEVBQUUsQ0FBQyxLQUFLLEVBQUM7SUFBQ0UsV0FBVyxFQUFDO0VBQU8sQ0FBQyxFQUFDLENBQUNILEdBQUcsQ0FBQ0ssRUFBRSxDQUFDTCxHQUFHLENBQUNNLEVBQUUsQ0FBQ04sR0FBRyxDQUFDTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ1AsR0FBRyxDQUFDSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUVMLEdBQUcsQ0FBQ1EsVUFBVSxLQUFLLEdBQUcsR0FBRVAsRUFBRSxDQUFDLEdBQUcsRUFBQztJQUFDRSxXQUFXLEVBQUM7RUFBYSxDQUFDLEVBQUMsQ0FBRSxPQUFPSCxHQUFHLENBQUNTLE1BQU0sS0FBSyxXQUFXLEdBQUVSLEVBQUUsQ0FBQyxHQUFHLEVBQUM7SUFBQ0UsV0FBVyxFQUFDLFlBQVk7SUFBQ0MsS0FBSyxFQUFDO01BQUMsTUFBTSxFQUFDO0lBQUc7RUFBQyxDQUFDLENBQUMsR0FBQ0gsRUFBRSxDQUFDLFVBQVUsRUFBQztJQUFDRSxXQUFXLEVBQUMsWUFBWTtJQUFDQyxLQUFLLEVBQUM7TUFBQyxJQUFJLEVBQUM7SUFBRztFQUFDLENBQUMsRUFBQyxDQUFDSixHQUFHLENBQUNLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFDTCxHQUFHLENBQUNVLEVBQUUsQ0FBQyxDQUFDLEVBQUNWLEdBQUcsQ0FBQ0ssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFDTCxHQUFHLENBQUNXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4MEIsQ0FBQztBQUNELElBQUlDLGVBQWUsR0FBRyxDQUFDLFlBQVc7RUFBQyxJQUFJWixHQUFHLEdBQUMsSUFBSTtJQUFDQyxFQUFFLEdBQUNELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRCxFQUFFO0VBQUMsT0FBT0EsRUFBRSxDQUFDLEtBQUssRUFBQztJQUFDRSxXQUFXLEVBQUM7RUFBTSxDQUFDLEVBQUMsQ0FBQ0YsRUFBRSxDQUFDLEdBQUcsRUFBQztJQUFDRyxLQUFLLEVBQUM7TUFBQyxNQUFNLEVBQUMsb0JBQW9CO01BQUMsUUFBUSxFQUFDLFFBQVE7TUFBQyxLQUFLLEVBQUM7SUFBVTtFQUFDLENBQUMsRUFBQyxDQUFDSixHQUFHLENBQUNLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6TSxDQUFDLENBQUM7Ozs7O0FDa0JhO0VBQ2ZoRSxJQUFBO0VBQ0F1QixLQUFBO0lBQ0FpRCxLQUFBO01BQ0EvQyxJQUFBLEVBQUFNLE1BQUE7TUFDQUosT0FBQTtJQUNBO0VBQ0E7RUFDQThDLFFBQUE7SUFDQU4sV0FBQTtNQUNBLFlBQUFLLEtBQUEsU0FBQUEsS0FBQSxDQUFBTCxVQUFBO0lBQ0E7SUFDQUQsUUFBQTtNQUNBLFlBQUFNLEtBQUEsQ0FBQU4sT0FBQTtJQUNBO0VBQ0E7RUFDQVEsS0FBQTtJQUNBO01BQ0FDLEtBQUEsT0FBQVQsT0FBQTtNQUNBVSxJQUFBLEdBQ0E7UUFDQTVFLElBQUE7UUFDQTZFLE9BQUE7TUFDQTtJQUVBO0VBQ0E7QUFDQSxDQUFDLEU7O0FDaER5TCxDQUFnQixvSEFBRyxFQUFDLEM7Ozs7Ozs7O0FDQXJIO0FBQzNCO0FBQ0w7QUFDOEI7OztBQUd2RjtBQUM2RjtBQUM3RixJQUFJLG9CQUFTLEdBQUcsOENBQVU7QUFDMUIsRUFBRSw2Q0FBTTtBQUNSLEVBQUUsTUFBTTtBQUNSLEVBQUUsZUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFZSxtRUFBUyxROzs7Ozs7Ozs7O0FDbkJIO0FBQ2E7QUFFTTtBQUVKO0FBRXJCO0VBQ2I3RSxJQUFJLEVBQUUsTUFBTTtFQUNaOEUsVUFBVSxFQUFFO0lBQ1ZDLHFCQUFTO0lBQ1RDLHFCQUFTQTtFQUNYLENBQUM7RUFDRHpELEtBQUssRUFBRTtJQUNMQyxZQUFZLEVBQUU7TUFDWkMsSUFBSSxFQUFFQyxNQUFNO01BQ1pDLE9BQU8sRUFBRVo7SUFDWCxDQUFDO0lBQ0RhLFNBQVMsRUFBRUMsT0FBTztJQUNsQkMsY0FBYyxFQUFFO01BQ2RMLElBQUksRUFBRU0sTUFBTTtNQUNaSixPQUFPLEVBQUVaO0lBQ1gsQ0FBQztJQUNEZixJQUFJLEVBQUU7TUFDSnlCLElBQUksRUFBRUMsTUFBTTtNQUNaQyxPQUFPLEVBQUU7SUFDWDtFQUNGLENBQUM7RUFDRHNELGFBQWFBLENBQUVULEtBQUssRUFBRTtJQUNwQjtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksQ0FBQ1UsbUJBQW1CLEVBQUU7TUFDNUIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBR1gsS0FBSztNQUMvQixJQUFJLENBQUNZLFlBQVksQ0FBQyxDQUFDO0lBQ3JCO0VBQ0YsQ0FBQztFQUNEWCxRQUFRLEVBQUU7SUFDUlksYUFBYUEsQ0FBQSxFQUFJO01BQ2Y7TUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDN0QsWUFBWSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUM0QyxNQUFNLENBQUNrQixPQUFPLENBQUNoTyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzlFLE9BQU8sSUFBSSxDQUFDa0ssWUFBWSxJQUFJK0QsZ0NBQU8sQ0FBQyxJQUFJLENBQUNuQixNQUFNLENBQUNrQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNsTixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUNnTSxNQUFNLENBQUNvQixNQUFNLENBQUM7TUFDdEY7TUFFQSxJQUFNLENBQUNDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQ3JCLE1BQU0sQ0FBQ2tCLE9BQU87TUFFMUMsSUFBSSxDQUFDRyxZQUFZLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUNyQixNQUFNLENBQUNoTSxJQUFJO01BQ3pCO01BRUEsSUFBTXNOLFNBQVMsR0FBR0QsWUFBWSxDQUFDWCxVQUFVLENBQUNuRCxPQUFPO01BRWpELElBQUkrRCxTQUFTLElBQUlBLFNBQVMsQ0FBQ25PLE9BQU8sRUFBRTtRQUNsQyxJQUFNO1VBQUVBO1FBQVEsQ0FBQyxHQUFHbU8sU0FBUztRQUU3QixJQUFJbk8sT0FBTyxDQUFDMkwsR0FBRyxFQUFFO1VBQ2YsT0FBUSxPQUFPM0wsT0FBTyxDQUFDMkwsR0FBRyxLQUFLLFVBQVUsR0FBRzNMLE9BQU8sQ0FBQzJMLEdBQUcsQ0FBQyxJQUFJLENBQUNrQixNQUFNLENBQUMsR0FBRzdNLE9BQU8sQ0FBQzJMLEdBQUc7UUFDcEY7TUFDRjtNQUVBLElBQU15QyxNQUFNLEdBQUcsS0FBSyxDQUFDQyxJQUFJLENBQUNILFlBQVksQ0FBQ3JOLElBQUksQ0FBQztNQUM1QyxPQUFPdU4sTUFBTSxHQUFHLElBQUksQ0FBQ3ZCLE1BQU0sQ0FBQ2hNLElBQUksR0FBRyxJQUFJLENBQUNnTSxNQUFNLENBQUNoTSxJQUFJLENBQUNpQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN4RTtFQUNGLENBQUM7RUFDRHdNLFlBQVlBLENBQUEsRUFBSTtJQUNkekcsMEJBQUcsQ0FBQzBHLElBQUksQ0FBQ0MsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDQyxLQUFLLENBQUNDLFFBQVEsQ0FBQy9OLElBQUksQ0FBQztFQUNqRSxDQUFDO0VBQ0Q4SixNQUFNQSxDQUFFSSxDQUFDLEVBQUU7SUFDVDtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNsSyxJQUFJLENBQUNnTyxHQUFHLEVBQUU7TUFDbEI7TUFDQSxPQUFPOUQsQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUNwQmMsR0FBRyxFQUFFLElBQUksQ0FBQ21DLGFBQWE7UUFDdkI5RCxLQUFLLEVBQUUsSUFBSSxDQUFDNEU7TUFDZCxDQUFDLENBQUM7SUFDSjs7SUFFQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUNoQixrQkFBa0IsRUFBRTtNQUMzQixJQUFJLENBQUM3TSxTQUFTLENBQUMsTUFBTyxJQUFJLENBQUM2TSxrQkFBa0IsR0FBRyxLQUFNLENBQUM7T
1UFFdkQsT0FBTy9DLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDbEJBLENBQUMsQ0FBQyxJQUFJLEVBQUUsZ0RBQWdELENBQUMsRUFDekRBLENBQUMsQ0FBQyxHQUFHLEVBQUUseUZBQXlGLENBQUMsRUFDakdBLENBQUMsQ0FBQyxHQUFHLG9CQUFBZ0UsTUFBQSxDQUFvQixJQUFJLENBQUNqQixrQkFBa0IsQ0FBQ2tCLFFBQVEsQ0FBQyxDQUFDLENBQUUsQ0FBQyxFQUM5RGpFLENBQUMsQ0FBQyxXQUFXLEVBQUU7UUFBRWIsS0FBSyxFQUFFO1VBQUU1SixFQUFFLEVBQUU7UUFBSTtNQUFFLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUMxRCxDQUFDO0lBQ0o7O0lBRUE7SUFDQSxJQUFJLENBQUN1TixtQkFBbUIsR0FBRyxJQUFJO0lBQy9CLElBQUksQ0FBQzVNLFNBQVMsQ0FBQyxNQUFPLElBQUksQ0FBQzRNLG1CQUFtQixHQUFHLEtBQU0sQ0FBQztJQUV4RCxPQUFPOUMsQ0FBQyxDQUFDNEMsVUFBUyxFQUFFO01BQ2xCekQsS0FBSyxFQUFFO1FBQ0xpRCxLQUFLLEVBQUUsSUFBSSxDQUFDdE0sSUFBSSxDQUFDZ087TUFDbkI7SUFDRixDQUFDLENBQUM7RUFDSjtBQUNGLENBQUMsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEdvQjtBQUNtRTtBQUVrRTtBQUN2RztBQUNnQztBQUVkO0FBRWQ7QUFFQTtBQUVDO0FBRUM7QUFFUztBQUNXO0FBRTdFLElBQU1JLE9BQU8sR0FBRztFQUFFLFVBQVUsRUFBRUMsMENBQWlCLENBQUNDLGtDQUFTLENBQUM7RUFBQyxxQkFBcUIsRUFBRUQsMENBQWlCLENBQUNFLHFDQUFTO0FBQUUsQ0FBQztBQUVqRztFQUNiekUsTUFBTUEsQ0FBRUksQ0FBQyxFQUFFYixLQUFLLEVBQUU7SUFDaEIsSUFBTW1GLFNBQVMsR0FBR3RFLENBQUMsQ0FBQyxhQUFhLEVBQUU7TUFBRXVFLEdBQUcsRUFBRTtJQUFVLENBQUMsQ0FBQztJQUV0RCxJQUFNQyxRQUFRLEdBQUd4RSxDQUFDLENBQUMsSUFBSSxDQUFDeUUsTUFBTSxJQUFJLE1BQU0sQ0FBQztJQUN6QyxJQUFNQyxVQUFVLEdBQUcxRSxDQUFDLENBQUMsS0FBSyxFQUFFO01BQzFCMkUsUUFBUSxFQUFFO1FBQ1JDLEVBQUUsRUFBRTtNQUNOLENBQUM7TUFDRDlELEdBQUcsRUFBRSxJQUFJLENBQUMrRDtJQUNaLENBQUMsRUFBRSxDQUFDTCxRQUFRLENBQUMsQ0FBQztJQUVkLElBQU1NLFlBQVksR0FBRzlFLENBQUMsQ0FBQyxZQUFZLEVBQUU7TUFDbkNiLEtBQUssRUFBRTtRQUNMdkIsSUFBSSxFQUFFLFFBQVE7UUFDZFIsSUFBSSxFQUFFO01BQ1IsQ0FBQztNQUNEa0UsRUFBRSxFQUFFO1FBQ0ZMLFdBQVdBLENBQUV2SyxFQUFFLEVBQUU7VUFDZjtVQUNBaEMsTUFBTSxDQUFDcUIsS0FBSyxDQUFDRyxTQUFTLENBQUMsTUFBTTtZQUMzQnhCLE1BQU0sQ0FBQ3FCLEtBQUssQ0FBQ0ksS0FBSyxDQUFDLGVBQWUsQ0FBQztVQUNyQyxDQUFDLENBQUM7UUFDSjtNQUNGO0lBQ0YsQ0FBQyxFQUFFLENBQUN1TyxVQUFVLENBQUMsQ0FBQztJQUVoQixPQUFPMUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtNQUNkMkUsUUFBUSxFQUFFO1FBQ1JDLEVBQUUsRUFBRTtNQUNOO0lBQ0YsQ0FBQyxFQUFFLENBQ0ROLFNBQVMsRUFFVFEsWUFBWSxDQUNiLENBQUM7RUFDSixDQUFDO0VBRUQvRSxJQUFJLEVBQUVBLENBQUEsTUFBTztJQUNYZ0YsUUFBUSxFQUFFLElBQUk7SUFFZE4sTUFBTSxFQUFFLElBQUk7SUFDWkksVUFBVSxFQUFFLEVBQUU7SUFFZEcsVUFBVSxFQUFFO0VBQ1osQ0FBQyxDQUFDO0VBRUp2QixZQUFZQSxDQUFBLEVBQUk7SUFDZHpHLDBCQUFHLENBQUMwRyxJQUFJLENBQUNDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQ0UsUUFBUSxDQUFDL04sSUFBSSxDQUFDO0VBQzNELENBQUM7RUFDRG1QLE9BQU9BLENBQUEsRUFBSTtJQUNUO0lBQ0EsSUFBSSxDQUFDckIsS0FBSyxDQUFDQyxRQUFRLENBQUM5TixLQUFLLEdBQUcsSUFBSTtJQUVoQyxJQUFJdEIsSUFBYyxFQUFFO01BQ2xCO01BQ0FDLE1BQU0sQ0FBQ3FCLEtBQUssR0FBRyxJQUFJO01BRW5CLElBQUksQ0FBQ21QLG1CQUFtQixDQUFDLENBQUM7TUFDMUI7TUFDQXhRLE1BQU0sQ0FBQ0csZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ3FRLG1CQUFtQixDQUFDO01BQzNEeFEsTUFBTSxDQUFDRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDcVEsbUJBQW1CLENBQUM7SUFDOUQ7SUFDQTtJQUNBLElBQUksQ0FBQzlDLEtBQUssR0FBRyxJQUFJLENBQUN0TSxJQUFJLENBQUNzTSxLQUFLO0lBQzVCO0lBQ0EsSUFBSSxDQUFDK0MsT0FBTyxHQUFHLElBQUksQ0FBQ3RCLFFBQVEsQ0FBQ3NCLE9BQU87RUFDdEMsQ0FBQztFQUVLQyxPQUFPQSxDQUFBLEVBQUk7SUFBQSxJQUFBQyxLQUFBO0lBQUEsT0FBQUMsMkNBQUE7TUFDZkQsS0FBSSxDQUFDRSxRQUFRLEdBQUdGLEtBQUksQ0FBQ0csS0FBSyxDQUFDQyxPQUFPO0lBQUE7RUFDcEMsQ0FBQztFQUVEQyxLQUFLLEVBQUU7SUFDTCxVQUFVLEVBQUU7RUFDZCxDQUFDO0VBRURyRCxRQUFRLEVBQUU7SUFDUnNELFNBQVNBLENBQUEsRUFBSTtNQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUNaLFFBQVE7SUFDdkIsQ0FBQztJQUVEYSxVQUFVQSxDQUFBLEVBQUk7TUFDWixPQUFPLElBQUksQ0FBQ1osVUFBVSxHQUFHLENBQUM7SUFDNUI7RUFDRixDQUFDO0VBRURhLE9BQU8sRUFBRTtJQUNQWCxtQkFBbUJBLENBQUEsRUFBSTtNQUNyQixJQUFJelEsSUFBYyxFQUFFO1FBQ2xCLElBQUksT0FBT0MsTUFBTSxDQUFDb1IsU0FBUyxDQUFDQyxNQUFNLEtBQUssV0FBVyxFQUFFO1VBQ2xEO1VBQ0E7VUFDQTtVQUNBLElBQUksQ0FBQ2hCLFFBQVEsR0FBRyxJQUFJO1FBQ3RCLENBQUMsTUFBTTtVQUNMLElBQUksQ0FBQ0EsUUFBUSxHQUFHclEsTUFBTSxDQUFDb1IsU0FBUyxDQUFDQyxNQUFNO1FBQ3pDO01BQ0Y7SUFDRixDQUFDO0lBRUtDLE9BQU9BLENBQUEsRUFBSTtNQUFBLElBQUFDLE1BQUE7TUFBQSxPQUFBWCwyQ0FBQTtRQUNmLElBQU1ZLEtBQUssR0FBR0Msc0RBQTZCLENBQUNGLE1BQUksQ0FBQ2pFLE1BQU0sQ0FBQztRQUV4RCxJQUFJLENBQUNrRSxLQUFLLENBQUNoUixNQUFNLEVBQUU7VUFDakI7UUFDRjtRQUNBK1EsTUFBSSxDQUFDVixRQUFRLENBQUNhLEtBQUssQ0FBQyxDQUFDO1FBRXJCLElBQU1DLFFBQVEsR0FBR0gsS0FBSyxDQUFDSSxHQUFHO1VBQUEsSUFBQWhSLElBQUEsR0FBQWdRLDJDQUFBLENBQUMsV0FBT2lCLElBQUksRUFBSztZQUN6QyxJQUFJQyxDQUFDLEdBQUcsRUFBRTs7WUFFVjtZQUNBLElBQUlELElBQUksQ0FBQzFDLFFBQVEsQ0FBQzRDLEtBQUssSUFBSUYsSUFBSSxDQUFDMUMsUUFBUSxDQUFDNEMsS0FBSyxDQUFDdlIsTUFBTSxFQUFFO2NBQ3JEc1IsQ0FBQyxDQUFDakksSUFBSSxDQUFDbUksa0NBQVMsQ0FBQ0gsSUFBSSxDQUFDMUMsUUFBUSxDQUFDNEMsS0FBSyxFQUFFUixNQUFJLENBQUNkLE9BQU8sQ0FBQyxDQUFDO1lBQ3REO1lBRUEsSUFBSW9CLElBQUksQ0FBQzFDLFFBQVEsQ0FBQzhDLFNBQVMsRUFBRTtjQUMzQkgsQ0FBQyxDQUFDakksSUFBSSxDQUNKbUksa0NBQVMsQ0FBQ0gsSUFBSSxDQUFDMUMsUUFBUSxDQUFDOEMsU0FBUyxFQUFFVixNQUFJLENBQUNkLE9BQU8sQ0FBQyxDQUM3Q3lCLElBQUksQ0FBRUMsT0FBTyxJQUFLO2dCQUNqQixLQUFLLElBQU0vRixHQUFHLElBQUkrRixPQUFPLEVBQUU7a0JBQ3pCN0osMEJBQUcsQ0FBQzhKLEdBQUcsQ0FBQ1AsSUFBSSxDQUFDUSxLQUFLLEVBQUVqRyxHQUFHLEVBQUUrRixPQUFPLENBQUMvRixHQUFHLENBQUMsQ0FBQztnQkFDeEM7Y0F
1DRixDQUFDLENBQ0wsQ0FBQztZQUNIOztZQUVBO1lBQ0EsTUFBTTFLLE9BQU8sQ0FBQzRRLEdBQUcsQ0FBQ1IsQ0FBQyxDQUFDO1lBQ3BCO1lBQ0FBLENBQUMsR0FBRyxFQUFFO1lBRU4sSUFBSUQsSUFBSSxDQUFDVSxNQUFNLEVBQUU7Y0FDZlQsQ0FBQyxDQUFDakksSUFBSSxDQUFDZ0ksSUFBSSxDQUFDVSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCO1lBQ0E7WUFDQSxLQUFLLElBQU12SixTQUFTLElBQUl3SixnRUFBdUMsQ0FBQ1gsSUFBSSxDQUFDaEcsTUFBTSxDQUFDNEcsaUJBQWlCLENBQUMsRUFBRTtjQUM5RlgsQ0FBQyxDQUFDakksSUFBSSxDQUFDYixTQUFTLENBQUN1SixNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzVCO1lBRUEsT0FBTzdRLE9BQU8sQ0FBQzRRLEdBQUcsQ0FBQ1IsQ0FBQyxDQUFDO1VBQ3ZCLENBQUM7VUFBQSxpQkFBQVksRUFBQTtZQUFBLE9BQUE5UixJQUFBLENBQUErUixLQUFBLE9BQUEzSSxTQUFBO1VBQUE7UUFBQSxJQUFDO1FBQ0YsSUFBSTtVQUNGLE1BQU10SSxPQUFPLENBQUM0USxHQUFHLENBQUNYLFFBQVEsQ0FBQztRQUM3QixDQUFDLENBQUMsT0FBT2pFLEtBQUssRUFBRTtVQUNkNkQsTUFBSSxDQUFDVixRQUFRLENBQUMrQixJQUFJLENBQUNsRixLQUFLLENBQUM7VUFDekJtRiwwQ0FBaUIsQ0FBQ25GLEtBQUssQ0FBQztVQUN4QjZELE1BQUksQ0FBQzdELEtBQUssQ0FBQ0EsS0FBSyxDQUFDO1FBQ25CO1FBQ0E2RCxNQUFJLENBQUNWLFFBQVEsQ0FBQ2lDLE1BQU0sQ0FBQyxDQUFDO01BQUE7SUFDeEIsQ0FBQztJQUNEQyxZQUFZQSxDQUFBLEVBQUk7TUFDZCxJQUFJLElBQUksQ0FBQzNSLElBQUksQ0FBQ2dPLEdBQUcsRUFBRTtRQUNqQixJQUFJLElBQUksQ0FBQ3lCLFFBQVEsRUFBRTtVQUNqQixJQUFJLElBQUksQ0FBQ0EsUUFBUSxDQUFDK0IsSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQy9CLFFBQVEsQ0FBQytCLElBQUksQ0FBQyxJQUFJLENBQUN4UixJQUFJLENBQUNnTyxHQUFHLENBQUM7VUFDbkM7VUFDQSxJQUFJLElBQUksQ0FBQ3lCLFFBQVEsQ0FBQ2lDLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUNqQyxRQUFRLENBQUNpQyxNQUFNLENBQUMsQ0FBQztVQUN4QjtRQUNGO1FBRUEsSUFBSUUsV0FBVyxHQUFHLENBQUM5RSxVQUFTLENBQUN6TixPQUFPLElBQUl5TixVQUFTLEVBQUU2QixNQUFNO1FBRXpELElBQUksT0FBT2lELFdBQVcsS0FBSyxVQUFVLEVBQUU7VUFDckNBLFdBQVcsR0FBR0EsV0FBVyxDQUFDLElBQUksQ0FBQ3ZDLE9BQU8sQ0FBQztRQUN6QztRQUVBLElBQUksQ0FBQ3dDLFNBQVMsQ0FBQ0QsV0FBVyxDQUFDO01BQzdCO0lBQ0YsQ0FBQztJQUVEQyxTQUFTQSxDQUFFbEQsTUFBTSxFQUFFO01BQ2pCLElBQUksQ0FBQ0EsTUFBTSxJQUFJLENBQUNQLE9BQU8sQ0FBQyxHQUFHLEdBQUdPLE1BQU0sQ0FBQyxFQUFFO1FBQ3JDQSxNQUFNLEdBQUcsU0FBUztNQUNwQjtNQUNBLElBQUksQ0FBQ0ksVUFBVSxHQUFHSixNQUFNO01BQ3hCLElBQUksQ0FBQ0EsTUFBTSxHQUFHUCxPQUFPLENBQUMsR0FBRyxHQUFHTyxNQUFNLENBQUM7TUFDbkMsT0FBTyxJQUFJLENBQUNBLE1BQU07SUFDcEIsQ0FBQztJQUNEbUQsVUFBVUEsQ0FBRW5ELE1BQU0sRUFBRTtNQUNsQixJQUFJLENBQUNBLE1BQU0sSUFBSSxDQUFDUCxPQUFPLENBQUMsR0FBRyxHQUFHTyxNQUFNLENBQUMsRUFBRTtRQUNyQ0EsTUFBTSxHQUFHLFNBQVM7TUFDcEI7TUFDQSxPQUFPck8sT0FBTyxDQUFDQyxPQUFPLENBQUM2TixPQUFPLENBQUMsR0FBRyxHQUFHTyxNQUFNLENBQUMsQ0FBQztJQUMvQztFQUNGLENBQUM7RUFFRC9CLFVBQVUsRUFBRTtJQUNWbUYsa0RBQVdBO0VBQ2I7QUFDRixDQUFDLEU7OztBQ3ROb0I7QUFDRTtBQUV2QjdLLDBCQUFHLENBQUNDLEdBQUcsQ0FBQzZLLDJCQUFJLENBQUM7QUFFYixJQUFJQyxXQUFLLEdBQUcsQ0FBQyxDQUFDO0FBRWQsQ0FBQyxTQUFTQyxhQUFhQSxDQUFBLEVBQUk7RUFDekJELFdBQUssR0FBR0UsYUFBYSxDQUFDQyxtQkFBTyxDQUFDLEdBQXVDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQzs7RUFFekY7O0VBRUE7RUFDQUgsV0FBSyxDQUFDSSxPQUFPLEdBQUdKLFdBQUssQ0FBQ0ksT0FBTyxJQUFJLENBQUMsQ0FBQzs7RUFFbkM7QUFDRixDQUFDLEVBQUUsQ0FBQzs7QUFFSjtBQUNPLElBQU1DLFdBQVcsR0FBR0wsV0FBSyxZQUFZTSxRQUFRLEdBQUdOLFdBQUssR0FBRyxNQUFNO0VBQ25FLE9BQU8sSUFBSUQsMkJBQUksQ0FBQ1EsS0FBSyxDQUFDM0ksTUFBTSxDQUFDNEksTUFBTSxDQUFDO0lBQ2xDaEYsTUFBTSxFQUFHOU8sWUFBb0IsS0FBSztFQUNwQyxDQUFDLEVBQUVzVCxXQUFLLENBQUMsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTRSxhQUFhQSxDQUFFTyxVQUFVLEVBQUVDLFFBQVEsRUFBRTtFQUM1Q0QsVUFBVSxHQUFHQSxVQUFVLENBQUNqSixPQUFPLElBQUlpSixVQUFVO0VBRTdDLElBQUlBLFVBQVUsQ0FBQ0UsTUFBTSxFQUFFO0lBQ3JCLE1BQU0sSUFBSUMsS0FBSyxXQUFBM0UsTUFBQSxDQUFXeUUsUUFBUSwwREFBdUQsQ0FBQztFQUM1RjtFQUVBLElBQUksT0FBT0QsVUFBVSxLQUFLLFVBQVUsRUFBRTtJQUNwQztJQUNBQSxVQUFVLEdBQUc3SSxNQUFNLENBQUM0SSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVDLFVBQVUsQ0FBQztFQUM1QztFQUNBLE9BQU9JLGVBQWUsQ0FBQ0osVUFBVSxFQUFFQyxRQUFRLENBQUM7QUFDOUM7QUFFQSxTQUFTRyxlQUFlQSxDQUFFSixVQUFVLEVBQUVDLFFBQVEsRUFBRTtFQUM5QyxJQUFJRCxVQUFVLENBQUNLLEtBQUssSUFBSSxPQUFPTCxVQUFVLENBQUNLLEtBQUssS0FBSyxVQUFVLEVBQUU7SUFDOUR6UixPQUFPLENBQUNDLElBQUkseURBQUEyTSxNQUFBLENBQXlEeUUsUUFBUSxDQUFFLENBQUM7SUFFaEYsSUFBTUksTUFBSyxHQUFHbEosTUFBTSxDQUFDNEksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFQyxVQUFVLENBQUNLLEtBQUssQ0FBQztJQUNqRDtJQUNBTCxVQUFVLEdBQUc3SSxNQUFNLENBQUM0SSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVDLFVBQVUsRUFBRTtNQUFFSyxLQUFLLEVBQUVBLENBQUEsS0FBTUE7SUFBTSxDQUFDLENBQUM7RUFDcEU7RUFDQSxPQUFPTCxVQUFVO0FBQ25CLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hEcUM7QUFDRjtBQUNLO0FBQ1U7QUFDc0M7QUFFM0U7QUFDTixJQUFNTSxTQUFTLEdBQUF6SyxpQ0FBQSxDQUFBQSxpQ0FBQSxLQUFRMEssR0FBTyxHQUFLQyxPQUFVLENBQUU
17QUFFL0MsU0FBU0MsU0FBU0EsQ0FBRUMsR0FBRyxFQUFFO0VBQzlCO0VBQ0EsSUFBTWpMLE1BQU0sR0FBRztJQUNia0wsR0FBRyxFQUFDLDZHQUE2RztJQUNqSEMsV0FBVyxFQUFDO0VBQ2QsQ0FBQztFQUVEbkwsTUFBTSxDQUFDb0wsWUFBWSxHQUFHLENBQ3BCLElBQUlDLHdDQUFjLENBQUMsQ0FBQyxFQUNwQixJQUFJQyw4Q0FBaUIsQ0FBQztJQUFFQyxLQUFLLEVBQUMsQ0FBQyxPQUFPO0VBQUUsQ0FBQyxDQUFDLEVBQzFDLElBQUlDLHNDQUFhLENBQUMsQ0FBQyxDQUNwQjtFQUVELElBQU1DLGdCQUFnQixHQUFHLFFBQVE7RUFDakMsSUFBSVIsR0FBRyxDQUFDUyxPQUFPLElBQUlELGdCQUFnQixJQUFJUixHQUFHLENBQUNTLE9BQU8sQ0FBQ0QsZ0JBQWdCLENBQUMsRUFBRTtJQUNwRUUsMEJBQUssQ0FBQzNMLE1BQU0sRUFBRWlMLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDRCxnQkFBZ0IsQ0FBQyxDQUFDekwsTUFBTSxFQUFFaUwsR0FBRyxDQUFDUyxPQUFPLENBQUNELGdCQUFnQixDQUFDLENBQUNHLFlBQVksQ0FBQztFQUNqRztFQUVBLE9BQU81TCxNQUFNO0FBQ2YsQzs7Ozs7O0FDNUJxQjtBQUM4QztBQUVwRCw0REFBZm1KLEVBQUEsRUFBQTBDLEdBQUE7RUFBQSxPQUFBeFUsaUJBQUEsQ0FBQStSLEtBQUEsT0FBQTNJLFNBQUE7QUFBQTtBQUtDLFNBQUFwSixrQkFBQTtFQUFBQSxpQkFBQSxHQUFBZ1EsMkNBQUEsQ0FMYyxXQUFnQjRELEdBQUcsRUFBRWEsTUFBTSxFQUFFO0lBQzFDLElBQU05TCxNQUFNLFNBQVNnTCxTQUFTLENBQUNDLEdBQUcsQ0FBQztJQUNuQ2MsMkJBQUksQ0FBQTNMLDBCQUFBO01BQUdyQiwrQkFBR0E7SUFBQSxHQUFLaUIsTUFBTSxDQUFFLENBQUM7SUFDeEI4TCxNQUFNLENBQUMsUUFBUSxFQUFFakIsU0FBUyxDQUFDO0lBQzNCSSxHQUFHLENBQUNlLE9BQU8sR0FBR25CLFNBQVM7RUFDekIsQ0FBQztFQUFBLE9BQUF4VCxpQkFBQSxDQUFBK1IsS0FBQSxPQUFBM0ksU0FBQTtBQUFBLEM7Ozs7OztBQ1I2QztBQUUvQiwyREFBQXBKLElBQUEsRUFBZXlVLE1BQU0sS0FBSztFQUFBLElBQXpCO0lBQUVHLEdBQUc7SUFBRUM7RUFBSSxDQUFDLEdBQUE3VSxJQUFBO0VBQzFCLElBQU1ILE9BQU8sR0FBRztJQUNoQixPQUFPLEVBQUUsU0FBUztJQUNsQixXQUFXLEVBQUU7RUFDZixDQUFDO0VBQ0M0VSxNQUFNLENBQUM1VSxPQUFPLENBQUNpVixLQUFLLEVBQUVDLGlDQUFlLENBQUNILEdBQUcsRUFBRUMsR0FBRyxFQUFFaFYsT0FBTyxDQUFDbVYsU0FBUyxDQUFDLENBQUM7QUFDckUsQ0FBQyxFOzs7Ozs7Ozs7Ozs7OztBQ1JNLElBQU1DLFNBQVMsR0FBRztFQUN2QkMscUJBQXFCLEVBQUUsVUFBVTtFQUNqQ0MsVUFBVSxFQUFFO0lBQUMsUUFBUSxFQUFDLFFBQVE7SUFBQyx1QkFBdUIsRUFBQyx1QkFBdUI7SUFBQyxvQkFBb0IsRUFBQyxvQkFBb0I7SUFBQyxXQUFXLEVBQUM7RUFBVztBQUNsSixDQUFDO0FBQ00sSUFBTUMsV0FBVyxHQUFHO0VBQ3pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsYUFBYSxFQUFFO0FBQ2pCLENBQUM7QUFDTSxJQUFNelYsZUFBTyxHQUFHO0VBQ3JCMFYsT0FBTyxFQUFFLENBQUMsQ0FBQztFQUNYQyxhQUFhLEVBQUUsS0FBSztFQUNwQkMsT0FBTyxFQUFFLENBQUM7SUFBQyxNQUFNLEVBQUMsSUFBSTtJQUFDLE1BQU0sRUFBQztFQUFVLENBQUMsQ0FBQztFQUMxQ0MsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGdCQUFnQixFQUFFLEtBQUs7RUFDdkJDLG1CQUFtQixFQUFFLEtBQUs7RUFDMUJDLDRCQUE0QixFQUFFLFNBQVM7RUFDdkNDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxRQUFRLEVBQUUsdUJBQXVCO0VBQ2pDQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxPQUFPLEVBQUUsK0JBQStCO0VBQ3hDQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMscUJBQXFCLEVBQUU7SUFBQyxnQkFBZ0IsRUFBQyxLQUFLO0lBQUMsbUJBQW1CLEVBQUMsS0FBSztJQUFDLGNBQWMsRUFBQyxJQUFJO0lBQUMsV0FBVyxFQUFDLGlCQUFpQjtJQUFDLGNBQWMsRUFBQyxLQUFLO0lBQUMsZ0JBQWdCLEVBQUMsRUFBRTtJQUFDLGdCQUFnQixFQUFDLEtBQUs7SUFBQyxZQUFZLEVBQUMsS0FBSztJQUFDLFdBQVcsRUFBQztFQUFJLENBQUM7RUFDL05DLGdCQUFnQixFQUFFLEtBQUs7RUFDdkJDLEdBQUcsRUFBRSxLQUFLO0VBQ1ZDLE9BQU8sRUFBRSxFQUFFO0VBQ1hDLElBQUksRUFBRTtJQUFDLFlBQVksRUFBQyxNQUFNO0lBQUMsWUFBWSxFQUFDLEtBQUs7SUFBQyxjQUFjLEVBQUMsS0FBSztJQUFDLGlCQUFpQixFQUFDO0VBQUksQ0FBQztFQUMxRkMsVUFBVSxFQUFFLElBQUk7RUFDaEI1RixLQUFLLEVBQUUsQ0FBQyxDQUFDO0VBQ1Q2RiwyQkFBMkIsRUFBRSxLQUFLO0VBQ2xDQyxvQkFBb0IsRUFBRUEsQ0FBQSxLQUFNLElBQUk7RUFDaENDLHNCQUFzQixFQUFFQSxDQUFBLEtBQU0sQ0FBQyxDQUFDO0VBQ2hDQyxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNLElBQUk7RUFDOUJDLGlCQUFpQixFQUFFLENBQUM7SUFBQyxNQUFNLEVBQUMsSUFBSTtJQUFDLE1BQU0sRUFBQztFQUFVLENBQUMsQ0FBQztFQUNwREMsV0FBVyxFQUFFLENBQUMsSUFBSTtBQUNwQixDQUFDO0FBRU0sSUFBTUMsY0FBYyxHQUFHO0VBQzVCLFVBQVUsRUFBRUMsQ0FBQSxLQUFNLG9HQUE0RjtBQUNoSCxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RDMEI7QUFDSzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsYUFBYUEsQ0FBRUMsSUFBSSxFQUFFO0VBQ25DLHNCQUFBeEksTUFBQSxDQUFzQndJLElBQUk7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsbUJBQW1CQSxDQUFFQyxLQUFLLEVBQUU7RUFDMUM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE9BQU9BLEtBQUssQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDckcsR0FBRyxDQUFDc0csR0FBRyxJQUFJQSxHQUFHLENBQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGtCQUFrQkEsQ0FBRUMsVUFBVSxFQUFFQyxjQUFjLEVBQUU7RUFDOUQ7RUFDQSxJQUFNQyxjQUFjLEdBQUcsRUFBRTs7RUFFekI7RUFDQTtFQUNBLElBQU1DLG9CQUFvQixHQUFHLEVBQUU7RUFDL0IsS0FBSyxJQUFNQyxTQUFTLElBQUlKLFVBQVUsRUFBRTtJQUNsQyxJQUFNO01BQUVLO0lBQUssQ0FBQyxHQUFHRCxTQUFTO0lBQzFCLElBQU1FLEdBQUcsR0FBR0YsU0FBUyxDQUFDRSxHQU
1FHLElBQUlELElBQUk7SUFDakNGLG9CQUFvQixDQUFDMU8sSUFBSSxDQUFDO01BQUU0TyxJQUFJO01BQUVDO0lBQUksQ0FBQyxDQUFDO0VBQzFDOztFQUVBO0VBQUEsSUFBQUMsS0FBQSxZQUFBQSxNQUFBQyxXQUFBLEVBQzZEO0lBQzNELElBQU1DLGFBQWEsR0FBR04sb0JBQW9CLENBQUNPLElBQUksQ0FBQ04sU0FBUyxJQUFJQSxTQUFTLENBQUNFLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDLENBQUMsS0FBS0gsV0FBVyxDQUFDRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILElBQUlGLGFBQWEsRUFBRTtNQUNqQlAsY0FBYyxDQUFDek8sSUFBSSxDQUFDO1FBQUU0TyxJQUFJLEVBQUVJLGFBQWEsQ0FBQ0osSUFBSTtRQUFFTyxLQUFLLEVBQUUsQ0FBQyxHQUFHQyxLQUFLLEdBQUdaLGNBQWMsQ0FBQzdYO01BQU8sQ0FBQyxDQUFDO01BQUE7SUFFN0Y7RUFDRixDQUFDO0VBTkQsS0FBSyxJQUFNLENBQUN5WSxLQUFLLEVBQUVMLFdBQVcsQ0FBQyxJQUFJUCxjQUFjLENBQUNhLE9BQU8sQ0FBQyxDQUFDO0lBQUEsSUFBQVAsS0FBQSxDQUFBQyxXQUFBLEdBSXZEO0VBQUs7O0VBSVQ7RUFBQSxJQUFBTyxNQUFBLFlBQUFBLE9BQUEsRUFDNkQ7SUFDM0QsSUFBTUMsWUFBWSxHQUFHUixZQUFXLENBQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2MsV0FBVyxDQUFDLENBQUM7SUFDNUQsSUFBTUYsYUFBYSxHQUFHTixvQkFBb0IsQ0FBQ08sSUFBSSxDQUFDTixTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsR0FBRyxDQUFDVCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNjLFdBQVcsQ0FBQyxDQUFDLEtBQUtLLFlBQVksQ0FBQztJQUN4SCxJQUFJUCxhQUFhLEVBQUU7TUFDakI7TUFDQVAsY0FBYyxDQUFDek8sSUFBSSxDQUFDO1FBQUU0TyxJQUFJLEVBQUVJLGFBQWEsQ0FBQ0osSUFBSTtRQUFFTyxLQUFLLEVBQUUsS0FBSyxHQUFHQyxNQUFLLEdBQUdaLGNBQWMsQ0FBQzdYO01BQU8sQ0FBQyxDQUFDO01BQUE7SUFFakc7RUFDRixDQUFDO0VBUkQsS0FBSyxJQUFNLENBQUN5WSxNQUFLLEVBQUVMLFlBQVcsQ0FBQyxJQUFJUCxjQUFjLENBQUNhLE9BQU8sQ0FBQyxDQUFDO0lBQUEsSUFBQUMsTUFBQSxJQU12RDtFQUFLOztFQUlUO0VBQ0EsSUFBSWIsY0FBYyxDQUFDOVgsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUM3QjhYLGNBQWMsQ0FBQ2UsSUFBSSxDQUFDLENBQUNDLE9BQU8sRUFBRUMsT0FBTyxLQUFLO01BQ3hDLElBQUlELE9BQU8sQ0FBQ04sS0FBSyxLQUFLTyxPQUFPLENBQUNQLEtBQUssRUFBRTtRQUNuQztRQUNBLE9BQU9PLE9BQU8sQ0FBQ2QsSUFBSSxDQUFDalksTUFBTSxHQUFHOFksT0FBTyxDQUFDYixJQUFJLENBQUNqWSxNQUFNO01BQ2xEO01BRUEsT0FBTytZLE9BQU8sQ0FBQ1AsS0FBSyxHQUFHTSxPQUFPLENBQUNOLEtBQUs7SUFDdEMsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxPQUFPVixjQUFjLENBQUM5WCxNQUFNLEdBQUc4WCxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUNHLElBQUksR0FBR3hPLFNBQVM7QUFDbkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTdVAsZUFBZUEsQ0FBRW5ELE9BQU8sRUFBRWIsR0FBRyxFQUFFO0VBQzdDO0VBQ0EsSUFBSWlFLElBQUk7RUFFUixJQUFJMVosSUFBYyxFQUFFO0lBQ2xCMFosSUFBSSxHQUFHelosTUFBTSxDQUFDOEosUUFBUSxDQUFDMlAsSUFBSTtFQUM3QixDQUFDLE1BQU0scUJBR047RUFFRCxJQUFJQSxJQUFJLEVBQUU7SUFDUixJQUFNQyxjQUFjLEdBQUdyRCxPQUFPLENBQUN5QyxJQUFJLENBQUNhLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxNQUFNLEtBQUtILElBQUksQ0FBQztJQUMzRCxJQUFJQyxjQUFjLEVBQUU7TUFDbEIsT0FBT0EsY0FBYyxDQUFDakIsSUFBSTtJQUM1QjtFQUNGO0VBRUEsT0FBTyxFQUFFO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU29CLGVBQWVBLENBQUVuQyxXQUFXLEVBQUU7RUFDNUMsT0FBTyxJQUFJb0MsTUFBTSxPQUFBeEssTUFBQSxDQUFPb0ksV0FBVyxDQUFDcUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFZLEdBQUcsQ0FBQztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQywyQkFBMkJBLENBQUV0QyxXQUFXLEVBQUE5VyxJQUFBLEVBQXlEO0VBQUEsSUFBdkQ7SUFBRTRWLG1CQUFtQjtJQUFFQztFQUE2QixDQUFDLEdBQUE3VixJQUFBO0VBQzdHLElBQU1xWixjQUFjLE9BQUEzSyxNQUFBLENBQU9vSSxXQUFXLENBQUNxQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQUc7RUFDbkQsSUFBTUcsb0JBQW9CLFNBQUE1SyxNQUFBLENBQVNrSCxtQkFBbUIsRUFBQWxILE1BQUEsQ0FBR21ILDRCQUE0QixPQUFJO0VBQ3pGLElBQU0wRCxVQUFVLEdBQUcsSUFBSUwsTUFBTSxJQUFBeEssTUFBQSxDQUFJa0gsbUJBQW1CLEVBQUFsSCxNQUFBLENBQUcySyxjQUFjLEVBQUEzSyxNQUFBLENBQUc0SyxvQkFBb0IsUUFBSyxHQUFHLENBQUM7RUFDckcsSUFBTUUsVUFBVSxHQUFHUCxlQUFlLENBQUNuQyxXQUFXLENBQUM7RUFDL0M7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFNMkMsa0JBQWtCLEdBQUdoYSxLQUFLLElBQUk7SUFDbEM7SUFDQSxJQUFJQSxLQUFLLENBQUM2SSxJQUFJLEVBQUU7TUFDZCxJQUFNb1IsT0FBTyxHQUFHamEsS0FBSyxDQUFDNkksSUFBSSxDQUFDcVIsS0FBSyxDQUFDSixVQUFVLENBQUM7TUFDNUMsSUFBSUcsT0FBTyxJQUFJQSxPQUFPLENBQUM5WixNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2pDLE9BQU84WixPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ25CO0lBQ0YsQ0FBQyxNQUFNLElBQUlqYSxLQUFLLENBQUNpQixJQUFJLEVBQUU7TUFDckI7TUFDQSxJQUFNZ1osUUFBTyxHQUFHamEsS0FBSyxDQUFDaUIsSUFBSSxDQUFDaVosS0FBSyxDQUFDSCxVQUFVLENBQUM7TUFDNUMsSUFBSUUsUUFBTyxJQUFJQSxRQUFPLENBQUM5WixNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2pDLE9BQU84WixRQUFPLENBQUMsQ0FBQyxDQUFDO01BQ25CO0lBQ0Y7SUFFQSxPQUFPLEVBQUU7RUFDWCxDQUFDO0VBRUQsT0FBT0Qsa0JBQWtCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxlQUFlQSxDQUFFaEYsR0FBRyxFQUFBaUYsS0FBQSxFQUF5QztFQUFBLElBQXZDO0lBQUVDLFNBQVM7SUFBRUMsU0FBUztJQUFFakQ7RUFBWSxDQUFDLEdBQUErQyxLQUFBO0VBQ3pFLElBQUlDLFNBQVMsRUFBRTtJQUNiLElBQUlFLFVBQVU7SUFFZCxJQUFJN2EsSUFBYyxFQUFFO01BQ2xCNmEsVUFBVSxHQUFHQyxtQkFBUSxDQUFDQyxHQUFHLENBQUNILFNBQVMsQ0FBQztJQUN0QyxDQUFDLE1BQU0sZ0JBR047SUFFRCxJQUFJQyxVQUFVLElBQUlsRCxXQUFXLENBQUNxRCxRQUFRLENBQUNILFVBQVUsQ0FBQyxFQUFFO01BQ2xELE9BQU9BLFVBQVU7SUFDbkI7RUFDRjtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxlQUFlQSxDQUFFQyxNQUFNLEVBQUV4RixHQUFHLEVBQUF5RixLQUFBLEVBQTJFO0VBQUEsSUFBekU7SUFBRVIsU0FBUztJQUFFUyxZQUFZO0lBQUVSLFNBQVM7SUFBRVMsWUFBWTtJQUFFQztFQUFrQixDQUFDLEdBQUFILEtBQUE7RUFDbkgsSUFBSSxDQUFDUixTQUFTLEVBQUU7SUFDZDtFQUNGO0VBQ0EsSUFBTVksSUFBSSxHQUFHLElBQUlDLElBQUksQ0FBQyxDQUFDO0VBQ3ZCO
10VBQ0EsSUFBTUMsYUFBYSxHQUFHO0lBQ3BCQyxPQUFPLEVBQUUsSUFBSUYsSUFBSSxDQUFDRCxJQUFJLENBQUNJLE9BQU8sQ0FBQ0osSUFBSSxDQUFDSyxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3JEcmEsSUFBSSxFQUFFLEdBQUc7SUFDVHNhLFFBQVEsRUFBRVAsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLEtBQUs7SUFDNUNRLE1BQU0sRUFBRVIsaUJBQWlCLElBQUlEO0VBQy9CLENBQUM7RUFFRCxJQUFJRCxZQUFZLEVBQUU7SUFDaEJLLGFBQWEsQ0FBQzVCLE1BQU0sR0FBR3VCLFlBQVk7RUFDckM7RUFFQSxJQUFJcGIsSUFBYyxFQUFFO0lBQ2xCO0lBQ0E4YSxtQkFBUSxDQUFDekksR0FBRyxDQUFDdUksU0FBUyxFQUFFTSxNQUFNLEVBQUVPLGFBQWEsQ0FBQztFQUNoRCxDQUFDLE1BQU0sZ0NBVU47QUFDSCxDOzs7Ozs7Ozs7Ozs7OztBQzVOOEI7QUFDcUI7QUFDTDtBQUM5QztBQUN1Qzs7QUFFdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFlTSxpQkFBaUJBLENBQUFwSixFQUFBLEVBQUEwQyxHQUFBO0VBQUEsT0FBQTJHLGtCQUFBLENBQUFwSixLQUFBLE9BQUEzSSxTQUFBO0FBQUE7O0FBa0R2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQSxTQUFBK1IsbUJBQUE7RUFBQUEsa0JBQUEsR0FBQW5MLDJDQUFBLENBbERPLFdBQWtDSCxPQUFPLEVBQUV3SyxNQUFNLEVBQUU7SUFDeEQsSUFBTTtNQUFFZTtJQUFJLENBQUMsR0FBR3ZMLE9BQU87SUFDdkIsSUFBTTtNQUFFd0w7SUFBSyxDQUFDLEdBQUdELEdBQUc7SUFFcEIsSUFBSSxDQUFDQyxJQUFJLENBQUNDLGVBQWUsRUFBRTtNQUN6QkQsSUFBSSxDQUFDQyxlQUFlLEdBQUcsRUFBRTtJQUMzQjtJQUVBLElBQUksQ0FBQ0QsSUFBSSxDQUFDQyxlQUFlLENBQUNuQixRQUFRLENBQUNFLE1BQU0sQ0FBQyxFQUFFO01BQzFDLElBQU1rQixZQUFZLEdBQUcxYixlQUFPLENBQUNnWCxpQkFBaUIsQ0FBQ3FCLElBQUksQ0FBQ2EsQ0FBQyxJQUFJQSxDQUFDLENBQUNsQixJQUFJLEtBQUt3QyxNQUFNLENBQUM7TUFDM0UsSUFBSWtCLFlBQVksRUFBRTtRQUNoQixJQUFNO1VBQUVDO1FBQUssQ0FBQyxHQUFHRCxZQUFZO1FBQzdCLElBQUlDLElBQUksRUFBRTtVQUNSO1VBQ0E7VUFDQSxJQUFJQyxRQUFRO1VBQ1osSUFBSXRjLElBQWMsRUFBRTtZQUNsQixJQUFNO2NBQUV1YztZQUFVLENBQUMsR0FBRzdMLE9BQU87WUFDN0IsSUFBSTZMLFNBQVMsSUFBSUEsU0FBUyxDQUFDQyxNQUFNLElBQUlELFNBQVMsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUN2QixNQUFNLENBQUMsRUFBRTtjQUNuRW9CLFFBQVEsR0FBR0MsU0FBUyxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ3ZCLE1BQU0sQ0FBQztjQUN6QztjQUNBLElBQUl4SyxPQUFPLENBQUNnTSxLQUFLLEVBQUU7Z0JBQ2pCOUUsY0FBYyxDQUFDeUUsSUFBSSxDQUFDLENBQUMsQ0FBQztjQUN4QjtZQUNGO1VBQ0Y7VUFDQSxJQUFJLENBQUNDLFFBQVEsRUFBRTtZQUNiLElBQUk7Y0FDRjtjQUNBLElBQU1LLE1BQU0sU0FBUy9FLGNBQWMsQ0FBQ3lFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ2xLLElBQUksQ0FBQ3lLLENBQUMsSUFBSUEsQ0FBQyxDQUFDOVIsT0FBTyxJQUFJOFIsQ0FBQyxDQUFDO2NBQ3JFTixRQUFRLEdBQUcsT0FBT0ssTUFBTSxLQUFLLFVBQVUsU0FBU2hiLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDK2EsTUFBTSxDQUFDak0sT0FBTyxFQUFFd0ssTUFBTSxDQUFDLENBQUMsR0FBR3lCLE1BQU07WUFDbkcsQ0FBQyxDQUFDLE9BQU9oUCxLQUFLLEVBQUU7Y0FDZDtjQUNBaEwsT0FBTyxDQUFDZ0wsS0FBSyxDQUFDbUssYUFBYSx3Q0FBQXZJLE1BQUEsQ0FBd0M1QixLQUFLLENBQUNOLE9BQU8sQ0FBRSxDQUFDLENBQUM7WUFDdEY7VUFDRjtVQUNBLElBQUlpUCxRQUFRLEVBQUU7WUFDWkosSUFBSSxDQUFDVyxnQkFBZ0IsQ0FBQzNCLE1BQU0sRUFBRW9CLFFBQVEsQ0FBQztZQUN2Q0osSUFBSSxDQUFDQyxlQUFlLENBQUNyUyxJQUFJLENBQUNvUixNQUFNLENBQUM7VUFDbkM7VUFDQTtRQUNGLENBQUMsTUFBTTtVQUNMdlksT0FBTyxDQUFDQyxJQUFJLENBQUNrVixhQUFhLHdDQUFBdkksTUFBQSxDQUF3QzJMLE1BQU0sQ0FBRSxDQUFDLENBQUM7UUFDOUU7TUFDRixDQUFDLE1BQU07UUFDTHZZLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDa1YsYUFBYSw4REFBQXZJLE1BQUEsQ0FBNkQyTCxNQUFNLE9BQUcsQ0FBQyxDQUFDO01BQ3BHO0lBQ0Y7RUFDRixDQUFDO0VBQUEsT0FBQWMsa0JBQUEsQ0FBQXBKLEtBQUEsT0FBQTNJLFNBQUE7QUFBQTtBQVdNLFNBQVM2UyxjQUFjQSxDQUFFM0YsT0FBTyxFQUFFekcsT0FBTyxFQUFFbUssVUFBVSxFQUFBaGEsSUFBQSxFQUEyQztFQUFBLElBQXpDO0lBQUVvVyxnQkFBZ0I7SUFBRVM7RUFBa0IsQ0FBQyxHQUFBN1csSUFBQTtFQUNuRyxJQUFJLE9BQU9zVyxPQUFPLEtBQUssVUFBVSxFQUFFO0lBQ2pDLE9BQU9BLE9BQU8sQ0FBQ3pHLE9BQU8sQ0FBQztFQUN6QjtFQUVBLElBQUl1RyxnQkFBZ0IsSUFBSTRELFVBQVUsRUFBRTtJQUNsQztJQUNBLElBQU1oQixNQUFNLEdBQUdrRCxtQkFBbUIsQ0FBQ2xDLFVBQVUsRUFBRW5LLE9BQU8sQ0FBQytFLEdBQUcsRUFBRTtNQUFFaUM7SUFBa0IsQ0FBQyxDQUFDO0lBQ2xGLElBQUltQyxNQUFNLEVBQUU7TUFDVixPQUFPQSxNQUFNO0lBQ2Y7RUFDRjtFQUVBLE9BQU8xQyxPQUFPO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTNEYsbUJBQW1CQSxDQUFFbEMsVUFBVSxFQUFFcEYsR0FBRyxFQUFBaUYsS0FBQSxFQUF5QjtFQUFBLElBQXZCO0lBQUVoRDtFQUFrQixDQUFDLEdBQUFnRCxLQUFBO0VBQzNFO0VBQ0UsSUFBTXNDLElBQUksR0FBR3RGLGlCQUFpQixDQUFDcUIsSUFBSSxDQUFDbUMsTUFBTSxJQUFJQSxNQUFNLENBQUN4QyxJQUFJLEtBQUttQyxVQUFVLENBQUM7RUFDekUsSUFBSW1DLElBQUksSUFBSUEsSUFBSSxDQUFDbkQsTUFBTSxFQUFFO0lBQ3ZCLElBQUlvRCwrQkFBVyxDQUFDRCxJQUFJLENBQUNuRCxNQUFNLENBQUMsRUFBRTtNQUM1QixPQUFPbUQsSUFBSSxDQUFDbkQsTUFBTTtJQUNwQjtJQUNBLElBQUlxRCxRQUFRO0lBQ1osSUFBSWxkLEtBQWMsRUFBRSxFQUVuQixNQUFNO01BQ0xrZCxRQUFRLEdBQUdqZCxNQUFNLENBQUM4SixRQUFRLENBQUNtVCxRQUFRLENBQUNoRixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25EO0lBQ0EsVUFBQTNJLE1BQUEsQ0FBVTJOLFFBQVEsU0FBQTNOLE1BQUEsQ0FBTXlOLElBQUksQ0FBQ25ELE1BQU07RUFDckM7O0VBRUE7RUFDQWxYLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDa1YsYUFBYSwwQ0FBQXZJLE1BQUEsQ0FBMENzTCxVQUFVLENBQUUsQ0FBQyxDQUFDO0FBQ3BGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTc0MsYUFBYUEsQ0FBRTdKLEtBQUssRUFBRThELElBQUksRUFBRU8sV0FBVyxFQUFFO0VBQ3ZEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFNeUYsV0FBVyxHQUFHO0lBQ2xCQyxVQUFVLEVBQUUsSUFBSTtJQUNoQmpKLEtBQUssRUFBRUEsQ0FBQSxLQUFBeEsseUJBQUEsQ0FBQUEseUJBQUEsQ0FBQUEseUJBQUEsS0FDRHdOLElBQUksQ0FBQ2tHLFVBQVUsR0FBRztNQUFFcEMsTUFBTSxFQUFFO0lBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNyQzlELElBQUksQ0FBQ21HLFlBQVksR0FBRztNQUFFakIsUUFBUSxFQUFFLENBQUM7SUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3pDbEYsSUFBSSxDQUFDb0csZUFBZSxHQUFHO01BQUVDLFdBQVcsRUFBRSxDQUFDO0lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNuRDtJQUNGQyxPQUFPLEVBQUE5VCx5QkFBQSxDQUFBQSx5QkFBQSxDQUFBQSx5QkFBQSxLQUNEd04sSUFBSSxDQUFDa0csVUFBVSxHQUNmO01BQ0VLLFNBQVNBLENBQUF4QyxLQUFBLEVBQWNELE1BQU0sRUFBRTtRQUFBLElBQXBCO1VBQUVqSDtRQUFPLENBQUMsR0FBQWtILEtBQUE7UUFDbkJsSCxNQUFNLENBQUMsV0FBVyxFQUFFaUgsTUFBTSxDQUFDO01BQzdCO0lBQ0YsQ0FBQyxHQUNELENBQUMsQ0FBQyxHQUNGOUQsSUFBSSxDQUFDbUcsWUFBWSxHQUNqQjtNQUNFSyxXQUFXQSxDQUFBQyxLQUFBLEVBQWN2QixRQUFRLEVBQUU7UUFBQSxJQUF0QjtVQUFFckk7UUFBTyxDQUFDLEdBQUE0SixLQUFBO1FBQ3JCNUosTUFBTSxDQUFDLGFBQWEsRUFBRXFJLFFBQVEsQ0FBQztNQUNqQztJQUNGLENBQUMsR0FDRCxDQUFDLENBQUMsR0FDRmxGLElBQUksQ0FBQ29HLGVBQWUsR0FDcEI7TUFDRU0sY0FBY0EsQ0FBQUMsS0FBQSxFQUFjcFAsTUFBTSxFQUFFO1FBQUEsSUFBcEI7VUFBRXNGO1FBQU8sQ0FBQyxHQUFBOEosS0FBQTtRQUN4QixJQUFJL2QsS0FBc0MsRUFBRSxFQUUzQztRQUNEaVUsTUFBTSxDQUFDLGdCQUFnQixFQUFFdEYsTUFBTSxDQUFDO01BQ2xDO0lBQ0YsQ0FBQyxHQUNELENBQUMsQ0FBQyxDQUNQO0lBQ0RxUCxTQUFTLEVBQUFwVSx5QkFBQSxDQUFBQSx5QkFBQSxDQUFBQSx5QkFBQSxLQUNId04sSUFBSSxDQUFDa0csVUFBVSxHQUNmO01BQ0VLLFNBQVNBLENBQUV2SixLQUFLLEVBQUU4RyxNQUFNLEVBQUU7UUFDeEI5RyxLQUFLLENBQUM4RyxNQUFNLEdBQUdBLE1BQU07TUFDdkI7SUFDRixDQUFDLEdBQ0QsQ0FBQyxDQUFDLEdBQ0Y5RCxJQUFJLENBQUNtRyxZQUFZLEd
1BQ2pCO01BQ0VLLFdBQVdBLENBQUV4SixLQUFLLEVBQUVrSSxRQUFRLEVBQUU7UUFDNUJsSSxLQUFLLENBQUNrSSxRQUFRLEdBQUdBLFFBQVE7TUFDM0I7SUFDRixDQUFDLEdBQ0QsQ0FBQyxDQUFDLEdBQ0ZsRixJQUFJLENBQUNvRyxlQUFlLEdBQ3BCO01BQ0VNLGNBQWNBLENBQUUxSixLQUFLLEVBQUV6RixNQUFNLEVBQUU7UUFDN0J5RixLQUFLLENBQUNxSixXQUFXLEdBQUc5TyxNQUFNO01BQzVCO0lBQ0YsQ0FBQyxHQUNELENBQUMsQ0FBQyxDQUNQO0lBQ0RzUCxPQUFPLEVBQUFyVSx5QkFBQSxLQUNEd04sSUFBSSxDQUFDb0csZUFBZSxHQUNwQjtNQUNFVSxpQkFBaUIsRUFBRUMsS0FBQSxJQUFxQjtRQUFBLElBQXBCO1VBQUVWO1FBQVksQ0FBQyxHQUFBVSxLQUFBO1FBQ2pDO1FBQ0EsSUFBTUMsWUFBWSxHQUFHbEQsTUFBTSxJQUFLdUMsV0FBVyxJQUFJQSxXQUFXLENBQUN2QyxNQUFNLENBQUMsSUFBSyxDQUFDLENBQUM7UUFDekUsT0FBT2tELFlBQVk7TUFDckI7SUFDRixDQUFDLEdBQ0QsQ0FBQyxDQUFDO0VBRVYsQ0FBQztFQUNEOUssS0FBSyxDQUFDK0ssY0FBYyxDQUFDakgsSUFBSSxDQUFDa0gsVUFBVSxFQUFFbEIsV0FBVyxFQUFFO0lBQUVtQixhQUFhLEVBQUUsQ0FBQyxDQUFDakwsS0FBSyxDQUFDYyxLQUFLLENBQUNnRCxJQUFJLENBQUNrSCxVQUFVO0VBQUUsQ0FBQyxDQUFDO0FBQ3ZHOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQWVFLFFBQVFBLENBQUFDLEdBQUE7RUFBQSxPQUFBQyxTQUFBLENBQUE5TCxLQUFBLE9BQUEzSSxTQUFBO0FBQUE7O0FBVzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBLFNBQUF5VSxVQUFBO0VBQUFBLFNBQUEsR0FBQTdOLDJDQUFBLENBWE8sV0FBeUJ5QyxLQUFLLEVBQXdDO0lBQUEsSUFBdEM0SCxNQUFNLEdBQUFqUixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFBQSxJQUFFcVMsUUFBUSxHQUFBclMsU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxJQUFJO0lBQUEsSUFBRW1OLElBQUksR0FBQW5OLFNBQUEsQ0FBQXhKLE1BQUEsT0FBQXdKLFNBQUEsTUFBQUMsU0FBQTtJQUN6RSxJQUFJa04sSUFBSSxJQUFJOUQsS0FBSyxFQUFFO01BQ2pCLElBQUk0SCxNQUFNLEtBQUssSUFBSSxJQUFJOUQsSUFBSSxDQUFDa0csVUFBVSxFQUFFO1FBQ3RDLE1BQU1oSyxLQUFLLENBQUNxTCxRQUFRLENBQUN2SCxJQUFJLENBQUNrSCxVQUFVLEdBQUcsWUFBWSxFQUFFcEQsTUFBTSxDQUFDO01BQzlEO01BQ0EsSUFBSW9CLFFBQVEsS0FBSyxJQUFJLElBQUlsRixJQUFJLENBQUNtRyxZQUFZLEVBQUU7UUFDMUMsTUFBTWpLLEtBQUssQ0FBQ3FMLFFBQVEsQ0FBQ3ZILElBQUksQ0FBQ2tILFVBQVUsR0FBRyxjQUFjLEVBQUVoQyxRQUFRLENBQUM7TUFDbEU7SUFDRjtFQUNGLENBQUM7RUFBQSxPQUFBb0MsU0FBQSxDQUFBOUwsS0FBQSxPQUFBM0ksU0FBQTtBQUFBO0FBUU0sU0FBUzJVLG1CQUFtQkEsQ0FBRW5CLFdBQVcsRUFBRTlGLFdBQVcsRUFBRTtFQUM3RCxJQUFJLENBQUNrSCxRQUFRLENBQUNwQixXQUFXLENBQUMsRUFBRTtJQUMxQjtJQUNBOWEsT0FBTyxDQUFDQyxJQUFJLENBQUNrVixhQUFhLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUMvRDtFQUNGO0VBRUEsS0FBSyxJQUFNLENBQUN6TCxHQUFHLEVBQUV5UyxLQUFLLENBQUMsSUFBSTVULE1BQU0sQ0FBQ2lPLE9BQU8sQ0FBQ3NFLFdBQVcsQ0FBQyxFQUFFO0lBQ3RELElBQUksQ0FBQzlGLFdBQVcsQ0FBQ3FELFFBQVEsQ0FBQzNPLEdBQUcsQ0FBQyxFQUFFO01BQ2hDO01BQ0UxSixPQUFPLENBQUNDLElBQUksQ0FBQ2tWLGFBQWEsdUNBQUF2SSxNQUFBLENBQXVDbEQsR0FBRyxpQ0FBOEIsQ0FBQyxDQUFDO0lBQ3RHLENBQUMsTUFBTSxJQUFJLENBQUN3UyxRQUFRLENBQUNDLEtBQUssQ0FBQyxFQUFFO01BQzdCO01BQ0VuYyxPQUFPLENBQUNDLElBQUksQ0FBQ2tWLGFBQWEsMENBQUF2SSxNQUFBLENBQTBDbEQsR0FBRyw2QkFBMEIsQ0FBQyxDQUFDO0lBQ3JHO0VBQ0Y7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVN3UyxRQUFRQSxDQUFFQyxLQUFLLEVBQUU7RUFDeEIsT0FBT0EsS0FBSyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixLQUFLLENBQUMsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUTtBQUNwRSxDOzs7Ozs7Ozs7Ozs7OztBQzdQQTtBQUMwQzs7QUFFMUM7QUFDQSxJQUFNRyxjQUFjO0VBQUEsSUFBQXBlLElBQUEsR0FBQWdRLDJDQUFBLENBQUcsV0FBT0gsT0FBTyxFQUFLO0lBQ3hDLElBQU07TUFBRXVMLEdBQUc7TUFBRWlEO0lBQU0sQ0FBQyxHQUFHeE8sT0FBTztJQUU5QixJQUFJd08sS0FBSyxFQUFFO01BQ1Q7SUFDRjtJQUVBLElBQU0sQ0FBQ0MsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsQ0FBQyxTQUFTcEQsR0FBRyxDQUFDQyxJQUFJLENBQUNvRCxZQUFZLENBQUM1TyxPQUFPLENBQUNwUSxLQUFLLENBQUM7SUFDeEYsSUFBSTZlLE1BQU0sSUFBSUMsWUFBWSxFQUFFO01BQzFCLElBQU1HLEtBQUssR0FBR0YsYUFBYSxHQUFHM08sT0FBTyxDQUFDcFEsS0FBSyxDQUFDaWYsS0FBSyxHQUFHclYsU0FBUztNQUM3RHdHLE9BQU8sQ0FBQzhPLFFBQVEsQ0FBQ0wsTUFBTSxFQUFFQyxZQUFZLEVBQUVHLEtBQUssQ0FBQztJQUMvQztFQUNGLENBQUM7RUFBQSxnQkFaS04sY0FBY0EsQ0FBQXRNLEVBQUE7SUFBQSxPQUFBOVIsSUFBQSxDQUFBK1IsS0FBQSxPQUFBM0ksU0FBQTtFQUFBO0FBQUEsR0FZbkI7QUFFRHdWLDZCQUFjLENBQUNDLFFBQVEsR0FBR1QsY0FBYyxDOzs7Ozs7Ozs7Ozs7O0FDbEJuQjtBQUNBO0FBQ3NDO0FBQ1A7QUFDcEQ7QUFDbUU7O0FBRW5FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU1UseUJBQVVBLENBQUVyZixLQUFLLEVBQUU0YSxNQUFNLEVBQUU7RUFDbEMsSUFBTTBFLGNBQWMsR0FBR0MsWUFBWSxDQUFDelYsSUFBSSxDQUFDLElBQUksRUFBRTlKLEtBQUssRUFBRTRhLE1BQU0sQ0FBQztFQUM3RCxPQUFPMEUsY0FBYyxHQUFHQSxjQUFjLENBQUN0ZixLQUFLLENBQUN3ZixRQUFRLEdBQUcsRUFBRTtBQUM1RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLFdBQVdBLENBQUV6ZixLQUFLLEVBQUU0YSxNQUFNLEVBQUU7RUFDbkMsSUFBTThFLFFBQVEsR0FBR0gsWUFBWSxDQUFDelYsSUFBSSxDQUFDLElBQUksRUFBRTlKLEtBQUssRUFBRTRhLE1BQU0sQ0FBQztFQUN2RCxPQUFPOEUsUUFBUSxHQUFHQSxRQUFRLENBQUMxZixLQUFLLEdBQUc0SixTQUFTO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUytWLGNBQWNBLENBQUUzZixLQUFLLEVBQUU0YSxNQUFNLEVBQUU7RUFDdEMsSUFBTThFLFFBQVEsR0FBR0gsWUFBWSxDQUFDelYsSUFBSSxDQUFDLElBQUksRUFBRTlKLEtBQUssRUFBRTRhLE1BQU0sQ0FBQztFQUN2RCxPQUFPOEUsUUFBUSxHQUFHQSxRQUFRLENBQUNqVyxRQUFRLEdBQUdHLFNBQVM7QU
1FDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzJWLFlBQVlBLENBQUV2ZixLQUFLLEVBQUU0YSxNQUFNLEVBQUU7RUFDcEM7RUFDQSxJQUFJLENBQUM1YSxLQUFLLEVBQUU7SUFDVjtFQUNGO0VBRUEsSUFBTTtJQUFFNGI7RUFBSyxDQUFDLEdBQUcsSUFBSTtFQUVyQmhCLE1BQU0sR0FBR0EsTUFBTSxJQUFJZ0IsSUFBSSxDQUFDaEIsTUFBTTtFQUU5QixJQUFJLENBQUNBLE1BQU0sRUFBRTtJQUNYO0VBQ0Y7O0VBRUE7RUFDQSxJQUFJLE9BQU81YSxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzdCLElBQUlBLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7TUFDcEI7TUFDQUEsS0FBSyxHQUFHO1FBQUVpQixJQUFJLEVBQUVqQjtNQUFNLENBQUM7SUFDekIsQ0FBQyxNQUFNO01BQ0w7TUFDQUEsS0FBSyxHQUFHO1FBQUU2SSxJQUFJLEVBQUU3STtNQUFNLENBQUM7SUFDekI7RUFDRjtFQUVBLElBQUlzZixjQUFjLEdBQUcxVSxNQUFNLENBQUM0SSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUV4VCxLQUFLLENBQUM7RUFFN0MsSUFBSXNmLGNBQWMsQ0FBQ3JlLElBQUksSUFBSSxDQUFDcWUsY0FBYyxDQUFDelcsSUFBSSxFQUFFO0lBQy9DLElBQU0rVyxjQUFhLEdBQUcsSUFBSSxDQUFDdlcsTUFBTSxDQUFDL0gsT0FBTyxDQUFDZ2UsY0FBYyxDQUFDLENBQUN0ZixLQUFLO0lBQy9ELElBQU02ZixpQkFBaUIsR0FBRyxJQUFJLENBQUNDLGdCQUFnQixDQUFDRixjQUFhLENBQUM7SUFDOUQsSUFBSUMsaUJBQWlCLEVBQUU7TUFDckJQLGNBQWMsR0FBRztRQUNmelcsSUFBSSxFQUFFa1gsa0JBQWtCLENBQUNGLGlCQUFpQixFQUFFakYsTUFBTSxDQUFDO1FBQ25Edk0sTUFBTSxFQUFFdVIsY0FBYSxDQUFDdlIsTUFBTTtRQUM1QjRRLEtBQUssRUFBRVcsY0FBYSxDQUFDWCxLQUFLO1FBQzFCL2QsSUFBSSxFQUFFMGUsY0FBYSxDQUFDMWU7TUFDdEIsQ0FBQztJQUNILENBQUMsTUFBTTtNQUNMLElBQU04ZSxlQUFlLEdBQUdwRixNQUFNLEtBQUt4YSxlQUFPLENBQUM2VixhQUFhO01BQ3hEO01BQ0EsSUFBTWdLLFVBQVU7TUFDWjtNQUNBLEVBQUVELGVBQWUsSUFBSSxDQUFDeEssU0FBUyxDQUFDRSxVQUFVLENBQUN3SyxxQkFBcUIsRUFBRTFLLFNBQVMsQ0FBQ0UsVUFBVSxDQUFDeUssa0JBQWtCLENBQUMsQ0FBQ3pGLFFBQVEsQ0FBQ3RhLGVBQU8sQ0FBQ2tXLFFBQVEsQ0FBQyxDQUFDO01BQ3RJO01BQ0EsRUFBRWxXLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUMwSyxTQUFTLENBQUM7T
1UFDdEQ7TUFDQSxDQUFDeEUsSUFBSSxDQUFDakYsZ0JBQWdCO01BQzFCLElBQUlzSixVQUFVLEVBQUU7UUFDZFgsY0FBYyxDQUFDcmUsSUFBSSxPQUFBZ08sTUFBQSxDQUFPMkwsTUFBTSxFQUFBM0wsTUFBQSxDQUFHcVEsY0FBYyxDQUFDcmUsSUFBSSxDQUFFO01BQzFEO01BQ0FxZSxjQUFjLENBQUNyZSxJQUFJLEdBQUcwVSxXQUFXLENBQUNFLGFBQWEsR0FBR3dLLHFDQUFpQixDQUFDZixjQUFjLENBQUNyZSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUdxZix3Q0FBb0IsQ0FBQ2hCLGNBQWMsQ0FBQ3JlLElBQUksRUFBRSxJQUFJLENBQUM7SUFDbEo7RUFDRixDQUFDLE1BQU07SUFDTCxJQUFJLENBQUNxZSxjQUFjLENBQUN6VyxJQUFJLElBQUksQ0FBQ3lXLGNBQWMsQ0FBQ3JlLElBQUksRUFBRTtNQUNoRHFlLGNBQWMsQ0FBQ3pXLElBQUksR0FBRyxJQUFJLENBQUNpWCxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DO0lBRUFSLGNBQWMsQ0FBQ3pXLElBQUksR0FBR2tYLGtCQUFrQixDQUFDVCxjQUFjLENBQUN6VyxJQUFJLEVBQUUrUixNQUFNLENBQUM7SUFFckUsSUFBTTtNQUFFdk07SUFBTyxDQUFDLEdBQUdpUixjQUFjO0lBQ2pDLElBQUlqUixNQUFNLElBQUlBLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBS3pFLFNBQVMsSUFBSXlFLE1BQU0sQ0FBQ2tTLFNBQVMsRUFBRTtNQUMzRGxTLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBR0EsTUFBTSxDQUFDa1MsU0FBUztJQUNoQztFQUNGO0VBRUEsSUFBTVgsYUFBYSxHQUFHLElBQUksQ0FBQ3ZXLE1BQU0sQ0FBQy9ILE9BQU8sQ0FBQ2dlLGNBQWMsQ0FBQztFQUN6RCxJQUFJTSxhQUFhLENBQUM1ZixLQUFLLENBQUM2SSxJQUFJLEVBQUU7SUFDNUIsT0FBTytXLGFBQWE7RUFDdEI7RUFDQTtFQUNBLE9BQU8sSUFBSSxDQUFDdlcsTUFBTSxDQUFDL0gsT0FBTyxDQUFDdEIsS0FBSyxDQUFDO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU3dnQixnQkFBZ0JBLENBQUU1RixNQUFNLEVBQUU7RUFDakMsSUFBTS9SLElBQUksR0FBRyxJQUFJLENBQUNpWCxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ3BDLElBQUksQ0FBQ2pYLElBQUksRUFBRTtJQUNULE9BQU8sRUFBRTtFQUNYO0VBRUEsSUFBTTtJQUFFK1MsSUFBSTtJQUFFNWIsS0FBSztJQUFFZ1Q7RUFBTSxDQUFDLEdBQUcsSUFBSTtFQUNuQyxJQUFNO01BQUUzRTtJQUFxQixDQUFDLEdBQUdyTyxLQUFLO0lBQW5CeWdCLFNBQVMsR0FBQUMsa0RBQUEsQ0FBSzFnQixLQUFLLEVBQUEyZ0IsU0FBQTtFQUN0QyxJQUFJQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7RUFDekIsSUFBSXhnQixlQUFPLENBQUMwVyxJQUFJLElBQUkxVyxlQUFPLENBQUMwVyxJQUFJLENBQUNvRyxlQUFlLElBQUlsSyxLQUFLLEVBQUU7SUFDekQ0TixnQkFBZ0IsR0FBRzVOLEtBQUssQ0FBQzJLLE9BQU8sSUFBQTFPLE1BQUEsQ0FBSTdPLGVBQU8sQ0FBQzBXLElBQUksQ0FBQ2tILFVBQVUsd0JBQXFCLENBQUNwRCxNQUFNLENBQUM7RUFDMUY7RUFDQSxJQUFNaUcsU0FBUyxHQUFHalcsTUFBTSxDQUFDNEksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFaU4sU0FBUyxFQUFFO0lBQzdDNVgsSUFBSTtJQUNKd0YsTUFBTSxFQUFBL0UsMkJBQUEsQ0FBQUEsMkJBQUEsQ0FBQUEsMkJBQUEsS0FDRCtFLE1BQU0sR0FDTnVTLGdCQUFnQjtNQUNuQixDQUFDLEVBQUV2UyxNQUFNLENBQUNrUztJQUFTO0VBRXZCLENBQUMsQ0FBQztFQUNGLElBQUl0ZixJQUFJLEdBQUcsSUFBSSxDQUFDb2UsVUFBVSxDQUFDd0IsU0FBUyxFQUFFakcsTUFBTSxDQUFDOztFQUU3QztFQUNBLElBQUlnQixJQUFJLENBQUNqRixnQkFBZ0IsRUFBRTtJQUN6QixJQUFNbUssZ0JBQWdCLEdBQUc7TUFDdkJuSyxnQkFBZ0IsRUFBRWlGLElBQUksQ0FBQ2pGLGdCQUFnQjtNQUN2Q1MsaUJBQWlCLEVBQUVoWCxlQUFPLENBQUNnWDtJQUM3QixDQUFDO0lBQ0QsSUFBTW1DLE1BQU0sR0FBR2tELG1CQUFtQixDQUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQ3pGLEdBQUcsRUFBRTJMLGdCQUFnQixDQUFDO0lBQ3RFLElBQUl2SCxNQUFNLEVBQUU7TUFDVnRZLElBQUksR0FBR3NZLE1BQU0sR0FBR3RZLElBQUk7SUFDdEI7RUFDRjtFQUVBLE9BQU9BLElBQUk7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM2ZSxnQkFBZ0JBLENBQUVpQixVQUFVLEVBQUU7RUFDckMsSUFBTS9nQixLQUFLLEdBQUcrZ0IsVUFBVSxLQUFLblgsU0FBUyxHQUFHbVgsVUFBVSxHQUFHLElBQUksQ0FBQy9nQixLQUFLO0VBQ2hFLElBQUksQ0FBQ0EsS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQzZJLElBQUksRUFBRTtJQUN6QjtFQUNGO0VBQ0EsT0FBTzdJLEtBQUssQ0FBQzZJLElBQUksQ0FBQytPLEtBQUssQ0FBQ3hYLGVBQU8sQ0FBQytWLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzRKLGtCQUFrQkEsQ0FBRWlCLFNBQVMsRUFBRXBHLE1BQU0sRUFBRTtFQUM5QyxJQUFJL1IsSUFBSSxHQUFHbVksU0FBUyxJQUFJNWdCLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUMwSyxTQUFTLEdBQUcsRUFBRSxHQUFHaGdCLGVBQU8sQ0FBQytWLG1CQUFtQixHQUFHeUUsTUFBTSxDQUFDO0VBRXhILElBQUlBLE1BQU0sS0FBS3hhLGVBQU8sQ0FBQzZWLGFBQWEsSUFBSTdWLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUN5SyxrQkFBa0IsRUFBRTtJQUNwR3RYLElBQUksSUFBSXpJLGVBQU8sQ0FBQytWLG1CQUFtQixHQUFHL1YsZUFBTyxDQUFDZ1csNEJBQTRCO0VBQzVFO0VBRUEsT0FBT3ZOLElBQUk7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTW9ZLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQWFDLGNBQWMsRUFBRTtFQUNqRCxPQUFPLFlBQVk7SUFDakIsSUFBTUMsS0FBSyxHQUFHO01BQ1pyQixnQkFBZ0IsRUFBRSxJQUFJLENBQUNBLGdCQUFnQjtNQUN2Q2xFLElBQUksRUFBRSxJQUFJLENBQUN3RixLQUFLO01BQ2hCL0IsVUFBVSxFQUFFLElBQUksQ0FBQ0EsVUFBVTtNQUMzQkksV0FBVyxFQUFFLElBQUksQ0FBQ0EsV0FBVztNQUM3QkUsY0FBYyxFQUFFLElBQUksQ0FBQ0EsY0FBYztNQUNuQ3hLLEdBQUcsRUFBRXpWLE1BQWMsR0FBRyxTQUFvQixHQUFHLElBQUk7TUFDakRNLEtBQUssRUFBRSxJQUFJLENBQUNpTixNQUFNO01BQ2xCNUQsTUF
1BTSxFQUFFLElBQUksQ0FBQ2dZLE9BQU87TUFDcEJyTyxLQUFLLEVBQUUsSUFBSSxDQUFDc087SUFDZCxDQUFDO0lBRUQsT0FBT0osY0FBYyxDQUFDcFgsSUFBSSxDQUFDcVgsS0FBSyxFQUFFLEdBQUd4WCxTQUFTLENBQUM7RUFDakQsQ0FBQztBQUNILENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTTRYLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQWFuUixPQUFPLEVBQUU4USxjQUFjLEVBQUU7RUFDMUQsT0FBTyxZQUFZO0lBQ2pCLElBQU07TUFBRXZGLEdBQUc7TUFBRXhHLEdBQUc7TUFBRW5WLEtBQUs7TUFBRWdUO0lBQU0sQ0FBQyxHQUFHNUMsT0FBTztJQUUxQyxJQUFNK1EsS0FBSyxHQUFHO01BQ1pyQixnQkFBZ0IsRUFBRW5FLEdBQUcsQ0FBQ21FLGdCQUFnQjtNQUN0Q2xFLElBQUksRUFBRUQsR0FBRyxDQUFDQyxJQUFJO01BQ2R5RCxVQUFVLEVBQUUxRCxHQUFHLENBQUMwRCxVQUFVO01BQzFCTSxjQUFjLEVBQUVoRSxHQUFHLENBQUNnRSxjQUFjO01BQ2xDRixXQUFXLEVBQUU5RCxHQUFHLENBQUM4RCxXQUFXO01BQzVCdEssR0FBRyxFQUFFelYsTUFBYyxHQUFHeVYsU0FBRyxHQUFHLElBQUk7TUFDaENuVixLQUFLO01BQ0xxSixNQUFNLEVBQUVzUyxHQUFHLENBQUN0UyxNQUFNO01BQ2xCMko7SUFDRixDQUFDO0lBRUQsT0FBT2tPLGNBQWMsQ0FBQ3BYLElBQUksQ0FBQ3FYLEtBQUssRUFBRSxHQUFHeFgsU0FBUyxDQUFDO0VBQ2pELENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0EsSUFBTTZYLHFCQUFNLEdBQUc7RUFDYkMsT0FBT0EsQ0FBRXhaLEdBQUcsRUFBRTtJQUNaQSxHQUFHLENBQUN5WixLQUFLLENBQUM7TUFDUjVRLE9BQU8sRUFBRTtRQUNQdU8sVUFBVSxFQUFFNEIsZ0JBQWdCLENBQUM1Qix5QkFBVSxDQUFDO1FBQ3hDSSxXQUFXLEVBQUV3QixnQkFBZ0IsQ0FBQ3hCLFdBQVcsQ0FBQztRQUMxQ0UsY0FBYyxFQUFFc0IsZ0JBQWdCLENBQUN0QixjQUFjLENBQUM7UUFDaERhLGdCQUFnQixFQUFFUyxnQkFBZ0IsQ0FBQ1QsZ0JBQWdCLENBQUM7UUFDcERWLGdCQUFnQixFQUFFbUIsZ0JBQWdCLENBQUNuQixnQkFBZ0I7TUFDckQ7SUFDRixDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7O0FBRUQ7QUFDZ0IxUCwwREFBTyxJQUFLO0VBQzFCbkksMEJBQUcsQ0FBQ0MsR0FBRyxDQUFDc1oscUJBQU0sQ0FBQztFQUNmLElBQU07SUFBRTdGLEdBQUc7SUFBRTNJO0VBQU0sQ0FBQyxHQUFHNUMsT0FBTztFQUU5QnVMLEdBQUcsQ0FBQzBELFVBQVUsR0FBR2pQLE9BQU8sQ0FBQ2lQLFVBQVUsR0FBR2tDLGdCQUFnQixDQUFDblIsT0FBTyxFQUFFaVAseUJBQVUsQ0FBQztFQUMzRTFELEdBQUcsQ0FBQzhELFdBQVcsR0FBR3JQLE9BQU8sQ0FBQ3FQLFdBQVcsR0FBRzhCLGdCQUFnQixDQUFDblIsT0FBTyxFQUFFcVAsV0FBVyxDQUFDO0VBQzlFOUQsR0FBRyxDQUFDZ0UsY0FBYyxHQUFHdlAsT0FBTyxDQUFDdVAsY0FBYyxHQUFHNEIsZ0JBQWdCLENBQUNuUixPQUFPLEVBQUV1UCxjQUFjLENBQUM7RUFDdkZoRSxHQUFHLENBQUM2RSxnQkFBZ0IsR0FBR3BRLE9BQU8sQ0FBQ29RLGdCQUFnQixHQUFHZSxnQkFBZ0IsQ0FBQ25SLE9BQU8sRUFBRW9RLGdCQUFnQixDQUFDO0VBQzdGN0UsR0FBRyxDQUFDbUUsZ0JBQWdCLEdBQUcxUCxPQUFPLENBQUMwUCxnQkFBZ0IsR0FBR3lCLGdCQUFnQixDQUFDblIsT0FBTyxFQUFFMFAsZ0JBQWdCLENBQUM7RUFFN0YsSUFBSTlNLEtBQUssRUFBRTtJQUNUQSxLQUFLLENBQUNxTSxVQUFVLEdBQUcxRCxHQUFHLENBQUMwRCxVQUFVO0lBQ2pDck0sS0FBSyxDQUFDeU0sV0FBVyxHQUFHOUQsR0FBRyxDQUFDOEQsV0FBVztJQUNuQ3pNLEtBQUssQ0FBQzJNLGNBQWMsR0FBR2hFLEdBQUcsQ0FBQ2dFLGNBQWM7SUFDekMzTSxLQUFLLENBQUN3TixnQkFBZ0IsR0FBRzdFLEdBQUcsQ0FBQzZFLGdCQUFnQjtJQUM3Q3hOLEtBQUssQ0FBQzhNLGdCQUFnQixHQUFHbkUsR0FBRyxDQUFDbUUsZ0JBQWdCO0VBQy9DO0FBQ0YsQ0FBQyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RRNkI7QUFDZ0I7QUFDQTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTNkIsWUFBWUEsQ0FBQSxFQUE2RDtFQUFBLElBQTNEO0lBQUVDLGVBQWUsR0FBRyxJQUFJO0lBQUVDLGdCQUFnQixHQUFHO0VBQU0sQ0FBQyxHQUFBbFksU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDckY7RUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDeVgsS0FBSyxFQUFFO0lBQ2YsT0FBTyxDQUFDLENBQUM7RUFDWDs7RUFFQTtFQUNBLElBQU1VLFVBQVUsR0FBRztJQUNqQkMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNiQyxJQUFJLEVBQUUsRUFBRTtJQUNSdlUsSUFBSSxFQUFFO0VBQ1IsQ0FBQztFQUVELElBQU13VSxhQUFhLEdBQUcsSUFBSSxDQUFDYixLQUFLLENBQUNjLGdCQUFnQjtFQUNqRCxJQUFNQyxnQkFBZ0IsR0FBR0YsYUFBYSxDQUFDNUosR0FBRztFQUMxQyxJQUFNK0osZ0JBQWdCLEdBQUdILGFBQWEsQ0FBQ0ksR0FBRyxJQUFJamlCLGVBQU8sQ0FBQzhWLGdCQUFnQjs7RUFFdEU7QUFDRjtBQUNBO0VBQ0UsSUFBSTBMLGVBQWUsRUFBRTtJQUNuQkUsVUFBVSxDQUFDQyxTQUFTLENBQUNNLEdBQUcsR0FBR0QsZ0JBQWdCO0VBQzdDOztFQUVBO0FBQ0Y7QUFDQTtFQUNFLElBQ0VQLGdCQUFnQjtFQUNoQjtFQUNDUyx1Q0FBTyxDQUFDQyxXQUFXLEdBQUdELHVDQUFPLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBQyxJQUNyRSxJQUFJLENBQUNwQixLQUFLLENBQUN4RyxNQUFNLElBQ2pCLElBQUksQ0FBQ3dHLEtBQUssQ0FBQ3BMLE9BQU8sSUFDbEIsSUFBSSxDQUFDbEgsUUFBUSxDQUFDMEcsU0FBUyxDQUFDQyxxQkFBcUIsQ0FBQyxLQUFLLEtBQUs7RUFDeEQ7RUFDQSxFQUFFLElBQUksQ0FBQzNHLFFBQVEsQ0FBQzBHLFNBQVMsQ0FBQ0MscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUMzRyxRQUFRLENBQUMwRyxTQUFTLENBQUNDLHFCQUFxQixDQUFDLENBQUNtQixHQUFHLEtBQUssS0FBSyxDQUFDLEVBQ2pIO0lBQ0EsSUFBSXVMLGdCQUFnQixFQUFFO01BQ3BCTCxVQUFVLENBQUNDLFNBQVMsQ0FBQ3JGLElBQUksR0FBR3lGLGdCQUFnQixFQUFDO0lBQy9DO0lBRUEsSUFBTW5NLE9BQU8sR0FBRyxtREFBb0QsSUFBSSxDQUFDb0wsS0FBSyxDQUFDcEwsT0FBUTtJQUV2RnlNLGdCQUFnQixDQUFDMVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDaU0sT0FBTyxFQUFFLElBQUksQ0FBQ29MLEtBQUssQ0FBQ3NCLFNBQVMsRUFBRVosVUFBVSxDQUFDRSxJQUFJLENBQUM7SUFDM0VXLGlCQUFpQixDQUFDNVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQ3FYLEtBQUssQ0FBQ3NCLFNBQVMsRUFBRVosVUFBVSxDQUFDRSxJQUFJLENBQUM7SUFDbkVZLGtCQUFrQixDQUFDN1ksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDa1ksYUFBYSxFQUFFRSxnQkFBZ0IsRU
1FBRUwsVUFBVSxDQUFDclUsSUFBSSxDQUFDO0lBQy9Fb1YscUJBQXFCLENBQUM5WSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUNpTSxPQUFPLEVBQUVtTSxnQkFBZ0IsRUFBRUwsVUFBVSxDQUFDclUsSUFBSSxDQUFDO0VBQzlFOztFQUVBO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVNnVixnQkFBZ0JBLENBQUV6TSxPQUFPLEVBQUVhLE9BQU8sRUFBRW1MLElBQUksRUFBRTtJQUNqRCxJQUFJNWhCLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUMwSyxTQUFTLEVBQUU7TUFDdkQ7SUFDRjtJQUNBO0lBQ0EsSUFBTTBDLFNBQVMsR0FBRyxJQUFJQyxHQUFHLENBQUMsQ0FBQztJQUMzQixLQUFLLElBQU1uSSxNQUFNLElBQUk1RSxPQUFPLEVBQUU7TUFDNUIsSUFBTWdOLFNBQVMsR0FBR3BJLE1BQU0sQ0FBQ3ZDLEdBQUc7TUFFNUIsSUFBSSxDQUFDMkssU0FBUyxFQUFFO1FBQ2Q7UUFDQTNnQixPQUFPLENBQUNDLElBQUksQ0FBQ2tWLGFBQWEsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3JGO01BQ0Y7TUFFQSxJQUFNLENBQUN5TCxRQUFRLEVBQUVDLE1BQU0sQ0FBQyxHQUFHRixTQUFTLENBQUNwTCxLQUFLLENBQUMsR0FBRyxDQUFDO01BRS9DLElBQUlxTCxRQUFRLElBQUlDLE1BQU0sS0FBS3RJLE1BQU0sQ0FBQ3VJLGdCQUFnQixJQUFJLENBQUNMLFNBQVMsQ0FBQ00sR0FBRyxDQUFDSCxRQUFRLENBQUMsQ0FBQyxFQUFFO1FBQy9FSCxTQUFTLENBQUMvUSxHQUFHLENBQUNrUixRQUFRLEVBQUVySSxNQUFNLENBQUM7TUFDakM7TUFFQWtJLFNBQVMsQ0FBQy9RLEdBQUcsQ0FBQ2lSLFNBQVMsRUFBRXBJLE1BQU0sQ0FBQztJQUNsQztJQUVBLEtBQUssSUFBTSxDQUFDdkMsR0FBRyxFQUFFZ0wsU0FBUyxDQUFDLElBQUlQLFNBQVMsQ0FBQ2pLLE9BQU8sQ0FBQyxDQUFDLEVBQUU7TUFDbEQsSUFBTXdHLFVBQVUsR0FBRyxJQUFJLENBQUNtQixnQkFBZ0IsQ0FBQzZDLFNBQVMsQ0FBQ2pMLElBQUksQ0FBQztNQUN4RCxJQUFJaUgsVUFBVSxFQUFFO1FBQ2QyQyxJQUFJLENBQUN4WSxJQUFJLENBQUM7VUFDUjhaLEdBQUcsY0FBQXJVLE1BQUEsQ0FBY29KLEdBQUcsQ0FBRTtVQUN0QmtMLEdBQUcsRUFBRSxXQUFXO1VBQ2hCQyxJQUFJLEVBQUVDLGFBQWEsQ0FBQ3BFLFVBQVUsRUFBRXhJLE9BQU8sQ0FBQztVQUN4QzZNLFFBQVEsRUFBRXJMO1FBQ1osQ0FBQyxDQUFDO01BQ0o7SUFDRjtJQUVBLElBQUlqWSxlQUFPLENBQUM2VixhQUFhLEVBQUU7TUFDekIsSUFBTW9KLFdBQVUsR0FBRyxJQUFJLENBQUNtQixnQkFBZ0IsQ0FBQ3BnQixlQUFPLENBQUM2VixhQUFhLENBQUM7TUFDL0QsSUFBSW9KLFdBQVUsRUFBRTtRQUNkMkMsSUFBSSxDQUFDeFksSUFBSSxDQUFDO1VBQ1I4WixHQUFHLEVBQUUsU0FBUztVQUNkQyxHQUFHLEVBQUUsV0FBVztVQUNoQkMsSUFBSSxFQUFFQyxhQUFhLENBQUNwRSxXQUFVLEVBQUV4SSxPQUFPLENBQUM7VUFDeEM2TSxRQUFRLEVBQUU7UUFDWixDQUFDLENBQUM7TUFDSjtJQUNGO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU2YsaUJBQWlCQSxDQUFFOUwsT0FBTyxFQUFFbUwsSUFBSSxFQUFFO0lBQ3pDLElBQU0yQixZQUFZLEdBQUcsSUFBSSxDQUFDbEUsV0FBVyxDQUFBblcsc0JBQUEsQ0FBQUEsc0JBQUEsS0FDaEMsSUFBSSxDQUFDMkQsTUFBTTtNQUNkcEUsSUFBSSxFQUFFLElBQUksQ0FBQ2lYLGdCQUFnQixDQUFDO0lBQUMsRUFDOUIsQ0FBQztJQUVGLElBQU04RCxhQUFhLEdBQUdELFlBQVksR0FBR0EsWUFBWSxDQUFDMWlCLElBQUksR0FBRyxJQUFJO0lBRTdELElBQUkyaUIsYUFBYSxFQUFFO01BQ2pCNUIsSUFBSSxDQUFDeFksSUFBSSxDQUFDO1FBQ1I4WixHQUFHLEVBQUUsVUFBVTtRQUNmQyxHQUFHLEVBQUUsV0FBVztRQUNoQkMsSUFBSSxFQUFFQyxhQUFhLENBQUNHLGFBQWEsRUFBRS9NLE9BQU87TUFDNUMsQ0FBQyxDQUFDO0lBQ0o7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVMrTCxrQkFBa0JBLENBQUVYLGFBQWEsRUFBRUUsZ0JBQWdCLEVBQUUxVSxJQUFJLEVBQUU7SUFDbEUsSUFBTW9XLHNCQUFzQixHQUFHNUIsYUFBYSxJQUFJRSxnQkFBZ0I7SUFFaEUsSUFBSSxDQUFDMEIsc0JBQXNCLEVBQUU7TUFDM0I7SUFDRjtJQUVBcFcsSUFBSSxDQUFDakUsSUFBSSxDQUFDO01BQ1I4WixHQUFHLEVBQUUsU0FBUztNQUNkUSxRQUFRLEVBQUUsV0FBVztNQUNyQjtNQUNBcFcsT0FBTyxFQUFFcVcsaUJBQWlCLENBQUM1QixnQkFBZ0I7SUFDN0MsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRSxTQUFTVSxxQkFBcUJBLENBQUU3TSxPQUFPLEVBQUVtTSxnQkFBZ0IsRUFBRTFVLElBQUksRUFBRTtJQUMvRCxJQUFNdVcscUJBQXFCLEdBQUdoTyxPQUFPLENBQUNpTyxNQUFNLENBQUNySixNQUFNLElBQUk7TUFDckQsSUFBTW9JLFNBQVMsR0FBR3BJLE1BQU0sQ0FBQ3ZDLEdBQUc7TUFDNUIsT0FBTzJLLFNBQVMsSUFBSUEsU0FBUyxLQUFLYixnQkFBZ0I7SUFDcEQsQ0FBQyxDQUFDO0lBRUYsSUFBSTZCLHFCQUFxQixDQUFDN2pCLE1BQU0sRUFBRTtNQUNoQyxJQUFNK2pCLGdCQUFnQixHQUFHRixxQkFBcUIsQ0FBQ3pTLEdBQUcsQ0FBQ3FKLE1BQU0sS0FBSztRQUM1RDBJLEdBQUcsaUJBQUFyVSxNQUFBLENBQWlCMkwsTUFBTSxDQUFDdkMsR0FBRyxDQUFFO1FBQ2hDeUwsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQnBXLE9BQU8sRUFBRXFXLGlCQUFpQixDQUFDbkosTUFBTSxDQUFDdkMsR0FBRztNQUN2QyxDQUFDLENBQUMsQ0FBQztNQUVINUssSUFBSSxDQUFDakUsSUFBSSxDQUFDLEdBQUcwYSxnQkFBZ0IsQ0FBQztJQUNoQztFQUNGOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsU0FBU0gsaUJBQWlCQSxDQUFFSSxHQUFHLEVBQUU7SUFDL0IsT0FBTyxDQUFDQSxHQUFHLElBQUksRUFBRSxFQUFFamlCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0VBQ3ZDOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsU0FBU3VoQixhQUFhQSxDQUFFVyxTQUFTLEVBQUV2TixPQUFPLEVBQUU7SUFDMUMsSUFBSXVOLFNBQVMsQ0FBQ2xLLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRTtNQUNuQyxPQUFPa0ssU0FBUztJQUNsQjtJQUNBLE9BQU92TixPQUFPLEdBQUd1TixTQUFTO0VBQzVCO0VBRUEsT0FBT3RDLFVBQVU7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTdUMsV0FBV0EsQ0FBQSxFQUFJO0VBQzdCLE9BQU8xQyxZQUFZLENBQUM3WCxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQUU4WCxlQUFlLEVBQUUsS0FBSztJQUFFQyxnQkFBZ0IsRU
1FBRTtFQUFLLENBQUMsQ0FBQztBQUNwRixDOzs7Ozs7Ozs7Ozs7OztBQ3ROcUI7QUFDUztBQUN5QjtBQUNJO0FBU3BDO0FBQ29FO0FBQzNGO0FBQ21DO0FBQ25DO0FBQ21DO0FBRW5DNVosMEJBQUcsQ0FBQ0MsR0FBRyxDQUFDb2MsK0JBQU8sQ0FBQzs7QUFFaEI7QUFDQTtFQUFBLElBQUEvakIsSUFBQSxHQUFBZ1EsMkNBQUEsQ0FBZSxXQUFPSCxPQUFPLEVBQUs7SUFDaEMsSUFBTTtNQUFFdUwsR0FBRztNQUFFM2IsS0FBSztNQUFFZ1QsS0FBSztNQUFFbUMsR0FBRztNQUFFQyxHQUFHO01BQUU4SjtJQUFTLENBQUMsR0FBRzlPLE9BQU87SUFFekQsSUFBSWhRLGVBQU8sQ0FBQzBXLElBQUksSUFBSTlELEtBQUssRUFBRTtNQUN6QjZKLGFBQWEsQ0FBQzdKLEtBQUssRUFBRTVTLGVBQU8sQ0FBQzBXLElBQUksRUFBRTFXLGVBQU8sQ0FBQ2lYLFdBQVcsQ0FBQztJQUN6RDtJQUVBLElBQU07TUFBRWQ7SUFBSyxDQUFDLEdBQUduVyxlQUFPO0lBQ3hCLElBQU1ta0IsaUJBQWlCLEdBQUdoTyxJQUFJLEtBQUtBLElBQUksS0FBSyxJQUFJLElBQUlBLElBQUksQ0FBQ2lPLGFBQWEsS0FBSyxJQUFJLENBQUM7SUFFaEYsSUFBSTlrQixLQUFtQyxFQUFFLGdCQW9CeEM7SUFFRCxJQUFNO01BQ0ora0IsY0FBYztNQUNkQyxjQUFjO01BQ2RDLGNBQWM7TUFDZEMsVUFBVTtNQUNWdkssU0FBUztNQUNUQyxTQUFTO01BQ1RRLFlBQVk7TUFDWkMsWUFBWTtNQUNaQztJQUNGLENBQUMsR0FBRywyRUFBNEU1YSxlQUFPLENBQUNzVyxxQkFBc0I7O0lBRTlHO0FBQ0Y7QUFDQTtBQUNBO0lBQ0UsSUFBTW1PLGdCQUFnQjtNQUFBLElBQUFoSyxLQUFBLEdBQUF0SywyQ0FBQSxDQUFHLFdBQU91VSxTQUFTLEVBQW9DO1FBQUEsSUFBbEM7VUFBRUMsWUFBWSxHQUFHO1FBQU0sQ0FBQyxHQUFBcGIsU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDbWIsU0FBUyxFQUFFO1VBQ2Q7UUFDRjs7UUFFQTtRQUNBLElBQUksQ0FBQ0MsWUFBWSxJQUFJcEosR0FBRyxDQUFDQyxJQUFJLENBQUNqRixnQkFBZ0IsRUFBRTtVQUM5QztRQUNGO1FBRUEsSUFBTXFPLFNBQVMsR0FBR3JKLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDaEIsTUFBTTtRQUVqQyxJQUFJa0ssU0FBUyxLQUFLRSxTQUFTLEVBQUU7VUFDM0I7UUFDRjtRQUVBLElBQU1DLGNBQWMsR0FBR3RKLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDMUUsc0JBQXNCLENBQUM4TixTQUFTLEVBQUVGLFNBQVMsRUFBRUMsWUFBWSxFQUFFM1UsT0FBTyxDQUFDO1FBQ25HLElBQUk2VSxjQUFjLElBQUl0SixHQUFHLENBQUNDLElBQUksQ0FBQ3ZFLFdBQVcsQ0FBQ3FELFFBQVEsQ0FBQ3VLLGNBQWMsQ0FBQyxFQUFFO1VBQ25FLElBQUlBLGNBQWMsS0FBS0QsU0FBUyxFQUFFO1lBQ2hDO1VBQ0Y7VUFDQUYsU0FBUyxHQUFHRyxjQUFjO1FBQzVCO1FBRUEsSUFBSSxDQUFDRixZQUFZLEVBQUU7VUFDakJwSixHQUFHLENBQUNDLElBQUksQ0FBQzNFLG9CQUFvQixDQUFDK04sU0FBUyxFQUFFRixTQUFTLENBQUM7UUFDckQ7UUFFQSxJQUFJekssU0FBUyxFQUFFO1VBQ2JzQixHQUFHLENBQUNDLElBQUksQ0FBQ2pCLGVBQWUsQ0FBQ21LLFNBQVMsQ0FBQztRQUNyQztRQUVBLElBQUkxa0IsZUFBTyxDQUFDb1csT0FBTyxFQUFFO1VBQ25CLElBQU0wTyxrQkFBa0IsR0FBR3ZKLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDOEksY0FBYztVQUVsRCxJQUFJdGtCLGVBQU8sQ0FBQ21XLElBQUksRUFBRTtZQUNoQjtZQUNBLElBQUkyTyxrQkFBa0IsRUFBRTtjQUN4QjtjQUNFLElBQUlDLHFCQUFxQixHQUFHLEVBQUU7Y0FDOUIsSUFBSTFHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDd0csa0JBQWtCLENBQUMsRUFBRTtnQkFDckNDLHFCQUFxQixHQUFHRCxrQkFBa0IsQ0FBQzNULEdBQUcsQ0FBQzZULFFBQVEsSUFBSTNKLGlCQUFpQixDQUFDckwsT0FBTyxFQUFFZ1YsUUFBUSxDQUFDLENBQUM7Y0FDbEcsQ0FBQyxNQUFNLElBQUksT0FBT0Ysa0JBQWtCLEtBQUssUUFBUSxFQUFFO2dCQUNqRCxJQUFJQSxrQkFBa0IsQ0FBQ0osU0FBUyxDQUFDLEVBQUU7a0JBQ2pDSyxxQkFBcUIsR0FBR0EscUJBQXFCLENBQUNsVyxNQUFNLENBQUNpVyxrQkFBa0IsQ0FBQ0osU0FBUyxDQUFDLENBQUN2VCxHQUFHLENBQUM2VCxRQUFRLElBQUkzSixpQkFBaUIsQ0FBQ3JMLE9BQU8sRUFBRWdWLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQzNJO2dCQUNBLElBQUlGLGtCQUFrQixDQUFDMWEsT0FBTyxFQUFFO2tCQUM5QjJhLHFCQUFxQixHQUFHQSxxQkFBcUIsQ0FBQ2xXLE1BQU0sQ0FBQ2lXLGtCQUFrQixDQUFDMWEsT0FBTyxDQUFDK0csR0FBRyxDQUFDNlQsUUFBUSxJQUFJM0osaUJBQWlCLENBQUNyTCxPQUFPLEVBQUVnVixRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN4STtjQUNGLENBQUMsTUFBTSxJQUFJTixTQUFTLEtBQUtJLGtCQUFrQixFQUFFO2dCQUMzQ0MscUJBQXFCLENBQUMzYixJQUFJLENBQUNpUyxpQkFBaUIsQ0FBQ3JMLE9BQU8sRUFBRThVLGtCQUFrQixDQUFDLENBQUM7Y0FDNUU7Y0FDQSxNQUFNN2pCLE9BQU8sQ0FBQzRRLEdBQUcsQ0FBQ2tULHFCQUFxQixDQUFDO1lBQzFDO1lBQ0EsTUFBTTFKLGlCQUFpQixDQUFDckwsT0FBTyxFQUFFMFUsU0FBUyxDQUFDO1VBQzdDLENBQUMsTUFBTTtZQUNMO1lBQ0EsTUFBTXpqQixPQUFPLENBQUM0USxHQUFHLENBQUM3UixlQUFPLENBQUNpWCxXQUFXLENBQUM5RixHQUFHLENBQUNxSixNQUFNLElBQUlhLGlCQUFpQixDQUFDckwsT0FBTyxFQUFFd0ssTUFBTSxDQUFDLENBQUMsQ0FBQztVQUMxRjtRQUNGO1FBRUFlLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDaEIsTUFBTSxHQUFHa0ssU0FBUztRQUMzQjtRQUNBLElBQU1PLG1CQUFtQixHQUFHamxCLGVBQU8sQ0FBQ2dYLGlCQUFpQixDQUFDcUIsSUFBSSxDQUFDYSxDQUFDLElBQUlBLENBQUMsQ0FBQ2xCLElBQUksS0FBSzBNLFNBQVMsQ0FBQyxJQUFJO1VBQUUxTSxJQUFJLEVBQUUwTTtRQUFVLENBQUM7UUFDNUc7UUFDQSxLQUFLLElBQU0vWSxHQUFHLElBQUluQixNQUFNLENBQUMwYSxJQUFJLENBQUMzSixHQUFHLENBQUNDLElBQUksQ0FBQ3NHLGdCQUFnQixDQUFDLEVBQUU7VUFDeER2RyxHQUFHLENBQUNDLElBQUksQ0FBQ3NHLGdCQUFnQixDQUFDblcsR0FBRyxDQUFDLEdBQUduQyxTQUFTO1FBQzVDO1FBQ0E7UUFDQSxLQUFLLElBQU0sQ0FBQ21DLElBQUcsRUFBRXlTLEtBQUssQ0FBQyxJQUFJNVQsTUFBTSxDQUFDaU8sT0FBTyxDQUFDd00sbUJBQW1CLENBQUMsRUFBRTtVQUM5RHBkLDBCQUFHLENBQUM4SixHQUFHLENBQUM0SixHQUFHLENBQUNDLElBQUksQ0FBQ3NHLGdCQUFnQixFQUFFblcsSUFBRyxFQUFFd1osNkJBQUssQ0FBQy9HLEtBQUssQ0FBQyxDQUFDO1F
1BQ3ZEO1FBRUEsSUFBSXBlLGVBQU8sQ0FBQzBXLElBQUksRUFBRTtVQUNoQixNQUFNb0gsUUFBUSxDQUFDbEwsS0FBSyxFQUFFOFIsU0FBUyxFQUFFbkosR0FBRyxDQUFDQyxJQUFJLENBQUM0SixnQkFBZ0IsQ0FBQ1YsU0FBUyxDQUFDLEVBQUUxa0IsZUFBTyxDQUFDMFcsSUFBSSxDQUFDO1FBQ3RGOztRQUVBO1FBQ0EsSUFBTTtVQUFFOVc7UUFBTSxDQUFDLEdBQUdvUSxPQUFPO1FBQ3pCLElBQU0wTyxZQUFZLEdBQUcyRyx3QkFBd0IsQ0FBQ3psQixLQUFLLEVBQUU4a0IsU0FBUyxDQUFDO1FBRS9ELElBQUlDLFlBQVksRUFBRTtVQUNoQjtVQUNBO1VBQ0FwSixHQUFHLENBQUNDLElBQUksQ0FBQzhKLFVBQVUsR0FBRzVHLFlBQVk7UUFDcEMsQ0FBQyxNQUFNO1VBQ0xuRCxHQUFHLENBQUNDLElBQUksQ0FBQ3pFLGtCQUFrQixDQUFDNk4sU0FBUyxFQUFFRixTQUFTLENBQUM7VUFFakQsSUFBSWhHLFlBQVksRUFBRTtZQUNoQkksUUFBUSxDQUFDSixZQUFZLENBQUM7VUFDeEI7UUFDRjtNQUNGLENBQUM7TUFBQSxnQkE1RksrRixnQkFBZ0JBLENBQUE5UCxHQUFBO1FBQUEsT0FBQThGLEtBQUEsQ0FBQXZJLEtBQUEsT0FBQTNJLFNBQUE7TUFBQTtJQUFBLEdBNEZyQjtJQUVELElBQU1xUSxrQkFBa0IsR0FBR0wsMkJBQTJCLENBQUN2WixlQUFPLENBQUNpWCxXQUFXLEVBQUU7TUFDMUVsQixtQkFBbUIsRUFBRS9WLGVBQU8sQ0FBQytWLG1CQUFtQjtNQUNoREMsNEJBQTRCLEVBQUVoVyxlQUFPLENBQUNnVztJQUN4QyxDQUFDLENBQUM7O0lBRUY7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDRSxJQUFNcVAsd0JBQXdCLEdBQUdBLENBQUN6bEIsS0FBSyxFQUFFNGEsTUFBTSxLQUFLO01BQ2xEO01BQ0EsSUFBSWxiLEtBQWdDLEVBQUUsRUFFckM7TUFFRCxJQUFJLENBQUNrYixNQUFNLElBQUllLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDakYsZ0JBQWdCLElBQUl2VyxlQUFPLENBQUNrVyxRQUFRLEtBQUtkLFNBQVMsQ0FBQ0UsVUFBVSxDQUFDMEssU0FBUyxFQUFFO1FBQy9GLE9BQU8sRUFBRTtNQUNYO01BRUEsSUFBSXBHLGtCQUFrQixDQUFDaGEsS0FBSyxDQUFDLEtBQUs0YSxNQUFNLEVBQUU7UUFDeEM7UUFDQTtRQUNBLElBQUksRUFBRWdLLFVBQVUsSUFBSUQsY0FBYyxDQUFDLElBQUkvSixNQUFNLEtBQUt4YSxlQUFPLENBQUM2VixhQUFhLElBQUk3VixlQUFPLENBQUNrVyxRQUFRLEtBQUtkLFNBQVMsQ0FBQ0UsVUFBVSxDQUFDeUssa0JBQWtCLEVBQUU7VUFDdkksT0FBTyxFQUFFO1FBQ1g7TUFDRjs7TUFFQTtNQUNBLElBQUlyQixZQUFZLEdBQUduRCxHQUFHLENBQUM2RSxnQkFBZ0IsQ0FBQzVGLE1BQU0sQ0FBQztNQUUvQyxJQUFJLENBQUNrRSxZQUFZLEVBQUU7UUFDakI7UUFDQUEsWUFBWSxHQUFHbkQsR0FBRyxDQUFDMEQsVUFBVSxDQUFDcmYsS0FBSyxDQUFDd2YsUUFBUSxFQUFFNUUsTUFBTSxDQUFDO01BQ3ZEO01BRUEsSUFBSSxDQUFDa0UsWUFBWSxJQUFJQSxZQUFZLEtBQUs5ZSxLQUFLLENBQUN3ZixRQUFRLElBQUlWLFlBQVksQ0FBQzZHLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNyRixPQUFPLEVBQUU7TUFDWDtNQUVBLE9BQU83RyxZQUFZO0lBQ3JCLENBQUM7O0lBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtJQUNFLElBQU04RyxVQUFVO01BQUEsSUFBQXJJLEtBQUEsR0FBQWhOLDJDQUFBLENBQUcsV0FBTXZRLEtBQUssRUFBSTtRQUNoQztRQUNBLElBQUlBLEtBQUssQ0FBQ2lCLElBQUksS0FBSyxHQUFHLElBQUliLGVBQU8sQ0FBQ3FXLFlBQVksRUFBRTtVQUM5QyxJQUFJekosVUFBVSxHQUFHLEdBQUc7VUFDcEIsSUFBSS9MLElBQUksR0FBR2IsZUFBTyxDQUFDcVcsWUFBWTtVQUUvQixJQUFJLE9BQU9yVyxlQUFPLENBQUNxVyxZQUFZLEtBQUssUUFBUSxFQUFFO1lBQzVDekosVUFBVSxHQUFHNU0sZUFBTyxDQUFDcVcsWUFBWSxDQUFDekosVUFBVTtZQUM1Qy9MLElBQUksR0FBR2IsZUFBTyxDQUFDcVcsWUFBWSxDQUFDeFYsSUFBSTtVQUNsQztVQUVBLE9BQU8sQ0FBQytMLFVBQVUsTUFBQWlDLE1BQUEsQ0FBTWhPLElBQUksR0FBSSxvQkFBb0IsSUFBSSxDQUFDO1FBQzNEO1FBRUEsSUFBTTRrQixjQUFjLEdBQUdsSyxHQUFHLENBQUNDLElBQUksQ0FBQzhKLFVBQVU7UUFDMUMsSUFBSUcsY0FBYyxFQUFFO1VBQ2xCbEssR0FBRyxDQUFDQyxJQUFJLENBQUM4SixVQUFVLEdBQUcsSUFBSTtVQUMxQixPQUFPLENBQUMsR0FBRyxFQUFFRyxjQUFjLENBQUM7UUFDOUI7UUFFQSxJQUFNQyxxQkFBcUIsR0FBRztVQUM1Qm5QLGdCQUFnQixFQUFFdlcsZUFBTyxDQUFDdVcsZ0JBQWdCO1VBQzFDUyxpQkFBaUIsRUFBRWhYLGVBQU8sQ0FBQ2dYO1FBQzdCLENBQUM7UUFDRHVFLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDOEcsU0FBUyxHQUFHbEcsY0FBYyxDQUFDcGMsZUFBTyxDQUFDeVcsT0FBTyxFQUFFekcsT0FBTyxFQUFFdUwsR0FBRyxDQUFDQyxJQUFJLENBQUNoQixNQUFNLEVBQUVrTCxxQkFBcUIsQ0FBQztRQUVyRyxJQUFNQyxXQUFXLEdBQ2QzbEIsZUFBTyxDQUFDc1cscUJBQXFCLElBQUlzUCx1QkFBdUIsQ0FBQ2htQixLQUFLLENBQUMsSUFDaEVnYSxrQkFBa0IsQ0FBQ2hhLEtBQUssQ0FBQyxJQUFJMmIsR0FBRyxDQUFDQyxJQUFJLENBQUNoQixNQUFNLElBQUllLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDM0YsYUFBYSxJQUFJLEVBQUU7UUFFOUUsSUFBSTdWLGVBQU8sQ0FBQzRXLDJCQUEyQixFQUFFO1VBQ3ZDMkUsR0FBRyxDQUFDQyxJQUFJLENBQUNxSyxlQUFlLEdBQUdGLFdBQVc7VUFDdENwSyxHQUFHLENBQUNDLElBQUksQ0FBQ3NLLHNCQUFzQixHQUFHLElBQUk3a0IsT0FBTyxDQUFDQyxPQUFPLElBQUk7WUFDdkRxYSxHQUFHLENBQUNDLElBQUksQ0FBQ3VLLDZCQUE2QixHQUFHN2tCLE9BQU87VUFDbEQsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNO1VBQ0wsTUFBTXFhLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDeUIsU0FBUyxDQUFDMEksV0FBVyxDQUFDO1FBQ3ZDO1FBRUEsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7T
1UFDckIsQ0FBQztNQUFBLGdCQXhDS0gsVUFBVUEsQ0FBQXpILEdBQUE7UUFBQSxPQUFBWixLQUFBLENBQUFqTCxLQUFBLE9BQUEzSSxTQUFBO01BQUE7SUFBQSxHQXdDZjtJQUVELElBQU15YywyQkFBMkI7TUFBQSxJQUFBM0ksS0FBQSxHQUFBbE4sMkNBQUEsQ0FBRyxhQUFZO1FBQzlDLElBQUksQ0FBQ29MLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDcUssZUFBZSxFQUFFO1VBQzdCO1FBQ0Y7UUFDQSxNQUFNdEssR0FBRyxDQUFDQyxJQUFJLENBQUN5QixTQUFTLENBQUMxQixHQUFHLENBQUNDLElBQUksQ0FBQ3FLLGVBQWUsQ0FBQztRQUNsRHRLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDdUssNkJBQTZCLENBQUMsRUFBRSxDQUFDO1FBQzFDeEssR0FBRyxDQUFDQyxJQUFJLENBQUNxSyxlQUFlLEdBQUcsSUFBSTtNQUNqQyxDQUFDO01BQUEsZ0JBUEtHLDJCQUEyQkEsQ0FBQTtRQUFBLE9BQUEzSSxLQUFBLENBQUFuTCxLQUFBLE9BQUEzSSxTQUFBO01BQUE7SUFBQSxHQU9oQztJQUVELElBQU0wYywwQkFBMEI7TUFBQSxJQUFBeEksS0FBQSxHQUFBdE4sMkNBQUEsQ0FBRyxhQUFZO1FBQzdDLElBQUlvTCxHQUFHLENBQUNDLElBQUksQ0FBQ3FLLGVBQWUsRUFBRTtVQUM1QixNQUFNdEssR0FBRyxDQUFDQyxJQUFJLENBQUNzSyxzQkFBc0I7UUFDdkM7TUFDRixDQUFDO01BQUEsZ0JBSktHLDBCQUEwQkEsQ0FBQTtRQUFBLE9BQUF4SSxLQUFBLENBQUF2TCxLQUFBLE9BQUEzSSxTQUFBO01BQUE7SUFBQSxHQUkvQjtJQUVELElBQU0yYyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO01BQzdCLElBQUk1bUIsS0FBYyxJQUFJLE9BQU9xUixTQUFTLEtBQUssV0FBVyxJQUFJQSxTQUFTLENBQUN3VixTQUFTLEVBQUU7UUFDN0U7UUFDQSxPQUFPek8sa0JBQWtCLENBQUMxWCxlQUFPLENBQUNnWCxpQkFBaUIsRUFBRXJHLFNBQVMsQ0FBQ3dWLFNBQVMsQ0FBQztNQUMzRSxDQUFDLE1BQU0sSUFBSXBSLEdBQUcsSUFBSSxPQUFPQSxHQUFHLENBQUNxUixPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDdkUsT0FBTzFPLGtCQUFrQixDQUFDMVgsZUFBTyxDQUFDZ1gsaUJBQWlCLEVBQUVNLG1CQUFtQixDQUFDdkMsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztNQUMzRyxDQUFDLE1BQU07UUFDTCxPQUFPNWMsU0FBUztNQUNsQjtJQUNGLENBQUM7O0lBRUQ7QUFDRjtBQUNBO0FBQ0E7SUFDRSxJQUFNb2MsdUJBQXVCLEdBQUdobUIsS0FBSyxJQUFJO01BQ3ZDO01BQ0EsSUFBSU4sS0FBZ0MsRUFBRSxFQUVyQztNQUVELElBQUlVLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUMwSyxTQUFTLEVBQUU7UUFDdkQsSUFBSXdFLFVBQVUsRUFBRTtVQUNkLElBQUk1a0IsS0FBSyxDQUFDaUIsSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUN0QixPQUFPLEVBQUU7VUFDWDtRQUNGLENBQUMsTUFBTSxJQUFJMGpCLGNBQWMsRUFBRTtVQUN6QixJQUFJLENBQUNGLGNBQWMsSUFBSXprQixLQUFLLENBQUNpQixJQUFJLENBQUNpWixLQUFLLENBQUNWLGVBQWUsQ0FBQ3BaLGVBQU8sQ0FBQ2lYLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDN0UsT0FBTyxFQUFFO1VBQ1g7UUFDRjtNQUNGO01BRUEsSUFBSW1CLGFBQWE7TUFFakIsSUFBSTZCLFNBQVMsS0FBSzdCLGFBQWEsR0FBR21ELEdBQUcsQ0FBQ0MsSUFBSSxDQUFDekIsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzdEO01BQUEsQ0FDRCxNQUFNO1FBQ0w7UUFDQTNCLGFBQWEsR0FBRzhOLGdCQUFnQixDQUFDLENBQUM7TUFDcEM7TUFFQSxJQUFNUCxXQUFXLEdBQUd2TixhQUFhLElBQUlrTSxjQUFjOztNQUVuRDtNQUNBLElBQUlxQixXQUFXLEtBQUssQ0FBQzFMLFNBQVMsSUFBSW9LLGNBQWMsSUFBSSxDQUFDOUksR0FBRyxDQUFDQyxJQUFJLENBQUN6QixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEYsSUFBSTRMLFdBQVcsS0FBS3BLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDaEIsTUFBTSxFQUFFO1VBQ25DLE9BQU9tTCxXQUFXO1FBQ3BCO01BQ0Y7TUFFQSxPQUFPLEVBQUU7SUFDWCxDQUFDOztJQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7SUFDRSxJQUFNVSxxQkFBcUIsR0FBRzdLLElBQUksSUFBSTtNQUNwQ0EsSUFBSSxDQUFDNUYsT0FBTyxHQUFHdVAsNkJBQUssQ0FBQ25sQixlQUFPLENBQUM0VixPQUFPLENBQUM7TUFDckM0RixJQUFJLENBQUN2RSxXQUFXLEdBQUdrTyw2QkFBSyxDQUFDbmxCLGVBQU8sQ0FBQ2lYLFdBQVcsQ0FBQztNQUM3Q3VFLElBQUksQ0FBQ3NHLGdCQUFnQixHQUFHamEsMEJBQUcsQ0FBQ3llLFVBQVUsQ0FBQ25CLDZCQUFLLENBQUNubEIsZUFBTyxDQUFDZ1gsaUJBQWlCLENBQUNxQixJQUFJLENBQUNhLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsSUFBSSxLQUFLd0QsSUFBSSxDQUFDaEIsTUFBTSxDQUFDLElBQUk7UUFBRXhDLElBQUksRUFBRXdELElBQUksQ0FBQ2hCO01BQU8sQ0FBQyxDQUFDLENBQUM7TUFDbklnQixJQUFJLENBQUMzRixhQUFhLEdBQUc3VixlQUFPLENBQUM2VixhQUFhO01BQzFDMkYsSUFBSSxDQUFDakYsZ0JBQWdCLEdBQUd2VyxlQUFPLENBQUN1VyxnQkFBZ0I7TUFDaERpRixJQUFJLENBQUMzRSxvQkFBb0IsR0FBRzdXLGVBQU8sQ0FBQzZXLG9CQUFvQjtNQUN4RDJFLElBQUksQ0FBQzFFLHNCQUFzQixHQUFHOVcsZUFBTyxDQUFDOFcsc0JBQXNCO01BQzVEMEUsSUFBSSxDQUFDekUsa0JBQWtCLEdBQUcvVyxlQUFPLENBQUMrVyxrQkFBa0I7TUFDcER5RSxJQUFJLENBQUNqQixlQUFlLEdBQUdDLE1BQU0sSUFBSUQsZUFBZSxDQUFDQyxNQUFNLEVBQUV4RixHQUFHLEVBQUU7UUFBRWlGLFNBQVM7UUFBRVMsWUFBWTtRQUFFUixTQUFTO1FBQUVTLFlBQVk7UUFBRUM7TUFBa0IsQ0FBQyxDQUFDO01BQ3RJWSxJQUFJLENBQUN6QixlQUFlLEdBQUcsTUFBTUEsZUFBZSxDQUFDaEYsR0FBRyxFQUFFO1FBQUVrRixTQUFTO1FBQUVDLFNBQVM7UUFBRWpELFdBQVcsRUFBRWpYLGVBQU8sQ0FBQ2lYO01BQVksQ0FBQyxDQUFDO01BQzdHdUUsSUFBSSxDQUFDeUIsU0FBUyxHQUFJekMsTUFBTSxJQUFLaUssZ0JBQWdCLENBQUNqSyxNQUFNLENBQUM7TUFDckRnQixJQUFJLENBQUMwSyxnQkFBZ0IsR0FBRyxNQUFNQSxnQkFBZ0IsQ0FBQyxDQUFDO01BQ2hEMUssSUFBSSxDQUFDd0ssMkJBQTJCLEdBQUdBLDJCQUEyQjtNQUM5RHhLLElBQUksQ0FBQ3lLLDBCQUEwQixHQUFHQSwwQkFBMEI7T
1UFDNUR6SyxJQUFJLENBQUM4RyxTQUFTLEdBQUcvRyxHQUFHLENBQUNDLElBQUksQ0FBQzhHLFNBQVM7TUFDbkM5RyxJQUFJLENBQUNxSyxlQUFlLEdBQUd0SyxHQUFHLENBQUNDLElBQUksQ0FBQ3FLLGVBQWU7TUFDL0NySyxJQUFJLENBQUNzSyxzQkFBc0IsR0FBR3ZLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDc0ssc0JBQXNCO01BQzdEdEssSUFBSSxDQUFDdUssNkJBQTZCLEdBQUd4SyxHQUFHLENBQUNDLElBQUksQ0FBQ3VLLDZCQUE2QjtJQUM3RSxDQUFDOztJQUVEO0lBQ0EsSUFBTVEsY0FBYyxHQUFHLE9BQU92bUIsZUFBTyxDQUFDMFYsT0FBTyxLQUFLLFVBQVUsU0FBUzFWLGVBQU8sQ0FBQzBWLE9BQU8sQ0FBQzFGLE9BQU8sQ0FBQyxHQUFHbVYsNkJBQUssQ0FBQ25sQixlQUFPLENBQUMwVixPQUFPLENBQUM7SUFDdEg2USxjQUFjLENBQUNDLGdDQUFnQyxHQUFHSCxxQkFBcUI7SUFDdkU7SUFDQTlLLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHeEwsT0FBTyxDQUFDd0wsSUFBSSxHQUFHLElBQUkwSSwrQkFBTyxDQUFDcUMsY0FBYyxDQUFDO0lBQ3JEO0lBQ0FoTCxHQUFHLENBQUNDLElBQUksQ0FBQ2hCLE1BQU0sR0FBRyxFQUFFO0lBQ3BCZSxHQUFHLENBQUNDLElBQUksQ0FBQzhJLGNBQWMsR0FBR2lDLGNBQWMsQ0FBQ2pDLGNBQWMsSUFBSSxFQUFFO0lBQzdEK0IscUJBQXFCLENBQUM5SyxHQUFHLENBQUNDLElBQUksQ0FBQztJQUMvQixJQUFNa0sscUJBQXFCLEdBQUc7TUFDNUJuUCxnQkFBZ0IsRUFBRXZXLGVBQU8sQ0FBQ3VXLGdCQUFnQjtNQUMxQ1MsaUJBQWlCLEVBQUVoWCxlQUFPLENBQUNnWDtJQUM3QixDQUFDO0lBQ0R1RSxHQUFHLENBQUNDLElBQUksQ0FBQzhHLFNBQVMsR0FBR2xHLGNBQWMsQ0FBQ3BjLGVBQU8sQ0FBQ3lXLE9BQU8sRUFBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUwVixxQkFBcUIsQ0FBQztJQUN4Rm5LLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDb0QsWUFBWSxHQUFHNEcsVUFBVTtJQUVsQzNkLDBCQUFHLENBQUM0ZSxTQUFTLENBQUNDLFlBQVksR0FBR3pDLFdBQVc7SUFDeENwYywwQkFBRyxDQUFDNGUsU0FBUyxDQUFDRSxhQUFhLEdBQUdwRixZQUFZO0lBRTFDLElBQUkzTyxLQUFLLEVBQUU7TUFDVDtNQUNBQSxLQUFLLENBQUNvTyxLQUFLLEdBQUd6RixHQUFHLENBQUNDLElBQUk7TUFFdEIsSUFBSTVJLEtBQUssQ0FBQ2MsS0FBSyxDQUFDa1QsYUFBYSxFQUFFO1FBQzdCLEtBQUssSUFBTXBNLE1BQU0sSUFBSWUsR0FBRyxDQUFDQyxJQUFJLENBQUM1RixPQUFPLEVBQUU7VUFDckMsSUFBSSxPQUFRNEUsTUFBTyxLQUFLLFFBQVEsRUFBRTtZQUNoQztVQUNGO1VBQ0FBLE1BQU0sQ0FBQ3JCLE1BQU0sR0FBR3ZHLEtBQUssQ0FBQ2MsS0FBSyxDQUFDa1QsYUFBYSxDQUFDcE0sTUFBTSxDQUFDeEMsSUFBSSxDQUFDO1FBQ3hEO01BQ0Y7SUFDRjs7SUFFQTtJQUNBLElBQUkyTixXQUFXLEdBQUczbEIsZUFBTyxDQUFDc1cscUJBQXFCLEdBQUdzUCx1QkFBdUIsQ0FBQ2htQixLQUFLLENBQUMsR0FBRyxFQUFFO0lBRXJGLElBQUksQ0FBQytsQixXQUFXLEVBQUU7TUFDaEIsSUFBTTtRQUFFalA7TUFBSyxDQUFDLEdBQUcxVyxlQUFPO01BQ3hCLElBQUkwVyxJQUFJLElBQUlBLElBQUksQ0FBQ2tHLFVBQVUsSUFBSWhLLEtBQUssSUFBSUEsS0FBSyxDQUFDYyxLQUFLLENBQUNnRCxJQUFJLENBQUNrSCxVQUFVLENBQUMsQ0FBQ3BELE1BQU0sS0FBSyxFQUFFLEVBQUU7UUFDbEZtTCxXQUFXLEdBQUcvUyxLQUFLLENBQUNjLEtBQUssQ0FBQ2dELElBQUksQ0FBQ2tILFVBQVUsQ0FBQyxDQUFDcEQsTUFBTTtNQUNuRCxDQUFDLE1BQU0sSUFBSWUsR0FBRyxDQUFDQyxJQUFJLENBQUNqRixnQkFBZ0IsRUFBRTtRQUNwQyxJQUFNc1EsWUFBWSxHQUFHOU4sZUFBZSxDQUFDL1ksZUFBTyxDQUFDZ1gsaUJBQWlCLEVBQUVqQyxHQUFHLENBQUM7UUFDcEU0USxXQUFXLEdBQUdrQixZQUFZO01BQzVCLENBQUMsTUFBTSxJQUFJN21CLGVBQU8sQ0FBQ2tXLFFBQVEsS0FBS2QsU0FBUyxDQUFDRSxVQUFVLENBQUMwSyxTQUFTLEVBQUU7UUFDOUQsSUFBTThHLFdBQVcsR0FBR2xOLGtCQUFrQixDQUFDaGEsS0FBSyxDQUFDO1FBQzdDK2xCLFdBQVcsR0FBR21CLFdBQVc7TUFDM0I7SUFDRjtJQUVBLElBQUksQ0FBQ25CLFdBQVcsSUFBSTFMLFNBQVMsRUFBRTtNQUM3QjBML
1FdBQVcsR0FBR3BLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDekIsZUFBZSxDQUFDLENBQUM7SUFDMUM7SUFFQSxJQUFJLENBQUM0TCxXQUFXLEVBQUU7TUFDaEJBLFdBQVcsR0FBR3BLLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDM0YsYUFBYSxJQUFJLEVBQUU7SUFDNUM7SUFFQSxNQUFNNE8sZ0JBQWdCLENBQUNrQixXQUFXLEVBQUU7TUFBRWhCLFlBQVksRUFBRTtJQUFLLENBQUMsQ0FBQztJQUUzRCxJQUFJcmxCLEtBQStELEVBQUUsc0JBS3BFO0VBQ0gsQ0FBQztFQUFBLGlCQUFBMlMsRUFBQTtJQUFBLE9BQUE5UixJQUFBLENBQUErUixLQUFBLE9BQUEzSSxTQUFBO0VBQUE7QUFBQSxLOzs7Ozs7QUNoYW9COztBQUVyQjtBQUNBLElBQU13ZCxhQUFhLEdBQUcsOFVBQThVOztBQUVwVztBQUNBLElBQU1DLGFBQWEsR0FBRyx5a0RBQXlrRDtBQUUvbEQsU0FBU0MsUUFBUUEsQ0FBRUMsQ0FBQyxFQUFFO0VBQ3BCLE9BQU9ILGFBQWEsQ0FBQzFZLElBQUksQ0FBQzZZLENBQUMsQ0FBQyxJQUFJRixhQUFhLENBQUMzWSxJQUFJLENBQUM2WSxDQUFDLENBQUM1bEIsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRTs7QUFFQTtBQUNBLElBQU02bEIsdUJBQXVCLEdBQUcseVdBQXlXO0FBQ3pZO0FBQ0EsSUFBTUMsdUJBQXVCLEdBQUcseWtEQUF5a0Q7O0FBRXptRDtBQUNBLElBQU1DLGFBQWEsR0FBRyxnbU1BQWdtTTtBQUV0bk0sU0FBU0MsZ0JBQWdCQSxDQUFFSixDQUFDLEVBQUU7RUFDNUIsT0FBT0MsdUJBQXVCLENBQUM5WSxJQUFJLENBQUM2WSxDQUFDLENBQUMsSUFBSUUsdUJBQXVCLENBQUMvWSxJQUFJLENBQUM2WSxDQUFDLENBQUM1bEIsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RjtBQUVBLFNBQVNpbUIsS0FBS0EsQ0FBRUwsQ0FBQyxFQUFFO0VBQ2pCLE9BQU8sa0JBQWtCLENBQUM3WSxJQUFJLENBQUM2WSxDQUFDLENBQUM7QUFDbkM7QUFFQSxTQUFTTSxTQUFTQSxDQUFFTixDQUFDLEVBQUU7RUFDckIsT0FBTyxVQUFVLENBQUM3WSxJQUFJLENBQUM2WSxDQUFDLENBQUM7QUFDM0I7QUFFQSxTQUFTTyxTQUFTQSxDQUFFUCxDQUFDLEVBQUU7RUFDckIsT0FBTyxTQUFTLENBQUM3WSxJQUFJLENBQUM2WSxDQUFDLENBQUM7QUFDMUI7QUFFQSxTQUFTUSxPQUFPQSxDQUFFUixDQUFDLEVBQUU7RUFDbkIsT0FBTyxVQUFVLENBQUM3WSxJQUFJLENBQUM2WSxDQUFDLENBQUM7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBTVMsUUFBUSxHQUFHLENBQ2Y7RUFBQ2xmLElBQUksRUFBRSxTQUFTO0VBQUU0RixJQUFJLEVBQUU7QUFBa0IsQ0FBQyxFQUMzQztFQUFDNUYsSUFBSSxFQUFFLE1BQU07RUFBRTRGLElBQUksRUFBRTtBQUFvQixDQUFDLEVBQzFDO0VBQUM1RixJQUFJLEVBQUUsU0FBUztFQUFFNEYsSUFBSSxFQUFFO0FBQTJCLENBQUMsRUFDcEQ7RUFBQzVGLElBQUksRUFBRSxRQUFRO0VBQUU0RixJQUFJLEVBQUU7QUFBcUIsQ0FBQyxFQUM3QztFQUFDNUYsSUFBSSxFQUFFLFFBQVE7RUFBRTRGLElBQUksRUFBRTtBQUFzQixDQUFDLENBQy9DO0FBRUQsU0FBU3VaLGNBQWNBLENBQUNWLENBQUMsRUFBRTtFQUN6QixLQUFLLElBQUlXLENBQUMsSUFBSUYsUUFBUSxFQUFFO0lBQ3RCLElBQUlFLENBQUMsQ0FBQ3haLElBQUksQ0FBQ0EsSUFBSSxDQUFDNlksQ0FBQyxDQUFDLEVBQUU7TUFDbEIsT0FBT1csQ0FBQyxDQUFDcGYsSUFBSTtJQUNmO0VBQ0Y7RUFDQSxPQUFPLElBQUk7QUFDYjtBQUVBLElBQU1xZixrQkFBa0IsR0FBRywwSEFBMEg7QUFDckosSUFBTUMsaUJBQWlCLEdBQUcsSUFBSTtBQUU5QixTQUFTQyxjQUFjQSxDQUFFalUsR0FBRyxFQUFrQztFQUFBLElBQWhDa1UsU0FBUyxHQUFBMWUsU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBR3VlLGtCQUFrQjtFQUMxRCxJQUFJSSxNQUFNLEdBQUcsSUFBSTtFQUNqQixJQUFJQyxjQUFjLEdBQUcsSUFBSTtFQUN6QixJQUFJQyxHQUFHLEdBQUcsSUFBSTtFQUNkLElBQUlDLE9BQU8sR0FBRyxJQUFJO0VBRWxCLElBQUlKLFNBQVMsS0FBSyxtQkFBbUIsRUFBRTtJQUNyQyxJQUFJbFUsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLDZCQUE2QixDQUFDLEtBQUssTUFBTSxFQUFFO01BQzdEOEIsTUFBTSxHQUFHLElBQUk7TUFDYkMsY0FBYyxHQUFHLElBQUk7SUFDdkI7SUFDQSxJQUFJcFUsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLDZCQUE2QixDQUFDLEtBQUssTUFBTSxFQUFFO01BQzdEOEIsTUFBTSxHQUFHLEtBQUs7TUFDZEMsY0FBYyxHQUFHLElBQUk7SUFDdkI7SUFDQSxJQUFJcFUsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLDhCQUE4QixDQUFDLEtBQUssTUFBTSxFQUFFO01BQzlEOEIsTUFBTSxHQUFHLEtBQUs7TUFDZEMsY0FBYyxHQUFHLEtBQUs7SUFDeEI7SUFDQSxJQUFJcFUsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLDBCQUEwQixDQUFDLEtBQUssTUFBTSxFQUFFO01BQzFEZ0MsR0FBRyxHQUFHLElBQUk7SUFDWjtJQUNBLElBQUlyVSxHQUFHLENBQUNnQixHQUFHLENBQUNxUixPQUFPLENBQUMsOEJBQThCLENBQUMsS0FBSyxNQUFNLEVBQUU7TUFDOURpQyxPQUFPLEdBQUcsSUFBSTtJQUNoQjtFQUNGLENBQUMsTUFBTSxJQUFJdFUsR0FBRyxDQUFDZ0IsR0FBRyxJQUFJaEIsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7SUFBRTtJQUN6RCxRQUFRclMsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLGdCQUFnQixDQUFDO01BQ3ZDLEtBQUssUUFBUTtRQUNYOEIsTUFBTSxHQUFHLElBQUk7UUFDYkMsY0FBYyxHQUFHLElBQUk7UUFDckI7TUFDRixLQUFLLFFBQVE7UUFDWEQsTUFBTSxHQUFHLEtBQUs7UUFDZEMsY0FBYyxHQUFHLElBQUk7UUFDckI7TUFDRixLQUFLLFNBQVM7UUFDWkQsTUFBTSxHQUFHLEtBQUs7UUFDZEMsY0FBYyxHQUFHLEtBQUs7UUFDdEI7SUFDSjtFQUNGLENBQUMsTUFBTTtJQUNMRCxNQUFNLEdBQUdqQixRQUFRLENBQUNnQixTQUFTLENBQUM7SUFDNUJFLGNBQWMsR0FBR2IsZ0JBQWdCLENBQUNXLFNBQVMsQ0FBQztJQUM1Q0csR0FBRyxHQU
1FHYixLQUFLLENBQUNVLFNBQVMsQ0FBQztJQUN0QkksT0FBTyxHQUFHYixTQUFTLENBQUNTLFNBQVMsQ0FBQztFQUNoQztFQUNBLElBQU1LLE9BQU8sR0FBR2IsU0FBUyxDQUFDUSxTQUFTLENBQUM7RUFDcEMsSUFBTU0sS0FBSyxHQUFHYixPQUFPLENBQUNPLFNBQVMsQ0FBQztFQUNoQyxJQUFNTyxXQUFXLEdBQUdaLGNBQWMsQ0FBQ0ssU0FBUyxDQUFDO0VBQzdDLElBQU1RLFFBQVEsR0FBR0QsV0FBVyxLQUFLLFFBQVE7RUFDekMsSUFBTUUsU0FBUyxHQUFHRixXQUFXLEtBQUssU0FBUztFQUMzQyxJQUFNRyxNQUFNLEdBQUdILFdBQVcsS0FBSyxNQUFNO0VBQ3JDLElBQU1JLFFBQVEsR0FBR0osV0FBVyxLQUFLLFFBQVE7RUFDekMsSUFBTUssU0FBUyxHQUFHTCxXQUFXLEtBQUssU0FBUztFQUMzQyxJQUFNTSxTQUFTLEdBQUd6QixhQUFhLENBQUNoWixJQUFJLENBQUM0WixTQUFTLENBQUM7RUFFL0MsT0FBTztJQUFFQyxNQUFNO0lBQUVDLGNBQWM7SUFBRUMsR0FBRztJQUFFQyxPQUFPO0lBQUVDLE9BQU87SUFBRUMsS0FBSztJQUFFRSxRQUFRO0lBQUVDLFNBQVM7SUFBRUMsTUFBTTtJQUFFQyxRQUFRO0lBQUVDLFNBQVM7SUFBRUM7RUFBVSxDQUFDO0FBQzlIO0FBRWUsNERBQWY3VyxFQUFBLEVBQUEwQyxHQUFBO0VBQUEsT0FBQXhVLGlCQUFBLENBQUErUixLQUFBLE9BQUEzSSxTQUFBO0FBQUE7QUEwQ0MsU0FBQXBKLGtCQUFBO0VBQUFBLGlCQUFBLEdBQUFnUSwyQ0FBQSxDQTFDYyxXQUFnQjRELEdBQUcsRUFBRWEsTUFBTSxFQUFFO0lBQzFDLElBQU1tVSxTQUFTLEdBQUdBLENBQUEsS0FBTTtNQUN0QixJQUFJZCxTQUFTLEdBQUcsRUFBRTtNQUNsQixJQUFJLE9BQU9sVSxHQUFHLENBQUNnQixHQUFHLEtBQUssV0FBVyxFQUFFO1FBQ2xDa1QsU0FBUyxHQUFHbFUsR0FBRyxDQUFDZ0IsR0FBRyxDQUFDcVIsT0FBTyxDQUFDLFlBQVksQ0FBQztNQUMzQyxDQUFDLE1BQU0sSUFBSSxPQUFPelYsU0FBUyxLQUFLLFdBQVcsRUFBRTtRQUMzQ3NYLFNBQVMsR0FBR3RYLFNBQVMsQ0FBQ3NYLFNBQVM7TUFDakM7TUFDQSxJQUFNO1FBQUVDLE1BQU07UUFBRUMsY0FBYztRQUFFQyxHQUFHO1FBQUVDLE9BQU87UUFBRUMsT0FBTztRQUFFQyxLQUFLO1FBQUVFLFFBQVE7UUFBRUMsU0FBUztRQUFFQyxNQUFNO1FBQUVDLFFBQVE7UUFBRUMsU0FBUztRQUFFQztNQUFVLENBQUMsR0FBR2QsY0FBYyxDQUFDalUsR0FBRyxFQUFFa1UsU0FBUyxDQUFDO01BQzVKLE9BQU87UUFDTEEsU0FBUztRQUNUaEIsUUFBUSxFQUFFaUIsTUFBTTtRQUNoQlosZ0JBQWdCLEVBQUVhLGNBQWM7UUFDaENhLFFBQVEsRUFBRSxDQUFDZCxNQUFNLElBQUlDLGNBQWM7UUFDbkNjLFNBQVMsRUFBRSxDQUFDZCxjQUFjO1FBQzFCWixLQUFLLEVBQUVhLEdBQUc7UUFDVlosU0FBUyxFQUFFYSxPQUFPO1FBQ2xCWixTQUFTLEVBQUVhLE9BQU87UUFDbEJaLE9BQU8sRUFBRWEsS0FBSztRQUNkVyxpQkFBaUIsRUFBRSxDQUFDaEIsTUFBTTtRQUMxQk8sUUFBUTtRQUNSQyxTQUFTO1FBQ1RDLE1BQU07UUFDTkMsUUFBUTtRQUNSQyxTQUFTO1FBQ1RDO01BQ0YsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFNSyxLQUFLLEdBQUdKLFNBQVMsQ0FBQ2hWLEdBQUcsQ0FBQztJQUM1QixJQUFJZ1UsaUJBQWlCLElBQUksT0FBT3hvQixNQUFNLEtBQUssV0FBVyxFQUFFO01BQ3REcVYsTUFBTSxDQUFDLFFBQVEsRUFBRS9NLDBCQUFHLENBQUN5ZSxVQUFVLENBQUM2QyxLQUFLLENBQUMsQ0FBQztNQUN2QzVwQixNQUFNLENBQUNHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNO1FBQ3RDMHBCLFVBQVUsQ0FBQyxNQUFNO1VBQ2YsSUFBTUMsUUFBUSxHQUFHTixTQUFTLENBQUNoVixHQUFHLENBQUM7VUFDL0IsS0FBSyxJQUFJcEksR0FBRyxJQUFJMGQsUUFBUSxFQUFFO1lBQ3hCdFYsR0FBRyxDQUFDdVYsT0FBTyxDQUFDM2QsR0FBRyxDQUFDLEdBQUcwZCxRQUFRLENBQUMxZCxHQUFHLENBQUM7VUFDbEM7UUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDO01BQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNO01BQ0xpSixNQUFNLENBQUMsUUFBUSxFQUFFdVUsS0FBSyxDQUFDO0lBQ3pCO0VBQ0YsQ0FBQztFQUFBLE9BQUFocEIsaUJBQUEsQ0FBQStSLEtB
1QUEsT0FBQTNJLFNBQUE7QUFBQSxDOzs7QUNwS2MsMERBQWYwSSxFQUFBLEVBQUEwQyxHQUFBO0VBQUEsT0FBQXhVLGVBQUEsQ0FBQStSLEtBQUEsT0FBQTNJLFNBQUE7QUFBQTtBQUlDLFNBQUFwSixnQkFBQTtFQUFBQSxlQUFBLEdBQUFnUSwyQ0FBQSxDQUpjLFdBQWdCNEQsR0FBRyxFQUFFYSxNQUFNLEVBQUU7SUFDMUMsSUFBTTJVLEtBQUssR0FBRztNQUFDLE9BQU8sRUFBQyxvQ0FBb0M7TUFBQyxTQUFTLEVBQUMsc0NBQXNDO01BQUMsU0FBUyxFQUFDLHNDQUFzQztNQUFDLFNBQVMsRUFBQyxzQ0FBc0M7TUFBQyxTQUFTLEVBQUMsc0NBQXNDO01BQUMsU0FBUyxFQUFDLHNDQUFzQztNQUFDLFNBQVMsRUFBQyxzQ0FBc0M7TUFBQyxnQkFBZ0IsRUFBQywrQ0FBK0M7TUFBQyxvQkFBb0IsRUFBQyxtREFBbUQ7TUFBQyxxQkFBcUIsRUFBQyxvREFBb0Q7TUFBQyxxQkFBcUIsRUFBQyxvREFBb0Q7TUFBQyxtQkFBbUIsRUFBQyxrREFBa0Q7TUFBQyxpQkFBaUIsRUFBQyxnREFBZ0Q7TUFBQyxzQkFBc0IsRUFBQyxxREFBcUQ7TUFBQyxtQkFBbUIsRUFBQyxrREFBa0Q7TUFBQyxtQkFBbUIsRUFBQyxrREFBa0Q7TUFBQyx1QkFBdUIsRUFBQztJQUFzRCxDQUFDO0lBQ3RqQyxJQUFNQyxPQUFPLEdBQUdDLElBQUksSUFBSUYsS0FBSyxDQUFDRSxJQUFJLEdBQUcsR0FBRyxHQUFHQSxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ3REN1UsTUFBTSxDQUFDLE1BQU0sRUFBRTRVLE9BQU8sQ0FBQztFQUN6QixDQUFDO0VBQUEsT0FBQXJwQixlQUFBLENBQUErUixLQUFBLE9BQUEzSSxTQUFBO0FBQUEsQzs7Ozs7Ozs7Ozs7Ozs7OztBQ0p3QjtBQUNGOztBQUV2QjtBQUNBLElBQU1tZ0IsVUFBVSxHQUFHO0VBQ2pCQyxVQUFVQSxDQUFFQyxPQUFPLEVBQUU7SUFDbkIsSUFBSSxDQUFDQyxRQUFRLENBQUNELE9BQU8sR0FBR0EsT0FBTztFQUNqQyxDQUFDO0VBQ0RFLFNBQVNBLENBQUVyaEIsSUFBSSxFQUFFMlYsS0FBSyxFQUFxQjtJQUFBLElBQW5CMkwsTUFBTSxHQUFBeGdCLFNBQUEsQ0FBQXhKLE1BQUEsUUFBQXdKLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsUUFBUTtJQUN2QyxLQUFLLElBQU15Z0IsS0FBSyxJQUFJM0wsS0FBSyxDQUFDQyxPQUFPLENBQUN5TCxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLENBQUVBLE1BQU0sQ0FBRSxFQUFFO01BQy9ELElBQUksQ0FBQzNMLEtBQUssRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDeUwsUUFBUSxDQUFDekQsT0FBTyxDQUFDNEQsS0FBSyxDQUFDLENBQUN2aEIsSUFBSSxDQUFDO1FBQ3pDO01BQ0Y7TUFDQSxJQUFJLENBQUNvaEIsUUFBUSxDQUFDekQsT0FBTyxDQUFDNEQsS0FBSyxDQUFDLENBQUN2aEIsSUFBSSxDQUFDLEdBQUcyVixLQUFLO0lBQzVDO0VBQ0YsQ0FBQztFQUNENkwsUUFBUUEsQ0FBRUMsS0FBSyxFQUFFaGdCLElBQUksRUFBcUI7SUFBQSxJQUFuQjZmLE1BQU0sR0FBQXhnQixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLFFBQVE7SUFDdEMsSUFBTTZVLEtBQUssR0FBRyxDQUFDOEwsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDaGdCLElBQUksR0FBR0EsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUlnZ0IsS0FBSztJQUM5RCxJQUFJLENBQUNKLFNBQVMsQ0FBQyxlQUFlLEVBQUUxTCxLQUFLLEVBQUUyTCxNQUFNLENBQUM7RUFDaEQsQ0FBQztFQUNESSxTQUFTQSxDQUFDQyxFQUFFLEVBQUU7SUFDWixJQUFJLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDeGlCLEdBQUcsQ0FBQ2dCLE1BQU0sSUFBSXNoQixFQUFFLENBQUN0aEIsTUFBTSxDQUFDLElBQUlBLE1BQU0sQ0FBQztFQUMvRCxDQUFDO0VBQ0R5aEIsVUFBVUEsQ0FBQ0gsRUFBRSxFQUFFO0lBQ2IsSUFBSSxDQUFDQyxZQUFZLENBQUNHLFFBQVEsQ0FBQzFpQixHQUFHLENBQUMwaUIsUUFBUSxJQUFJSixFQUFFLENBQUNJLFFBQVEsQ0FBQyxJQUFJQSxRQUFRLENBQUM7RUFDdEUsQ0FBQztFQUNEQyxjQUFjQSxDQUFDTCxFQUFFLEVBQUU7SUFDakIsSUFBSSxDQUFDQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ3hpQixHQUFHLENBQUMwQixTQUFTLEVBQUV5RCxLQUFLLElBQUltZCxFQUFFLENBQUNuZCxLQUFLLENBQUMsSUFBSWhNLE9BQU8sQ0FBQ3lwQixNQUFNLENBQUN6ZCxLQUFLLENBQUMsQ0FBQztFQUN2RixDQUFDO0VBQ0QwZCxlQUFlQSxDQUFDUCxFQUFFLEVBQUU7SUFDbEIsSUFBSSxDQUFDQyxZQUFZLENBQUNHLFFBQVEsQ0FBQzFpQixHQUFHLENBQUMwQixTQUFTLEVBQUV5RCxLQUFLLElBQUltZCxFQUFFLENBQUNuZCxLQUFLLENBQUMsSUFBSWhNLE9BQU8sQ0FBQ3lwQixNQUFNLENBQUN6ZCxLQUFLLENBQUMsQ0FBQztFQUN4RixDQUFDO0VBQ0QyZCxPQUFPQSxDQUFDUixFQUFFLEVBQUU7SUFDVixJQUFJLENBQUNLLGNBQWMsQ0FBQ0wsRUFBRSxDQUFDO0lBQ3ZCLElBQUksQ0FBQ08sZUFBZSxDQUFDUCxFQUFFLENBQUM7RUFDMUIsQ0FBQztFQUNEUyxNQUFNQSxDQUFDN3FCLE9BQU8sRUFBRTtJQUNkLE9BQU84cUIsbUJBQW1CLENBQUNDLGNBQUksQ0FBQy9xQixPQUFPLEVBQUUsSUFBSSxDQUFDNnBCLFFBQVEsQ0FBQyxDQUFDO0VBQzFEO0FBQ0YsQ0FBQzs7QUFFRDtBQUFBLElBQUEzUixLQUFBLFlBQUFBLE1BQUE4UyxNQUFBLEVBQzhGO0VBQzVGdEIsVUFBVSxDQUFDLEdBQUcsR0FBR3NCLE1BQU0sQ0FBQyxHQUFHLFlBQVk7SUFBRSxPQUFPLElBQUksQ0FBQ0EsTUFBTSxDQUFDLENBQUM5WSxLQUFLLENBQUMsSUFBSSxFQUFFM0ksU0FBUyxDQUFDLENBQUNrSSxJQUFJLENBQUN1RCxHQUFHLElBQUlBLEdBQUcsSUFBSUEsR0FBRyxDQUFDcEssSUFBSSxDQUFDO0VBQUMsQ0FBQztBQUNwSCxDQUFDO0FBRkQsS0FBSyxJQUFNb2dCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7RUFBQTlTLEtBQUEsQ0FBQThTLE1BQUE7QUFBQTtBQUk1RixJQUFNQyxtQkFBbUIsR0FBR0MsS0FBSyxJQUFJO0VBQ25DLEtBQUssSUFBTXZmLEdBQUcsSUFBSStkLFVBQVUsRUFBRTtJQUM1QndCLEtBQUssQ0FBQ3ZmLEdBQUcsQ0FBQyxHQUFHK2QsVUFBVSxDQUFDL2QsR0FBRyxDQUFDLENBQUNoQyxJQUFJLENBQUN1aEIsS0FBSyxDQUFDO0VBQzFDO0FBQ0YsQ0FBQztBQUVELElBQU1KLG1CQUFtQixHQUFHSyxZQUFZLElBQUk7RUFDMUM7RUFDQSxJQUFNRCxLQUFLLEdBQUdFLGVBQUssQ0FBQ1AsTUFBTSxDQUFDTSxZQUFZLENBQUM7RUFDeENELEtBQUssQ0FBQ0csV0
1FBVyxHQUFHRCxlQUFLLENBQUNDLFdBQVc7RUFDckNILEtBQUssQ0FBQ0ksUUFBUSxHQUFHRixlQUFLLENBQUNFLFFBQVE7O0VBRS9CO0VBQ0FMLG1CQUFtQixDQUFDQyxLQUFLLENBQUM7O0VBRTFCO0VBQ0FBLEtBQUssQ0FBQ2YsU0FBUyxDQUFFcmhCLE1BQU0sSUFBSztJQUMxQkEsTUFBTSxDQUFDc2QsT0FBTyxHQUFBbGQsa0JBQUEsQ0FBQUEsa0JBQUEsS0FBUWdpQixLQUFLLENBQUNyQixRQUFRLENBQUN6RCxPQUFPLENBQUNtRixNQUFNLEdBQUt6aUIsTUFBTSxDQUFDc2QsT0FBTyxDQUFFO0VBQzFFLENBQUMsQ0FBQzs7RUFFRjs7RUFFQW9GLGFBQWEsQ0FBQ04sS0FBSyxDQUFDO0VBRXBCLE9BQU9BLEtBQUs7QUFDZCxDQUFDO0FBRUQsSUFBTU0sYUFBYSxHQUFJTixLQUFLLElBQUs7RUFDL0IsSUFBSTVyQixLQUFjLEVBQUUsRUFFbkI7O0VBRUQ7RUFDQSxJQUFNbXNCLFdBQVcsR0FBRztJQUNsQnBaLE1BQU0sRUFBRUEsQ0FBQSxLQUFNLENBQUUsQ0FBQztJQUNqQnBCLEtBQUssRUFBRUEsQ0FBQSxLQUFNLENBQUUsQ0FBQztJQUNoQmtCLElBQUksRUFBRUEsQ0FBQSxLQUFNLENBQUUsQ0FBQztJQUNmUixHQUFHLEVBQUVBLENBQUEsS0FBTSxDQUFFO0VBQ2YsQ0FBQztFQUVELElBQU12QixRQUFRLEdBQUdBLENBQUEsS0FBTTtJQUNyQixJQUFNeFAsS0FBSyxHQUFHLE9BQU9yQixNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQzlELE9BQVFxQixLQUFLLElBQUlBLEtBQUssQ0FBQ3dQLFFBQVEsSUFBSXhQLEtBQUssQ0FBQ3dQLFFBQVEsQ0FBQ3VCLEdBQUcsR0FBSS9RLEtBQUssQ0FBQ3dQLFFBQVEsR0FBR3FiLFdBQVc7RUFDdkYsQ0FBQztFQUVELElBQUlDLGVBQWUsR0FBRyxDQUFDO0VBRXZCUixLQUFLLENBQUNmLFNBQVMsQ0FBQ3JoQixNQUFNLElBQUk7SUFDeEIsSUFBSUEsTUFBTSxJQUFJQSxNQUFNLENBQUM2aUIsUUFBUSxLQUFLLEtBQUssRUFBRTtNQUN2QztJQUNGO0lBRUFELGVBQWUsRUFBRTtFQUNuQixDQUFDLENBQUM7RUFFRlIsS0FBSyxDQUFDWCxVQUFVLENBQUNDLFFBQVEsSUFBSTtJQUMzQixJQUFJQSxRQUFRLElBQUlBLFFBQVEsQ0FBQzFoQixNQUFNLElBQUkwaEIsUUFBUSxDQUFDMWhCLE1BQU0sQ0FBQzZpQixRQUFRLEtBQUssS0FBSyxFQUFFO01BQ3JFO0lBQ0Y7SUFFQUQsZUFBZSxFQUFFO0lBQ2pCLElBQUlBLGVBQWUsSUFBSSxDQUFDLEVBQUU7TUFDeEJBLGVBQWUsR0FBRyxDQUFDO01BQ25CdGIsUUFBUSxDQUFDLENBQUMsQ0FBQ2lDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JCO0VBQ0YsQ0FBQyxDQUFDO0VBRUY2WSxLQUFLLENBQUNOLE9BQU8sQ0FBQzNkLEtBQUssSUFBSTtJQUNyQixJQUFJQSxLQUFLLElBQUlBLEtBQUssQ0FBQ25FLE1BQU0sSUFBSW1FLEtBQUssQ0FBQ25FLE1BQU0sQ0FBQzZpQixRQUFRLEtBQUssS0FBSyxFQUFFO01BQzVEO0lBQ0Y7SUFFQUQsZUFBZSxFQUFFO0lBRWpCLElBQUlOLGVBQUssQ0FBQ0UsUUFBUSxDQUFDcmUsS0FBSyxDQUFDLEVBQUU7TUFDekIsSUFBSXllLGVBQWUsSUFBSSxDQUFDLEVBQUU7UUFDeEJBLGVBQWUsR0FBRyxDQUFDO1FBQ25CdGIsUUFBUSxDQUFDLENBQUMsQ0FBQ2lDLE1BQU0sQ0FBQyxDQUFDO01BQ3JCO01BQ0E7SUFDRjtJQUVBakMsUUFBUSxDQUFDLENBQUMsQ0FBQytCLElBQUksQ0FBQyxDQUFDO0lBQ2pCL0IsUUFBUSxDQUFDLENBQUMsQ0FBQ2lDLE1BQU0sQ0FBQyxDQUFDO0VBQ3JCLENBQUMsQ0FBQztFQUVGLElBQU11WixVQUFVLEdBQUc1cEIsQ0FBQyxJQUFJO0lBQ3RCLElBQUksQ0FBQzBwQixlQUFlLElBQUksQ0FBQzFwQixDQUFDLENBQUM2cEIsS0FBSyxFQUFFO01BQ2hDO0lBQ0Y7SUFDQSxJQUFNRixRQUFRLEdBQUszcEIsQ0FBQyxDQUFDOHBCLE1BQU0sR0FBRyxHQUFHLElBQUs5cEIsQ0FBQyxDQUFDNnBCLEtBQUssR0FBR0gsZUFBZSxDQUFFO0lBQ2pFdGIsUUFBUSxDQUFDLENBQUMsQ0FBQ3VCLEdBQUcsQ0FBQ29hLElBQUksQ0FBQ0MsR0FBRyxDQUFDLEdBQUcsRUFBRUwsUUFBUSxDQUFDLENBQUM7RUFDekMsQ0FBQztFQUVEVCxLQUFLLENBQUNyQixRQUFRLENBQUNvQyxnQkFBZ0IsR0FBR0wsVUFBVTtFQUM1Q1YsS0FBSyxDQUFDckIsUUFBUSxDQUFDcUMsa0JBQWtCLEdBQUdOLFVBQVU7QUFDaEQsQ0FBQztBQUVjLG1EQUFDN1gsR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUI7RUFDQSxJQUFNdVgsYUFBYSxHQUFHcFksR0FBRyxDQUFDUyxPQUFPLElBQUlULEdBQUcsQ0FBQ1MsT0FBTyxDQUFDMFcsS0FBSyxJQUFJLENBQUMsQ0FBQztFQUM1RDtFQUNBLElBQU10QixPQUFPLEdBQUd0cUIsS0FBZSxHQUMxQjZzQixhQUFhLENBQUNDLGNBQWMsSUFBSUQsYUFBYSxDQUFDRSxjQUFjLElBQUlGLGFBQWEsQ0FBQ3ZDLE9BQU8sSUFBSXVDLGFBQWEsQ0FBQzFWLE9BQU8sSUFBSSxpQ0FBaUMsR0FDakowVixTQUFvSDs7RUFFM0g7RUFDQTtFQUNBO0VBQ0EsSUFBTS9GLE9BQU8sR0FBRztJQUNkLFFBQVEsRUFBRTtNQUNOLFFBQVEsRUFBRTtJQUNkLENBQUM7SUFDRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULE9BQU8sRUFBRSxDQUFDO0VBQ2QsQ0FBQztFQUVDLElBQU0rRSxZQUFZLEdBQUc7SUFDbkJ2QixPQUFPO0lBQ1B4RDtFQUNGLENBQUM7O0VBRUQ7RUFDQSxJQUFJOW1CLEtBQTRDLEVBQUUsc0JBTWpEO0VBRUQsSUFBSUEsS0FBYyxFQUFFLEVBR25CO0VBRUQsSUFBTTRyQixLQUFLLEdBQUdKLG1CQUFtQixDQUFDSyxZQUFZLENBQUM7O0VBRS9DO0VBQ0FwWCxHQUFHLENBQUN1WSxNQUFNLEdBQUdwQixLQUFLO0VBQ2xCdFcsTUFBTSxDQUFDLE9BQU8sRUFBRXNXLEtBQUssQ0FBQztBQUN4QixDQUFDLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaE1vQztBQUN3Qzs7QUFFN0U7QUFDMkM7QUFFM0NxQiw2QkFBVSxDQUFDQyxJQUFJLEdBQUdDLGlDQUFjO0FBRWpCLG1EQUFVMVksR0FBRyxFQUFFYSxNQUFNLEVBQUU7RUFDcEM7RUFDQSxJQUFNNVUsT0FBTyxHQUFHO0lBQ2hCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsVUFBVSxFQUFFLE9BQU87SUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLFVBQVUsRUFBRTtNQUNWLE9BQU8sRUFBRSxRQUFRO01BQ2pCLFFBQVEsRUFBRSxLQUFLO01BQ2YsTUFBTSxFQUFFLEtBQUs7TUFDYixVQUFVLEVBQUU7SUFDZCxDQUFDO0lBQ0QsTUFBTSxFQUFFO01BQ04sV0FBVyxFQUFFO0lBQ2YsQ0FBQztJQUNELFFBQVEsRUFBRTtNQUNSLFF
1BQVEsRUFBRSxPQUFPO01BQ2pCLFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxHQUFHO1FBQ1gsVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFO01BQ1o7SUFDRixDQUFDO0lBQ0QsY0FBYyxFQUFFO01BQ2QsUUFBUSxFQUFFO0lBQ1osQ0FBQztJQUNELGlCQUFpQixFQUFFO0VBQ3JCLENBQUM7O0VBRUM7RUFDQSxJQUFNMHNCLEtBQUssR0FBRyxJQUFJQyx1QkFBSSxDQUFDNVksR0FBRyxFQUFFL1QsT0FBTyxDQUFDOztFQUVwQztFQUNBO0VBQ0Ewc0IsS0FBSyxDQUFDRSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsSUFBSUMsOEJBQVcsQ0FBQ0gsS0FBSyxFQUFFO0lBQzFELE9BQU8sRUFBRTtNQUNQLFFBQVEsRUFBRSxLQUFLO01BQ2YsVUFBVSxFQUFFLE9BQU87TUFDbkIsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNOLFVBQVUsRUFBRSxLQUFLO01BQ2pCLFdBQVcsRUFBRTtJQUNmLENBQUM7SUFDRCxXQUFXLEVBQUU7TUFDWCxPQUFPLEVBQUU7UUFDUCxLQUFLLEVBQUUsZ0NBQWdDO1FBQ3ZDLFFBQVEsRUFBRTtNQUNaLENBQUM7TUFDRCxNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLFFBQVEsRUFBRTtNQUNaLENBQUM7TUFDRCxRQUFRLEVBQUU7SUFDWixDQUFDO0lBQ0QsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDLENBQUM7O0VBRUQ7RUFDQUEsS0FBSyxDQUFDRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSUMsOEJBQVcsQ0FBQ0gsS0FBSyxFQUFFO0lBQ3ZELE9BQU8sRUFBRTtNQUNQLFFBQVEsRUFBRSxLQUFLO01BQ2YsVUFBVSxFQUFFLE9BQU87TUFDbkIsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNOLFVBQVUsRUFBRSxLQUFLO01BQ2pCLFdBQVcsRUFBRTtJQUNmLENBQUM7SUFDRCxXQUFXLEVBQUU7TUFDWCxPQUFPLEVBQUU7UUFDUCxLQUFLLEVBQUUsOEJBQThCO1FBQ3JDLFFBQVEsRUFBRTtNQUNaLENBQUM7TUFDRCxNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLFFBQVEsRUFBRTtNQUNaLENBQUM7TUFDRCxRQUFRLEVBQUU7SUFDWixDQUFDO0lBQ0QsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDLENBQUM7O0VBRUQ7RUFDQTlYLE1BQU0sQ0FBQyxNQUFNLEVBQUU4WCxLQUFLLENBQUM7RUFDckIzWSxHQUFHLENBQUMyWSxLQUFLLEdBQUdBLEtBQUs7O0VBRWpCO0VBQ0EsT0FBT0EsS0FBSyxDQUFDN1gsSUFBSSxDQUFDLENBQUMsQ0FBQ2lZLEtBQUssQ0FBQzdmLEtBQUssSUFBSTtJQUNqQyxJQUFJM04sSUFBYyxFQUFFO01BQ2xCO01BQ0E7TUFDQTtNQUNBLElBQUkyTixLQUFLLFlBQVk4ZiwwQ0FBdUIsRUFBRTtRQUM1QztNQUNGO01BRUE5cUIsT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLGdCQUFnQixFQUFFQSxLQUFLLENBQUM7SUFDeEM7RUFDRixDQUFDLENBQUM7QUFDSixDOzs7Ozs7Ozs7QUMvR2dEO0FBRWpDLDRFQUFDOEcsR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQUUsQ0FDTix1RUFBdUUsRUFDdkUsb0dBQW9HLEVBQ3BHLG9FQUFvRSxDQUNyRTtJQUNEbmhCLEdBQUcsRUFBRSxDQUNILGtHQUFrRztFQUV0RyxDQUFDLENBQUM7RUFFRjZJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDbEJ1WSxNQUFNLEVBQUdDLFFBQVEsSUFDZixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQm5zQixPQUFPLENBQUMsQ0FBQztRQUNULElBQUlrc0IsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztNQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7Ozs7QUN2QitDO0FBQzhCOztBQUU5RTtBQUNBO0FBQ0E7QUFDZSx5RUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU0wWSxZQUFZLEd
1BQUdDLDRDQUFrQixDQUFDLENBQUM7RUFFekMsSUFBTVAsTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFBRUMsTUFBTSxFQUFFTSw4QkFBWUE7RUFBQyxDQUFDLENBQUM7RUFFckQ1WSxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2Z1WSxNQUFNLEVBQUdDLFFBQVEsSUFDZixJQUFJbnNCLE9BQU8sQ0FBRUMsT0FBTyxJQUFLO01BQ3ZCO01BQ0E7TUFDQTNCLE1BQU0sQ0FBQ2t1QixjQUFjLEdBQUc7UUFDdEJDLGNBQWMsRUFBRUosWUFBWTtRQUM1QkosTUFBTSxFQUFFTSw4QkFBWTtRQUNwQmhULE1BQU0sRUFBRSxPQUFPO1FBQ2ZtVCxZQUFZLEVBQUU7TUFDaEIsQ0FBQztNQUNEWCxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQzVCK0M7O0FBRWhEO0FBQ2UseUVBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFBRSxDQUNOLDZGQUE2RixDQUM5RjtJQUNEbmhCLEdBQUcsRUFBRSxDQUNILHdFQUF3RSxFQUN4RSxnRkFBZ0Y7RUFFcEYsQ0FBQyxDQUFDO0VBRUY2SSxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2Z1WSxNQUFNLEVBQUVBLENBQUNTLFFBQVEsRUFBRUMsV0FBVyxFQUFFVCxRQUFRLEtBQ3RDLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxJQUFJNHNCLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLElBQUlULFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDdkIrQztBQUVoRCxJQUFNWSxNQUFNLEdBQUc7RUFDYkMsSUFBSSxFQUFFLGNBQWM7RUFDcEJDLE9BQU8sRUFBRSxjQUFjO0VBQ3ZCQyxRQUFRLEVBQUU7QUFDWixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDZSw0RUFBQ3BhLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsV0FBVyxFQUFFO0lBQ2xCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJlLEVBQUUsQ0FDQSxRQUFRLEVBQ1I5dUIsTUFBaUIsR0FBRyxTQUFnQixHQUFHMHVCLE1BQU0sQ0FBQzF1QixTQUFvQixDQUFDLEVBQ25FLE1BQ0YsQ0FBQztRQUNEOHVCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFL2tCLFFBQVEsQ0FBQ2dsQixRQUFRLENBQUM7UUFDekNudEIsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDakMrQztBQUVqQyxpRkFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7SUFDdkJ1WSxNQUFNLEVBQUdDLFFBQVEsSUFDZixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQm5zQixPQUFPLENBQUMsQ0FBQztRQUNULElBQUlrc0IsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztNQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUNqQm9CO0FBQzJCOztBQUVoRDtBQUNlLDRFQUFDclosR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7RUFDSixDQUFDLENBQUM7RUFFRnRZLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDbEJ1WSxNQUFNLEVBQUdDLFFBQVEsSUFDZixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQnhsQiwwQkFBRyxDQUFDQyxHQUFHLENBQUN3bUIsWUFBWSxDQUFDO1FBQ3JCcHRCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ3BCb0I7QUFDMkI7O0FBRWhEO0FBQ2UsNkVBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFDSiw4RUFBOEU7SUFDaEZuaEIsR0FBRyxFQUFFLENBQ0gsK0VBQStFO0VBRW5GLENBQUMsQ0FBQztFQUVGNkksTUFBTSxDQUFDLFlBQVksRUFBRTtJQUNuQnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCeGxCLDBCQUFHLENBQUNVLFNBQVMsQ0FBQyxhQUFhLEVBQUVnbUIsV0FBVyxDQUFDO1FBQ3pDcnRCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ3ZCb0I7QUFDMkI7O0FBRWhEO0FBQ2UsNEVBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFBRSxDQUNOLDRFQUE0RSxFQUM1RSxvRkFBb0Y7RUFFeEYsQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsV0FBVyxFQUFFO0lBQ2xCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJ4bEIsMEJBQUcsQ0FBQ1UsU0FBUyxDQUFDLFdBQVcsRUFBRWltQixZQUFZLENBQUM7UUFDeEN0dEIsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFF
1BQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDdEIrQztBQUVoRCxJQUFNWSwrQ0FBTSxHQUFHO0VBQ2JDLElBQUksRUFBRSwwQ0FBMEM7RUFDaERDLE9BQU8sRUFBRSwwQ0FBMEM7RUFDbkRDLFFBQVEsRUFBRSwwQ0FBMEM7RUFDcERNLFFBQVEsRUFBRTtBQUNaLENBQUM7QUFFYyw4RUFBQzFhLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBRUYsSUFBTXdCLG9CQUFvQixHQUFJdEIsUUFBUSxJQUFLO0lBQ3pDLElBQU11QixhQUFhLEdBQUdYLCtDQUFNLENBQUMxdUIsU0FBb0IsQ0FBQztJQUNsRCxJQUFNc3ZCLFdBQVcsR0FBR3B0QixRQUFRLENBQUNDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztJQUVsRSxJQUFJbXRCLFdBQVcsRUFBRUEsV0FBVyxDQUFDQyxZQUFZLENBQUMsVUFBVSxFQUFFRixhQUFhLENBQUM7SUFFcEUzQixNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO01BQ2hCLElBQUlELFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVEeFksTUFBTSxDQUFDLGFBQWEsRUFBRTtJQUNwQnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0IsSUFBSTtRQUNGZ0Usb0JBQW9CLENBQUN0QixRQUFRLENBQUM7UUFDOUJsc0IsT0FBTyxDQUFDLENBQUM7TUFDWCxDQUFDLENBQUMsT0FBTytMLEtBQUssRUFBRTtRQUNkaEwsT0FBTyxDQUFDZ0wsS0FBSyxDQUFDLDZCQUE2QixFQUFFQSxLQUFLLENBQUM7UUFDbkR5ZCxNQUFNLENBQUN6ZCxLQUFLLENBQUM7TUFDZjtJQUNGLENBQUMsQ0FBQztJQUNKNmhCLElBQUksRUFBRUEsQ0FBQSxLQUFNO01BQ1Y5QixNQUFNLENBQUMrQixhQUFhLEdBQUcsQ0FBQztNQUN4Qi9CLE1BQU0sQ0FBQ2dDLFNBQVMsR0FBRyxLQUFLO01BQ3hCaEMsTUFBTSxDQUFDaUMsU0FBUyxHQUFHLEVBQUU7TUFDckIsSUFBTS9CLE1BQU0sR0FBRzFyQixRQUFRLENBQUNDLGFBQWEsQ0FDbkMsaURBQ0YsQ0FBQztNQUNELElBQUl5ckIsTUFBTSxFQUFFQSxNQUFNLENBQUNnQyxVQUFVLENBQUNDLFdBQVcsQ0FBQ2pDLE1BQU0sQ0FBQztJQUNuRDtFQUNGLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7Ozs7Ozs7Ozs7Ozs7QUM5QytDO0FBQ29COztBQUVwRTtBQUNlLDRFQUFDblosR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7RUFDSixDQUFDLENBQUM7RUFFRnRZLE1BQU0sQ0FBQyxXQUFXLEVBQUU7SUFDbEJ1WSxNQUFNQSxDQUFBLEVBQXlCO01BQUEsSUFBeEJudEIsT0FBTyxHQUFBdUosU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7TUFBQSxJQUFFNmpCLFFBQVEsR0FBQTdqQixTQUFBLENBQUF4SixNQUFBLE9BQUF3SixTQUFBLE1BQUFDLFNBQUE7TUFDM0IsT0FBTyxJQUFJdkksT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7UUFDdENzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1VBQ2hCLElBQU0rQixhQUFhLEdBQUc7WUFDcEJDLE9BQU8sRUFBRS92QixzQ0FBeUI7WUFDbEMyVSxXQUFXLEVBQUUzVSxNQUFpQixHQUFHLFNBQU0sR0FBRztVQUM1QyxDQUFDO1VBRURnd0IsTUFBTSxDQUFDeG1CLE1BQU0sQ0FBQUksbURBQUEsQ0FBQUEsbURBQUEsS0FDUmttQixhQUFhLEdBQ2JwdkIsT0FBTyxDQUNYLENBQUM7VUFDRmtCLE9BQU8sQ0FBQyxDQUFDO1VBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRG1DLGFBQWFBLENBQUEsRUFBeUI7TUFBQSxJQUF4QnZ2QixPQUFPLEdBQUF1SixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztNQUFBLElBQUU2akIsUUFBUSxHQUFBN2pCLFNBQUEsQ0FBQXhKLE1BQUEsT0FBQXdKLFNBQUEsTUFBQUMsU0FBQTtNQUNsQyxJQUFJLENBQUNqSyxNQUFNLENBQUMrdkIsTUFBTSxFQUFFO1FBQ2xCO1FBQ0E7TUFDRjtNQUNBLElBQU1FLFNBQVMsR0FBR3h2QixPQUFPLENBQUNvUCxHQUFHLElBQUksZUFBZTtNQUNoRCxJQUFNcWdCLE9BQU8sR0FBR2p1QixRQUFRLENBQUNrdUIsY0FBYyxDQUFDRixTQUFTLENBQUMxdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQzs7TUFFbkU7TUFDQSxJQUFJMnRCLE9BQU8sSUFBSSxDQUFDQSxPQUFPLENBQUNFLFVBQVUsQ0FBQzV2QixNQUFNLEVBQUU7UUFDekN1dkIsTUFBTSxDQUFDTSxPQUFPLENBQUNubEIsTUFBTSxDQUFDK2tCLFNBQVMsRUFBRXh2QixPQUFPLENBQUM7UUFDekNvcEIsVUFBVSxDQUFDLE1BQU07VUFDZixJQUFJZ0UsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztRQUMxQixDQUFDLEVBQUUsSUFBSSxDQUFDO01BQ1Y7SUFDRixDQUFDO0lBQ0t5QyxtQkFBbUJBLENBQUEsRUFBZTtNQUFBLElBQUFDLFVBQUEsR0FBQXZtQixTQUFBO1FBQUEyRyxLQUFBO01BQUEsT0FBQUMsMkNBQUE7UUFBQSxJQUFkblEsT0FBTyxHQUFBOHZCLFVBQUEsQ0FBQS92QixNQUFBLFFBQUErdkIsVUFBQSxRQUFBdG1CLFNBQUEsR0FBQXNtQixVQUFBLE1BQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQ3Z3QixNQUFNLENBQUMrdkIsTUFBTSxFQUFFO1VBQ2xCLE1BQU1wZixLQUFJLENBQUNpZCxNQUFNLENBQUMsQ0FBQztVQUNuQmpkLEtBQUksQ0FBQzJmLG1CQUFtQixDQUFDN3ZCLE9BQU8sQ0FBQztVQUNqQztRQUNGO1FBQ0EsSUFBTXd2QixTQUFTLEdBQUd4dkIsT0FBTyxDQUFDb1AsR0FBRyxJQUFJLGVBQWU7UUFDaEQsSUFBTXFnQixPQUFPLEdBQUdqdUIsUUFBUSxDQUFDa3VCLGNBQWMsQ0FBQ0YsU0FBUyxDQUFDMXRCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7O1FBRW5FO1FBQ0EsSUFBSTJ0QixPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDRSxVQUFVLENBQUM1dkIsTUFBTSxFQUFFO1VBQ3pDdXZCLE1BQU0sQ0FBQ00sT0FBTyxDQUFDRyxpQkFBaUIsQ0FBQ1AsU0FBUyxFQUFFeHZCLE9BQU8sQ0FBQztRQUN0RDtNQU
1FDO0lBQ0gsQ0FBQztJQUNLZ3dCLFNBQVNBLENBQUEsRUFBZTtNQUFBLElBQUFDLFdBQUEsR0FBQTFtQixTQUFBO1FBQUF1SCxNQUFBO01BQUEsT0FBQVgsMkNBQUE7UUFBQSxJQUFkblEsT0FBTyxHQUFBaXdCLFdBQUEsQ0FBQWx3QixNQUFBLFFBQUFrd0IsV0FBQSxRQUFBem1CLFNBQUEsR0FBQXltQixXQUFBLE1BQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQzF3QixNQUFNLENBQUMrdkIsTUFBTSxFQUFFO1VBQ2xCLE1BQU1ydUIsT0FBTyxDQUFDaXZCLElBQUksQ0FBQyxDQUNqQnBmLE1BQUksQ0FBQ3FjLE1BQU0sQ0FBQyxDQUFDLEVBQ2IsSUFBSWxzQixPQUFPLENBQUVDLE9BQU8sSUFBS2tvQixVQUFVLENBQUNsb0IsT0FBTyxFQUFFaXZCLHdDQUFvQixDQUFDLENBQUMsQ0FDcEUsQ0FBQztVQUVGLElBQUksQ0FBQzV3QixNQUFNLENBQUMrdkIsTUFBTSxFQUFFO1lBQ2xCLElBQUl0dkIsT0FBTyxDQUFDb3dCLE9BQU8sRUFBRXB3QixPQUFPLENBQUNvd0IsT0FBTyxDQUFDLElBQUksQ0FBQztZQUMxQztVQUNGO1FBQ0Y7UUFDQSxJQUFJO1VBQ0ZkLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDQyxJQUFJLENBQUN0d0IsT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxPQUFPZ0MsQ0FBQyxFQUFFO1VBQ1YsSUFBSWhDLE9BQU8sQ0FBQ293QixPQUFPLEVBQUVwd0IsT0FBTyxDQUFDb3dCLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDNUM7TUFBQztJQUNILENBQUM7SUFDREcsT0FBT0EsQ0FBQSxFQUFlO01BQUEsSUFBZHZ3QixPQUFPLEdBQUF1SixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztNQUNsQixJQUFJLENBQUNoSyxNQUFNLENBQUMrdkIsTUFBTSxFQUFFO1FBQ2xCO1FBQ0EsT0FBTyxJQUFJO01BQ2I7TUFFQSxJQUFNRSxTQUFTLEdBQUd4dkIsT0FBTyxDQUFDb1AsR0FBRyxJQUFJLGVBQWU7TUFDaEQsSUFBSTVOLFFBQVEsQ0FBQ2t1QixjQUFjLENBQUNGLFNBQVMsQ0FBQzF0QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDdkQ7UUFDQSxJQUFNeUcsU0FBUyxHQUFHK21CLE1BQU0sQ0FBQ00sT0FBTyxDQUFDWSxRQUFRLENBQUNoQixTQUFTLENBQUM7UUFFcEQsSUFBSSxDQUFDam5CLFNBQVMsRUFBRSxPQUFPLElBQUk7O1FBRTNCO1FBQ0EsT0FBT0EsU0FBUyxDQUFDa29CLGdCQUFnQixDQUFDLENBQUM7TUFDckM7TUFDQSxPQUFPLElBQUk7SUFDYixDQUFDO0lBQ0RDLGFBQWFBLENBQUEsRUFBZTtNQUFBLElBQWQxd0IsT0FBTyxHQUFBdUosU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7TUFDeEIsSUFBSSxDQUFDaEssTUFBTSxDQUFDK3ZCLE1BQU0sRUFBRTtRQUNsQjtRQUNBLE9BQU8sSUFBSTtNQUNiO01BRUEsSUFBTUUsU0FBUyxHQUFHeHZCLE9BQU8sQ0FBQ29QLEdBQUcsSUFBSSxlQUFlO01BRWhELElBQUksQ0FBQ29nQixTQUFTLElBQUksQ0FBQ3h2QixPQUFPLENBQUMyd0IsaUJBQWlCLEVBQUU7TUFFOUMsSUFBSW52QixRQUFRLENBQUNrdUIsY0FBYyxDQUFDRixTQUFTLENBQUMxdEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ3ZEO1FBQ0EsSUFBTXlHLFNBQVMsR0FBRyttQixNQUFNLENBQUNNLE9BQU8sQ0FBQ1ksUUFBUSxDQUFDaEIsU0FBUyxDQUFDO1FBRXBELElBQUksQ0FBQ2puQixTQUFTLEVBQUUsT0FBTyxJQUFJOztRQUUzQjtRQUNBLE9BQU9BLFNBQVMsQ0FBQ3FvQixnQkFBZ0IsQ0FBQzV3QixPQUFPLENBQUMyd0IsaUJBQWlCLENBQUM7TUFDOUQ7TUFDQSxPQUFPLElBQUk7SUFDYjtFQUNGLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDcEgrQztBQUVqQyw4RUFBQzVjLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsYUFBYSxFQUFFO0lBQ3BCdVksTUFBTSxFQUFFQSxDQUFDbGYsTUFBTSxFQUFFbWYsUUFBUSxLQUN2QixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQjl0QixNQUFNLENBQUNzeEIsV0FBVyxHQUFHLFlBQVk7VUFDL0IsSUFBTUMsb0JBQW9CLEdBQUd0dkIsUUFBUSxDQUFDdXZCLGFBQWEsQ0FBQyxLQUFLLENBQUM7VUFDMUR2dkIsUUFBUSxDQUFDd3ZCLElBQUksQ0FBQ0MsV0FBVyxDQUFDSCxvQkFBb0IsQ0FBQztVQUMvQ3Z4QixNQUFNLENBQUMyeEIsSUFBSSxDQUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZO1lBQzFDOXRCLE1BQU0sQ0FBQzJ4QixJQUFJLENBQUNDLFdBQVcsQ0FBQzFtQixNQUFNLENBQUNxbUIsb0JBQW9CLEVBQUU7Y0FDbkQ7Y0FDQU0sV0FBVyxFQUFFOXhCLFNBQXNCO2NBQ25DO2NBQ0FpQixRQUFRLEVBQUU7WUFDWixDQUFDLENBQUM7VUFDSixDQUFDLENBQUM7UUFDSixDQUFDO1FBQ0RoQixNQUFNLENBQUNzeEIsV0FBVyxDQUFDLENBQUM7UUFDcEIsSUFBSXpELFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7UUFDeEJsc0IsT0FBTyxDQUFDLENBQUM7TUFDWCxDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUM3QitDO0FBRWpDLDZFQUFDNlMsR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBSTtJQUNGLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztNQUMxQkMsTUFBTSxpREFBQXJlLE1BQUEsQ0FBaUR2UCx5Q0FBd0I7SUFDakYsQ0FBQyxDQUFDO0lBRUZzVixNQUFNLENBQUMsWUFBWSxFQUFFO01BQ25CdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztRQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07VUFDaEJuc0IsT0FBTyxDQUFDLENBQUM7VUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDO01BQ0osQ0FBQztJQUNMLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQyxPQUFPcHJCLENBQUMsRUFBRTtJQUNWQyxPQUFPLENBQUNvdkIsR0FBRyxDQUFDcnZCLENBQUMsQ0FBQztFQUNoQjtBQUNGLENBQUMsRTs7O0FDcEIrQztBQUVqQywrRUFBQytSLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsY0FBYyxFQUFFO0lBQ3JCdVksTUFBTSxFQUFFQSxDQUFDbGYsTUFBTSxFQUFFbWYsUUFBUSxLQUN2QixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQjl0QixNQUFNLENBQUMreEIsV0FBVyxHQUFHLFlBQVk7VUFDL0IveEIsTUFBTSxDQUFDMnhCLElBQUksQ0FBQzdELElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWTtZQUMxQzl0QixNQUFNLENBQUMyeEIsSUFBSSxDQUFDSyxXQUFXLENBQUM5bUIsTUFBTSxDQUFDd0QsTUFBTSxDQUFDO1VBQ3hDLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJbWYsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztRQUN4QmxzQixPQUFPLENBQUMsQ0FBQztNQUNYLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ3JCb0I7QUFDMkI7QUFFaEQsSUFBTThzQix3Q0FBTSxHQUFHO0VBQ2JDLElBQUksRUFBRSxjQUFjO0VBQ3BCQyxPQUFPLEVBQUUsY0FBYztFQUN2QkMsUUFBUSxFQUFFLGNBQWM7RUFDeEJNLFFBQVEsRUFBRTtBQUNaLENBQUM7O0FBRUQ7QUFDZSx1RUFBQzFhLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsU0FBUyxFQUFFO0lBQ2hCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJ4bEIsMEJBQUcsQ0FBQ0MsR0FBRyxDQUFDMHBCLE9BQU8sRUFBRTtVQUNmMW9CLE1BQU0sRUFBRTtZQUNOMkcsRUFBRSxFQUFFblEsTUFBaUIsR0FDakIsU0FBZ0IsR0FDaEIwdUIsd0NBQU0sQ0FBQzF1QixTQUFvQjtVQUNqQyxDQUFDO1VBQ0QyTyxNQUFNLEVBQUU7WUFDTndqQixZQU
1FZLEVBQUUsSUFBSTtZQUFFO1lBQ3BCQyxjQUFjLEVBQUUsS0FBSztZQUFFO1lBQ3ZCQyxNQUFNLEVBQUU7Y0FDTkMsT0FBTyxFQUFFQyxjQUFjLENBQUM7WUFDMUI7VUFDRjtRQUNGLENBQUMsQ0FBQztRQUNGM3dCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7RUFFRixTQUFTeUUsY0FBY0EsQ0FBQSxFQUFHO0lBQ3hCLElBQUksSUFBa0IsRUFBRSxPQUFPLENBQUN2eUIsY0FBc0IsQ0FBQztJQUN2RCxPQUFPLENBQUMsZ0JBQWdCLEVBQUVBLHlCQUFxQixDQUFDO0VBQ2xEO0FBQ0YsQ0FBQyxFOzs7QUM3QytDO0FBRWpDLHlFQUFDeVUsR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7RUFDSixDQUFDLENBQUM7RUFFRnRZLE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDZnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7O0FDakIrQzs7QUFFaEQ7QUFDZSxzRUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ1p1WSxNQUFNQSxDQUFDNXJCLEVBQUUsRUFBRXV3QixNQUFNLEVBQUU5eEIsT0FBTyxFQUFFb3RCLFFBQVEsRUFBRXprQixRQUFRLEVBQUU7TUFDOUNxa0IsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQixJQUFJMEUsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7VUFDNUIsSUFBTUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQy94QixPQUFPLENBQUM7VUFDL0JpeUIsTUFBTSxDQUFDQyxVQUFVLENBQUNKLE1BQU0sQ0FBQztVQUN6QkcsTUFBTSxDQUFDRSxXQUFXLENBQUM1d0IsRUFBRSxDQUFDO1VBQ3RCMHdCLE1BQU0sQ0FBQzlsQixFQUFFLENBQUM0bEIsR0FBRyxDQUFDSyxNQUFNLENBQUNDLGNBQWMsRUFBRSxNQUFNO1lBQ3pDLElBQUlyeUIsT0FBTyxDQUFDc3lCLFFBQVEsRUFDbEIvd0IsRUFBRSxDQUFDZ3hCLElBQUksQ0FBQyxDQUFDLENBQUM5Z0IsSUFBSSxDQUFDLE1BQU07Y0FDbkIsSUFBSTJiLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDO1VBQ0YsT0FBTzZFLE1BQU07UUFDZixDQUFDLE1BQU0sSUFBSXRwQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQ2pDLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUMzQitDOztBQUVoRDtBQUNlLHdFQUFDb0wsR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7RUFDSixDQUFDLENBQUM7RUFFRnRZLE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZHVZLE1BQU0sRUFBRUEsQ0FBQzVyQixFQUFFLEVBQUV2QixPQUFPLEVBQUVvdEIsUUFBUSxLQUM1QixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQm5zQixPQUFPLENBQUMsSUFBSXN4QixLQUFLLENBQUNqeEIsRUFBRSxFQUFFdkIsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSW90QixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ2xCK0M7QUFFakMsdUVBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFBRTtFQUNWLENBQUMsQ0FBQztFQUVGdFksTUFBTSxDQUFDLE1BQU0sRUFBRTtJQUNidVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJuc0IsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7Ozs7OztBQ2hCcUM7QUFDVTs7QUFFaEQ7QUFDZSwyRUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ2pCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEI5dEIsTUFBTSxDQUFDNFcsSUFBSSxHQUFHLElBQUlzYyxRQUFRLENBQUM7VUFDekI7VUFDQUMsY0FBYyxFQUFFLEtBQUs7VUFDckJDLGlCQUFpQixFQUFFLE9BQU87VUFDMUJDLFlBQVksRUFBRSxhQUFhO1VBQzNCQyxpQkFBaUIsRUFBRSxJQUFJO1VBQ3ZCQyxjQUFjLEVBQUVDLG1CQUFtQjtVQUNuQ0MsU0FBUyxFQUFFO1FBQ2IsQ0FBQyxDQUFDO1FBRUZ6ekIsTUFBTSxDQUFDMHpCLFVBQVUsR0FBR0Msa0JBQVEsQ0FBQyxZQUFZO1VBQ3ZDLElBQUkzekIsTUFBTSxDQUFDNFcsSUFBSSxFQUFFNVcsTUFBTSxDQUFDNFcsSUFBSSxDQUFDZ2QsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUVONXpCLE1BQU0sQ0FBQzRXLElBQUksQ0FBQ2dkLE1BQU0sQ0FBQyxDQUFDO1FBRXBCanlCLE9BQU8sQ0FBQzNCLE1BQU0sQ0FBQzRXLElBQUksQ0FBQztRQUNwQixJQUFJaVgsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztNQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0VBRUY3dEIsTUFBTSxDQUFDNnpCLGFBQWEsR0FBRztJQUNyQnRILE1BQU1BLENBQUMyRCxPQUFPLEVBQUU7TUFDZDtNQUNBO01BQ0FBLE9BQU8sQ0FBQ1osWUFBWSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7SUFDaEQ7RUFDRixDQUFDO0VBRUQsU0FBU2tFLG1CQUFtQkEsQ0FBQ3RELE9BQU8sRUFBRTtJQUNwQyxJQUFNNEQsZ0JBQWdCLEdBQUc1RCxPQUFPLENBQUM2RCxZQUFZLENBQUMsb0JBQW9CLENBQUM7SUFDbkUsSUFBTUMsWUFBWSxHQUFHaDBCLE1BQU0sQ0FBQzZ6QixhQUFhLENBQUNDLGdCQUFnQixDQUFDO0lBQzNELElBQUksQ0FBQ0UsWUFBWSxFQUFFO0lBQ25CQSxZQUFZLENBQUM5RCxPQUFPLENBQUM7RUFDdkI7QU
1FDRixDQUFDLEU7OztBQ2xEK0M7QUFDakMsbUZBQUMxYixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFBRSx5QkFBeUI7SUFDakMvZixJQUFJLEVBQUU7RUFDUixDQUFDLENBQUM7RUFFRnlILE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtJQUN6QnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ2hCK0M7O0FBRWhEO0FBQ2UsNEVBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFDSjtFQUNKLENBQUMsQ0FBQztFQUVGdFksTUFBTSxDQUFDLFdBQVcsRUFBRTtJQUNsQnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCLElBQU16YSxLQUFLLEdBQUdtQixHQUFHLENBQUNuQixLQUFLO1FBQ3ZCNGdCLFNBQVMsQ0FBQ3JuQixFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVVzbkIsTUFBTSxFQUFFO1VBQ3JDLElBQUlBLE1BQU0sRUFBRTtZQUNWO1lBQ0E3Z0IsS0FBSyxDQUFDcUwsUUFBUSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQztVQUM1QyxDQUFDLE1BQU07WUFDTDtZQUNBckwsS0FBSyxDQUFDcUwsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQztVQUM3QztRQUNGLENBQUMsQ0FBQztRQUVGL2MsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDN0IrQzs7QUFFaEQ7QUFDZSw2RUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKLDhFQUE4RTtJQUNoRm5oQixHQUFHLEVBQUUsQ0FDSCwrRUFBK0U7RUFFbkYsQ0FBQyxDQUFDO0VBRUY2SSxNQUFNLENBQUMsWUFBWSxFQUFFO0lBQ25CdVksTUFBTSxFQUFFQSxDQUFDNXJCLEVBQUUsRUFBRXZCLE9BQU8sRUFBRW90QixRQUFRLEtBQzVCLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQ3d5QixVQUFVLENBQUM3SSxNQUFNLENBQUN0cEIsRUFBRSxFQUFFdkIsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSW90QixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7RUFDTCxDQUFDLENBQUM7QUFDSixDQUFDLEU7OztBQ3JCK0M7O0FBRWhEO0FBQ2UsbUZBQUNyWixHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFDSixvRkFBb0Y7SUFDdEZuaEIsR0FBRyxFQUFFLENBQ0gscUZBQXFGO0VBRXpGLENBQUMsQ0FBQztFQUVGNkksTUFBTSxDQUFDLGtCQUFrQixFQUFFO0lBQ3pCdVksTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUc1ckIsRUFBRTtNQUFBLElBQUV2QixPQUFPLEdBQUF1SixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztNQUFBLElBQUU2akIsUUFBUSxHQUFBN2pCLFNBQUEsQ0FBQXhKLE1BQUEsT0FBQXdKLFNBQUEsTUFBQUMsU0FBQTtNQUFBLE9BQ2pDLElBQUl2SSxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztRQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07VUFDaEJuc0IsT0FBTyxDQUFDLElBQUl5eUIsZ0JBQWdCLENBQUNweUIsRUFBRSxFQUFFdkIsT0FBTyxDQUFDLENBQUM7VUFDMUMsSUFBSW90QixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUFBO0VBQ04sQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUNyQitDOztBQUVoRDtBQUNlLHlFQUFDclosR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7RUFDSixDQUFDLENBQUM7RUFFRnRZLE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDZnVZLE1BQU0sRUFBRUEsQ0FBQzVyQixFQUFFLEVBQUVxeUIsT0FBTyxFQUFFNXpCLE9BQU8sRUFBRW90QixRQUFRLEtBQ3JDLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQzJ5QixNQUFNLENBQUNDLFlBQVksQ0FBQ3Z5QixFQUFFLEVBQUVxeUIsT0FBTyxFQUFFNXpCLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUlvdEIsUUFBUSxFQUFFQSxRQUFRLENBQUMsQ0FBQztNQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUNsQitDO0FBRWpDLDRFQUFDclosR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQUUsQ0FDTix5RkFBeUY7RUFFN0YsQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsV0FBVyxFQUFFO0lBQ2xCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJuc0IsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDbEIrQztBQUVqQywyRUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCclYsTUFBTSxDQUFDdzBCLFNBQVMsR0FBR3gwQixNQUFNLENBQUN3MEIsU0FBUyxJQUFJLEVBQUU7RUFDekN4MEIsTUFBTSxDQUFDdzBCLFNBQVMsQ0FBQzNxQixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU5SixTQUEwQixDQUFDLENBQUM7RUFDakVDLE1BQU0sQ0FBQ3cwQixTQUFTLENBQUMzcUIsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFOUosY0FBb0MsQ0FBQyxDQUFDO0VBQzFFQyxNQUFNLENBQUN3MEIsU0FBUyxDQUFDM3FCLElBQUksQ0FBQyxDQUNwQixxQkFBcUIsRU
1FDckIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQ2xFLENBQUM7RUFDRjdKLE1BQU0sQ0FBQ3cwQixTQUFTLENBQUMzcUIsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBRTlDLElBQU00akIsTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sRUFBRTtFQUNWLENBQUMsQ0FBQztFQUVGdFksTUFBTSxDQUFDLFVBQVUsRUFBRTtJQUNqQnVZLE1BQU0sRUFBR0MsUUFBUSxJQUNmLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxDQUFDO1FBQ1QsSUFBSWtzQixRQUFRLEVBQUVBLFFBQVEsQ0FBQyxDQUFDO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUNKaGtCLElBQUksRUFBRzZFLE1BQU0sSUFBSztNQUFBLElBQUErbEIsT0FBQTtNQUNoQixLQUFBQSxPQUFBLEdBQUl6MEIsTUFBTSxjQUFBeTBCLE9BQUEsZUFBTkEsT0FBQSxDQUFRRCxTQUFTLEVBQUU7UUFDckJ4MEIsTUFBTSxDQUFDdzBCLFNBQVMsQ0FBQzNxQixJQUFJLENBQUM2RSxNQUFNLENBQUM7UUFDN0I7TUFDRjtNQUNBaE0sT0FBTyxDQUFDb3ZCLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQztJQUM1QztFQUNGLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDaENvQjtBQUMyQjs7QUFFaEQ7QUFDZSxnRkFBQ3RkLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0WSxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2Z1WSxNQUFNLEVBQUdDLFFBQVEsSUFDZixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQnhsQiwwQkFBRyxDQUFDQyxHQUFHLENBQUNtc0IsZ0JBQWdCLENBQUM3cEIsT0FBTyxDQUFDO1FBQ2pDbEosT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7Ozs7O0FDcEIrQzs7QUFFaEQ7QUFDZSw2RUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUNKLG9GQUFvRjtJQUN0Rm5oQixHQUFHLEVBQUUsQ0FDSCxpRkFBaUY7RUFFckYsQ0FBQyxDQUFDO0VBRUYsSUFBTW1vQixVQUFVLEdBQUlsMEIsT0FBTyxJQUFLO0lBQzlCLElBQU1tMEIsZUFBZSxHQUFHbjBCLE9BQU8sSUFBSUEsT0FBTyxDQUFDbzBCLE9BQU87SUFDbEQsT0FBQWxyQixvREFBQSxDQUFBQSxvREFBQSxLQUNLbEosT0FBTztNQUNWbzBCLE9BQU8sRUFBR0MsS0FBSyxJQUFLO1FBQ2xCQSxLQUFLLENBQUN4RixZQUFZLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztRQUMvQyxJQUFJc0YsZUFBZSxFQUFFQSxlQUFlLENBQUNFLEtBQUssQ0FBQztNQUM3QztJQUFDO0VBRUwsQ0FBQztFQUVEemYsTUFBTSxDQUFDLFlBQVksRUFBRTtJQUNuQnVZLE1BQU0sRUFBRUEsQ0FBQ250QixPQUFPLEVBQUVzaEIsS0FBSyxFQUFFOEwsUUFBUSxLQUMvQixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQixJQUFJL0wsS0FBSyxFQUFFO1VBQ1QsSUFBTWdULEtBQUssR0FBR0MsSUFBSSxDQUFDalQsS0FBSyxDQUFDQSxLQUFLLENBQUM7VUFDL0JnVCxLQUFLLENBQ0ZFLElBQUksQ0FBQ04sVUFBVSxDQUFDbDBCLE9BQU8sQ0FBQyxDQUFDLENBQ3pCeVIsSUFBSSxDQUFFK1ksUUFBUSxJQUFLO1lBQ2xCdHBCLE9BQU8sQ0FBQ3NwQixRQUFRLENBQUM7VUFDbkIsQ0FBQyxDQUFDLENBQ0RzQyxLQUFLLENBQUU3ZixLQUFLLElBQUs7WUFDaEJ5ZCxNQUFNLENBQUN6ZCxLQUFLLENBQUM7VUFDZixDQUFDLENBQUM7VUFDSixJQUFJbWdCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxNQUFNO1VBQ0xtSCxJQUFJLENBQUNDLElBQUksQ0FBQ04sVUFBVSxDQUFDbDBCLE9BQU8sQ0FBQyxDQUFDLENBQzNCeVIsSUFBSSxDQUFFK1ksUUFBUSxJQUFLO1lBQ2xCdHBCLE9BQU8sQ0FBQ3NwQixRQUFRLENBQUM7VUFDbkIsQ0FBQyxDQUFDLENBQ0RzQyxLQUFLLENBQUU3ZixLQUFLLElBQUs7WUFDaEJ5ZCxNQUFNLENBQUN6ZCxLQUFLLENBQUM7VUFDZixDQUFDLENBQUM7VUFDSixJQUFJbWdCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7UUFDMUI7TUFDRixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUNuRCtDOztBQUVoRDtBQUNlLHlFQUFDclosR0FBRyxFQUFFYSxNQUFNLEtBQUs7RUFDOUIsSUFBTW9ZLE1BQU0sR0FBRyxJQUFJQywyQkFBUSxDQUFDO0lBQzFCQyxNQUFNLEVBQ0o7SUFDRjtJQUNBO0lBQ0E7RUFDRixDQUFDLENBQUM7RUFDRjtFQUNBdFksTUFBTSxDQUFDLFFBQVEsRUFBRTtJQUNmdVksTUFBTSxFQUFFQSxDQUFDNXJCLEVBQUUsRUFBRXZCLE9BQU8sRUFBRW90QixRQUFRLEtBQzVCLElBQUluc0IsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRXdwQixNQUFNLEtBQUs7TUFDL0JzQyxNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNO1FBQ2hCbnNCLE9BQU8sQ0FBQyxJQUFJdXpCLE1BQU0sQ0FBQ2x6QixFQUFFLEVBQUV2QixPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJb3RCLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7O0FDckIrQzs7QUFFaEQ7QUFDZSw0RUFBQ3JaLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFLENBQ04sNEVBQTRFLENBQzdFO0lBQ0RuaEIsR0FBRyxFQUFFLENBQ0gsbUZBQW1GO0VBRXZGLENBQUMsQ0FBQztFQUVGNkksTUFBTSxDQUFDLFdBQVcsRUFBRTtJQUNsQnVZLE1BQU0sRUFBRUEsQ0FBQzVyQixFQUFFLEVBQUV2QixPQUFPLEVBQUVvdEIsUUFBUSxLQUM1QixJQUFJbnNCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQy9Cc0MsTUFBTSxDQUFDSyxJQUFJLENBQUMsTUFBTTtRQUNoQm5zQixPQUFPLENBQUMsSUFBSXd6QixTQUFTLENBQUNuekIsRUFBRSxFQUFFdkIsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSW90QixRQUFRLEVBQUVBLFFBQVEsQ0FBQ3NILFNBQVMsQ0FBQztNQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUN0QitDOztBQUVoRDtBQUNlLHdFQUFDM2dCLEdBQUcsRUFBRWEsTUFBTSxLQUFLO0VBQzlCLElBQU1vWSxNQUFNLEdBQUcsSUFBSUMsMkJBQVEsQ0FBQztJQUMxQkMsTUFBTSxFQUFFLENBQ04sMEVBQTBFLEVBQzFFLG1GQUFtRixDQUNwRjtJQUNEbmhCLEdBQUcsRUFBRSxDQUFDLHFFQUFxRTtFQUM3RSxDQUFDLENBQUM7RUFFRjZJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7SUFDZHVZLE1BQU0sRUFBRUEsQ0FBQzVyQixFQUFFLEVBQUV2QixPQUFPLEtBQ2xCLElBQUlpQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJuc0IsT0FBTyxDQUFDeXpCLEtBQUssQ0FBQ3B6QixFQUFFLEVBQUV2QixPQUFPLENBQUMsQ0FBQztNQUM3QixDQUFDLENBQUM7SUFDSixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFOzs7QUNwQitDO0FBRWhELElBQU1ndUIsNENBQU0sR0FBRztFQUNiQyxJQUFJLEVBQUUsa0VBQWtFO0VBQ3hFQyxPQUFPLEVBQUUsa0VBQWtFO0VBQzNFQyxRQUFRLEVBQUUsa0VBQWtFO0VBQzVFTSxRQUFRLEVBQUU7QUFDWixDQUFDO0FBRWMsMkVBQUMxYSxHQUFHLEVBQUVhLE1BQU0sS0FBSztFQUM5QixJQUFNb1ksTUFBTSxHQUFHLElBQUlDLDJCQUFRLENBQUM7SUFDMUJDLE1BQU0sNkRBQUFyZSxNQUFBLENBQ0ptZiw0Q0FBTSxDQUFDMXVCLFNBQW9CLENBQUM7RUFFaEMsQ0FBQyxDQUFDO0VBRUZzVixNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ2pCdVksTUFBTSxFQUFHQyxRQUFRLElBQ2YsSUFBSW5zQixPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFd3BCLE1BQU0sS0FBSztNQUMvQnNDLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLE1BQU07UUFDaEJuc0IsT0FBTyxDQUFDLENBQUM7UUFDVCxJQUFJa3NCLFF
1BQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7TUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztFQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsRTs7Ozs7Ozs7Ozs7QUN6Qm9CO0FBQ0U7QUFDSTtBQUNhO0FBQ1Y7QUFDWTtBQUNRO0FBQ0M7QUFDWjtBQUNiO0FBQ3FEO0FBQ3ZDOztBQUV4Qzs7QUFFaUYsQ0FBQztBQUNELENBQUM7QUFDYSxDQUFDO0FBQ2pCLENBQUM7QUFDRyxDQUFDO0FBQ1AsQ0FBQztBQUNHLENBQUM7QUFDTCxDQUFDO0FBQ1gsQ0FBQztBQUNDLENBQUM7QUFDSCxDQUFDO0FBQ0ssQ0FBQztBQUNYLENBQUM7QUFDYSxDQUFDO0FBQ1gsQ0FBQztBQUNPLENBQUM7QUFDRyxDQUFDO0FBQ1gsQ0FBQztBQUNtQixDQUFDO0FBQ3ZCLENBQUM7QUFDeUIsQ0FBQztBQUN2QixDQUFDO0FBQ1MsQ0FBQztBQUNMLENBQUM7QUFDTCxDQUFDO0FBQ3FCLENBQUM7QUFDakIsQ0FBQztBQUNELENBQUM7QUFDWCxDQUFDO0FBQ08sQ0FBQztBQUNYLENBQUM7QUFDSCxDQUFDO0FBQ0QsQ0FBQztBQUM2RCxDQUFDO0FBQ1AsQ0FBQztBQUNELENBQUM7QUFDSyxDQUFDO0FBQ1MsQ0FBQztBQUNYLENBQUM7QUFDQyxDQUFDO0FBQ0gsQ0FBQztBQUNHLENBQUM7QUFDTCxDQUFDO0FBQ0csQ0FBQztBQUNILENBQUM7QUFDRyxDQUFDO0FBQ2pCLENBQUM7QUFDRyxDQUFDO0FBQ1AsQ0FBQztBQUNHLENBQUM7QUFDSCxDQUFDO0FBQ08sQ0FBQztBQUNlLENBQUM7QUFDZixDQUFDO0FBQ0MsQ0FBQztBQUNXLENBQUM7QUFDckIsQ0FBQztBQUNLLENBQUM7QUFDSCxDQUFDO0FBQ1MsQ0FBQztBQUNQLENBQUM7QUFDVCxDQUFDO0FBQ0ssQ0FBQztBQUNULENBQUM7QUFDSyxDQUFDOztBQUU5SDtBQUNBdmxCLDBCQUFHLENBQUNVLFNBQVMsQ0FBQ3FzQixnQ0FBVSxDQUFDbnNCLElBQUksRUFBRW1zQixnQ0FBVSxDQUFDOztBQUUxQztBQUNBL3NCLDBCQUFHLENBQUNVLFNBQVMsQ0FBQ3NzQiwyQkFBSyxDQUFDcHNCLElBQUksRUFBQVMsb0JBQUEsQ0FBQUEsb0JBQUEsS0FDbkIyckIsMkJBQUs7RUFDUnBxQixNQUFNQSxDQUFFSSxDQUFDLEVBQUVrSixHQUFHLEVBQUU7SUFDZCxJQUFJelUsS0FBYyxJQUFJLENBQUN1MUIsMkJBQUssQ0FBQ0MsT0FBTyxFQUFFO01BQ3BDRCwyQkFBSyxDQUFDQyxPQUFPLEdBQUcsSUFBSTtNQUVwQjd5QixPQUFPLENBQUNDLElBQUksQ0FBQyw4RkFBOEYsQ0FBQztJQUM5RztJQUNBLE9BQU8yeUIsMkJBQUssQ0FBQ3BxQixNQUFNLENBQUNJLENBQUMsRUFBRWtKLEdBQUcsQ0FBQztFQUM3QjtBQUFDLEVBQ0YsQ0FBQzs7QUFFRjtBQUNBbE0sMEJBQUcsQ0FBQ1UsU0FBUyxDQUFDaUYsVUFBUyxDQUFDL0UsSUFBSSxFQUFFK0UsVUFBUyxDQUFDO0FBQ3hDM0YsMEJBQUcsQ0FBQ1UsU0FBUyxDQUFDLFFBQVEsRUFBRWlGLFVBQVMsQ0FBQzs7QUFFbEM7O0FBRUE7QUFDQTNGLDBCQUFHLENBQUNVLFNBQVMsQ0FBQ3dzQixlQUFJLENBQUN0c0IsSUFBSSxFQUFFc3NCLGVBQUksQ0FBQztBQUU5QnZxQixNQUFNLENBQUN3cUIsY0FBYyxDQUFDbnRCLDBCQUFHLENBQUM0ZSxTQUFTLEVBQUUsT0FBTyxFQUFFO0VBQzVDcE0sR0FBR0EsQ0FBQSxFQUFHO0lBQ0osSUFBTTRhLFVBQVUsR0FBRyxJQUFJLENBQUN4bUIsS0FBSyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxDQUFDQyxRQUFRLENBQUM5TixLQUFLLEdBQUcsSUFBSTtJQUNoRSxJQUFJdEIsS0FBYyxJQUFJLENBQUMyMUIsVUFBVSxJQUFJLE9BQU8xMUIsTUFBTSxLQUFLLFdBQVcsRUFBRTtNQUNsRSxPQUFPQSxNQUFNLENBQUNxQixLQUFLO0lBQ3JCO0lBQ0EsT0FBT3EwQixVQUFVO0VBQ25CLENBQUM7RUFDREMsWUFBWSxFQUFFO0FBQ2hCLENBQUMsQ0FBQztBQUVGcnRCLDBCQUFHLENBQUNDLEdBQUcsQ0FBQ3F0Qix1Q0FBSSxFQUFFO0VBQUMsU0FBUyxFQUFDLE1BQU07RUFBQyxXQUFXLEVBQUMsYUFBYTtFQUFDLGNBQWMsRUFBQyxpQkFBaUI7RUFBQyxjQUFjLEVBQUM7QUFBSyxDQUFDLENBQUM7QUFFakgsSUFBTWpxQixpQkFBaUIsR0FBRztFQUFDLE1BQU0sRUFBQyxNQUFNO0VBQUMsTUFBTSxFQUFDLFFBQVE7RUFBQyxRQUFRLEVBQUMsS0FBSztFQUFDLGFBQWEsRUFBQyxRQUFRO0VBQUMsbUJBQW1CLEVBQUMsZUFBZTtFQUFDLGVBQWUsRUFBQztBQUFXLENBQUM7QUFFL0osSUFBTWtxQixzQkFBc0IsR0FBR3ppQiwyQkFBSSxDQUFDUSxLQUFLLENBQUNzVCxTQUFTLENBQUM5SSxjQUFjO0FBRWxFLFNBQVNBLGNBQWNBLENBQUU5YyxJQUFJLEVBQUV3MEIsU0FBUyxFQUFnQjtFQUFBLElBQWRyMUIsT0FBTyxHQUFBdUosU0FBQSxDQUFBeEosTUFBQSxRQUFBd0osU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDcEQsSUFBTXNVLGFBQWEsR0FBR3ZlLEtBQWMsS0FDbEMrZSxLQUFLLENBQUNDLE9BQU8sQ0FBQ3pkLElBQUksQ0FBQyxHQUNmLENBQUMsQ0FBQ0EsSUFBSSxDQUFDeTBCLE1BQU0sQ0FBQyxDQUFDQyxlQUFlLEVBQUUxMEIsSUFBSSxLQUFLMDBCLGVBQWUsSUFBSUEsZUFBZSxDQUFDMTBCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQzZTLEtBQUssQ0FBQyxHQUM5RjdTLElBQUksSUFBSSxJQUFJLENBQUM2UyxLQUFLLENBQ3ZCO0VBQ0QsT0FBTzBoQixzQkFBc0IsQ0FBQzFyQixJQUFJLENBQUMsSUFBSSxFQUFFN0ksSUFBSSxFQUFFdzBCLFNBQVMsRUFBQW5zQixvQkFBQTtJQUFJMlU7RUFBYSxHQUFLN2QsT0FBTyxDQUFFLENBQUM7QUFDMUY7QUFBQyxTQUVjdzFCLFNBQVNBLENBQUF2akIsRUFBQTtFQUFBLE9BQUF3akIsVUFBQSxDQUFBdmpCLEtBQUEsT0FBQTNJLFNBQUE7QUFBQTtBQUFBLFNBQUFrc0IsV0FBQTtFQUFBQSxVQUFBLEdBQUF0bEIsMkNBQUEsQ0FBeEIsV0FBeUJ0SCxVQUFVLEVBQWU7SUFBQSxJQUFiQyxNQUFNLEdBQUFTLFNBQUEsQ0FBQXhKLE1BQUEsUUFBQXdKLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0lBQzlDLElBQU1xSixLQUFLLEdBQUdLLFdBQVcsQ0FBQ3BLLFVBQVUsQ0FBQztJQUNyQyxJQUFNSSxNQUFNLFNBQVNMLFlBQVksQ0FBQ0MsVUFBVSxFQUFFQyxNQUFNLEVBQUU7TUFBRThKO0lBQU0sQ0FBQyxDQUFDOztJQUVoRTtJQUNBQSxLQUFLLENBQUNxTyxPQUFPLEdBQUdoWSxNQUFNOztJQUV0QjtJQUNBMkosS0FBSyxDQUFDK0ssY0FBYyxHQUFHQSxjQUFjOztJQUVyQzs7SUFFQTtJQUNBO0lBQ0EsSUFBTXBDLEdBQUcsR0FBQXJTLG9CQUFBO01BQ1BpRSxJQUFJLEVBQUU7UUFBQyxPQUFPLEVBQUMsNkJBQTZCO1FBQUMsTUFBTSxFQUFDLENBQUM7VUFBQyxTQUFTLEVBQUM7UUFBTyxDQUFDLEVBQUM7VUFBQyxNQUFNLEVBQUMsaUJBQWlCO1VBQUMsU0FBUyxFQUFDO1F
1BQWtDLENBQUMsRUFBQztVQUFDLE1BQU0sRUFBQyxVQUFVO1VBQUMsU0FBUyxFQUFDO1FBQXFDLENBQUMsRUFBQztVQUFDLE1BQU0sRUFBQyxhQUFhO1VBQUMsU0FBUyxFQUFDO1FBQVMsQ0FBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLENBQUM7VUFBQyxLQUFLLEVBQUMsMEdBQTBHO1VBQUMsT0FBTyxFQUFDO1FBQUksQ0FBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLENBQUM7VUFBQyxLQUFLLEVBQUMsWUFBWTtVQUFDLE1BQU0sRUFBQztRQUFpRSxDQUFDLEVBQUM7VUFBQyxLQUFLLEVBQUMsWUFBWTtVQUFDLE1BQU0sRUFBQztRQUE4RCxDQUFDLEVBQUM7VUFBQyxLQUFLLEVBQUMsY0FBYztVQUFDLE1BQU0sRUFBQztRQUE4RCxDQUFDLEVBQUM7VUFBQyxLQUFLLEVBQUMsWUFBWTtVQUFDLE1BQU0sRUFBQztRQUF5RCxDQUFDLEVBQUM7VUFBQyxLQUFLLEVBQUMsU0FBUztVQUFDLElBQUksRUFBQyxNQUFNO1VBQUMsYUFBYSxFQUFDLFdBQVc7VUFBQyxNQUFNLEVBQUM7UUFBc0UsQ0FBQyxFQUFDO1VBQUMsS0FBSyxFQUFDLFNBQVM7VUFBQyxJQUFJLEVBQUMsTUFBTTtVQUFDLGFBQWEsRUFBQyxXQUFXO1VBQUMsTUFBTSxFQUFDO1FBQXFFLENBQUMsRUFBQztVQUFDLEtBQUssRUFBQyxTQUFTO1VBQUMsSUFBSSxFQUFDLE1BQU07VUFBQyxhQUFhLEVBQUMsV0FBVztVQUFDLE1BQU0sRUFBQztRQUFzRSxDQUFDLENBQUM7UUFBQyxPQUFPLEVBQUM7TUFBRSxDQUFDO01BRTdwQ3lGLEtBQUs7TUFDTDNKLE1BQU07TUFDTnRJLElBQUksRUFBRTtRQUNKdUssaUJBQWlCO1FBQ2pCRCxXQUFXLEVBQUUsQ0FBQ0MsaUJBQWlCLENBQUM7UUFDaEN3cUIsY0FBY0EsQ0FBRXpxQixXQUFXLEVBQUU7VUFDM0IsSUFBSSxDQUFDb1QsS0FBSyxDQUFDQyxPQUFPLENBQUNyVCxXQUFXLENBQUMsRUFBRTtZQUMvQkEsV0FBVyxHQUFHLENBQUNBLFdBQVcsQ0FBQztVQUM3QjtVQUNBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ2tHLEdBQUcsQ0FBRTVGLFVBQVUsSUFBSztZQUM1QyxJQUFJLENBQUNBLFVBQVUsRUFBRTtjQUNmQSxVQUFVLEdBQUdMLGlCQUFpQjtZQUNoQyxDQUFDLE1BQU0sSUFBSSxPQUFPSyxVQUFVLEtBQUssUUFBUSxFQUFFO2NBQ3pDQSxVQUFVLEdBQUdmLE1BQU0sQ0FBQzRJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRWxJLGlCQUFpQixFQUFFO2dCQUFFekMsSUFBSSxFQUFFOEM7Y0FBVyxDQUFDLENBQUM7WUFDekUsQ0FBQyxNQUFNO2NBQ0xBLFVBQVUsR0FBR2YsTUFBTSxDQUFDNEksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFbEksaUJBQWlCLEVBQUVLLFVBQVUsQ0FBQztZQUMvRDtZQUNBLE9BQU9BLFVBQVU7VUFDbkIsQ0FBQyxDQUFDO1VBQ0YsSUFBSSxDQUFDbUQsUUFBUSxDQUFDL04sSUFBSSxDQUFDc0ssV0FBVyxHQUFHQSxXQUFXO1VBQzVDLE9BQU9BLFdBQVc7UUFDcEIsQ0FBQztRQUVEMEQsR0FBRyxFQUFFLElBQUk7UUFDVGduQixPQUFPLEVBQUUsSUFBSTtRQUNiMW9CLEtBQUtBLENBQUUwQixHQUFHLEVBQUU7VUFDVkEsR0FBRyxHQUFHQSxHQUFHLElBQUksSUFBSTtVQUNqQjRNLEdBQUcsQ0FBQ3ZMLE9BQU8sQ0FBQzRsQixRQUFRLEdBQUd0ckIsT0FBTyxDQUFDcUUsR0FBRyxDQUFDO1VBQ25DQSxHQUFHLEdBQUdBLEdBQUcsR0FBR2tuQix1Q0FBYyxDQUFDbG5CLEdBQUcsQ0FBQyxHQUFHLElBQUk7VUFDdEMsSUFBSWhPLElBQUksR0FBRzRhLEdBQUcsQ0FBQzVhLElBQUksRUFBQztVQUNwQixJQUFJLElBQUksRUFBRTtZQUNSQSxJQUFJLEdBQUcsSUFBSSxDQUFDQSxJQUFJLElBQUksSUFBSSxDQUFDK04sUUFBUSxDQUFDL04sSUFBSTtVQUN4QztVQUNBQSxJQUFJLENBQUNnMUIsT0FBTyxHQUFHN2EsSUFBSSxDQUFDZ2IsR0FBRyxDQUFDLENBQUM7VUFDekJuMUIsSUFBSSxDQUFDZ08sR0FBRyxHQU
1FHQSxHQUFHO1VBQ2Q7VUFDQSxJQUFJOUYsVUFBVSxFQUFFO1lBQ2RBLFVBQVUsQ0FBQ2xJLElBQUksQ0FBQ3NNLEtBQUssR0FBRzBCLEdBQUc7VUFDN0I7VUFDQSxPQUFPQSxHQUFHO1FBQ1o7TUFDRjtJQUFDLEdBQ0VvbkIsR0FBRyxDQUNQOztJQUVEO0lBQ0FuakIsS0FBSyxDQUFDMkksR0FBRyxHQUFHQSxHQUFHO0lBRWYsSUFBTXlhLElBQUksR0FBR250QixVQUFVLEdBQUdBLFVBQVUsQ0FBQ210QixJQUFJLEdBQUczc0IsUUFBUSxJQUFJa1MsR0FBRyxDQUFDdFMsTUFBTSxDQUFDRyxJQUFJLENBQUNDLFFBQVEsQ0FBQztJQUNqRjtJQUNBLElBQUl6SixLQUFLO0lBQ1QsSUFBSWlKLFVBQVUsRUFBRTtNQUNkakosS0FBSyxHQUFHcUosTUFBTSxDQUFDL0gsT0FBTyxDQUFDMkgsVUFBVSxDQUFDb3RCLEdBQUcsQ0FBQyxDQUFDcjJCLEtBQUs7SUFDOUMsQ0FBQyxNQUFNO01BQ0wsSUFBTWlCLElBQUksR0FBR3ExQixvQ0FBVyxDQUFDanRCLE1BQU0sQ0FBQ2pKLE9BQU8sQ0FBQ2tJLElBQUksRUFBRWUsTUFBTSxDQUFDakosT0FBTyxDQUFDaUksSUFBSSxDQUFDO01BQ2xFckksS0FBSyxHQUFHcUosTUFBTSxDQUFDL0gsT0FBTyxDQUFDTCxJQUFJLENBQUMsQ0FBQ2pCLEtBQUs7SUFDcEM7O0lBRUE7SUFDQSxNQUFNdTJCLG1DQUFVLENBQUM1YSxHQUFHLEVBQUU7TUFDcEIzSSxLQUFLO01BQ0xoVCxLQUFLO01BQ0xvMkIsSUFBSTtNQUNKL29CLEtBQUssRUFBRXNPLEdBQUcsQ0FBQzVhLElBQUksQ0FBQ3NNLEtBQUssQ0FBQ3RELElBQUksQ0FBQzRSLEdBQUcsQ0FBQztNQUMvQjZhLE9BQU8sRUFBRXZ0QixVQUFVLEdBQUdBLFVBQVUsQ0FBQ3V0QixPQUFPLEdBQUc1c0IsU0FBUztNQUNwRHVMLEdBQUcsRUFBRWxNLFVBQVUsR0FBR0EsVUFBVSxDQUFDa00sR0FBRyxHQUFHdkwsU0FBUztNQUM1Q3dMLEdBQUcsRUFBRW5NLFVBQVUsR0FBR0EsVUFBVSxDQUFDbU0sR0FBRyxHQUFHeEwsU0FBUztNQUM1QzZzQixlQUFlLEVBQUV4dEIsVUFBVSxHQUFHQSxVQUFVLENBQUN3dEIsZUFBZSxHQUFHN3NCLFNBQVM7TUFDcEU4c0Isa0JBQWtCLEVBQUV6dEIsVUFBVSxHQUFHQSxVQUFVLENBQUN5dEIsa0JBQWtCLEdBQUc5c0IsU0FBUztNQUMxRVg7SUFDRixDQUFDLENBQUM7SUFFRixTQUFTK0wsTUFBTUEsQ0FBQ2pKLEdBQUcsRUFBRXlTLEtBQUssRUFBRTtNQUMxQixJQUFJLENBQUN6UyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUk2SCxLQUFLLENBQUMsd0NBQXdDLENBQUM7TUFDM0Q7TUFDQSxJQUFJNEssS0FBSyxLQUFLNVUsU0FBUyxFQUFFO1FBQ3ZCLE1BQU0sSUFBSWdLLEtBQUssWUFBQTNFLE1BQUEsQ0FBWWxELEdBQUcsb0NBQWlDLENBQUM7TUFDbEU7TUFFQUEsR0FBRyxHQUFHLEdBQUcsR0FBR0EsR0FBRztNQUNmO01BQ0E0UCxHQUFHLENBQUM1UCxHQUFHLENBQUMsR0FBR3lTLEtBQUs7TUFDaEI7TUFDQSxJQUFJLENBQUM3QyxHQUFHLENBQUN2TCxPQUFPLENBQUNyRSxHQUFHLENBQUMsRUFBRTtRQUNyQjRQLEdBQUcsQ0FBQ3ZMLE9BQU8sQ0FBQ3JFLEdBQUcsQ0FBQyxHQUFHeVMsS0FBSztNQUMxQjs7TUFFQTtNQUNBeEwsS0FBSyxDQUFDakgsR0FBRyxDQUFDLEdBQUc0UCxHQUFHLENBQUM1UCxHQUFHLENBQUM7O01BRXJCO01BQ0EsSUFBTTRxQixVQUFVLEdBQUcsU0FBUyxHQUFHNXFCLEdBQUcsR0FBRyxjQUFjO01BQ25ELElBQUk5RCwwQkFBRyxDQUFDMHVCLFVBQVUsQ0FBQyxFQUFFO1FBQ25CO01BQ0Y7TUFDQTF1QiwwQkFBRyxDQUFDMHVCLFVBQVUsQ0FBQyxHQUFHLElBQUk7TUFDdEI7TUFDQTF1QiwwQkFBRyxDQUFDQyxHQUFHLENBQUMsTUFBTTtRQUNaLElBQUksQ0FBQzBDLE1BQU0sQ0FBQ2ljLFNBQVMsQ0FBQytQLGNBQWMsQ0FBQzlzQixJQUFJLENBQUM3QiwwQkFBRyxDQUFDNGUsU0FBUyxFQUFFOWEsR0FBRyxDQUFDLEVBQUU7VUFDN0RuQixNQUFNLENBQUN3cUIsY0FBYyxDQUFDbnRCLDBCQUFHLENBQUM0ZSxTQUFTLEVBQUU5YSxHQUFHLEVBQUU7WUFDeEMwTyxHQUFHQSxDQUFBLEVBQUk7Y0FDTCxPQUFPLElBQUksQ0FBQzVMLEtBQUssQ0FBQ0MsUUFBUSxDQUFDL0MsR0FBRyxDQUFDO1lBQ2pDO1VBQ0YsQ0FBQyxDQUFDO1FBQ0o7TUFDRixDQUFDLENBQUM7SUFDSjs7SUFFQTtJQUNBaUosTUFBTSxDQUFDLFFBQVEsRUFBRTlMLE1BQU0sQ0FBQztJQUV4QixJQUFJeEosSUFBYyxFQUFFO01BQ2xCO01BQ0EsSUFBSUMsTUFBTSxDQUFDazNCLFFBQVEsSUFBSWwzQixNQUFNLENBQUNrM0IsUUFBUSxDQUFDL2lCLEtBQUssRUFBRTtRQUM1Q2QsS0FBSyxDQUFDOGpCLFlBQVksQ0FBQ24zQixNQUFNLENBQUNrM0IsUUFBUSxDQUFDL2lCLEtBQUssQ0FBQztNQUMzQztJQUNGOztJQUVBO0lBQ0EsSUFBSXBVLEtBQWdDLEVBQUUsRUFLckM7SUFDRDs7SUFFQSxJQUFJQSxLQUF5RSxFQUFFLEVBRTlFO0lBRUQsSUFBSUEsS0FBYyxJQUFJLE9BQU9xM0IsYUFBaUMsS0FBSyxVQUFVLEVBQUU7TUFDN0UsTUFBTUEsYUFBaUMsQ0FBQ3BiLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUM5RDtJQUVBLElBQUksT0FBT2dpQixxQkFBd0MsS0FBSyxVQUFVLEVBQUU7TUFDbEUsTUFBTUEscUJBQXdDLENBQUNyYixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDckU7SUFFQSxJQUFJLE9BQU9paUIsNk9BQWdDLEtBQUssVUFBVSxFQUFFO01BQzFELE1BQU1BLDZPQUFnQyxDQUFDdGIsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQzdEO0lBRUEsSUFBSSxPQUFPa2lCLGNBQWtDLEtBQUssVUFBVSxFQUFFO01BQzVELE1BQU1BLGNBQWtDLENBQUN2YixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDL0Q7SUFFQSxJQUFJLE9BQU9taUIsV0FBK0IsS0FBSyxVQUFVLEVBQUU7TUFDekQsTUFBTUEsV0FBK0IsQ0FBQ3hiLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUM1RDtJQUVBLElBQUksT0FBT29pQixhQUFpQyxLQUFLLFVBQVUsRUFBRTtNQUMzRCxNQUFNQSxhQUFpQyxDQUFDemIsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQzlEO0lBRUEsSUFBSSxPQUFPcWlCLFdBQStCLEtBQUssVUFBVSxFQUFFO01BQ3pELE1BQU1BLFdBQStCLENBQUMxYixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDNUQ7SUFFQSxJQUFJLE9BQU9zaUIsYUFBMEIsS0FBSyxVQUFVLEVBQUU7TUFDcEQsTUFBTUEsYUFBMEIsQ0FBQzNiLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN2RDtJQUVBLElBQUksT0FBT3VpQix5QkFBMkIsS0FBSyxVQUFVLEVBQUU7TUFDckQsTUFBTUEsaUNBQTJCLENBQUM1YixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDeEQ7SUFFQSxJQUFJLE9BQU93aUIsZ0NBQTBCLEtBQUssVUFBVSxFQUFFO01BQ3BELE1BQU1BLHdDQUEwQixDQUFDN2IsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3ZEO0lBRUEsSUFBSSxPQUFPeWlCLG1CQUE2QixLQUFLLFVBQVUsRUFBRTtNQUN2RCxNQUFNQSwyQkFBNkIsQ0FBQzliLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUMxRDtJQUVBLElBQUksT0FBTzBpQixzQkFBd0IsS0FBSyxVQUFVLEVBQUU7TUFDbEQsTUFBTUEsOEJBQXdCLENBQUMvYixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDckQ7SUFFQSxJQUFJdFYsS0FBdUUsRUFBRSxFQUU1RTtJQUVELElBQUksT0FBT2k0QixnQ0FBMEIsS0FBSyxVQUFVLEVBQUU7TUFDcEQsTUFBTUEsd0NBQTBCLENBQUNoYyxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDdkQ7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9rNEIsbUNBQThCLEtBQUssVUFBVSxFQUFFO01BQzFFLE1BQU1BLDJDQUE4QixDQUFDamMsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQzNEO0lBRUEsSUFBSSxPQUFPNmlCLHVCQUFnQyxLQUFLLFVBQVUsRUFBRTtNQUMxRCxNQUFNQSwrQkFBZ0MsQ0FBQ2xjLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUM3RDtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT280QixnQ0FBMkIsS0FBSyxVQUFVLEVBQUU7TUFDdkUsTUFBTUEsd0NBQTJCLENBQUNuYyxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDeEQ7SUFFQSxJQUFJLE9BQU8raUIsNEJBQXFDLEtBQUssVUFBVSxFQUFFO01BQy9ELE1BQU1BLG9DQUFxQyxDQUFDcGMsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ2xFO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPczRCLCtCQUEwQixLQUFLLFVBQVUsRUFBRTtNQUN0RSxNQUFNQSx1Q0FBMEIsQ0FBQ3JjLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN2RDtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT3U0Qiw0Q0FBdUMsS0FBSyxVQUFVLEVBQUU7TUFDbkYsTUFBTUEsb0RBQXVDLENBQUN0YyxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDcEU7SUFFQSxJQUFJLE9BQU9rakIsMEJBQTRCLEtBQUssVUFBVSxFQUFFO01BQ3RELE1BQU1BLGtDQUE0QixDQUFDdmMsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3pEO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPeTRCLHNDQUFpQyxLQUFLLFVBQVUsRUFBRTtNQUM3RSxNQUFNQSw4Q0FBaUMsQ0FBQ3hjLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUM5RDtJQUVBLElBQUksT0FBT29qQix1QkFBK0IsS0FBSyxVQUFVLEVBQUU7TUFDekQsTUFBTUEsK0JBQStCLENBQUN6YyxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDNUQ7SUFFQSxJQUFJLE9BQU9xakIsMkJBQTZCLEtBQUssVUFBVSxFQUFFO01BQ3ZELE1BQU1BLG1DQUE2QixDQUFDMWMsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQzFEO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPNDRCLDZDQUF3QyxLQUFLLFVBQVUsRUFBRTtNQUNwRixNQUFNQSxxREFBd0MsQ0FBQzNjLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNyRTtJQUVBLElBQUl0VixLQUF3RSxFQUFFLEVBRTdFO0lBRUQsSUFBSUEsS0FBYyxJQUFJLE9BQU82NEIscUNBQWdDLEtBQUssVUFBVSxFQUFFO01BQzVFLE1BQU1BLDZDQUFnQyxDQUFDNWMsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQzdEO0lBRUEsSUFBSSxPQUFPd2pCLGlDQUEyQixLQUFLLFVBQVUsRUFBRTtNQUNyRCxNQUFNQSx5Q0FBMkIsQ0FBQzdjLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN4RDtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBTys0QixxQ0FBK0IsS0FBSyxVQUFVLEVBQUU7TUFDM0UsTUFBTUEsNkNBQStCLENBQUM5YyxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDNUQ7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9nNUIsK0JBQTBCLEtBQUssVUFBVSxFQUFFO01BQ3RFLE1BQU1BLHVDQUEwQixDQUFDL2MsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3ZEO0lBRUEsSUFBSSxPQUFPMmpCLElBQXlCLEtBQUssVUFBVSxFQUFFO01BQ25ELE1BQU1BLElBQXlCLENBQUNoZCxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDdEQ7SUFFQSxJQUFJLE9BQU80akIsK0JBQXlCLEtBQUssVUFBVSxFQUFFO01BQ25ELE1BQU1BLHVDQUF5QixDQUFDamQsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3REO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPbTVCLHNDQUF3RCxLQUFLLFVBQVUsRUFBRTtNQUNwRyxNQUFNQSxzQ0FBd0QsQ0FBQ2xkLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNyRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT281QixtQ0FBcUQsS0FBSyxVQUFVLEVBQUU7TUFDakcsTUFBTUEsbUNBQXFELENBQUNuZCxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDbEY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9xNUIsbUNBQXFELEtBQUssVUFBVSxFQUFFO01BQ2pHLE1BQU1BLG1DQUFxRCxDQUFDcGQsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ2xGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPczVCLHNDQUF3RCxLQUFLLFVBQVUsRUFBRTtNQUNwRyxNQUFNQSxzQ0FBd0QsQ0FBQ3JkLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNyRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT3U1QiwyQ0FBNkQsS0FBSyxVQUFVLEVBQUU7TUFDekcsTUFBTUEsMkNBQTZELENBQUN0ZCxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDMUY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU93NUIsc0NBQXdELEtBQUssVUFBVSxFQUFFO01BQ3BHLE1BQU1BLHNDQUF3RCxDQUFDdmQsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3JGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPeTVCLHVDQUF5RCxLQUFLLFVBQVUsRUFBRTtNQUNyRyxNQUFNQSx1Q0FBeUQsQ0FBQ3hkLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN0RjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBTzA1QixzQ0FBd0QsS0FBSyxVQUFVLEVBQUU7TUFDcEcsTUFBTUEsc0NBQXdELENBQUN6ZCxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDckY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU8yNUIsd0NBQTBELEtBQUssVUFBVSxFQUFFO01BQ3RHLE1BQU1BLHdDQUEwRCxDQUFDMWQsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3ZGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPNDVCLHNDQUF3RCxLQUFLLFVBQVUsRUFBRTtNQUNwRyxNQUFNQSxzQ0FBd0QsQ0FBQzNkLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNyRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBTzY1Qix3Q0FBMEQsS0FBSyxVQUFVLEVBQUU7TUFDdEcsTUFBTUEsd0NBQTBELENBQUM1ZCxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDdkY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU84NUIsdUNBQXlELEtBQUssVUFBVSxFQUFFO01BQ3JHLE1BQU1BLHVDQUF5RCxDQUFDN2QsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3RGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPKzVCLHlDQUEyRCxLQUFLLFVBQVUsRUFBRTtNQUN2RyxNQUFNQSx5Q0FBMkQsQ0FBQzlkLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN4RjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT2c2QixpQ0FBbUQsS0FBSyxVQUFVLEVBQUU7TUFDL0YsTUFBTUEsaUNBQW1ELENBQUMvZCxHQU
1FHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDaEY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9pNkIsbUNBQXFELEtBQUssVUFBVSxFQUFFO01BQ2pHLE1BQU1BLG1DQUFxRCxDQUFDaGUsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ2xGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPazZCLGdDQUFrRCxLQUFLLFVBQVUsRUFBRTtNQUM5RixNQUFNQSxnQ0FBa0QsQ0FBQ2plLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUMvRTtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT202QixrQ0FBb0QsS0FBSyxVQUFVLEVBQUU7TUFDaEcsTUFBTUEsa0NBQW9ELENBQUNsZSxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDakY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9vNkIsaUNBQW1ELEtBQUssVUFBVSxFQUFFO01BQy9GLE1BQU1BLGlDQUFtRCxDQUFDbmUsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ2hGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPcTZCLHFDQUF1RCxLQUFLLFVBQVUsRUFBRTtNQUNuRyxNQUFNQSxxQ0FBdUQsQ0FBQ3BlLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNwRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT3M2Qiw2Q0FBK0QsS0FBSyxVQUFVLEVBQUU7TUFDM0csTUFBTUEsNkNBQStELENBQUNyZSxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDNUY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU91NkIsc0NBQXdELEtBQUssVUFBVSxFQUFFO01BQ3BHLE1BQU1BLHNDQUF3RCxDQUFDdGUsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3JGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPdzZCLHVDQUF5RCxLQUFLLFVBQVUsRUFBRTtNQUNyRyxNQUFNQSx1Q0FBeUQsQ0FBQ3ZlLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN0RjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT3k2Qiw2Q0FBK0QsS0FBSyxVQUFVLEVBQUU7TUFDM0csTUFBTUEsNkNBQStELENBQUN4ZSxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDNUY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU8wNkIsbUNBQXFELEtBQUssVUFBVSxFQUFFO01BQ2pHLE1BQU1BLG1DQUFxRCxDQUFDemUsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ2xGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPMjZCLHNDQUF3RCxLQUFLLFVBQVUsRUFBRTtNQUNwRyxNQUFNQSxzQ0FBd0QsQ0FBQzFlLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNyRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBTzQ2QixxQ0FBdUQsS0FBSyxVQUFVLEVBQUU7TUFDbkcsTUFBTUEscUNBQXVELENBQUMzZSxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDcEY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU82NkIsMENBQTRELEtBQUssVUFBVSxFQUFFO01BQ3hHLE1BQU1BLDBDQUE0RCxDQUFDNWUsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3pGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPODZCLHVDQUF5RCxLQUFLLFVBQVUsRUFBRTtNQUNyRyxNQUFNQSx1Q0FBeUQsQ0FBQzdlLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUN0RjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBTys2QixtQ0FBcUQsS0FBSyxVQUFVLEVBQUU7TUFDakcsTUFBTUEsbUNBQXFELENBQUM5ZSxHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDbEY7SUFFQSxJQUFJdFYsS0FBYyxJQUFJLE9BQU9nN0Isc0NBQXdELEtBQUssVUFBVSxFQUFFO01BQ3BHLE1BQU1BLHNDQUF3RCxDQUFDL2UsR0FBRyxDQUFDdkwsT0FBTyxFQUFFNEUsTUFBTSxDQUFDO0lBQ3JGO0lBRUEsSUFBSXRWLEtBQWMsSUFBSSxPQUFPaTdCLGtDQUFvRCxLQUFLLFVBQVUsRUFBRTtNQUNoRyxNQUFNQSxrQ0FBb0QsQ0FBQ2hmLEdBQUcsQ0FBQ3ZMLE9BQU8sRUFBRTRFLE1BQU0sQ0FBQztJQUNqRjtJQUVBLElBQUl0VixLQUFjLElBQUksT0FBT2s3QixxQ0FBdUQsS0FBSyxVQUFVLEVBQUU7TUFDbkcsTUFBTUEscUNBQXVELENBQUNqZixHQUFHLENBQUN2TCxPQUFPLEVBQUU0RSxNQUFNLENBQUM7SUFDcEY7O0lBRUE7SUFDQSxJQUFJdFYsS0FBZ0MsRUFBRSxFQUlyQzs7SUFFRDtJQUNBLE1BQU0sSUFBSTJCLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUV3cEIsTUFBTSxLQUFLO01BQ3JDO01BQ0EsSUFBSXByQixJQUFjLEVBQUU7UUFDbEIsSUFBTTtVQUFFTSxLQUFLLEVBQUxBO1FBQU0sQ0FBQyxHQUFHcUosTUFBTSxDQUFDL0gsT0FBTyxDQUFDcWEsR0FBRyxDQUFDdkwsT0FBTyxDQUFDcFEsS0FBSyxDQUFDd2YsUUFBUSxDQUFDO1FBQzVELElBQUksQ0FBQ3hmLE1BQUssQ0FBQ21PLE9BQU8sQ0FBQ2hPLE1BQU0sRUFBRTtVQUN6QixPQUFPbUIsT0FBTyxDQUFDLENBQUM7UUFDbEI7TUFDRjtNQUNBK0gsTUFBTSxDQUFDbkgsT0FBTyxDQUFDeVosR0FBRyxDQUFDdkwsT0FBTyxDQUFDcFEsS0FBSyxDQUFDd2YsUUFBUSxFQUFFbGUsT0FBTyxFQUFHeU4sR0FBRyxJQUFLO1FBQzNEO1FBQ0EsSUFBSSxDQUFDQSxHQUFHLENBQUM4ckIsU0FBUyxFQUFFLE9BQU8vUCxNQUFNLENBQUMvYixHQUFHLENBQUM7UUFDdEMsSUFBSUEsR0FBRyxDQUFDekUsSUFBSSxLQUFLLENBQUMsQ0FBQyx3Q0FBd0MsT0FBT2hKLE9BQU8sQ0FBQyxDQUFDOztRQUUzRTtRQUNBLElBQU13NUIsVUFBVSxHQUFHenhCLE1BQU0sQ0FBQzB4QixTQUFTO1VBQUEsSUFBQXg2QixJQUFBLEdBQUFnUSwyQ0FBQSxDQUFDLFdBQU8vUCxFQUFFLEVBQUVDLElBQUksRUFBSztZQUN0RCxJQUFJZixLQUE4QyxFQUFFLEVBRW5EO1lBQ0RpYyxHQUFHLENBQUN2TCxPQUFPLENBQUNwUSxLQUFLLFNBQVNnN0IscUNBQVksQ0FBQ3g2QixFQUFFLENBQUM7WUFDMUNtYixHQUFHLENBQUN2TCxPQUFPLENBQUMvQixNQUFNLEdBQUc3TixFQUFFLENBQUM2TixNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ3BDc04sR0FBRyxDQUFDdkwsT0FBTyxDQUFDNk8sS0FBSyxHQUFHemUsRUFBRSxDQUFDeWUsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNsQzZiLFVBQVUsQ0FBQyxDQUFDO1lBQ1p4NUIsT0FBTyxDQUFDLENBQUM7VUFDWCxDQUFDO1VBQUEsaUJBQUF5VCxHQUFBLEVBQUFvSixHQUFBO1lBQUEsT0FBQTVkLElBQUEsQ0FBQStSLEtB
1QUEsT0FBQTNJLFNBQUE7VUFBQTtRQUFBLElBQUM7TUFDSixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO01BQ0xxSixLQUFLO01BQ0wySSxHQUFHO01BQ0h0UztJQUNGLENBQUM7RUFDSCxDQUFDO0VBQUEsT0FBQXdzQixVQUFBLENBQUF2akIsS0FBQSxPQUFBM0ksU0FBQTtBQUFBIiwiZmlsZSI6IjEwNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE1hdGNoZWRDb21wb25lbnRzLCBzZXRTY3JvbGxSZXN0b3JhdGlvbiB9IGZyb20gJy4vdXRpbHMnXG5cbmlmIChwcm9jZXNzLmNsaWVudCkge1xuICBpZiAoJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSkge1xuICAgIHNldFNjcm9sbFJlc3RvcmF0aW9uKCdtYW51YWwnKVxuXG4gICAgLy8gcmVzZXQgc2Nyb2xsUmVzdG9yYXRpb24gdG8gYXV0byB3aGVuIGxlYXZpbmcgcGFnZSwgYWxsb3dpbmcgcGFnZSByZWxvYWRcbiAgICAvLyBhbmQgYmFjay1uYXZpZ2F0aW9uIGZyb20gb3RoZXIgcGFnZXMgdG8gdXNlIHRoZSBicm93c2VyIHRvIHJlc3RvcmUgdGhlXG4gICAgLy8gc2Nyb2xsaW5nIHBvc2l0aW9uLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBzZXRTY3JvbGxSZXN0b3JhdGlvbignYXV0bycpXG4gICAgfSlcblxuICAgIC8vIFNldHRpbmcgc2Nyb2xsUmVzdG9yYXRpb24gdG8gbWFudWFsIGFnYWluIHdoZW4gcmV0dXJuaW5nIHRvIHRoaXMgcGFnZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIHNldFNjcm9sbFJlc3RvcmF0aW9uKCdtYW51YWwnKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkU2Nyb2xsVG9Ub3Aocm91dGUpIHtcbiAgIGNvbnN0IFBhZ2VzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHMocm91dGUpXG4gICBpZiAoUGFnZXMubGVuZ3RoID09PSAxKSB7XG4gICAgIGNvbnN0IHsgb3B0aW9ucyA9IHt9IH0gPSBQYWdlc1swXVxuICAgICByZXR1cm4gb3B0aW9ucy5zY3JvbGxUb1RvcCAhPT0gZmFsc2VcbiAgIH1cbiAgIHJldHVybiBQYWdlcy5zb21lKCh7IG9wdGlvbnMgfSkgPT4gb3B0aW9ucyAmJiBvcHRpb25zLnNjcm9sbFRvVG9wKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAodG8sIGZyb20sIHNhdmVkUG9zaXRpb24pIHtcbiAgLy8gSWYgdGhlIHJldHVybmVkIHBvc2l0aW9uIGlzIGZhbHN5IG9yIGFuIGVtcHR5IG9iamVjdCwgd2lsbCByZXRhaW4gY3VycmVudCBzY3JvbGwgcG9zaXRpb25cbiAgbGV0IHBvc2l0aW9uID0gZmFsc2VcbiAgY29uc3QgaXNSb3V0ZUNoYW5nZWQgPSB0byAhPT0gZnJvbVxuXG4gIC8vIHNhdmVkUG9zaXRpb24gaXMgb25seSBhdmFpbGFibGUgZm9yIHBvcHN0YXRlIG5hdmlnYXRpb25zIChiYWNrIGJ1dHRvbilcbiAgaWYgKHNhdmVkUG9zaXRpb24pIHtcbiAgICBwb3NpdGlvbiA9IHNhdmVkUG9zaXRpb25cbiAgfSBlbHNlIGlmIChpc1JvdXRlQ2hhbmdlZCAmJiBzaG91bGRTY3JvbGxUb1RvcCh0bykpIHtcbiAgICBwb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9XG4gIH1cblxuICBjb25zdCBudXh0ID0gd2luZG93LiRudXh0XG5cbiAgaWYgKFxuICAgIC8vIEluaXRpYWwgbG9hZCAodnVlanMvdnVlLXJvdXRlciMzMTk5KVxuICAgICFpc1JvdXRlQ2hhbmdlZCB8fFxuICAgIC8vIFJvdXRlIGhhc2ggY2hhbmdlc1xuICAgICh0by5wYXRoID09PSBmcm9tLnBhdGggJiYgdG8uaGFzaCAhPT0gZnJvbS5oYXNoKVxuICApIHtcbiAgICBudXh0LiRuZXh0VGljaygoKSA9PiBudXh0LiRlbWl0KCd0cmlnZ2VyU2Nyb2xsJykpXG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAvLyB3YWl0IGZvciB0aGUgb3V0IHRyYW5zaXRpb24gdG8gY29tcGxldGUgKGlmIG5lY2Vzc2FyeSlcbiAgICBudXh0LiRvbmNlKCd0cmlnZ2VyU2Nyb2xsJywgKCkgPT4ge1xuICAgICAgLy8gY29vcmRzIHdpbGwgYmUgdXNlZCBpZiBubyBzZWxlY3RvciBpcyBwcm92aWRlZCxcbiAgICAgIC8vIG9yIGlmIHRoZSBzZWxlY3RvciBkaWRuJ3QgbWF0Y2ggYW55IGVsZW1lbnQuXG4gICAgICBpZiAodG8uaGFzaCkge1xuICAgICAgICBsZXQgaGFzaCA9IHRvLmhhc2hcbiAgICAgICAgLy8gQ1NTLmVzY2FwZSgpIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBJRSBhbmQgRWRnZS5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuQ1NTICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgaGFzaCA9ICcjJyArIHdpbmRvdy5DU1MuZXNjYXBlKGhhc2guc3Vic3RyKDEpKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGhhc2gpXG4gICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAvLyBzY3JvbGwgdG8gYW5jaG9yIGJ5IHJldHVybmluZyB0aGUgc2VsZWN0b3JcbiAgICAgICAgICAgIHBvc2l0aW9uID0geyBzZWxlY3RvcjogaGFzaCB9XG4gICAgICAgICAgICAvLyBSZXNwZWN0IGFueSBzY3JvbGwtbWFyZ2luLXRvcCBzZXQgaW4gQ1NTIHdoZW4gc2Nyb2xsaW5nIHRvIGFuY2hvclxuICAgICAgICAgICAgY29uc3QgeSA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKGVsKVsnc2Nyb2xsLW1hcmdpbi10b3AnXT8ucmVwbGFjZSgncHgnLCAnJykpXG4gICAgICAgICAgICBpZiAoeSkge1xuICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXQgPSB7IHkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgc2Nyb2xsIHBvc2l0aW9uLiBQbGVhc2UgYWRkIENTUy5lc2NhcGUoKSBwb2x5ZmlsbCAoaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvQ1NTLmVzY2FwZSkuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzb2x2ZShwb3NpdGlvbilcbiAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUm91dGVyIGZyb20gJ3Z1ZS1yb3V0ZXInXG5pbXBvcnQgeyBub3JtYWxpem
1VVUkwsIGRlY29kZSB9IGZyb20gJ3VmbydcbmltcG9ydCB7IGludGVyb3BEZWZhdWx0IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCBzY3JvbGxCZWhhdmlvciBmcm9tICcuL3JvdXRlci5zY3JvbGxCZWhhdmlvci5qcydcblxuY29uc3QgXzRjOTIzNGE0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2FjY291bnQvaW5kZXhcIiAqLykpXG5jb25zdCBfMDVlMTgwYTcgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYXV0aC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYXV0aC9pbmRleFwiICovKSlcbmNvbnN0IF82YzcxYmJiZSA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9ibG9nL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9ibG9nL2luZGV4XCIgKi8pKVxuY29uc3QgX2RjNDA2ODM4ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Jsb2cvaW5kZXgvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Jsb2cvaW5kZXgvaW5kZXhcIiAqLykpXG5jb25zdCBfMTRjNGRlMzIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYmxvZy9pbmRleC9fY2F0ZWdvcnkvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Jsb2cvaW5kZXgvX2NhdGVnb3J5L2luZGV4XCIgKi8pKVxuY29uc3QgXzc0YWZlYmVkID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Jsb2cvaW5kZXgvX2NhdGVnb3J5L19zbHVnL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9ibG9nL2luZGV4L19jYXRlZ29yeS9fc2x1Zy9pbmRleFwiICovKSlcbmNvbnN0IF8xMmI1YTgxZiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9jYXJ0L2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9jYXJ0L2luZGV4XCIgKi8pKVxuY29uc3QgXzA5ODU1YjYyID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2NhcnQvaW5kZXgvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2NhcnQvaW5kZXgvaW5kZXhcIiAqLykpXG5jb25zdCBfODdhMzJlNTIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvY2FydC9pbmRleC9wYXltZW50LW9yZGVyLnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9jYXJ0L2luZGV4L3BheW1lbnQtb3JkZXJcIiAqLykpXG5jb25zdCBfMDczN2MyNTAgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvY2FydC9pbmRleC9zZWN1cmUtcGF5bWVudC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvY2FydC9pbmRleC9zZWN1cmUtcGF5bWVudFwiICovKSlcbmNvbnN0IF8wNDcwNDNmNiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9jb21wYXJlLWxpc3QvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2NvbXBhcmUtbGlzdC9pbmRleFwiICovKSlcbmNvbnN0IF82Y2QxYTBhYyA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9jb250YWN0LXVzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9jb250YWN0LXVzL2luZGV4XCIgKi8pKVxuY29uc3QgXzRkMjUxN2NhID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2N1c3RvbS1kZXNpZ24tZW1lcmFsZC1yaW5ncy1qZXdlbHJ5L2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9jdXN0b20tZGVzaWduLWVtZXJhbGQtcmluZ3MtamV3ZWxyeS9pbmRleFwiICovKSlcbmNvbnN0IF8wYTg0M2Q1ZiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lZHVjYXRpb24vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VkdWNhdGlvbi9pbmRleFwiICovKSlcbmNvbnN0IF9hZTQxZmViYyA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lZHVjYXRpb24vaW5kZXgvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VkdWNhdGlvbi9pbmRleC9pbmRleFwiICovKSlcbmNvbnN0IF9hMWUwODUyMCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lZHVjYXRpb24vaW5kZXgvX2NhdGVnb3J5L2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lZHVjYXRpb24vaW5kZXgvX2NhdGVnb3J5L2luZGV4XCIgKi8pKVxuY29uc3QgXzBjZDllNGFiID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VkdWNhdGlvbi9pbmRleC9fY2F0ZWdvcnkvX3NsdWcvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VkdWNhdGlvbi9pbmRleC9fY2F0ZWdvcnkvX3NsdWcvaW5kZXhcIiAqLykpXG5jb25zdCBfN2FiYjI1YWYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZWR1Y2F0aW9uL2luZGV4L18udnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VkdWNhdGlvbi9pbmRleC9fXCIgKi8pKVxuY29uc3QgXzkwYTU5NDFhID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2
1VzL2VtZXJhbGQtd2VkZGluZy1iYW5kcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC13ZWRkaW5nLWJhbmRzL2luZGV4XCIgKi8pKVxuY29uc3QgXzdiNmEyOGU5ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC13ZWRkaW5nLXJpbmdzLWJhbmRzL2luZGV4XCIgKi8pKVxuY29uc3QgXzVlMTFhMzBlID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGRzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkcy9pbmRleFwiICovKSlcbmNvbnN0IF8wMzY1ODQ2OSA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9leHRlbmQtcHJvdGVjdGlvbi1wbGFuL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9leHRlbmQtcHJvdGVjdGlvbi1wbGFuL2luZGV4XCIgKi8pKVxuY29uc3QgX2U3YTgxZDY0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Zhdm9yaXRlcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZmF2b3JpdGVzL2luZGV4XCIgKi8pKVxuY29uc3QgXzdlYjVhYTcwID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2ZlYXR1cmVkLWRlc2lnbmVycy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZmVhdHVyZWQtZGVzaWduZXJzL2luZGV4XCIgKi8pKVxuY29uc3QgXzJkYjZiNTBlID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2ZpbmFuY2luZy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZmluYW5jaW5nL2luZGV4XCIgKi8pKVxuY29uc3QgXzQ0MTA5MTFlID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL21pY2hhZWwtYXJuc3RlaW4vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL21pY2hhZWwtYXJuc3RlaW4vaW5kZXhcIiAqLykpXG5jb25zdCBfZTllYWViZDQgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvb3VyLXN0YWZmL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9vdXItc3RhZmYvaW5kZXhcIiAqLykpXG5jb25zdCBfODM4MDZiNTIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvc2hvd3Jvb20vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL3Nob3dyb29tL2luZGV4XCIgKi8pKVxuY29uc3QgX2YyMDkwNjc4ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL3ZlcmlmeS1lbWFpbC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvdmVyaWZ5LWVtYWlsXCIgKi8pKVxuY29uc3QgXzVjMGZjZmMyID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL3dlZGRpbmctYmFuZHMtd2l0aG91dC1nZW1zdG9uZS9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvd2VkZGluZy1iYW5kcy13aXRob3V0LWdlbXN0b25lL2luZGV4XCIgKi8pKVxuY29uc3QgXzI4NDU0YzdhID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvYWRkcmVzcy1ib29rL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9hY2NvdW50L2FkZHJlc3MtYm9vay9pbmRleFwiICovKSlcbmNvbnN0IF83YWIwNTc2ZCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9hY2NvdW50L2NoYW5nZS1wYXNzd29yZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYWNjb3VudC9jaGFuZ2UtcGFzc3dvcmQvaW5kZXhcIiAqLykpXG5jb25zdCBfNWQyN2MyODYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYWNjb3VudC9ub3RpZmljYXRpb25zL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9hY2NvdW50L25vdGlmaWNhdGlvbnMvaW5kZXhcIiAqLykpXG5jb25zdCBfMDkzMDg4NDYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYWNjb3VudC9vcmRlcnMvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2FjY291bnQvb3JkZXJzL2luZGV4XCIgKi8pKVxuY29uc3QgX2Q4ZWNhNGQ0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvcGVyc29uYWwtZGV0YWlscy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYWNjb3VudC9wZXJzb25hbC1kZXRhaWxzL2luZGV4XCIgKi8pKVxuY29uc3QgXzZiMGQyNDM5ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvcHJldmlldy1yZXF1ZXN0LXN1Ym1pc3Npb25zL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9hY2NvdW50L3ByZXZpZXctcmVxdWVzdC1zdWJtaXNzaW9ucy9pbmRleFwiICovKSlcbmNvbnN0IF8wZDQ1NzRhZiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9hY2NvdW50L3JlY29tbWVuZGF0aW9ucy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYWNjb3VudC9yZWNvbW1lbmRhdGlvbnMvaW5kZXhcIiAqLykpXG5jb25zdCBfMDkyMjY3YmEgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYWNjb3VudC9yZXNldC1wYXNzd29yZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYWNjb3VudC9yZXNldC1wYXNzd29yZC9pbmRleFwiICovKSlcbmNvbnN0IF8yOTMwMmJmNCA9ICgpID0+IGludGVyb3BEZWZh
1dWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9jYXJ0L29yZGVyLXN1bW1hcnkudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2NhcnQvb3JkZXItc3VtbWFyeVwiICovKSlcbmNvbnN0IF8zNjA5MTczMCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLWpld2VscnkvY29sb21iaWFuLWVtZXJhbGQtcmluZ3MvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGQtamV3ZWxyeS9jb2xvbWJpYW4tZW1lcmFsZC1yaW5ncy9pbmRleFwiICovKSlcbmNvbnN0IF8xYmNjOGIyMCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1icmFjZWxldHMtYmFuZ2xlcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtYnJhY2VsZXRzLWJhbmdsZXMvaW5kZXhcIiAqLykpXG5jb25zdCBfNzNiZmRkNGIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtYnJhY2VsZXRzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1icmFjZWxldHMvaW5kZXhcIiAqLykpXG5jb25zdCBfMzI5YjU3MzkgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtYnJvb2NoZXMvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLWJyb29jaGVzL2luZGV4XCIgKi8pKVxuY29uc3QgXzk4MmM2YmIyID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLWN1ZmZsaW5rcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtY3VmZmxpbmtzL2luZGV4XCIgKi8pKVxuY29uc3QgXzZlMGQ3OTNhID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLWVhcnJpbmdzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1lYXJyaW5ncy9pbmRleFwiICovKSlcbmNvbnN0IF9mNmQ0MzY0NiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1uZWNrbGFjZXMtcGVuZGFudHMvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLW5lY2tsYWNlcy1wZW5kYW50cy9pbmRleFwiICovKSlcbmNvbnN0IF8xNWZjM2JhMyA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1yaW5ncy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtcmluZ3MvaW5kZXhcIiAqLykpXG5jb25zdCBfMDJmODUwMGUgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VuZ2FnZW1lbnQtZW1lcmFsZC1yaW5ncy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC1qZXdlbHJ5L2VuZ2FnZW1lbnQtZW1lcmFsZC1yaW5ncy9pbmRleFwiICovKSlcbmNvbnN0IF9kYzcyOWVkMiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLWpld2VscnkvbWVucy1lbWVyYWxkLXJpbmdzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkLWpld2VscnkvbWVucy1lbWVyYWxkLXJpbmdzL2luZGV4XCIgKi8pKVxuY29uc3QgXzUwMmJkMmIwID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGQtamV3ZWxyeS96YW1iaWFuLWVtZXJhbGQtcmluZ3MvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGQtamV3ZWxyeS96YW1iaWFuLWVtZXJhbGQtcmluZ3MvaW5kZXhcIiAqLykpXG5jb25zdCBfMDQ4NTRhYTEgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZHMvY29sb21iaWFuLWVtZXJhbGRzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkcy9jb2xvbWJpYW4tZW1lcmFsZHMvaW5kZXhcIiAqLykpXG5jb25zdCBfYmIxMzQ5YTIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZHMvZW1lcmFsZC1jYWJvY2hvbi9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZHMvZW1lcmFsZC1jYWJvY2hvbi9pbmRleFwiICovKSlcbmNvbnN0IF80NGE1YzgwNyA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkcy9nZW1vbG9naXN0LWZhdm9yaXRlcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZHMvZ2Vtb2xvZ2lzdC1mYXZvcml0ZXMvaW5kZXhcIiAqLykpXG5jb25zdCBfYThiNmY0NmEgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZHMvZ2Vtb2xvZ2lzdC1yZWNvbW1lbmRlZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZHMvZ2Vtb2xvZ2lzdC1yZWNvbW1lbmRlZC9pbmRleFwiICovKSlcbmNvbnN0IF82MmFkZjM2NyA9ICgpID0+IGludGVyb3BEZWZh
1dWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkcy9tYXRjaGVkLXBhaXJzLW9mLWVtZXJhbGRzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkcy9tYXRjaGVkLXBhaXJzLW9mLWVtZXJhbGRzL2luZGV4XCIgKi8pKVxuY29uc3QgXzE3NmYwOWQ5ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGRzL3phbWJpYW4tZW1lcmFsZHMvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGRzL3phbWJpYW4tZW1lcmFsZHMvaW5kZXhcIiAqLykpXG5jb25zdCBfNjEzZTU5ZTYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvc2hvd3Jvb20vcHJldmlldy52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvc2hvd3Jvb20vcHJldmlld1wiICovKSlcbmNvbnN0IF80ZGI0MWJkMCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9zaG93cm9vbS9wcmV2aWV3L2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9zaG93cm9vbS9wcmV2aWV3L2luZGV4XCIgKi8pKVxuY29uc3QgXzU0NjQ3MTAxID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL3Nob3dyb29tL3ByZXZpZXcvc3VjY2Vzcy52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvc2hvd3Jvb20vcHJldmlldy9zdWNjZXNzXCIgKi8pKVxuY29uc3QgXzJkZGYzNGEzID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtYnJhY2VsZXQtc2V0dGluZ3MvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtYnJhY2VsZXQtc2V0dGluZ3MvaW5kZXhcIiAqLykpXG5jb25zdCBfMDFjMDk4MzYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1lYXJyaW5nLXNldHRpbmdzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWVhcnJpbmctc2V0dGluZ3MvaW5kZXhcIiAqLykpXG5jb25zdCBfNTkzMmM0NmQgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1lbmdhZ2VtZW50LXJpbmctc2V0dGluZ3MvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtZW5nYWdlbWVudC1yaW5nLXNldHRpbmdzL2luZGV4XCIgKi8pKVxuY29uc3QgX2U0ODNiMzc0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtbmVja2xhY2UtcGVuZGFudC1zZXR0aW5ncy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1uZWNrbGFjZS1wZW5kYW50LXNldHRpbmdzL2luZGV4XCIgKi8pKVxuY29uc3QgXzczZTQyOTY0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtbmVja2xhY2VzLXNldHRpbmdzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLW5lY2tsYWNlcy1zZXR0aW5ncy9pbmRleFwiICovKSlcbmNvbnN0IF9iNzU4MGExOCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLXBlbmRhbnRzLXNldHRpbmdzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLXBlbmRhbnRzLXNldHRpbmdzL2luZGV4XCIgKi8pKVxuY29uc3QgXzA4ZTk5ZjgyID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL21lbnMtcmluZy1zZXR0aW5ncy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvbWVucy1yaW5nLXNldHRpbmdzL2luZGV4XCIgKi8pKVxuY29uc3QgXzQ0MThkNmE2ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGRzL21hdGNoZWQtcGFpcnMtb2YtZW1lcmFsZHMvY2Fib2Nob24vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGRzL21hdGNoZWQtcGFpcnMtb2YtZW1lcmFsZHMvY2Fib2Nob24vaW5kZXhcIiAqLykpXG5jb25zdCBfNmFhMzU2MDYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2luZGV4XCIgKi8pKVxuY29uc3QgX2ZhMTE3M2U0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtYnJhY2VsZXQtc2V0dGluZ3MvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWJyYWNlbGV0LXNldHRpbmdzL19pZC9pbmRleFwiICovKSlcbmNvbnN0IF85NGZiNTc2MCA9ICgpID0+IGludGVyb3BEZWZh
1dWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWVhcnJpbmctc2V0dGluZ3MvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWVhcnJpbmctc2V0dGluZ3MvX2lkL2luZGV4XCIgKi8pKVxuY29uc3QgXzkxZWMzZTUwID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtZW5nYWdlbWVudC1yaW5nLXNldHRpbmdzL19pZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1lbmdhZ2VtZW50LXJpbmctc2V0dGluZ3MvX2lkL2luZGV4XCIgKi8pKVxuY29uc3QgXzEwZWVhZTMxID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtbmVja2xhY2UtcGVuZGFudC1zZXR0aW5ncy9faWQvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtbmVja2xhY2UtcGVuZGFudC1zZXR0aW5ncy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfNjI0NGFmMzkgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1uZWNrbGFjZXMtc2V0dGluZ3MvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLW5lY2tsYWNlcy1zZXR0aW5ncy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfZWJlMzA4NDIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1wZW5kYW50cy1zZXR0aW5ncy9faWQvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtcGVuZGFudHMtc2V0dGluZ3MvX2lkL2luZGV4XCIgKi8pKVxuY29uc3QgX2E5ZjlhZDI2ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL21lbnMtcmluZy1zZXR0aW5ncy9faWQvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL21lbnMtcmluZy1zZXR0aW5ncy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfMjA5YTg1NTIgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYWNjb3VudC9jb25maXJtLWNoYW5nZS1lbWFpbC9fdG9rZW4vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2FjY291bnQvY29uZmlybS1jaGFuZ2UtZW1haWwvX3Rva2VuL2luZGV4XCIgKi8pKVxuY29uc3QgXzNkNjJkYmY2ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvY29uZmlybS1wYXNzd29yZC9fdG9rZW4vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2FjY291bnQvY29uZmlybS1wYXNzd29yZC9fdG9rZW4vaW5kZXhcIiAqLykpXG5jb25zdCBfNmRhMGI0NDUgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvYWNjb3VudC9yZXNldC1wYXNzd29yZC9fdG9rZW4vaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2FjY291bnQvcmVzZXQtcGFzc3dvcmQvX3Rva2VuL2luZGV4XCIgKi8pKVxuY29uc3QgXzI2ZmYzODE4ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2FjY291bnQvc2V0LXBhc3N3b3JkL190b2tlbi9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvYWNjb3VudC9zZXQtcGFzc3dvcmQvX3Rva2VuL2luZGV4XCIgKi8pKVxuY29uc3QgXzZkOTI0YzM2ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2Rlc2lnbi15b3VyLW93bi9yZXZpZXcvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kZXNpZ24teW91ci1vd24vcmV2aWV3L19pZC9pbmRleFwiICovKSlcbmNvbnN0IF8yMTAxMDJkMiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkcy9tYXRjaGVkLXBhaXJzLW9mLWVtZXJhbGRzL19pZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZHMvbWF0Y2hlZC1wYWlycy1vZi1lbWVyYWxkcy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfMWRhYTM4ZmEgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZC1qZXdlbHJ5L19pZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZW1lcmFsZC1qZXdlbHJ5L19pZC9pbmRleFwiICovKSlcbmNvbnN0IF9lZjc3YzE0NCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9lbWVyYWxkLXdlZGRpbmctYmFuZHMvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkLXdlZGRpbmctYmFuZHMvX2lkL2luZGV4XCIgKi8pKVxuY29uc3QgXzZkYzJhNzU0ID0gKCkgPT4gaW50ZXJvcERlZmF1bHQoaW1wb3J0KCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL3BhZ2VzL2VtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kcy9faWQvaW5kZXgudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2VtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kcy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfNWUyNjg2ZjkgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZW1lcmFsZHMvX2lkL2luZGV4LnZ1
1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9lbWVyYWxkcy9faWQvaW5kZXhcIiAqLykpXG5jb25zdCBfMDBjMTI3ZTMgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvZmVhdHVyZWQtZGVzaWduZXJzL19uYW1lL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9mZWF0dXJlZC1kZXNpZ25lcnMvX25hbWUvaW5kZXhcIiAqLykpXG5jb25zdCBfYjlkMThjYTYgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvcGFnZXMvd2VkZGluZy1iYW5kcy13aXRob3V0LWdlbXN0b25lL19pZC9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvd2VkZGluZy1iYW5kcy13aXRob3V0LWdlbXN0b25lL19pZC9pbmRleFwiICovKSlcbmNvbnN0IF82MTJkOTk0ZSA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9wYWdlcy9mZWF0dXJlZC1kZXNpZ25lcnMvX25hbWUvX2lkL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9mZWF0dXJlZC1kZXNpZ25lcnMvX25hbWUvX2lkL2luZGV4XCIgKi8pKVxuXG5jb25zdCBlbXB0eUZuID0gKCkgPT4ge31cblxuVnVlLnVzZShSb3V0ZXIpXG5cbmV4cG9ydCBjb25zdCByb3V0ZXJPcHRpb25zID0ge1xuICBtb2RlOiAnaGlzdG9yeScsXG4gIGJhc2U6ICcvJyxcbiAgbGlua0FjdGl2ZUNsYXNzOiAnbnV4dC1saW5rLWFjdGl2ZScsXG4gIGxpbmtFeGFjdEFjdGl2ZUNsYXNzOiAnbnV4dC1saW5rLWV4YWN0LWFjdGl2ZScsXG4gIHNjcm9sbEJlaGF2aW9yLFxuXG4gIHJvdXRlczogW3tcbiAgICBwYXRoOiBcIi9hY2NvdW50L1wiLFxuICAgIGNvbXBvbmVudDogXzRjOTIzNGE0LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiYWNjb3VudF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2F1dGgvXCIsXG4gICAgY29tcG9uZW50OiBfMDVlMTgwYTcsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJhdXRoX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvYmxvZy9cIixcbiAgICBjb21wb25lbnQ6IF82YzcxYmJiZSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBjaGlsZHJlbjogW3tcbiAgICAgIHBhdGg6IFwiXCIsXG4gICAgICBjb21wb25lbnQ6IF9kYzQwNjgzOCxcbiAgICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgICAgbmFtZTogXCJibG9nLWluZGV4X19fZW5cIlxuICAgIH0sIHtcbiAgICAgIHBhdGg6IFwiOmNhdGVnb3J5L1wiLFxuICAgICAgY29tcG9uZW50OiBfMTRjNGRlMzIsXG4gICAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICAgIG5hbWU6IFwiYmxvZy1pbmRleC1jYXRlZ29yeV9fX2VuXCJcbiAgICB9LCB7XG4gICAgICBwYXRoOiBcIjpjYXRlZ29yeS86c2x1Zy9cIixcbiAgICAgIGNvbXBvbmVudDogXzc0YWZlYmVkLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImJsb2ctaW5kZXgtY2F0ZWdvcnktc2x1Z19fX2VuXCJcbiAgICB9XVxuICB9LCB7XG4gICAgcGF0aDogXCIvY2FydC9cIixcbiAgICBjb21wb25lbnQ6IF8xMmI1YTgxZixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBjaGlsZHJlbjogW3tcbiAgICAgIHBhdGg6IFwiXCIsXG4gICAgICBjb21wb25lbnQ6IF8wOTg1NWI2MixcbiAgICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgICAgbmFtZTogXCJjYXJ0LWluZGV4X19fZW5cIlxuICAgIH0sIHtcbiAgICAgIHBhdGg6IFwicGF5bWVudC1vcmRlci9cIixcbiAgICAgIGNvbXBvbmVudDogXzg3YTMyZTUyLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImNhcnQtaW5kZXgtcGF5bWVudC1vcmRlcl9fX2VuXCJcbiAgICB9LCB7XG4gICAgICBwYXRoOiBcInNlY3VyZS1wYXltZW50L1wiLFxuICAgICAgY29tcG9uZW50OiBfMDczN2MyNTAsXG4gICAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICAgIG5hbWU6IFwiY2FydC1pbmRleC1zZWN1cmUtcGF5bWVudF9fX2VuXCJcbiAgICB9XVxuICB9LCB7XG4gICAgcGF0aDogXCIvY29tcGFyZS1saXN0L1wiLFxuICAgIGNvbXBvbmVudDogXzA0NzA0M2Y2LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiY29tcGFyZS1saXN0X19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvY29udGFjdC11cy9cIixcbiAgICBjb21wb25lbnQ6IF82Y2QxYTBhYyxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImNvbnRhY3QtdXNfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9jdXN0b20tZGVzaWduLWVtZXJhbGQtcmluZ3MtamV3ZWxyeS9cIixcbiAgICBjb21wb25lbnQ6IF80ZDI1MTdjYSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImN1c3RvbS1kZXNpZ24tZW1lcmFsZC1yaW5ncy1qZXdlbHJ5X19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZWR1Y2F0aW9uL1wiLFxuICAgIGNvbXBvbmVudDogXzBhODQzZDVmLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIGNoaWxkcmVuOiBbe1xuICAgICAgcGF0aDogXCJcIixcbiAgICAgIGNvbXBvbmVudDogX2FlNDFmZWJjLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImVkdWNhdGlvbi1pbmRleF9fX2VuXCJcbiAgICB9LCB7XG4gICAgICBwYXRoOiBcIjpjYXRlZ29yeS9cIixcbiAgICAgIGNvbXBvbmVudDogX2ExZTA4NTIwLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImVkdWNhdGlvbi1pbmRleC1jYXRlZ29yeV9fX2VuXCJcbiAgICB9LCB7XG4gICAgICBwYXRoOiBcIjpjYXRlZ29yeS86c2x1Zy9cIixcbiAgICAgIGNvbXBvbmVudDogXzBjZDllNGFiLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImVkdWNhdGlvbi1pbmRleC1jYXRlZ29yeS1zbHVnX19fZW5cIlxuICAgIH0sIHtcbiAgICAgIHBhdGg6IFwiKi9cIixcbiAgICAgIGNvbXBvbmVudDogXzdhYmIyNWFmLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcImVkdWNhdGlvbi1pbmRleC1hbGxfX19lblwiXG4gICAgfV1cbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtd2VkZGluZy1iYW5kcy9cIixcbiAgICBjb21wb25lbnQ6IF85MGE1OTQxYSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtd2VkZGluZy1iYW5kc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kcy9cIixcbiAgICBjb21wb25lbnQ6IF83YjZhMjhlOSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGRzL1wiLFxuICAgIGNvbXBvbmVudDogXzVlMTFhMzBlLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZHNfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9leHRlbmQtcHJvdGVjdGlvbi1wbGFuL1wiLFxuICAgIGNvbXBvbmVudDogXzAzNjU4NDY5LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZXh0ZW5kLXByb3RlY3Rpb24tcGxhbl9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2Zhdm9yaXRlcy9cIixcbiAgICBjb21wb25lbnQ6IF9lN2E4MWQ2NCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImZhdm9yaXRlc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2ZlYXR1cmVkLWRlc2lnbmVycy9cIixcbiAgICBjb21wb25lbnQ6IF83ZWI1YWE3MCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImZlYXR1cmVkLWRlc2lnbmVyc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2ZpbmFuY2luZy9cIixcbiAgICBjb21wb25lbnQ6IF8yZGI2YjUwZSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImZpbmFuY2luZ19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL21pY2hhZWwtYXJuc3RlaW4vXCIsXG4gICAgY29tcG9uZW50OiBfNDQxMDkxMWUsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJtaWNoYWVsLWFybnN0ZWluX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvb3VyLXN0YWZmL1wiLFxuICAgIGNvbXBvbmVudDogX2U5ZWFlYmQ0LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwib3VyLXN0YWZmX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvc2hvd3Jvb20vXCIsXG4gICAgY29tcG9uZW50OiBfODM4MDZiNTIsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJzaG93cm9vbV9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL3ZlcmlmeS1lbWFpbC9cIixcbiAgICBjb21wb25lbnQ6IF9mMjA5MDY3OCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcInZlcmlmeS1lbWFpbF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL3dlZGRpbmctYmFuZHMtd2l0aG91dC1nZW1zdG9uZS9cIixcbiAgICBjb21wb25lbnQ6IF81YzBmY2ZjMixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcIndlZGRpbmctYmFuZHMtd2l0aG91dC1nZW1zdG9uZV9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2FjY291bnQvYWRkcmVzcy1ib29rL1wiLFxuICAgIGNvbXBvbmVudDogXzI4NDU0YzdhLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiYWNjb3VudC1hZGRyZXNzLWJvb2tfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9hY2NvdW50L2NoYW5nZS1wYXNzd29yZC9cIixcbiAgICBjb21wb25lbnQ6IF83YWIwNTc2ZCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImFjY291bnQtY2hhbmdlLXBhc3N3b3JkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvYWNjb3VudC9ub3RpZmljYXRpb25zL1wiLFxuICAgIGNvbXBvbmVudDogXzVkMjdjMjg2LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiYWNjb3VudC1ub3RpZmljYXRpb25zX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvYWNjb3VudC9vcmRlcnMvXCIsXG4gICAgY29tcG9uZW50OiBfMDkzMDg4NDYsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJhY2NvdW50LW9yZGVyc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2FjY291bnQvcGVyc29uYWwtZGV0YWlscy9cIixcbiAgICBjb21wb25lbnQ6IF9kOGVjYTRkNCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImFjY291bnQtcGVyc29uYWwtZGV0YWlsc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2FjY291bnQvcHJldmlldy1yZXF1ZXN0LXN1Ym1pc3Npb25zL1wiLFxuICAgIGNvbXBvbmVudDogXzZiMGQyNDM5LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiYWNjb3VudC1wcmV2aWV3LXJlcXVlc3Qtc3VibWlzc2lvbnNfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9hY2NvdW50L3JlY29tbWVuZGF0aW9ucy9cIixcbiAgICBjb21wb25lbnQ6IF8wZDQ1NzRhZixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImFjY291bnQtcmVjb21tZW5kYXRpb25zX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvYWNjb3VudC9yZXNldC1wYXNzd29yZC9cIixcbiAgICBjb21wb25lbnQ6IF8wOTIyNjdiYSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImFjY291bnQtcmVzZXQt
1cGFzc3dvcmRfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9jYXJ0L29yZGVyLXN1bW1hcnkvXCIsXG4gICAgY29tcG9uZW50OiBfMjkzMDJiZjQsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJjYXJ0LW9yZGVyLXN1bW1hcnlfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLWpld2VscnkvY29sb21iaWFuLWVtZXJhbGQtcmluZ3MvXCIsXG4gICAgY29tcG9uZW50OiBfMzYwOTE3MzAsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkLWpld2VscnktY29sb21iaWFuLWVtZXJhbGQtcmluZ3NfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1icmFjZWxldHMtYmFuZ2xlcy9cIixcbiAgICBjb21wb25lbnQ6IF8xYmNjOGIyMCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtamV3ZWxyeS1lbWVyYWxkLWJyYWNlbGV0cy1iYW5nbGVzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtYnJhY2VsZXRzL1wiLFxuICAgIGNvbXBvbmVudDogXzczYmZkZDRiLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZC1qZXdlbHJ5LWVtZXJhbGQtYnJhY2VsZXRzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZC1qZXdlbHJ5L2VtZXJhbGQtYnJvb2NoZXMvXCIsXG4gICAgY29tcG9uZW50OiBfMzI5YjU3MzksXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkLWpld2VscnktZW1lcmFsZC1icm9vY2hlc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLWN1ZmZsaW5rcy9cIixcbiAgICBjb21wb25lbnQ6IF85ODJjNmJiMixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtamV3ZWxyeS1lbWVyYWxkLWN1ZmZsaW5rc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtamV3ZWxyeS9lbWVyYWxkLWVhcnJpbmdzL1wiLFxuICAgIGNvbXBvbmVudDogXzZlMGQ3OTNhLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZC1qZXdlbHJ5LWVtZXJhbGQtZWFycmluZ3NfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1uZWNrbGFjZXMtcGVuZGFudHMvXCIsXG4gICAgY29tcG9uZW50OiBfZjZkNDM2NDYsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkLWpld2VscnktZW1lcmFsZC1uZWNrbGFjZXMtcGVuZGFudHNfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLWpld2VscnkvZW1lcmFsZC1yaW5ncy9cIixcbiAgICBjb21wb25lbnQ6IF8xNWZjM2JhMyxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtamV3ZWxyeS1lbWVyYWxkLXJpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZC1qZXdlbHJ5L2VuZ2FnZW1lbnQtZW1lcmFsZC1yaW5ncy9cIixcbiAgICBjb21wb25lbnQ6IF8wMmY4NTAwZSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtamV3ZWxyeS1lbmdhZ2VtZW50LWVtZXJhbGQtcmluZ3NfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLWpld2VscnkvbWVucy1lbWVyYWxkLXJpbmdzL1wiLFxuICAgIGNvbXBvbmVudDogX2RjNzI5ZWQyLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZC1qZXdlbHJ5LW1lbnMtZW1lcmFsZC1yaW5nc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtamV3ZWxyeS96YW1iaWFuLWVtZXJhbGQtcmluZ3MvXCIsXG4gICAgY29tcG9uZW50OiBfNTAyYmQyYjAsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkLWpld2VscnktemFtYmlhbi1lbWVyYWxkLXJpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZHMvY29sb21iaWFuLWVtZXJhbGRzL1wiLFxuICAgIGNvbXBvbmVudDogXzA0ODU0YWExLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZHMtY29sb21iaWFuLWVtZXJhbGRzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZHMvZW1lcmFsZC1jYWJvY2hvbi9cIixcbiAgICBjb21wb25lbnQ6IF9iYjEzNDlhMixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGRzLWVtZXJhbGQtY2Fib2Nob25fX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkcy9nZW1vbG9naXN0LWZhdm9yaXRlcy9cIixcbiAgICBjb21wb25lbnQ6IF80NGE1YzgwNyxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGRzLWdlbW9sb2dpc3QtZmF2b3JpdGVzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZHMvZ2Vtb2xvZ2lzdC1yZWNvbW1lbmRlZC9cIixcbiAgICBjb21wb25lbnQ6IF9hOGI2ZjQ2YSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGRzLWdlbW9sb2dpc3QtcmVjb21tZW5kZWRfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkcy9tYXRjaGVkLXBhaXJzLW9mLWVtZXJhbGRzL1wiLFxuICAgIGNvbXBvbmVudDogXzYyYWRmMzY3LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZHMtbWF0Y2hlZC1wYWlycy1vZi1lbWVyYWxkc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGRzL3phbWJpYW4tZW1lcmFsZHMvXCIsXG4gICAgY29tcG9uZW50OiBfMTc2ZjA5ZDksXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkcy16YW1iaWFuLWVtZXJhbGRzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvc2hvd3Jvb20vcHJldmlldy9cIixcbiAgICBjb21wb25lbnQ6IF82MTNlNTllNixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBjaGlsZHJlbjogW3tcbiAgICAgIHBhdGg6IFwiXCIsXG4gICAgICBjb21wb25lbnQ6IF80ZGI0MWJkMCxcbiAgICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgICAgbmFtZTogXCJzaG93cm9vb
1S1wcmV2aWV3X19fZW5cIlxuICAgIH0sIHtcbiAgICAgIHBhdGg6IFwic3VjY2Vzcy9cIixcbiAgICAgIGNvbXBvbmVudDogXzU0NjQ3MTAxLFxuICAgICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgICBuYW1lOiBcInNob3dyb29tLXByZXZpZXctc3VjY2Vzc19fX2VuXCJcbiAgICB9XVxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1icmFjZWxldC1zZXR0aW5ncy9cIixcbiAgICBjb21wb25lbnQ6IF8yZGRmMzRhMyxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtYnJhY2VsZXQtc2V0dGluZ3NfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWVhcnJpbmctc2V0dGluZ3MvXCIsXG4gICAgY29tcG9uZW50OiBfMDFjMDk4MzYsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJkZXNpZ24teW91ci1vd24tc2V0dGluZy1lbWVyYWxkLWVhcnJpbmctc2V0dGluZ3NfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9kZXNpZ24teW91ci1vd24vc2V0dGluZy9lbWVyYWxkLWVuZ2FnZW1lbnQtcmluZy1zZXR0aW5ncy9cIixcbiAgICBjb21wb25lbnQ6IF81OTMyYzQ2ZCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtZW5nYWdlbWVudC1yaW5nLXNldHRpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1uZWNrbGFjZS1wZW5kYW50LXNldHRpbmdzL1wiLFxuICAgIGNvbXBvbmVudDogX2U0ODNiMzc0LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZGVzaWduLXlvdXItb3duLXNldHRpbmctZW1lcmFsZC1uZWNrbGFjZS1wZW5kYW50LXNldHRpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1uZWNrbGFjZXMtc2V0dGluZ3MvXCIsXG4gICAgY29tcG9uZW50OiBfNzNlNDI5NjQsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJkZXNpZ24teW91ci1vd24tc2V0dGluZy1lbWVyYWxkLW5lY2tsYWNlcy1zZXR0aW5nc19fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtcGVuZGFudHMtc2V0dGluZ3MvXCIsXG4gICAgY29tcG9uZW50OiBfYjc1ODBhMTgsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJkZXNpZ24teW91ci1vd24tc2V0dGluZy1lbWVyYWxkLXBlbmRhbnRzLXNldHRpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvbWVucy1yaW5nLXNldHRpbmdzL1wiLFxuICAgIGNvbXBvbmVudDogXzA4ZTk5ZjgyLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZGVzaWduLXlvdXItb3duLXNldHRpbmctbWVucy1yaW5nLXNldHRpbmdzX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZHMvbWF0Y2hlZC1wYWlycy1vZi1lbWVyYWxkcy9jYWJvY2hvbi9cIixcbiAgICBjb21wb25lbnQ6IF80NDE4ZDZhNixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGRzLW1hdGNoZWQtcGFpcnMtb2YtZW1lcmFsZHMtY2Fib2Nob25fX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9cIixcbiAgICBjb21wb25lbnQ6IF82YWEzNTYwNixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImluZGV4X19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1icmFjZWxldC1zZXR0aW5ncy86aWQvXCIsXG4gICAgY29tcG9uZW50OiBfZmExMTczZTQsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJkZXNpZ24teW91ci1vd24tc2V0dGluZy1lbWVyYWxkLWJyYWNlbGV0LXNldHRpbmdzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1lYXJyaW5nLXNldHRpbmdzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF85NGZiNTc2MCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtZWFycmluZy1zZXR0aW5ncy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtZW5nYWdlbWVudC1yaW5nLXNldHRpbmdzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF85MWVjM2U1MCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtZW5nYWdlbWVudC1yaW5nLXNldHRpbmdzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1uZWNrbGFjZS1wZW5kYW50LXNldHRpbmdzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF8xMGVlYWUzMSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtbmVja2xhY2UtcGVuZGFudC1zZXR0aW5ncy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2Rlc2lnbi15b3VyLW93bi9zZXR0aW5nL2VtZXJhbGQtbmVja2xhY2VzLXNldHRpbmdzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF82MjQ0YWYzOSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLWVtZXJhbGQtbmVja2xhY2VzLXNldHRpbmdzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvZW1lcmFsZC1wZW5kYW50cy1zZXR0aW5ncy86aWQvXCIsXG4gICAgY29tcG9uZW50OiBfZWJlMzA4NDIsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJkZXNpZ24teW91ci1vd24tc2V0dGluZy1lbWVyYWxkLXBlbmRhbnRzLXNldHRpbmdzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZGVzaWduLXlvdXItb3duL3NldHRpbmcvbWVucy1yaW5nLXNldHRpbmdzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF9hOWY5YWQyNixcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImRlc2lnbi15b3VyLW93bi1zZXR0aW5nLW1lbnMtcmluZy1zZXR0aW5ncy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2FjY291bnQvY29uZmlybS1jaGFuZ2UtZW1haWwvOnRva2VuL1wiLFxuICAgIGNvbXBvbmVudDogXzIwOWE4NTUyLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiYWNjb3VudC1jb25maXJtLWNoYW5nZS1lbWFpbC10b2tlbl9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2FjY291bnQvY29uZmlybS1wYXNzd29yZC86dG9rZW4vXCIsXG4gICAgY29tcG9uZW50OiBfM2Q2MmRiZjYsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJhY2NvdW50LWNvbmZpcm0tcGFzc3dvcmQtdG9rZW5fX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9hY2NvdW50L3Jlc2V0LXBhc3N3b3JkLzp0b2tlbi9cIixcbiAgICBjb21wb25lbnQ6IF82ZGEwYjQ0NSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImFjY291bnQtcmVzZXQt
1cGFzc3dvcmQtdG9rZW5fX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9hY2NvdW50L3NldC1wYXNzd29yZC86dG9rZW4vXCIsXG4gICAgY29tcG9uZW50OiBfMjZmZjM4MTgsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJhY2NvdW50LXNldC1wYXNzd29yZC10b2tlbl9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2Rlc2lnbi15b3VyLW93bi9yZXZpZXcvOmlkL1wiLFxuICAgIGNvbXBvbmVudDogXzZkOTI0YzM2LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZGVzaWduLXlvdXItb3duLXJldmlldy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGRzL21hdGNoZWQtcGFpcnMtb2YtZW1lcmFsZHMvOmlkL1wiLFxuICAgIGNvbXBvbmVudDogXzIxMDEwMmQyLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZHMtbWF0Y2hlZC1wYWlycy1vZi1lbWVyYWxkcy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGQtamV3ZWxyeS86aWQvXCIsXG4gICAgY29tcG9uZW50OiBfMWRhYTM4ZmEsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJlbWVyYWxkLWpld2VscnktaWRfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9lbWVyYWxkLXdlZGRpbmctYmFuZHMvOmlkL1wiLFxuICAgIGNvbXBvbmVudDogX2VmNzdjMTQ0LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZW1lcmFsZC13ZWRkaW5nLWJhbmRzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZW1lcmFsZC13ZWRkaW5nLXJpbmdzLWJhbmRzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF82ZGMyYTc1NCxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGQtd2VkZGluZy1yaW5ncy1iYW5kcy1pZF9fX2VuXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2VtZXJhbGRzLzppZC9cIixcbiAgICBjb21wb25lbnQ6IF81ZTI2ODZmOSxcbiAgICBwYXRoVG9SZWdleHBPcHRpb25zOiB7XCJzdHJpY3RcIjp0cnVlfSxcbiAgICBuYW1lOiBcImVtZXJhbGRzLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZmVhdHVyZWQtZGVzaWduZXJzLzpuYW1lL1wiLFxuICAgIGNvbXBvbmVudDogXzAwYzEyN2UzLFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwiZmVhdHVyZWQtZGVzaWduZXJzLW5hbWVfX19lblwiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi93ZWRkaW5nLWJhbmRzLXdpdGhvdXQtZ2Vtc3RvbmUvOmlkL1wiLFxuICAgIGNvbXBvbmVudDogX2I5ZDE4Y2E2LFxuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnM6IHtcInN0cmljdFwiOnRydWV9LFxuICAgIG5hbWU6IFwid2VkZGluZy1iYW5kcy13aXRob3V0LWdlbXN0b25lLWlkX19fZW5cIlxuICB9LCB7XG4gICAgcGF0aDogXCIvZmVhdHVyZWQtZGVzaWduZXJzLzpuYW1lPy86aWQvXCIsXG4gICAgY29tcG9uZW50OiBfNjEyZDk5NGUsXG4gICAgcGF0aFRvUmVnZXhwT3B0aW9uczoge1wic3RyaWN0XCI6dHJ1ZX0sXG4gICAgbmFtZTogXCJmZWF0dXJlZC1kZXNpZ25lcnMtbmFtZS1pZF9fX2VuXCJcbiAgfV0sXG5cbiAgZmFsbGJhY2s6IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZXIgKHNzckNvbnRleHQsIGNvbmZpZykge1xuICBjb25zdCBiYXNlID0gKGNvbmZpZy5fYXBwICYmIGNvbmZpZy5fYXBwLmJhc2VQYXRoKSB8fCByb3V0ZXJPcHRpb25zLmJhc2VcbiAgY29uc3Qgcm91dGVyID0gbmV3IFJvdXRlcih7IC4uLnJvdXRlck9wdGlvbnMsIGJhc2UgIH0pXG5cbiAgLy8gVE9ETzogcmVtb3ZlIGluIE51eHQgM1xuICBjb25zdCBvcmlnaW5hbFB1c2ggPSByb3V0ZXIucHVzaFxuICByb3V0ZXIucHVzaCA9IGZ1bmN0aW9uIHB1c2ggKGxvY2F0aW9uLCBvbkNvbXBsZXRlID0gZW1wdHlGbiwgb25BYm9ydCkge1xuICAgIHJldHVybiBvcmlnaW5hbFB1c2guY2FsbCh0aGlzLCBsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydClcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmUgPSByb3V0ZXIucmVzb2x2ZS5iaW5kKHJvdXRlcilcbiAgcm91dGVyLnJlc29sdmUgPSAodG8sIGN1cnJlbnQsIGFwcGVuZCkgPT4ge1xuICAgIGlmICh0eXBlb2YgdG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0byA9IG5vcm1hbGl6ZVVSTCh0bylcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmUodG8sIGN1cnJlbnQsIGFwcGVuZClcbiAgfVxuXG4gIHJldHVybiByb3V0ZXJcbn1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ051eHRDaGlsZCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiB7XG4gICAgbnV4dENoaWxkS2V5OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAga2VlcEFsaXZlOiBCb29sZWFuLFxuICAgIGtlZXBBbGl2ZVByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIHJlbmRlciAoXywgeyBwYXJlbnQsIGRhdGEsIHByb3BzIH0pIHtcbiAgICBjb25zdCBoID0gcGFyZW50LiRjcmVhdGVFbGVtZW50XG5cbiAgICBkYXRhLm51eHRDaGlsZCA9IHRydWVcbiAgICBjb25zdCBfcGFyZW50ID0gcGFyZW50XG4gICAgY29uc3QgdHJhbnNpdGlvbnMgPSBwYXJlbnQuJG51eHQubnV4dC50cmFuc2l0aW9uc1xuICAgIGNvbnN0IGRlZmF1bHRUcmFuc2l0aW9uID0gcGFyZW50LiRudXh0Lm51eHQuZGVmYXVsdFRyYW5zaXRpb25cblxuICAgIGxldCBkZXB0aCA9IDBcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAocGFyZW50LiR2bm9kZSAmJiBwYXJlbnQuJHZub2RlLmRhdGEubnV4dENoaWxkKSB7XG4gICAgICAgIGRlcHRoKytcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50XG4gICAgfVxuICAgIGRhdGEubnV4dENoaWxkRGVwdGggPSBkZXB0aFxuICAgIGNvbnN0IHRyYW5zaXRpb24gPSB0cmFuc2l0aW9uc1tkZXB0aF0gfHwgZGVmYXVsdFRyYW5zaXRpb25cbiAgICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgP
1SB7fVxuICAgIHRyYW5zaXRpb25zS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNpdGlvbltrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0cmFuc2l0aW9uUHJvcHNba2V5XSA9IHRyYW5zaXRpb25ba2V5XVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB7fVxuICAgIGxpc3RlbmVyc0tleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRyYW5zaXRpb25ba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsaXN0ZW5lcnNba2V5XSA9IHRyYW5zaXRpb25ba2V5XS5iaW5kKF9wYXJlbnQpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIC8vIEFkZCB0cmlnZ2VyU2Nyb2xsIGV2ZW50IG9uIGJlZm9yZUVudGVyIChmaXggIzEzNzYpXG4gICAgICBjb25zdCBiZWZvcmVFbnRlciA9IGxpc3RlbmVycy5iZWZvcmVFbnRlclxuICAgICAgbGlzdGVuZXJzLmJlZm9yZUVudGVyID0gKGVsKSA9PiB7XG4gICAgICAgIC8vIEVuc3VyZSB0byB0cmlnZ2VyIHNjcm9sbCBldmVudCBhZnRlciBjYWxsaW5nIHNjcm9sbEJlaGF2aW9yXG4gICAgICAgIHdpbmRvdy4kbnV4dC4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy4kbnV4dC4kZW1pdCgndHJpZ2dlclNjcm9sbCcpXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChiZWZvcmVFbnRlcikge1xuICAgICAgICAgIHJldHVybiBiZWZvcmVFbnRlci5jYWxsKF9wYXJlbnQsIGVsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoYXQgbGVhdmUgaXMgY2FsbGVkIGFzeW5jaHJvbm91cyAoZml4ICM1NzAzKVxuICAgIGlmICh0cmFuc2l0aW9uLmNzcyA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGxlYXZlID0gbGlzdGVuZXJzLmxlYXZlXG5cbiAgICAgIC8vIG9ubHkgYWRkIGxlYXZlIGxpc3RlbmVyIHdoZW4gdXNlciBkaWRudCBwcm92aWRlIG9uZVxuICAgICAgLy8gb3Igd2hlbiBpdCBtaXNzZXMgdGhlIGRvbmUgYXJndW1lbnRcbiAgICAgIGlmICghbGVhdmUgfHwgbGVhdmUubGVuZ3RoIDwgMikge1xuICAgICAgICBsaXN0ZW5lcnMubGVhdmUgPSAoZWwsIGRvbmUpID0+IHtcbiAgICAgICAgICBpZiAobGVhdmUpIHtcbiAgICAgICAgICAgIGxlYXZlLmNhbGwoX3BhcmVudCwgZWwpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3BhcmVudC4kbmV4dFRpY2soZG9uZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByb3V0ZXJWaWV3ID0gaCgncm91dGVyVmlldycsIGRhdGEpXG5cbiAgICBpZiAocHJvcHMua2VlcEFsaXZlKSB7XG4gICAgICByb3V0ZXJWaWV3ID0gaCgna2VlcC1hbGl2ZScsIHsgcHJvcHM6IHByb3BzLmtlZXBBbGl2ZVByb3BzIH0sIFtyb3V0ZXJWaWV3XSlcbiAgICB9XG5cbiAgICByZXR1cm4gaCgndHJhbnNpdGlvbicsIHtcbiAgICAgIHByb3BzOiB0cmFuc2l0aW9uUHJvcHMsXG4gICAgICBvbjogbGlzdGVuZXJzXG4gICAgfSwgW3JvdXRlclZpZXddKVxuICB9XG59XG5cbmNvbnN0IHRyYW5zaXRpb25zS2V5cyA9IFtcbiAgJ25hbWUnLFxuICAnbW9kZScsXG4gICdhcHBlYXInLFxuICAnY3NzJyxcbiAgJ3R5cGUnLFxuICAnZHVyYXRpb24nLFxuICAnZW50ZXJDbGFzcycsXG4gICdsZWF2ZUNsYXNzJyxcbiAgJ2FwcGVhckNsYXNzJyxcbiAgJ2VudGVyQWN0aXZlQ2xhc3MnLFxuICAnZW50ZXJBY3RpdmVDbGFzcycsXG4gICdsZWF2ZUFjdGl2ZUNsYXNzJyxcbiAgJ2FwcGVhckFjdGl2ZUNsYXNzJyxcbiAgJ2VudGVyVG9DbGFzcycsXG4gICdsZWF2ZVRvQ2xhc3MnLFxuICAnYXBwZWFyVG9DbGFzcydcbl1cblxuY29uc3QgbGlzdGVuZXJzS2V5cyA9IFtcbiAgJ2JlZm9yZUVudGVyJyxcbiAgJ2VudGVyJyxcbiAgJ2FmdGVyRW50ZXInLFxuICAnZW50ZXJDYW5jZWxsZWQnLFxuICAnYmVmb3JlTGVhdmUnLFxuICAnbGVhdmUnLFxuICAnYWZ0ZXJMZWF2ZScsXG4gICdsZWF2ZUNhbmNlbGxlZCcsXG4gICdiZWZvcmVBcHBlYXInLFxuICAnYXBwZWFyJyxcbiAgJ2FmdGVyQXBwZWFyJyxcbiAgJ2FwcGVhckNhbmNlbGxlZCdcbl1cbiIsInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJfX251eHQtZXJyb3ItcGFnZVwifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiZXJyb3JcIn0sW19jKCdzdmcnLHthdHRyczp7XCJ4bWxuc1wiOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcIndpZHRoXCI6XCI5MFwiLFwiaGVpZ2h0XCI6XCI5MFwiLFwiZmlsbFwiOlwiI0RCRTFFQ1wiLFwidmlld0JveFwiOlwiMCAwIDQ4IDQ4XCJ9fSxbX2MoJ3BhdGgnLHthdHRyczp7XCJkXCI6XCJNMjIgMzBoNHY0aC00em0wLTE2aDR2MTJoLTR6bTEuOTktMTBDMTIuOTQgNCA0IDEyLjk1IDQgMjRzOC45NCAyMCAxOS45OSAyMFM0NCAzNS4wNSA0NCAyNCAzNS4wNCA0IDIzLjk5IDR6TTI0IDQwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlMxNS4xNiA4IDI0IDhzMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwifX0pXSksX3ZtLl92KFwiIFwiKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ0aXRsZVwifSxbX3ZtLl92KF92bS5fcyhfdm0ubWVzc2FnZSkpXSksX3ZtLl92KFwiIFwiKSwoX3ZtLnN0YXR1c0NvZGUgPT09IDQwNCk/X2MoJ3AnLHtzdGF0aWNDbGFzczpcImRlc2NyaXB0aW9uXCJ9LFsodHlwZW9mIF92bS4kcm91dGUgPT09ICd1bmRlZmluZWQnKT9fYygnYScse3N0YXRpY0NsYXNzOlwiZXJyb3ItbGlua1wiLGF0dHJzOntcImhyZWZcIjpcIi9cIn19KTpfYygnTnV4dExpbmsnLHtzdGF0aWNDbGFzczpcImVycm9yLWxpbmtcIixhdHRyczp7XCJ0b1wiOlwiL1wifX0sW192bS5fdihcIkJhY2sgdG8gdGhlIGhvbWUgcGFnZVwiKV0pXSwxKTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLF92bS5fbSgwKV0pXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbZnVuY3Rpb24gKCl7dmFyIF92bT10aGlzLF9jPV92bS5fc2VsZi5fYztyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibG9nb1wifSxbX2MoJ2EnLHthdHRyczp7XCJocmVmXCI6XCJodHRwczovL251eHRqcy5vcmdcIixcInRhcmdldFwiOlwiX2JsYW5rXCIsXCJyZWxcIjpcIm5vb3BlbmVyXCJ9fSxbX3ZtLl92KFwiTnV4dFwiKV0pXSlcbn1dXG5cbmV4cG9ydCB7
1IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJfX251eHQtZXJyb3ItcGFnZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5MFwiIGhlaWdodD1cIjkwXCIgZmlsbD1cIiNEQkUxRUNcIiB2aWV3Qm94PVwiMCAwIDQ4IDQ4XCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMjIgMzBoNHY0aC00em0wLTE2aDR2MTJoLTR6bTEuOTktMTBDMTIuOTQgNCA0IDEyLjk1IDQgMjRzOC45NCAyMCAxOS45OSAyMFM0NCAzNS4wNSA0NCAyNCAzNS4wNCA0IDIzLjk5IDR6TTI0IDQwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlMxNS4xNiA4IDI0IDhzMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwiIC8+XG4gICAgICA8L3N2Zz5cblxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgbWVzc2FnZSB9fTwvZGl2PlxuICAgICAgPHAgdi1pZj1cInN0YXR1c0NvZGUgPT09IDQwNFwiIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGEgdi1pZj1cInR5cGVvZiAkcm91dGUgPT09ICd1bmRlZmluZWQnXCIgY2xhc3M9XCJlcnJvci1saW5rXCIgaHJlZj1cIi9cIj48L2E+XG4gICAgICAgIDxOdXh0TGluayB2LWVsc2UgY2xhc3M9XCJlcnJvci1saW5rXCIgdG89XCIvXCI+QmFjayB0byB0aGUgaG9tZSBwYWdlPC9OdXh0TGluaz5cbiAgICAgIDwvcD5cblxuICAgICAgPGRpdiBjbGFzcz1cImxvZ29cIj5cbiAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vbnV4dGpzLm9yZ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+TnV4dDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdOdXh0RXJyb3InLFxuICBwcm9wczoge1xuICAgIGVycm9yOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0YXR1c0NvZGUgKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmVycm9yICYmIHRoaXMuZXJyb3Iuc3RhdHVzQ29kZSkgfHwgNTAwXG4gICAgfSxcbiAgICBtZXNzYWdlICgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVycm9yLm1lc3NhZ2UgfHwgJ0Vycm9yJ1xuICAgIH1cbiAgfSxcbiAgaGVhZCAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBtZXRhOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndmlld3BvcnQnLFxuICAgICAgICAgIGNvbnRlbnQ6ICd3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLjAsbWluaW11bS1zY2FsZT0xLjAnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4uX19udXh0LWVycm9yLXBhZ2Uge1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiAjRjdGOEZCO1xuICBjb2xvcjogIzQ3NDk0RTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiAxMDAgIWltcG9ydGFudDtcbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xufVxuLl9fbnV4dC1lcnJvci1wYWdlIC5lcnJvciB7XG4gIG1heC13aWR0aDogNDUwcHg7XG59XG4uX19udXh0LWVycm9yLXBhZ2UgLnRpdGxlIHtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIGNvbG9yOiAjNDc0OTRFO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG4uX19udXh0LWVycm9yLXBhZ2UgLmRlc2NyaXB0aW9uIHtcbiAgY29sb3I6ICM3RjgyOEI7XG4gIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLl9fbnV4dC1lcnJvci1wYWdlIGEge1xuICBjb2xvcjogIzdGODI4QiAhaW1wb3J0YW50O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uX19udXh0LWVycm9yLXBhZ2UgLmxvZ28ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDEycHg7XG4gIGJvdHRvbTogMTJweDtcbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL251eHQtZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTItMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL251eHQtZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9udXh0LWVycm9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NGY3NmMxZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9udXh0LWVycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbnV4dC1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vbnV4dC1lcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NGY3NmMxZSZwcm9kJmxhbmc9Y3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpem
1VyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCB7IGNvbXBpbGUgfSBmcm9tICcuLi91dGlscydcblxuaW1wb3J0IE51eHRFcnJvciBmcm9tICcuL251eHQtZXJyb3IudnVlJ1xuXG5pbXBvcnQgTnV4dENoaWxkIGZyb20gJy4vbnV4dC1jaGlsZCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTnV4dCcsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBOdXh0Q2hpbGQsXG4gICAgTnV4dEVycm9yXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgbnV4dENoaWxkS2V5OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGtlZXBBbGl2ZTogQm9vbGVhbixcbiAgICBrZWVwQWxpdmVQcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZGVmYXVsdCdcbiAgICB9XG4gIH0sXG4gIGVycm9yQ2FwdHVyZWQgKGVycm9yKSB7XG4gICAgLy8gaWYgd2UgcmVjZWl2ZSBhbmQgZXJyb3Igd2hpbGUgc2hvd2luZyB0aGUgTnV4dEVycm9yIGNvbXBvbmVudFxuICAgIC8vIGNhcHR1cmUgdGhlIGVycm9yIGFuZCBmb3JjZSBhbiBpbW1lZGlhdGUgdXBkYXRlIHNvIHdlIHJlLXJlbmRlclxuICAgIC8vIHdpdGhvdXQgdGhlIE51eHRFcnJvciBjb21wb25lbnRcbiAgICBpZiAodGhpcy5kaXNwbGF5aW5nTnV4dEVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yRnJvbU51eHRFcnJvciA9IGVycm9yXG4gICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHJvdXRlclZpZXdLZXkgKCkge1xuICAgICAgLy8gSWYgbnV4dENoaWxkS2V5IHByb3AgaXMgZ2l2ZW4gb3IgY3VycmVudCByb3V0ZSBoYXMgY2hpbGRyZW5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5udXh0Q2hpbGRLZXkgIT09ICd1bmRlZmluZWQnIHx8IHRoaXMuJHJvdXRlLm1hdGNoZWQubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5udXh0Q2hpbGRLZXkgfHwgY29tcGlsZSh0aGlzLiRyb3V0ZS5tYXRjaGVkWzBdLnBhdGgpKHRoaXMuJHJvdXRlLnBhcmFtcylcbiAgICAgIH1cblxuICAgICAgY29uc3QgW21hdGNoZWRSb3V0ZV0gPSB0aGlzLiRyb3V0ZS5tYXRjaGVkXG5cbiAgICAgIGlmICghbWF0Y2hlZFJvdXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyb3V0ZS5wYXRoXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IENvbXBvbmVudCA9IG1hdGNoZWRSb3V0ZS5jb21wb25lbnRzLmRlZmF1bHRcblxuICAgICAgaWYgKENvbXBvbmVudCAmJiBDb21wb25lbnQub3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IENvbXBvbmVudFxuXG4gICAgICAgIGlmIChvcHRpb25zLmtleSkge1xuICAgICAgICAgIHJldHVybiAodHlwZW9mIG9wdGlvbnMua2V5ID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5rZXkodGhpcy4kcm91dGUpIDogb3B0aW9ucy5rZXkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RyaWN0ID0gL1xcLyQvLnRlc3QobWF0Y2hlZFJvdXRlLnBhdGgpXG4gICAgICByZXR1cm4gc3RyaWN0ID8gdGhpcy4kcm91dGUucGF0aCA6IHRoaXMuJHJvdXRlLnBhdGgucmVwbGFjZSgvXFwvJC8sICcnKVxuICAgIH1cbiAgfSxcbiAgYmVmb3JlQ3JlYXRlICgpIHtcbiAgICBWdWUudXRpbC5kZWZpbmVSZWFjdGl2ZSh0aGlzLCAnbnV4dCcsIHRoaXMuJHJvb3QuJG9wdGlvbnMubnV4dClcbiAgfSxcbiAgcmVuZGVyIChoKSB7XG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gZXJyb3JcbiAgICBpZiAoIXRoaXMubnV4dC5lcnIpIHtcbiAgICAgIC8vIERpcmVjdGx5IHJldHVybiBudXh0IGNoaWxkXG4gICAgICByZXR1cm4gaCgnTnV4dENoaWxkJywge1xuICAgICAgICBrZXk6IHRoaXMucm91dGVyVmlld0tleSxcbiAgICAgICAgcHJvcHM6IHRoaXMuJHByb3BzXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIGlmIGFuIGVycm9yIG9jY3VycmVkIHdpdGhpbiBOdXh0RXJyb3Igc2hvdyBhIHNpbXBsZVxuICAgIC8vIGVycm9yIG1lc3NhZ2UgaW5zdGVhZCB0byBwcmV2ZW50IGxvb3BpbmdcbiAgICBpZiAodGhpcy5lcnJvckZyb21OdXh0RXJyb3IpIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+ICh0aGlzLmVycm9yRnJvbU51eHRFcnJvciA9IGZhbHNlKSlcblxuICAgICAgcmV0dXJuIGgoJ2RpdicsIHt9LCBbXG4gICAgICAgIGgoJ2gyJywgJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHNob3dpbmcgdGhlIGVycm9yIHBhZ2UnKSxcbiAgICAgICAgaCgncCcsICdVbmZvcnR1bmF0ZWx5IGFuIGVycm9yIG9jY3VycmVkIGFuZCB3aGlsZSBzaG93aW5nIHRoZSBlcnJvciBwYWdlIGFub3RoZXIgZXJyb3Igb2NjdXJyZWQnKSxcbiAgICAgICAgaCgncCcsIGBFcnJvciBkZXRhaWxzOiAke3RoaXMuZXJyb3JGcm9tTnV4dEVycm9yLnRvU3RyaW5nKCl9YCksXG4gICAgICAgIGgoJ251eHQtbGluaycsIHsgcHJvcHM6IHsgdG86ICcvJyB9IH0sICdHbyBiYWNrIHRvIGhvbWUnKVxuICAgICAgXSlcbiAgICB9XG5cbiAgICAvLyB0cmFjayBpZiB3ZSBhcmUgc2hvd2luZyB0aGUgTnV4dEVycm9yIGNvbXBvbmVudFxuICAgIHRoaXMuZGlzcGxheWluZ051eHRFcnJvciA9IHRydWVcbiAgICB0aGlzLiRuZXh0VGljaygoKSA9PiAodGhpcy5kaXNwbGF5aW5nTnV4dEVycm9yID0gZmFsc2UpKVxuXG4gICAgcmV0dXJuIGgoTnV4dEVycm9yLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBlcnJvcjogdGhpcy5udXh0LmVyclxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IHsgZGVjb2RlLCBwYXJzZVBhdGgsIHdpdGhvdXRCYXNlLCB3aXRob3V0VHJhaWxpbmdTbGFzaCwgbm9ybWFsaXplVVJMIH0gZnJvbSAndWZvJ1xuXG5pbXBvcnQgeyBnZXRNYXRjaGVkQ29tcG9uZW50c0luc3RhbmNlcywgZ2V0Q2hpbGRyZW5Db21wb25lbnRJbnN0YW5jZXNVc2luZ0ZldGNoLCBwcm9taXNpZnksIGdsb2JhbEhhbmRsZUVycm9yLCB1cmxKb2luLCBzYW5pdGl6ZUNvbXBvbmVudCB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgTnV4dEVycm9yIGZyb20gJy4vY29tcG9uZW50cy9udXh0LWVycm9yLnZ1ZSdcbmltcG9ydCBOdXh0TG9hZGluZyBmcm9tICcuLi8uLi9jb21wb25lbnRzL0NvbW1vbi9Mb2FkaW5nT3ZlcmxheS9Mb2FkaW5nT3ZlcmxheU51eH
1QnXG5cbmltcG9ydCAnLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1mcmVlL2Nzcy9hbGwuY3NzJ1xuXG5pbXBvcnQgJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvYXNzZXRzL3N0eWxlcy9tYWluLnNhc3MnXG5cbmltcG9ydCAnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9zdGF0aWMvc3R5bGVzL2ZvbnRzLmNzcydcblxuaW1wb3J0ICcuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWpzLW1vZGFsL2Rpc3Qvc3R5bGVzLmNzcydcblxuaW1wb3J0ICcuLi8uLi9ub2RlX21vZHVsZXMvY2hhdC1jdXN0b21lci00N25ldC9zdHlsZS5jc3MnXG5cbmltcG9ydCBfNmY2YzA5OGIgZnJvbSAnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9sYXlvdXRzL2RlZmF1bHQudnVlJ1xuaW1wb3J0IF8yMTlmZDMwOCBmcm9tICcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL2xheW91dHMvc3VtbWFyeU9yZGVyTGF5b3V0LnZ1ZSdcblxuY29uc3QgbGF5b3V0cyA9IHsgXCJfZGVmYXVsdFwiOiBzYW5pdGl6ZUNvbXBvbmVudChfNmY2YzA5OGIpLFwiX3N1bW1hcnlPcmRlckxheW91dFwiOiBzYW5pdGl6ZUNvbXBvbmVudChfMjE5ZmQzMDgpIH1cblxuZXhwb3J0IGRlZmF1bHQge1xuICByZW5kZXIgKGgsIHByb3BzKSB7XG4gICAgY29uc3QgbG9hZGluZ0VsID0gaCgnTnV4dExvYWRpbmcnLCB7IHJlZjogJ2xvYWRpbmcnIH0pXG5cbiAgICBjb25zdCBsYXlvdXRFbCA9IGgodGhpcy5sYXlvdXQgfHwgJ251eHQnKVxuICAgIGNvbnN0IHRlbXBsYXRlRWwgPSBoKCdkaXYnLCB7XG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICBpZDogJ19fbGF5b3V0J1xuICAgICAgfSxcbiAgICAgIGtleTogdGhpcy5sYXlvdXROYW1lXG4gICAgfSwgW2xheW91dEVsXSlcblxuICAgIGNvbnN0IHRyYW5zaXRpb25FbCA9IGgoJ3RyYW5zaXRpb24nLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiAnbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ291dC1pbidcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBiZWZvcmVFbnRlciAoZWwpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdG8gdHJpZ2dlciBzY3JvbGwgZXZlbnQgYWZ0ZXIgY2FsbGluZyBzY3JvbGxCZWhhdmlvclxuICAgICAgICAgIHdpbmRvdy4kbnV4dC4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LiRudXh0LiRlbWl0KCd0cmlnZ2VyU2Nyb2xsJylcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3RlbXBsYXRlRWxdKVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIGlkOiAnX19udXh0J1xuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGxvYWRpbmdFbCxcblxuICAgICAgdHJhbnNpdGlvbkVsXG4gICAgXSlcbiAgfSxcblxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGlzT25saW5lOiB0cnVlLFxuXG4gICAgbGF5b3V0OiBudWxsLFxuICAgIGxheW91dE5hbWU6ICcnLFxuXG4gICAgbmJGZXRjaGluZzogMFxuICAgIH0pLFxuXG4gIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgVnVlLnV0aWwuZGVmaW5lUmVhY3RpdmUodGhpcywgJ251eHQnLCB0aGlzLiRvcHRpb25zLm51eHQpXG4gIH0sXG4gIGNyZWF0ZWQgKCkge1xuICAgIC8vIEFkZCB0aGlzLiRudXh0IGluIGNoaWxkIGluc3RhbmNlc1xuICAgIHRoaXMuJHJvb3QuJG9wdGlvbnMuJG51eHQgPSB0aGlzXG5cbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIC8vIGFkZCB0byB3aW5kb3cgc28gd2UgY2FuIGxpc3RlbiB3aGVuIHJlYWR5XG4gICAgICB3aW5kb3cuJG51eHQgPSB0aGlzXG5cbiAgICAgIHRoaXMucmVmcmVzaE9ubGluZVN0YXR1cygpXG4gICAgICAvLyBTZXR1cCB0aGUgbGlzdGVuZXJzXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb25saW5lJywgdGhpcy5yZWZyZXNoT25saW5lU3RhdHVzKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCB0aGlzLnJlZnJlc2hPbmxpbmVTdGF0dXMpXG4gICAgfVxuICAgIC8vIEFkZCAkbnV4dC5lcnJvcigpXG4gICAgdGhpcy5lcnJvciA9IHRoaXMubnV4dC5lcnJvclxuICAgIC8vIEFkZCAkbnV4dC5jb250ZXh0XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy4kb3B0aW9ucy5jb250ZXh0XG4gIH0sXG5cbiAgYXN5bmMgbW91bnRlZCAoKSB7XG4gICAgdGhpcy4kbG9hZGluZyA9IHRoaXMuJHJlZnMubG9hZGluZ1xuICB9LFxuXG4gIHdhdGNoOiB7XG4gICAgJ251eHQuZXJyJzogJ2Vycm9yQ2hhbmdlZCdcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGlzT2ZmbGluZSAoKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNPbmxpbmVcbiAgICB9LFxuXG4gICAgaXNGZXRjaGluZyAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYkZldGNoaW5nID4gMFxuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHJlZnJlc2hPbmxpbmVTdGF0dXMgKCkge1xuICAgICAgaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNvbm5lY3Rpb24gc3RhdHVzIHJlcG9ydHNcbiAgICAgICAgICAvLyBhc3N1bWUgdGhhdCB3ZSBhcmUgb25saW5lIGJlY2F1c2UgbW9zdCBhcHBzJyBvbmx5IHJlYWN0XG4gICAgICAgICAgLy8gd2hlbiB0aGV5IG5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGludGVycnVwdGVkXG4gICAgICAgICAgdGhpcy5pc09ubGluZSA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzT25saW5lID0gd2luZG93Lm5hdmlnYXRvci5vbkxpbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyByZWZyZXNoICgpIHtcbiAgICAgIGNvbnN0IHBhZ2VzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHNJbnN0YW5jZXModGhpcy4kcm91dGUpXG5cbiAgICAgIGlmICghcGFnZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy4kbG9hZGluZy5zdGFydCgpXG5cbiAgICAgIGNvbnN0IHByb21pc2VzID0gcGFnZXMubWFwKGFzeW5jIChwYWdlKSA9PiB7XG4gICAgICAgIGxldCBwID0gW11cblxuICAgICAgICAvLyBPbGQgZmV0Y2hcbiAgICAgICAgaWYgKHBhZ2UuJG9wdGlvbnMuZmV0Y2ggJiYgcGFnZS4kb3B0aW9ucy5mZXRjaC5sZW5ndGgpIHtcbiAgICAgICAgICBwLnB1c2gocHJvbWlzaWZ5KHBhZ2UuJG9wdGlvbnMuZmV0Y2gsIHRoaXMuY29udGV4dCkpXG4gICAgICAgI
1H1cblxuICAgICAgICBpZiAocGFnZS4kb3B0aW9ucy5hc3luY0RhdGEpIHtcbiAgICAgICAgICBwLnB1c2goXG4gICAgICAgICAgICBwcm9taXNpZnkocGFnZS4kb3B0aW9ucy5hc3luY0RhdGEsIHRoaXMuY29udGV4dClcbiAgICAgICAgICAgICAgLnRoZW4oKG5ld0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdEYXRhKSB7XG4gICAgICAgICAgICAgICAgICBWdWUuc2V0KHBhZ2UuJGRhdGEsIGtleSwgbmV3RGF0YVtrZXldKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBXYWl0IGZvciBhc3luY0RhdGEgJiBvbGQgZmV0Y2ggdG8gZmluaXNoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHApXG4gICAgICAgIC8vIENsZWFudXAgcmVmc1xuICAgICAgICBwID0gW11cblxuICAgICAgICBpZiAocGFnZS4kZmV0Y2gpIHtcbiAgICAgICAgICBwLnB1c2gocGFnZS4kZmV0Y2goKSlcbiAgICAgICAgfVxuICAgICAgICAvLyBHZXQgYWxsIGNvbXBvbmVudCBpbnN0YW5jZSB0byBjYWxsICRmZXRjaFxuICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBnZXRDaGlsZHJlbkNvbXBvbmVudEluc3RhbmNlc1VzaW5nRmV0Y2gocGFnZS4kdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgICAgcC5wdXNoKGNvbXBvbmVudC4kZmV0Y2goKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwKVxuICAgICAgfSlcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy4kbG9hZGluZy5mYWlsKGVycm9yKVxuICAgICAgICBnbG9iYWxIYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgdGhpcy5lcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICAgIHRoaXMuJGxvYWRpbmcuZmluaXNoKClcbiAgICB9LFxuICAgIGVycm9yQ2hhbmdlZCAoKSB7XG4gICAgICBpZiAodGhpcy5udXh0LmVycikge1xuICAgICAgICBpZiAodGhpcy4kbG9hZGluZykge1xuICAgICAgICAgIGlmICh0aGlzLiRsb2FkaW5nLmZhaWwpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvYWRpbmcuZmFpbCh0aGlzLm51eHQuZXJyKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy4kbG9hZGluZy5maW5pc2gpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvYWRpbmcuZmluaXNoKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXJyb3JMYXlvdXQgPSAoTnV4dEVycm9yLm9wdGlvbnMgfHwgTnV4dEVycm9yKS5sYXlvdXQ7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlcnJvckxheW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGVycm9yTGF5b3V0ID0gZXJyb3JMYXlvdXQodGhpcy5jb250ZXh0KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRMYXlvdXQoZXJyb3JMYXlvdXQpXG4gICAgICB9XG4gICAgfSxcblxuICAgIHNldExheW91dCAobGF5b3V0KSB7XG4gICAgICBpZiAoIWxheW91dCB8fCAhbGF5b3V0c1snXycgKyBsYXlvdXRdKSB7XG4gICAgICAgIGxheW91dCA9ICdkZWZhdWx0J1xuICAgICAgfVxuICAgICAgdGhpcy5sYXlvdXROYW1lID0gbGF5b3V0XG4gICAgICB0aGlzLmxheW91dCA9IGxheW91dHNbJ18nICsgbGF5b3V0XVxuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0XG4gICAgfSxcbiAgICBsb2FkTGF5b3V0IChsYXlvdXQpIHtcbiAgICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXRzWydfJyArIGxheW91dF0pIHtcbiAgICAgICAgbGF5b3V0ID0gJ2RlZmF1bHQnXG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxheW91dHNbJ18nICsgbGF5b3V0XSlcbiAgICB9LFxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcbiAgICBOdXh0TG9hZGluZ1xuICB9XG59XG4iLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXG5cblZ1ZS51c2UoVnVleClcblxubGV0IHN0b3JlID0ge307XG5cbihmdW5jdGlvbiB1cGRhdGVNb2R1bGVzICgpIHtcbiAgc3RvcmUgPSBub3JtYWxpemVSb290KHJlcXVpcmUoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvc3RvcmUvaW5kZXguanMnKSwgJ3N0b3JlL2luZGV4LmpzJylcblxuICAvLyBJZiBzdG9yZSBpcyBhbiBleHBvcnRlZCBtZXRob2QgPSBjbGFzc2ljIG1vZGUgKGRlcHJlY2F0ZWQpXG5cbiAgLy8gRW5mb3JjZSBzdG9yZSBtb2R1bGVzXG4gIHN0b3JlLm1vZHVsZXMgPSBzdG9yZS5tb2R1bGVzIHx8IHt9XG5cbiAgLy8gSWYgdGhlIGVudmlyb25tZW50IHN1cHBvcnRzIGhvdCByZWxvYWRpbmcuLi5cbn0pKClcblxuLy8gY3JlYXRlU3RvcmVcbmV4cG9ydCBjb25zdCBjcmVhdGVTdG9yZSA9IHN0b3JlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBzdG9yZSA6ICgpID0+IHtcbiAgcmV0dXJuIG5ldyBWdWV4LlN0b3JlKE9iamVjdC5hc3NpZ24oe1xuICAgIHN0cmljdDogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXG4gIH0sIHN0b3JlKSlcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUm9vdCAobW9kdWxlRGF0YSwgZmlsZVBhdGgpIHtcbiAgbW9kdWxlRGF0YSA9IG1vZHVsZURhdGEuZGVmYXVsdCB8fCBtb2R1bGVEYXRhXG5cbiAgaWYgKG1vZHVsZURhdGEuY29tbWl0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBbbnV4dF0gJHtmaWxlUGF0aH0gc2hvdWxkIGV4cG9ydCBhIG1ldGhvZCB0aGF0IHJldHVybnMgYSBWdWV4IGluc3RhbmNlLmApXG4gIH1cblxuICBpZiAodHlwZW9mIG1vZHVsZURhdGEgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBBdm9pZCBUeXBlRXJyb3I6IHNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIHdoZW4gb3ZlcndyaXRpbmcgdG9wIGxldmVsIGtleXNcbiAgICBtb2R1bGVEYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kdWxlRGF0YSlcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplTW9kdWxlKG1vZHVsZURhdGEsIGZpbGVQYXRoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVNb2R1bGUgKG1vZHVsZURhdGEsIGZpbGVQYXRoKSB7XG4gIGlmIChtb2R1bGVEYXRhLnN0YXRlICYmIHR5cGVvZiBtb2R1bGVEYXRhLnN0YXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS53YXJuKGAnc3RhdGUnIHNob3VsZCBiZSBhIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gb2JqZWN0IGluICR7ZmlsZVBhdGh9YClcblxuICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kdWxlRGF0YS5zdGF0ZSlcbiAgICAvLyBBdm9pZCBUeXBlRXJyb3I6IHNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIHdoZW4gb3ZlcndyaXRpbmcgdG9wIGxldmVsIGtleXNcbiAgICBtb2R1bGVEYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kdWxlRGF0YSwgeyBzdGF0ZTogKCkgPT4gc3RhdGUgfSlcbiAgfVxuICByZXR1cm4gbW9kdWxlRGF0YVxufVxuIiwiaW1wb3J0IG1lcmdlIGZyb20gJ35sb2Rhc2gubWVyZ2V3aXRoJ1xuaW1wb3J0IHsgaW5pdCB9IGZyb20gJ35Ac2VudHJ5L3Z1ZSdcbmltcG9ydCAqIGFzIENvcmVTZGsgZnJvbSAnfkBzZW50cnkvY29yZSdcbmltcG9ydCAqIGFzIEJyb3dzZXJTZGsgZnJvbSAnfkBzZW50cnkvYnJvd3Nlci1zZGsnXG5pbXBvcnQgeyBFeHRyYUVycm9yRGF0YSwgUmVwb3J0aW5nT2JzZXJ2ZXIsIFJld3JpdG
1VGcmFtZXMgfSBmcm9tICd+QHNlbnRyeS9pbnRlZ3JhdGlvbnMnXG5cbmV4cG9ydCB7IGluaXQgfVxuZXhwb3J0IGNvbnN0IFNlbnRyeVNkayA9IHsgLi4uQ29yZVNkaywgLi4uQnJvd3NlclNkayB9XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcgKGN0eCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBvYmplY3QtY3VybHktc3BhY2luZywgcXVvdGUtcHJvcHMsIHF1b3Rlcywga2V5LXNwYWNpbmcsIGNvbW1hLXNwYWNpbmcgKi9cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIGRzbjpcImh0dHBzOlxcdTAwMkZcXHUwMDJGOTJiMTE4Yzk0YjMwNjE4YjgxYzkwNWU2MTk3MTBlODFAbzQ1MDU5NDgyODMwMTEwNzIuaW5nZXN0LnNlbnRyeS5pb1xcdTAwMkY0NTA1OTQ4Mjk1NzI1MDU2XCIsXG4gICAgZW52aXJvbm1lbnQ6XCJwcm9kdWN0aW9uXCIsXG4gIH1cblxuICBjb25maWcuaW50ZWdyYXRpb25zID0gW1xuICAgIG5ldyBFeHRyYUVycm9yRGF0YSgpLFxuICAgIG5ldyBSZXBvcnRpbmdPYnNlcnZlcih7IHR5cGVzOltcImNyYXNoXCJdIH0pLFxuICAgIG5ldyBSZXdyaXRlRnJhbWVzKCksXG4gIF1cblxuICBjb25zdCBydW50aW1lQ29uZmlnS2V5ID0gXCJzZW50cnlcIlxuICBpZiAoY3R4LiRjb25maWcgJiYgcnVudGltZUNvbmZpZ0tleSAmJiBjdHguJGNvbmZpZ1tydW50aW1lQ29uZmlnS2V5XSkge1xuICAgIG1lcmdlKGNvbmZpZywgY3R4LiRjb25maWdbcnVudGltZUNvbmZpZ0tleV0uY29uZmlnLCBjdHguJGNvbmZpZ1tydW50aW1lQ29uZmlnS2V5XS5jbGllbnRDb25maWcpXG4gIH1cblxuICByZXR1cm4gY29uZmlnXG59XG4iLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCB7IGdldENvbmZpZywgaW5pdCwgU2VudHJ5U2RrIH0gZnJvbSAnLi9zZW50cnkuY2xpZW50LnNoYXJlZCdcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKGN0eCwgaW5qZWN0KSB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGdldENvbmZpZyhjdHgpXG4gIGluaXQoeyBWdWUsIC4uLmNvbmZpZyB9KVxuICBpbmplY3QoJ3NlbnRyeScsIFNlbnRyeVNkaylcbiAgY3R4LiRzZW50cnkgPSBTZW50cnlTZGtcbn1cbiIsImltcG9ydCBjb29raWVVbml2ZXJzYWwgZnJvbSAnY29va2llLXVuaXZlcnNhbCdcblxuZXhwb3J0IGRlZmF1bHQgKHsgcmVxLCByZXMgfSwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gIFwiYWxpYXNcIjogXCJjb29raWVzXCIsXG4gIFwicGFyc2VKU09OXCI6IHRydWVcbn1cbiAgaW5qZWN0KG9wdGlvbnMuYWxpYXMsIGNvb2tpZVVuaXZlcnNhbChyZXEsIHJlcywgb3B0aW9ucy5wYXJzZUpTT04pKVxufVxuIiwiZXhwb3J0IGNvbnN0IENvbnN0YW50cyA9IHtcbiAgQ09NUE9ORU5UX09QVElPTlNfS0VZOiBcIm51eHRJMThuXCIsXG4gIFNUUkFURUdJRVM6IHtcIlBSRUZJWFwiOlwicHJlZml4XCIsXCJQUkVGSVhfRVhDRVBUX0RFRkFVTFRcIjpcInByZWZpeF9leGNlcHRfZGVmYXVsdFwiLFwiUFJFRklYX0FORF9ERUZBVUxUXCI6XCJwcmVmaXhfYW5kX2RlZmF1bHRcIixcIk5PX1BSRUZJWFwiOlwibm9fcHJlZml4XCJ9LFxufVxuZXhwb3J0IGNvbnN0IG51eHRPcHRpb25zID0ge1xuICBpc1VuaXZlcnNhbE1vZGU6IHRydWUsXG4gIHRyYWlsaW5nU2xhc2g6IHRydWUsXG59XG5leHBvcnQgY29uc3Qgb3B0aW9ucyA9IHtcbiAgdnVlSTE4bjoge30sXG4gIHZ1ZUkxOG5Mb2FkZXI6IGZhbHNlLFxuICBsb2NhbGVzOiBbe1wiY29kZVwiOlwiZW5cIixcImZpbGVcIjpcImVuLVVTLmpzXCJ9XSxcbiAgZGVmYXVsdExvY2FsZTogXCJlblwiLFxuICBkZWZhdWx0RGlyZWN0aW9uOiBcImx0clwiLFxuICByb3V0ZXNOYW1lU2VwYXJhdG9yOiBcIl9fX1wiLFxuICBkZWZhdWx0TG9jYWxlUm91dGVOYW1lU3VmZml4OiBcImRlZmF1bHRcIixcbiAgc29ydFJvdXRlczogdHJ1ZSxcbiAgc3RyYXRlZ3k6IFwicHJlZml4X2V4Y2VwdF9kZWZhdWx0XCIsXG4gIGxhenk6IHRydWUsXG4gIGxhbmdEaXI6IFwiL2FwcC9wcm9qZWN0cy9lbWVyYWxkL2xvY2FsZXNcIixcbiAgcm9vdFJlZGlyZWN0OiBudWxsLFxuICBkZXRlY3RCcm93c2VyTGFuZ3VhZ2U6IHtcImFsd2F5c1JlZGlyZWN0XCI6ZmFsc2UsXCJjb29raWVDcm9zc09yaWdpblwiOmZhbHNlLFwiY29va2llRG9tYWluXCI6bnVsbCxcImNvb2tpZUtleVwiOlwiaTE4bl9yZWRpcmVjdGVkXCIsXCJjb29raWVTZWN1cmVcIjpmYWxzZSxcImZhbGxiYWNrTG9jYWxlXCI6XCJcIixcIm9ubHlPbk5vUHJlZml4XCI6ZmFsc2UsXCJvbmx5T25Sb290XCI6ZmFsc2UsXCJ1c2VDb29raWVcIjp0cnVlfSxcbiAgZGlmZmVyZW50RG9tYWluczogZmFsc2UsXG4gIHNlbzogZmFsc2UsXG4gIGJhc2VVcmw6IFwiXCIsXG4gIHZ1ZXg6IHtcIm1vZHVsZU5hbWVcIjpcImkxOG5cIixcInN5bmNMb2NhbGVcIjpmYWxzZSxcInN5bmNNZXNzYWdlc1wiOmZhbHNlLFwic3luY1JvdXRlUGFyYW1zXCI6dHJ1ZX0sXG4gIHBhcnNlUGFnZXM6IHRydWUsXG4gIHBhZ2VzOiB7fSxcbiAgc2tpcFNldHRpbmdMb2NhbGVPbk5hdmlnYXRlOiBmYWxzZSxcbiAgYmVmb3JlTGFuZ3VhZ2VTd2l0Y2g6ICgpID0+IG51bGwsXG4gIG9uQmVmb3JlTGFuZ3VhZ2VTd2l0Y2g6ICgpID0+IHt9LFxuICBvbkxhbmd1YWdlU3dpdGNoZWQ6ICgpID0+IG51bGwsXG4gIG5vcm1hbGl6ZWRMb2NhbGVzOiBbe1wiY29kZVwiOlwiZW5cIixcImZpbGVcIjpcImVuLVVTLmpzXCJ9XSxcbiAgbG9jYWxlQ29kZXM6IFtcImVuXCJdLFxufVxuXG5leHBvcnQgY29uc3QgbG9jYWxlTWVzc2FnZXMgPSB7XG4gICdlbi1VUy5qcyc6ICgpID0+IGltcG9ydCgnLi4vLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9sb2NhbGVzL2VuLVVTLmpzJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImxhbmctZW4tVVMuanNcIiAqLyksXG59XG4iLCJpbXBvcnQgQ29va2llIGZyb20gJ2Nvb2tpZSdcbmltcG9ydCBKc0Nvb2tpZSBmcm9tICdqcy1jb29raWUnXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9pbnRlcm5hbCcpLlJlc29sdmVkT3B0aW9uc30gUmVzb2x2ZWRPcHRpb25zICovXG5cbi8qKlxuICogRm9ybWF0cyBhIGxvZyBtZXNzYWdlLCBwcmVmaXhpbmcgbW9kdWxlJ3MgbmFtZSB0byBpdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICogQHJldHVybi
1B7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZSAodGV4dCkge1xuICByZXR1cm4gYFtudXh0LWkxOG5dICR7dGV4dH1gXG59XG5cbi8qKlxuICogUGFyc2VzIGxvY2FsZXMgcHJvdmlkZWQgZnJvbSBicm93c2VyIHRocm91Z2ggYGFjY2VwdC1sYW5ndWFnZWAgaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFxuICogQHJldHVybiB7c3RyaW5nW119IEFuIGFycmF5IG9mIGxvY2FsZSBjb2Rlcy4gUHJpb3JpdHkgZGV0ZXJtaW5lZCBieSBvcmRlciBpbiBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQWNjZXB0TGFuZ3VhZ2UgKGlucHV0KSB7XG4gIC8vIEV4YW1wbGUgaW5wdXQ6IGVuLVVTLGVuO3E9MC45LG5iO3E9MC44LG5vO3E9MC43XG4gIC8vIENvbnRhaW5zIHRhZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hLlxuICAvLyBFYWNoIHRhZyBjb25zaXN0cyBvZiBsb2NhbGUgY29kZSAoMi0zIGxldHRlciBsYW5ndWFnZSBjb2RlKSBhbmQgb3B0aW9uYWxseSBjb3VudHJ5IGNvZGVcbiAgLy8gYWZ0ZXIgZGFzaC4gVGFnIGNhbiBhbHNvIGNvbnRhaW4gc2NvcmUgYWZ0ZXIgc2VtaWNvbG9uLCB0aGF0IGlzIGFzc3VtZWQgdG8gbWF0Y2ggb3JkZXJcbiAgLy8gc28gaXQncyBub3QgZXhwbGljaXRseSB1c2VkLlxuICByZXR1cm4gaW5wdXQuc3BsaXQoJywnKS5tYXAodGFnID0+IHRhZy5zcGxpdCgnOycpWzBdKVxufVxuXG4vKipcbiAqIEZpbmQgbG9jYWxlIGNvZGUgdGhhdCBiZXN0IG1hdGNoZXMgcHJvdmlkZWQgbGlzdCBvZiBicm93c2VyIGxvY2FsZXMuXG4gKlxuICogQHBhcmFtIHtSZXNvbHZlZE9wdGlvbnNbJ25vcm1hbGl6ZWRMb2NhbGVzJ119IGFwcExvY2FsZXMgVGhlIHVzZXItY29uZmlndXJlZCBsb2NhbGVzIHRoYXQgYXJlIHRvIGJlIG1hdGNoZWQuXG4gKiBAcGFyYW0ge3JlYWRvbmx5IHN0cmluZ1tdfSBicm93c2VyTG9jYWxlcyBUaGUgbG9jYWxlcyB0byBtYXRjaCBhZ2FpbnN0IGNvbmZpZ3VyZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaEJyb3dzZXJMb2NhbGUgKGFwcExvY2FsZXMsIGJyb3dzZXJMb2NhbGVzKSB7XG4gIC8qKiBAdHlwZSB7eyBjb2RlOiBzdHJpbmcsIHNjb3JlOiBudW1iZXIgfVtdfSAqL1xuICBjb25zdCBtYXRjaGVkTG9jYWxlcyA9IFtdXG5cbiAgLy8gTm9ybWFsaXNlIGFwcExvY2FsZXMgaW5wdXRcbiAgLyoqIEB0eXBlIHt7IGNvZGU6IHN0cmluZywgaXNvOiBzdHJpbmcgfVtdfSAqL1xuICBjb25zdCBub3JtYWxpemVkQXBwTG9jYWxlcyA9IFtdXG4gIGZvciAoY29uc3QgYXBwTG9jYWxlIG9mIGFwcExvY2FsZXMpIHtcbiAgICBjb25zdCB7IGNvZGUgfSA9IGFwcExvY2FsZVxuICAgIGNvbnN0IGlzbyA9IGFwcExvY2FsZS5pc28gfHwgY29kZVxuICAgIG5vcm1hbGl6ZWRBcHBMb2NhbGVzLnB1c2goeyBjb2RlLCBpc28gfSlcbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3M6IG1hdGNoIGV4YWN0IGxvY2FsZS5cbiAgZm9yIChjb25zdCBbaW5kZXgsIGJyb3dzZXJDb2RlXSBvZiBicm93c2VyTG9jYWxlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBtYXRjaGVkTG9jYWxlID0gbm9ybWFsaXplZEFwcExvY2FsZXMuZmluZChhcHBMb2NhbGUgPT4gYXBwTG9jYWxlLmlzby50b0xvd2VyQ2FzZSgpID09PSBicm93c2VyQ29kZS50b0xvd2VyQ2FzZSgpKVxuICAgIGlmIChtYXRjaGVkTG9jYWxlKSB7XG4gICAgICBtYXRjaGVkTG9jYWxlcy5wdXNoKHsgY29kZTogbWF0Y2hlZExvY2FsZS5jb2RlLCBzY29yZTogMSAtIGluZGV4IC8gYnJvd3NlckxvY2FsZXMubGVuZ3RoIH0pXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlY29uZCBwYXNzOiBtYXRjaCBvbmx5IGxvY2FsZSBjb2RlIHBhcnQgb2YgdGhlIGJyb3dzZXIgbG9jYWxlIChub3QgaW5jbHVkaW5nIGNvdW50cnkpLlxuICBmb3IgKGNvbnN0IFtpbmRleCwgYnJvd3NlckNvZGVdIG9mIGJyb3dzZXJMb2NhbGVzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IGxhbmd1YWdlQ29kZSA9IGJyb3dzZXJDb2RlLnNwbGl0KCctJylbMF0udG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBub3JtYWxpemVkQXBwTG9jYWxlcy5maW5kKGFwcExvY2FsZSA9PiBhcHBMb2NhbGUuaXNvLnNwbGl0KCctJylbMF0udG9Mb3dlckNhc2UoKSA9PT0gbGFuZ3VhZ2VDb2RlKVxuICAgIGlmIChtYXRjaGVkTG9jYWxlKSB7XG4gICAgICAvLyBEZWR1Y3QgYSB0aG91c2FuZHRoIGZvciBiZWluZyBub24tZXhhY3QgbWF0Y2guXG4gICAgICBtYXRjaGVkTG9jYWxlcy5wdXNoKHsgY29kZTogbWF0Y2hlZExvY2FsZS5jb2RlLCBzY29yZTogMC45OTkgLSBpbmRleCAvIGJyb3dzZXJMb2NhbGVzLmxlbmd0aCB9KVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBTb3J0IHRoZSBsaXN0IGJ5IHNjb3JlICgwIC0gbG93ZXN0LCAxIC0gaGlnaGVzdCkuXG4gIGlmIChtYXRjaGVkTG9jYWxlcy5sZW5ndGggPiAxKSB7XG4gICAgbWF0Y2hlZExvY2FsZXMuc29ydCgobG9jYWxlQSwgbG9jYWxlQikgPT4ge1xuICAgICAgaWYgKGxvY2FsZUEuc2NvcmUgPT09IGxvY2FsZUIuc2NvcmUpIHtcbiAgICAgICAgLy8gSWYgc2NvcmVzIGFyZSBlcXVhbCB0aGVuIHBpY2sgbW9yZSBzcGVjaWZpYyAobG9uZ2VyKSBjb2RlLlxuICAgICAgICByZXR1cm4gbG9jYWxlQi5jb2RlLmxlbmd0aCAtIGxvY2FsZUEuY29kZS5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxvY2FsZUIuc2NvcmUgLSBsb2NhbGVBLnNjb3JlXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVkTG9jYWxlcy5sZW5ndGggPyBtYXRjaGVkTG9jYWxlc1swXS5jb2RlIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogR2V0IGxvY2FsZSBjb2RlIHRoYXQgY29ycmVzcG9uZHMgdG8gY3VycmVudCBob3N0bmFtZVxuICpcbiAqIEBwYXJhbSAge1Jlc29sdmVkT3B0aW9uc1snbm9ybWFsaXplZExvY2FsZXMnXX0gbG9jYWxlc1xuICogQHBhcmFtICB7aW1wb3J0KCdodHRwJykuSW5jb21pbmdNZXNzYWdlIHwgdW5kZWZpbmVkfSByZXFcbiAqIEByZXR1cm4ge3N0cmluZ30gTG9jYWxlIGNvZGUgZm91bmQgaWYgYW55XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVEb21haW4gKGxvY2FsZXMsIHJlcSkge1xuICAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGhvc3RcblxuICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICBob3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3RcbiAgfSBlbHNlIGlmIChyZXEpIHtcbiAgICBjb25zdCBkZXRlY3RlZEhvc3QgPSByZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtaG9zdCddIHx8IHJlcS5oZWFkZXJzLmhvc3RcbiAgICBob3N0ID0gQXJyYXkuaXNBcnJheShkZXRlY3RlZEhvc3QpID8gZGV0ZWN0ZWRIb3N0WzBdIDogZGV0ZWN0ZWRIb3N0XG4gIH1cblxuICBpZiAoaG9zdCkge1xuICAgIGNvbnN0IG1hdGNoaW5nTG9jYWxlID0gbG9jYWxlcy5maW5kKGwgPT4gbC5kb21haW4gPT09IGhvc3QpXG4gICAgaWYgKG1hdGNoaW5nTG9jYWxlKSB7XG4gICAgICByZXR1cm4gbWF0Y2hpbmdMb2NhbGUuY29kZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZWdFeHAgZm9yIHJvdXRlIHBhdGhzXG4gKlxuICogQHBhcmFtICB7cmVhZG9ubHkgc3RyaW5nW119IGxvY2FsZUNvZGVzXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVzUmVnZXggKGxvY2FsZUNvZGVzKSB7XG4gIHJldHVybi
1BuZXcgUmVnRXhwKGBeLygke2xvY2FsZUNvZGVzLmpvaW4oJ3wnKX0pKD86L3wkKWAsICdpJylcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGdldHRlciBmb3IgZ2V0TG9jYWxlRnJvbVJvdXRlXG4gKlxuICogQHBhcmFtICB7cmVhZG9ubHkgc3RyaW5nW119IGxvY2FsZUNvZGVzXG4gKiBAcGFyYW0gIHtQaWNrPFJlc29sdmVkT3B0aW9ucywgJ3JvdXRlc05hbWVTZXBhcmF0b3InIHwgJ2RlZmF1bHRMb2NhbGVSb3V0ZU5hbWVTdWZmaXgnPn0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9jYWxlRnJvbVJvdXRlR2V0dGVyIChsb2NhbGVDb2RlcywgeyByb3V0ZXNOYW1lU2VwYXJhdG9yLCBkZWZhdWx0TG9jYWxlUm91dGVOYW1lU3VmZml4IH0pIHtcbiAgY29uc3QgbG9jYWxlc1BhdHRlcm4gPSBgKCR7bG9jYWxlQ29kZXMuam9pbignfCcpfSlgXG4gIGNvbnN0IGRlZmF1bHRTdWZmaXhQYXR0ZXJuID0gYCg/OiR7cm91dGVzTmFtZVNlcGFyYXRvcn0ke2RlZmF1bHRMb2NhbGVSb3V0ZU5hbWVTdWZmaXh9KT9gXG4gIGNvbnN0IHJlZ2V4cE5hbWUgPSBuZXcgUmVnRXhwKGAke3JvdXRlc05hbWVTZXBhcmF0b3J9JHtsb2NhbGVzUGF0dGVybn0ke2RlZmF1bHRTdWZmaXhQYXR0ZXJufSRgLCAnaScpXG4gIGNvbnN0IHJlZ2V4cFBhdGggPSBnZXRMb2NhbGVzUmVnZXgobG9jYWxlQ29kZXMpXG4gIC8qKlxuICAgKiBFeHRyYWN0IGxvY2FsZSBjb2RlIGZyb20gZ2l2ZW4gcm91dGU6XG4gICAqIC0gSWYgcm91dGUgaGFzIGEgbmFtZSwgdHJ5IHRvIGV4dHJhY3QgbG9jYWxlIGZyb20gaXRcbiAgICogLSBPdGhlcndpc2UsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgcm91dGVzJ3BhdGhcbiAgICogQHBhcmFtICB7aW1wb3J0KCd2dWUtcm91dGVyJykuUm91dGV9IHJvdXRlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gTG9jYWxlIGNvZGUgZm91bmQgaWYgYW55XG4gICAqL1xuICBjb25zdCBnZXRMb2NhbGVGcm9tUm91dGUgPSByb3V0ZSA9PiB7XG4gICAgLy8gRXh0cmFjdCBmcm9tIHJvdXRlIG5hbWVcbiAgICBpZiAocm91dGUubmFtZSkge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHJvdXRlLm5hbWUubWF0Y2gocmVnZXhwTmFtZSlcbiAgICAgIGlmIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1sxXVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocm91dGUucGF0aCkge1xuICAgICAgLy8gRXh0cmFjdCBmcm9tIHBhdGhcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSByb3V0ZS5wYXRoLm1hdGNoKHJlZ2V4cFBhdGgpXG4gICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNbMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIHJldHVybiBnZXRMb2NhbGVGcm9tUm91dGVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnaHR0cCcpLkluY29taW5nTWVzc2FnZSB8IHVuZGVmaW5lZH0gcmVxXG4gKiBAcGFyYW0ge3sgdXNlQ29va2llOiBib29sZWFuLCBjb29raWVLZXk6IHN0cmluZywgbG9jYWxlQ29kZXM6IHJlYWRvbmx5IHN0cmluZ1tdIH19IG9wdGlvbnNcbiAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZUNvb2tpZSAocmVxLCB7IHVzZUNvb2tpZSwgY29va2llS2V5LCBsb2NhbGVDb2RlcyB9KSB7XG4gIGlmICh1c2VDb29raWUpIHtcbiAgICBsZXQgbG9jYWxlQ29kZVxuXG4gICAgaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gICAgICBsb2NhbGVDb2RlID0gSnNDb29raWUuZ2V0KGNvb2tpZUtleSlcbiAgICB9IGVsc2UgaWYgKHJlcSAmJiB0eXBlb2YgcmVxLmhlYWRlcnMuY29va2llICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgY29va2llcyA9IHJlcS5oZWFkZXJzICYmIHJlcS5oZWFkZXJzLmNvb2tpZSA/IENvb2tpZS5wYXJzZShyZXEuaGVhZGVycy5jb29raWUpIDoge31cbiAgICAgIGxvY2FsZUNvZGUgPSBjb29raWVzW2Nvb2tpZUtleV1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxlQ29kZSAmJiBsb2NhbGVDb2Rlcy5pbmNsdWRlcyhsb2NhbGVDb2RlKSkge1xuICAgICAgcmV0dXJuIGxvY2FsZUNvZGVcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlXG4gKiBAcGFyYW0ge2ltcG9ydCgnaHR0cCcpLlNlcnZlclJlc3BvbnNlIHwgdW5kZWZpbmVkfSByZXNcbiAqIEBwYXJhbSB7eyB1c2VDb29raWU6IGJvb2xlYW4sIGNvb2tpZURvbWFpbjogc3RyaW5nIHwgbnVsbCwgY29va2llS2V5OiBzdHJpbmcsIGNvb2tpZVNlY3VyZTogYm9vbGVhbiwgY29va2llQ3Jvc3NPcmlnaW46IGJvb2xlYW59fSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2NhbGVDb29raWUgKGxvY2FsZSwgcmVzLCB7IHVzZUNvb2tpZSwgY29va2llRG9tYWluLCBjb29raWVLZXksIGNvb2tpZVNlY3VyZSwgY29va2llQ3Jvc3NPcmlnaW4gfSkge1xuICBpZiAoIXVzZUNvb2tpZSkge1xuICAgIHJldHVyblxuICB9XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdjb29raWUnKS5Db29raWVTZXJpYWxpemVPcHRpb25zfSAqL1xuICBjb25zdCBjb29raWVPcHRpb25zID0ge1xuICAgIGV4cGlyZXM6IG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDM2NSkpLFxuICAgIHBhdGg6ICcvJyxcbiAgICBzYW1lU2l0ZTogY29va2llQ3Jvc3NPcmlnaW4gPyAnbm9uZScgOiAnbGF4JyxcbiAgICBzZWN1cmU6IGNvb2tpZUNyb3NzT3JpZ2luIHx8IGNvb2tpZVNlY3VyZVxuICB9XG5cbiAgaWYgKGNvb2tpZURvbWFpbikge1xuICAgIGNvb2tpZU9wdGlvbnMuZG9tYWluID0gY29va2llRG9tYWluXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgSnNDb29raWUuc2V0KGNvb2tpZUtleSwgbG9jYWxlLCBjb29raWVPcHRpb25zKVxuICB9IGVsc2UgaWYgKHJlcykge1xuICAgIGxldCBoZWFkZXJzID0gcmVzLmdldEhlYWRlcignU2V0LUNvb2tpZScpIHx8IFtdXG4gICAgaWYgKCFBcnJheS5pc0FycmF
15KGhlYWRlcnMpKSB7XG4gICAgICBoZWFkZXJzID0gW1N0cmluZyhoZWFkZXJzKV1cbiAgICB9XG5cbiAgICBjb25zdCByZWRpcmVjdENvb2tpZSA9IENvb2tpZS5zZXJpYWxpemUoY29va2llS2V5LCBsb2NhbGUsIGNvb2tpZU9wdGlvbnMpXG4gICAgaGVhZGVycy5wdXNoKHJlZGlyZWN0Q29va2llKVxuXG4gICAgcmVzLnNldEhlYWRlcignU2V0LUNvb2tpZScsIGhlYWRlcnMpXG4gIH1cbn1cbiIsImltcG9ydCBpc0hUVFBTIGZyb20gJ2lzLWh0dHBzJ1xuaW1wb3J0IHsgbG9jYWxlTWVzc2FnZXMsIG9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnXG5pbXBvcnQgeyBmb3JtYXRNZXNzYWdlIH0gZnJvbSAnLi91dGlscy1jb21tb24nXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBoYXNQcm90b2NvbCB9IGZyb20gJ35pMThuLXVmbydcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2ludGVybmFsJykuUmVzb2x2ZWRPcHRpb25zfSBSZXNvbHZlZE9wdGlvbnMgKi9cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSBsb2FkIG1lc3NhZ2VzIGZyb20gdHJhbnNsYXRpb24gZmlsZXNcbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQG51eHQvdHlwZXMnKS5Db250ZXh0fSBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlIExhbmd1YWdlIGNvZGUgdG8gbG9hZFxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRMYW5ndWFnZUFzeW5jIChjb250ZXh0LCBsb2NhbGUpIHtcbiAgY29uc3QgeyBhcHAgfSA9IGNvbnRleHRcbiAgY29uc3QgeyBpMThuIH0gPSBhcHBcblxuICBpZiAoIWkxOG4ubG9hZGVkTGFuZ3VhZ2VzKSB7XG4gICAgaTE4bi5sb2FkZWRMYW5ndWFnZXMgPSBbXVxuICB9XG5cbiAgaWYgKCFpMThuLmxvYWRlZExhbmd1YWdlcy5pbmNsdWRlcyhsb2NhbGUpKSB7XG4gICAgY29uc3QgbG9jYWxlT2JqZWN0ID0gb3B0aW9ucy5ub3JtYWxpemVkTG9jYWxlcy5maW5kKGwgPT4gbC5jb2RlID09PSBsb2NhbGUpXG4gICAgaWYgKGxvY2FsZU9iamVjdCkge1xuICAgICAgY29uc3QgeyBmaWxlIH0gPSBsb2NhbGVPYmplY3RcbiAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgIC8qICAqL1xuICAgICAgICAvKiogQHR5cGUge2ltcG9ydCgndnVlLWkxOG4nKS5Mb2NhbGVNZXNzYWdlT2JqZWN0IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgICBsZXQgbWVzc2FnZXNcbiAgICAgICAgaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gICAgICAgICAgY29uc3QgeyBudXh0U3RhdGUgfSA9IGNvbnRleHRcbiAgICAgICAgICBpZiAobnV4dFN0YXRlICYmIG51eHRTdGF0ZS5fX2kxOG4gJiYgbnV4dFN0YXRlLl9faTE4bi5sYW5nc1tsb2NhbGVdKSB7XG4gICAgICAgICAgICBtZXNzYWdlcyA9IG51eHRTdGF0ZS5fX2kxOG4ubGFuZ3NbbG9jYWxlXVxuICAgICAgICAgICAgLy8gRXZlbiBpZiBhbHJlYWR5IGNhY2hlZCBpbiBOdXh0IHN0YXRlLCB0cmlnZ2VyIGxvY2FsZSBpbXBvcnQgc28gdGhhdCBITVIga2lja3MtaW4gb24gY2hhbmdlcyB0byB0aGF0IGZpbGUuXG4gICAgICAgICAgICBpZiAoY29udGV4dC5pc0Rldikge1xuICAgICAgICAgICAgICBsb2NhbGVNZXNzYWdlc1tmaWxlXSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbWVzc2FnZXMpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgZ2V0dGVyID0gYXdhaXQgbG9jYWxlTWVzc2FnZXNbZmlsZV0oKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG4gICAgICAgICAgICBtZXNzYWdlcyA9IHR5cGVvZiBnZXR0ZXIgPT09ICdmdW5jdGlvbicgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoZ2V0dGVyKGNvbnRleHQsIGxvY2FsZSkpIDogZ2V0dGVyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdE1lc3NhZ2UoYEZhaWxlZCBsb2FkaW5nIGFzeW5jIGxvY2FsZSBleHBvcnQ6ICR7ZXJyb3IubWVzc2FnZX1gKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgaTE4bi5zZXRMb2NhbGVNZXNzYWdlKGxvY2FsZSwgbWVzc2FnZXMpXG4gICAgICAgICAgaTE4bi5sb2FkZWRMYW5ndWFnZXMucHVzaChsb2NhbGUpXG4gICAgICAgIH1cbiAgICAgICAgLyogICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oZm9ybWF0TWVzc2FnZShgQ291bGQgbm90IGZpbmQgbGFuZyBmaWxlIGZvciBsb2NhbGUgJHtsb2NhbGV9YCkpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2Fybihmb3JtYXRNZXNzYWdlKGBBdHRlbXB0ZWQgdG8gbG9hZCBtZXNzYWdlcyBmb3Igbm9uLWV4aXN0YW50IGxvY2FsZSBjb2RlIFwiJHtsb2NhbGV9XCJgKSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBiYXNlIFVSTCB2YWx1ZSBpZiBwcm92aWRlZCBhcyBmdW5jdGlvbi4gT3RoZXJ3aXNlIGp1c3QgcmV0dXJucyB2ZXJiYXRpbS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8ICgoY29udGV4dDogaW1wb3J0KCdAbnV4dC90eXBlcycpLkNvbnRleHQpID0+IHN0cmluZyl9IGJhc2VVcmxcbiAqIEBwYXJhbSB7aW1wb3J0KCdAbnV4dC90eXBlcycpLkNvbnRleHR9IGNvbnRleHRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkxvY2FsZX0gbG9jYWxlQ29kZVxuICogQHBhcmFtIHtQaWNrPFJlc29sdmVkT3B0aW9ucywgJ2RpZmZlcmVudERvbWFpbnMnIHwgJ25vcm1hbGl6ZWRMb2NhbGVzJz59IG9wdGlvbnNcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVCYXNlVXJsIChiYXNlVXJsLCBjb250ZXh0LCBsb2NhbGVDb2RlLCB7IGRpZmZlcmVudERvbWFpbnMsIG5vcm1hbGl6ZWRMb2NhbGVzIH0pIHtcbiAgaWYgKHR5cGVvZiBiYXNlVXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGJhc2VVcmwoY29udGV4dClcbiAgfVxuXG4gIGlmIChkaWZmZXJlbnREb21haW5zICYmIGxvY2FsZUNvZGUpIHtcbiAgICAvLyBMb29rdXAgdGhlIGBkaWZmZXJlbnREb21haW5gIG9yaWdpbiBhc3NvY2lhdG
1VkIHdpdGggZ2l2ZW4gbG9jYWxlLlxuICAgIGNvbnN0IGRvbWFpbiA9IGdldERvbWFpbkZyb21Mb2NhbGUobG9jYWxlQ29kZSwgY29udGV4dC5yZXEsIHsgbm9ybWFsaXplZExvY2FsZXMgfSlcbiAgICBpZiAoZG9tYWluKSB7XG4gICAgICByZXR1cm4gZG9tYWluXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJhc2VVcmxcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBgZGlmZmVyZW50RG9tYWluYCBkb21haW4gZnJvbSBsb2NhbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZUNvZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCdodHRwJykuSW5jb21pbmdNZXNzYWdlIHwgdW5kZWZpbmVkfSByZXFcbiAqIEBwYXJhbSB7UGljazxSZXNvbHZlZE9wdGlvbnMsICdub3JtYWxpemVkTG9jYWxlcyc+fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5Gcm9tTG9jYWxlIChsb2NhbGVDb2RlLCByZXEsIHsgbm9ybWFsaXplZExvY2FsZXMgfSkge1xuLy8gTG9va3VwIHRoZSBgZGlmZmVyZW50RG9tYWluYCBvcmlnaW4gYXNzb2NpYXRlZCB3aXRoIGdpdmVuIGxvY2FsZS5cbiAgY29uc3QgbGFuZyA9IG5vcm1hbGl6ZWRMb2NhbGVzLmZpbmQobG9jYWxlID0+IGxvY2FsZS5jb2RlID09PSBsb2NhbGVDb2RlKVxuICBpZiAobGFuZyAmJiBsYW5nLmRvbWFpbikge1xuICAgIGlmIChoYXNQcm90b2NvbChsYW5nLmRvbWFpbikpIHtcbiAgICAgIHJldHVybiBsYW5nLmRvbWFpblxuICAgIH1cbiAgICBsZXQgcHJvdG9jb2xcbiAgICBpZiAocHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICAgIHByb3RvY29sID0gKHJlcSAmJiBpc0hUVFBTKHJlcSkpID8gJ2h0dHBzJyA6ICdodHRwJ1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm90b2NvbCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5zcGxpdCgnOicpWzBdXG4gICAgfVxuICAgIHJldHVybiBgJHtwcm90b2NvbH06Ly8ke2xhbmcuZG9tYWlufWBcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUud2Fybihmb3JtYXRNZXNzYWdlKGBDb3VsZCBub3QgZmluZCBkb21haW4gbmFtZSBmb3IgbG9jYWxlICR7bG9jYWxlQ29kZX1gKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgndnVleCcpLlN0b3JlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pn0gc3RvcmVcbiAqIEBwYXJhbSB7UmVxdWlyZWQ8aW1wb3J0KCcuLi8uLi90eXBlcycpLlZ1ZXhPcHRpb25zPn0gdnVleFxuICogQHBhcmFtIHtyZWFkb25seSBzdHJpbmdbXX0gbG9jYWxlQ29kZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU3RvcmUgKHN0b3JlLCB2dWV4LCBsb2NhbGVDb2Rlcykge1xuICAvKiogQHR5cGVkZWYge3tcbiAgICogICAgbG9jYWxlPzogc3RyaW5nXG4gICAqICAgIG1lc3NhZ2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAgKiAgICByb3V0ZVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+XG4gICAqIH19IE1vZHVsZVN0b3JlXG4gICAqXG4gICAqIEB0eXBlIHtpbXBvcnQoJ3Z1ZXgnKS5Nb2R1bGU8TW9kdWxlU3RvcmUsIHt9Pn1cbiAgICovXG4gIGNvbnN0IHN0b3JlTW9kdWxlID0ge1xuICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgc3RhdGU6ICgpID0+ICh7XG4gICAgICAuLi4odnVleC5zeW5jTG9jYWxlID8geyBsb2NhbGU6ICcnIH0gOiB7fSksXG4gICAgICAuLi4odnVleC5zeW5jTWVzc2FnZXMgPyB7IG1lc3NhZ2VzOiB7fSB9IDoge30pLFxuICAgICAgLi4uKHZ1ZXguc3luY1JvdXRlUGFyYW1zID8geyByb3V0ZVBhcmFtczoge30gfSA6IHt9KVxuICAgIH0pLFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIC4uLih2dWV4LnN5bmNMb2NhbGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzZXRMb2NhbGUgKHsgY29tbWl0IH0sIGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb21taXQoJ3NldExvY2FsZScsIGxvY2FsZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgICAgLi4uKHZ1ZXguc3luY01lc3NhZ2VzXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc2V0TWVzc2FnZXMgKHsgY29tbWl0IH0sIG1lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgIGNvbW1pdCgnc2V0TWVzc2FnZXMnLCBtZXNzYWdlcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgICAgLi4uKHZ1ZXguc3luY1JvdXRlUGFyYW1zXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc2V0Um91dGVQYXJhbXMgKHsgY29tbWl0IH0sIHBhcmFtcykge1xuICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVJvdXRlUGFyYW1zKHBhcmFtcywgbG9jYWxlQ29kZXMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29tbWl0KCdzZXRSb3V0ZVBhcmFtcycsIHBhcmFtcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDoge30pXG4gICAgfSxcbiAgICBtdXRhdGlvbnM6IHtcbiAgICAgIC4uLih2dWV4LnN5bmNMb2NhbGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzZXRMb2NhbGUgKHN0YXRlLCBsb2NhbGUpIHtcbiAgICAgICAgICAgICAgc3RhdGUubG9jYWxlID0gbG9jYWxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIC4uLih2dWV4LnN5bmNNZXNzYWdlc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2VzIChzdGF0ZSwgbWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgc3RhdGUubWVzc2FnZXMgPSBtZXNzYWdlc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4odnVleC5zeW5jUm91dGVQYXJhbXNcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzZXRSb3V0ZVBhcmFtcyAoc3RhdGUsIHBhcmFtcykge1xuICAgICAgICAgICAgICBzdGF0ZS5yb3V0ZVBhcmFtcyA9IHBhcmFtc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSlcbiAgICB9LFxuICAgIGdldHRlcnM6IHtcbiAgICAgIC4uLih2dWV4LnN5bmNSb3V0ZVBhcmFtc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGxvY2FsZVJvdXRlUGFyYW1zOiAoeyByb3V0ZVBhcmFtcyB9KSA9PiB7XG4gICAgICAgICAgICAgIC8qKiBAdHlwZSB7KGxvY2FsZTogc3RyaW5nKSA9PiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICAgICAgICAgICAgICBjb25zdCBwYXJhbXNHZXR0ZXIgPSBsb2NhbGUgPT4gKHJvdXRlUGFyYW1zICYmIHJvdXRlUGFyYW1zW2xvY2FsZV0pIHx8IHt9XG4gICAgICAgICAgICAgI
1HJldHVybiBwYXJhbXNHZXR0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDoge30pXG4gICAgfVxuICB9XG4gIHN0b3JlLnJlZ2lzdGVyTW9kdWxlKHZ1ZXgubW9kdWxlTmFtZSwgc3RvcmVNb2R1bGUsIHsgcHJlc2VydmVTdGF0ZTogISFzdG9yZS5zdGF0ZVt2dWV4Lm1vZHVsZU5hbWVdIH0pXG59XG5cbi8qKlxuICogRGlzcGF0Y2ggc3RvcmUgbW9kdWxlIGFjdGlvbnMgdG8ga2VlcCBpdCBpbiBzeW5jIHdpdGggYXBwJ3MgbG9jYWxlIGRhdGFcbiAqXG4gKiBAcGFyYW0gIHtpbXBvcnQoJ3Z1ZXgnKS5TdG9yZTx2b2lkPn0gc3RvcmVcbiAqIEBwYXJhbSAge3N0cmluZyB8IG51bGx9IGxvY2FsZSBUaGUgY3VycmVudCBsb2NhbGVcbiAqIEBwYXJhbSAge29iamVjdCB8IG51bGx9IG1lc3NhZ2VzIEN1cnJlbnQgbWVzc2FnZXNcbiAqIEBwYXJhbSAge1Jlc29sdmVkT3B0aW9uc1sndnVleCddfSB2dWV4XG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3luY1Z1ZXggKHN0b3JlLCBsb2NhbGUgPSBudWxsLCBtZXNzYWdlcyA9IG51bGwsIHZ1ZXgpIHtcbiAgaWYgKHZ1ZXggJiYgc3RvcmUpIHtcbiAgICBpZiAobG9jYWxlICE9PSBudWxsICYmIHZ1ZXguc3luY0xvY2FsZSkge1xuICAgICAgYXdhaXQgc3RvcmUuZGlzcGF0Y2godnVleC5tb2R1bGVOYW1lICsgJy9zZXRMb2NhbGUnLCBsb2NhbGUpXG4gICAgfVxuICAgIGlmIChtZXNzYWdlcyAhPT0gbnVsbCAmJiB2dWV4LnN5bmNNZXNzYWdlcykge1xuICAgICAgYXdhaXQgc3RvcmUuZGlzcGF0Y2godnVleC5tb2R1bGVOYW1lICsgJy9zZXRNZXNzYWdlcycsIG1lc3NhZ2VzKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNldFJvdXRlUGFyYW1zIGFjdGlvbidzIHBheWxvYWRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcm91dGVQYXJhbXMgVGhlIGFjdGlvbidzIHBheWxvYWRcbiAqIEBwYXJhbSB7cmVhZG9ubHkgc3RyaW5nW119IGxvY2FsZUNvZGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJvdXRlUGFyYW1zIChyb3V0ZVBhcmFtcywgbG9jYWxlQ29kZXMpIHtcbiAgaWYgKCFpc09iamVjdChyb3V0ZVBhcmFtcykpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUud2Fybihmb3JtYXRNZXNzYWdlKCdSb3V0ZSBwYXJhbXMgc2hvdWxkIGJlIGFuIG9iamVjdCcpKVxuICAgIHJldHVyblxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVud
1HJpZXMocm91dGVQYXJhbXMpKSB7XG4gICAgaWYgKCFsb2NhbGVDb2Rlcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2Fybihmb3JtYXRNZXNzYWdlKGBUcnlpbmcgdG8gc2V0IHJvdXRlIHBhcmFtcyBmb3Iga2V5ICR7a2V5fSB3aGljaCBpcyBub3QgYSB2YWxpZCBsb2NhbGVgKSlcbiAgICB9IGVsc2UgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGZvcm1hdE1lc3NhZ2UoYFRyeWluZyB0byBzZXQgcm91dGUgcGFyYW1zIGZvciBsb2NhbGUgJHtrZXl9IHdpdGggYSBub24tb2JqZWN0IHZhbHVlYCkpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc09iamVjdCAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG59XG4iLCIvLyBAdHMtaWdub3JlXG5pbXBvcnQgbnV4dE1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZSdcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BudXh0L3R5cGVzJykuTWlkZGxld2FyZX0gKi9cbmNvbnN0IGkxOG5NaWRkbGV3YXJlID0gYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgY29uc3QgeyBhcHAsIGlzSE1SIH0gPSBjb250ZXh0XG5cbiAgaWYgKGlzSE1SKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBbc3RhdHVzLCByZWRpcmVjdFBhdGgsIHByZXNlcnZlUXVlcnldID0gYXdhaXQgYXBwLmkxOG4uX19vbk5hdmlnYXRlKGNvbnRleHQucm91dGUpXG4gIGlmIChzdGF0dXMgJiYgcmVkaXJlY3RQYXRoKSB7XG4gICAgY29uc3QgcXVlcnkgPSBwcmVzZXJ2ZVF1ZXJ5ID8gY29udGV4dC5yb3V0ZS5xdWVyeSA6IHVuZGVmaW5lZFxuICAgIGNvbnRleHQucmVkaXJlY3Qoc3RhdHVzLCByZWRpcmVjdFBhdGgsIHF1ZXJ5KVxuICB9XG59XG5cbm51eHRNaWRkbGV3YXJlLm51eHRpMThuID0gaTE4bk1pZGRsZXdhcmVcbiIsImltcG9ydCAnLi9taWRkbGV3YXJlJ1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgeyBDb25zdGFudHMsIG51eHRPcHRpb25zLCBvcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJ1xuaW1wb3J0IHsgZ2V0RG9tYWluRnJvbUxvY2FsZSB9IGZyb20gJy4vcGx1Z2luLnV0aWxzJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgd2l0aG91dFRyYWlsaW5nU2xhc2gsIHdpdGhUcmFpbGluZ1NsYXNoIH0gZnJvbSAnfmkxOG4tdWZvJ1xuXG4vKipcbiAqIEB0aGlzIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2ludGVybmFsJykuUGx1Z2luUHJveHl9XG4gKiBAdHlwZSB7VnVlWydsb2NhbGVQYXRoJ119XG4gKi9cbmZ1bmN0aW9uIGxvY2FsZVBhdGggKHJvdXRlLCBsb2NhbGUpIHtcbiAgY29uc3QgbG9jYWxpemVkUm91dGUgPSByZXNvbHZlUm91dGUuY2FsbCh0aGlzLCByb3V0ZSwgbG9jYWxlKVxuICByZXR1cm4gbG9jYWxpemVkUm91dGUgPyBsb2NhbGl6ZWRSb3V0ZS5yb3V0ZS5mdWxsUGF0aCA6ICcnXG59XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi4vLi4vdHlwZXMvaW50ZXJuYWwnKS5QbHVnaW5Qcm94eX1cbiAqIEB0eXBlIHtWdWVbJ2xvY2FsZVJvdXRlJ119XG4gKi9cbmZ1bmN0aW9uIGxvY2FsZVJvdXRlIChyb3V0ZSwgbG9jYWxlKSB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVJvdXRlLmNhbGwodGhpcywgcm91dGUsIGxvY2FsZSlcbiAgcmV0dXJuIHJlc29sdmVkID8gcmVzb2x2ZWQucm91dGUgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCcuLi8uLi90eXBlcy9pbnRlcm5hbCcpLlBsdWdpblByb3h5fVxuICogQHR5cGUge1Z1ZVsnbG9jYWxlTG9jYXRpb24nXX1cbiAqL1xuZnVuY3Rpb24gbG9jYWxlTG9jYXRpb24gKHJvdXRlLCBsb2NhbGUpIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUm91dGUuY2FsbCh0aGlzLCByb3V0ZSwgbG9jYWxlKVxuICByZXR1cm4gcmVzb2x2ZWQgPyByZXNvbHZlZC5sb2NhdGlvbiA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEB0aGlzIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2ludGVybmFsJykuUGx1Z2luUHJveHl9XG4gKiBAcGFyYW0ge2ltcG9ydCgndnVlLXJvdXRlcicpLlJhd0xvY2F0aW9ufSByb3V0ZVxuICogQHBhcmFtIHtzdHJpbmd9IFtsb2NhbGVdXG4gKiBAcmV0dXJuIHtSZXR1cm5UeXBlPGltcG9ydCgndnVlLXJvdXRlcicpLmRlZmF1bHRbJ3Jlc29sdmUnXT4gfCB1bmRlZmluZWR9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVSb3V0ZSAocm91dGUsIGxvY2FsZSkge1xuICAvLyBBYm9ydCBpZiBubyByb3V0ZSBvciBubyBsb2NhbGVcbiAgaWYgKCFyb3V0ZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBpMThuIH0gPSB0aGlzXG5cbiAgbG9jYWxlID0gbG9jYWxlIHx8IGkxOG4ubG9jYWxlXG5cbiAgaWYgKCFsb2NhbGUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIElmIHJvdXRlIHBhcmFtZXRlciBpcyBhIHN0cmluZywgY2hlY2sgaWYgaXQncyBhIHBhdGggb3IgbmFtZSBvZiByb3V0ZS5cbiAgaWYgKHR5cGVvZiByb3V0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAocm91dGVbMF0gPT09ICcvJykge1xuICAgICAgLy8gSWYgcm91dGUgcGFyYW1ldGVyIGlzIGEgcGF0aCwgY3JlYXRlIHJvdXRlIG9iamVjdCB3aXRoIHBhdGguXG4gICAgICByb3V0ZSA9IHsgcGF0aDogcm91dGUgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFbHNlIHVzZSBpdCBhcyByb3V0ZSBuYW1lLlxuICAgICAgcm91dGUgPSB7IG5hbWU6IHJvdXRlIH1cbiAgICB9XG4gIH1cblxuICBsZXQgbG9jYWxpemVkUm91dGUgPSBPYmplY3QuYXNzaWduKHt9LCByb3V0ZSlcblxuICBpZiAobG9jYWxpemVkUm91dGUucGF0aCAmJiAhbG9jYWxpemVkUm91dGUubmFtZSkge1xuICAgIGNvbnN0IHJlc29sdmVkUm91dGUgPSB0aGlzLnJvdXRlci5yZXNvbHZlKGxvY2FsaXplZFJvdXRlKS5yb3V0ZVxuICAgIGNvbnN0IHJlc29sdmVkUm91dGVOYW1lID0gdGhpcy5nZXRSb3V0ZUJhc2VOYW1lKHJl
1c29sdmVkUm91dGUpXG4gICAgaWYgKHJlc29sdmVkUm91dGVOYW1lKSB7XG4gICAgICBsb2NhbGl6ZWRSb3V0ZSA9IHtcbiAgICAgICAgbmFtZTogZ2V0TG9jYWxlUm91dGVOYW1lKHJlc29sdmVkUm91dGVOYW1lLCBsb2NhbGUpLFxuICAgICAgICBwYXJhbXM6IHJlc29sdmVkUm91dGUucGFyYW1zLFxuICAgICAgICBxdWVyeTogcmVzb2x2ZWRSb3V0ZS5xdWVyeSxcbiAgICAgICAgaGFzaDogcmVzb2x2ZWRSb3V0ZS5oYXNoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlzRGVmYXVsdExvY2FsZSA9IGxvY2FsZSA9PT0gb3B0aW9ucy5kZWZhdWx0TG9jYWxlXG4gICAgICAvLyBpZiByb3V0ZSBoYXMgYSBwYXRoIGRlZmluZWQgYnV0IG5vIG5hbWUsIHJlc29sdmUgZnVsbCByb3V0ZSB1c2luZyB0aGUgcGF0aFxuICAgICAgY29uc3QgaXNQcmVmaXhlZCA9XG4gICAgICAgICAgLy8gZG9uJ3QgcHJlZml4IGRlZmF1bHQgbG9jYWxlXG4gICAgICAgICAgIShpc0RlZmF1bHRMb2NhbGUgJiYgW0NvbnN0YW50cy5TVFJBVEVHSUVTLlBSRUZJWF9FWENFUFRfREVGQVVMVCwgQ29uc3RhbnRzLlNUUkFURUdJRVMuUFJFRklYX0FORF9ERUZBVUxUXS5pbmNsdWRlcyhvcHRpb25zLnN0cmF0ZWd5KSkgJiZcbiAgICAgICAgICAvLyBubyBwcmVmaXggZm9yIGFueSBsYW5ndWFnZVxuICAgICAgICAgICEob3B0aW9ucy5zdHJhdGVneSA9PT0gQ29uc3RhbnRzLlNUUkFURUdJRVMuTk9fUFJFRklYKSAmJlxuICAgICAgICAgIC8vIG5vIHByZWZpeCBmb3IgZGlmZmVyZW50IGRvbWFpbnNcbiAgICAgICAgICAhaTE4bi5kaWZmZXJlbnREb21haW5zXG4gICAgICBpZiAoaXNQcmVmaXhlZCkge1xuICAgICAgICBsb2NhbGl6ZWRSb3V0ZS5wYXRoID0gYC8ke2xvY2FsZX0ke2xvY2FsaXplZFJvdXRlLnBhdGh9YFxuICAgICAgfVxuICAgICAgbG9jYWxpemVkUm91dGUucGF0aCA9IG51eHRPcHRpb25zLnRyYWlsaW5nU2xhc2ggPyB3aXRoVHJhaWxpbmdTbGFzaChsb2NhbGl6ZWRSb3V0ZS5wYXRoLCB0cnVlKSA6IHdpdGhvdXRUcmFpbGluZ1NsYXNoKGxvY2FsaXplZFJvdXRlLnBhdGgsIHRydWUpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghbG9jYWxpemVkUm91dGUubmFtZSAmJiAhbG9jYWxpemVkUm91dGUucGF0aCkge1xuICAgICAgbG9jYWxpemVkUm91dGUubmFtZSA9IHRoaXMuZ2V0Um91dGVCYXNlTmFtZSgpXG4gICAgfVxuXG4gICAgbG9jYWxpemVkUm91dGUubmFtZSA9IGdldExvY2FsZVJvdXRlTmFtZShsb2NhbGl6ZWRSb3V0ZS5uYW1lLCBsb2NhbGUpXG5cbiAgICBjb25zdCB7IHBhcmFtcyB9ID0gbG9jYWxpemVkUm91dGVcbiAgICBpZiAocGFyYW1zICYmIHBhcmFtc1snMCddID09PSB1bmRlZmluZWQgJiYgcGFyYW1zLnBhdGhNYXRjaCkge1xuICAgICAgcGFyYW1zWycwJ10gPSBwYXJhbXMucGF0aE1hdGNoXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRSb3V0ZSA9IHRoaXMucm91dGVyLnJlc29sdmUobG9jYWxpemVkUm91dGUpXG4gIGlmIChyZXNvbHZlZFJvdXRlLnJvdXRlLm5hbWUpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRSb3V0ZVxuICB9XG4gIC8vIElmIGRpZG4ndCByZXNvbHZlIHRvIGFuIGV4aXN0aW5nIHJvdXRlIHRoZW4ganVzdCByZXR1cm4gcmVzb2x2ZWQgcm91dGUgYmFzZWQgb24gb3JpZ2luYWwgaW5wdXQuXG4gIHJldHVybiB0aGlzLnJvdXRlci5yZXNvbHZlKHJvdXRlKVxufVxuXG4vKipcbiAqIEB0aGlzIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2ludGVybmFsJykuUGx1Z2luUHJveHl9XG4gKiBAdHlwZSB7VnVlWydzd2l0Y2hMb2NhbGVQYXRoJ119XG4gKi9cbmZ1bmN0aW9uIHN3aXRjaExvY2FsZVBhdGggKGxvY2FsZSkge1xuICBjb25zdCBuYW1lID0gdGhpcy5nZXRSb3V0ZUJhc2VOYW1lKClcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBjb25zdCB7IGkxOG4sIHJvdXRlLCBzdG9yZSB9ID0gdGhpc1xuICBjb25zdCB7IHBhcmFtcywgLi4ucm91dGVDb3B5IH0gPSByb3V0ZVxuICBsZXQgbGFuZ1N3aXRjaFBhcmFtcyA9IHt9XG4gIGlmIChvcHRpb25zLnZ1ZXggJiYgb3B0aW9ucy52dWV4LnN5bmNSb3V0ZVBhcmFtcyAmJiBzdG9yZSkge1xuICAgIGxhbmdTd2l0Y2hQYXJhbXMgPSBzdG9yZS5nZXR0ZXJzW2Ake29wdGlvbnMudnVleC5tb2R1bGVOYW1lfS9sb2NhbGVSb3V0ZVBhcmFtc2BdKGxvY2FsZSlcbiAgfVxuICBjb25zdCBiYXNlUm91dGUgPSBPYmplY3QuYXNzaWduKHt9LCByb3V0ZUNvcHksIHtcbiAgICBuYW1lLFxuICAgIHBhcmFtczoge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgLi4ubGFuZ1N3aXRjaFBhcmFtcyxcbiAgICAgIDA6IHBhcmFtcy5wYXRoTWF0Y2hcbiAgICB9XG4gIH0pXG4gIGxldCBwYXRoID0gdGhpcy5sb2NhbGVQYXRoKGJhc2VSb3V0ZSwgbG9jYWxlKVxuXG4gIC8vIEhhbmRsZSBkaWZmZXJlbnQgZG9tYWluc1xuICBpZiAoaTE4bi5kaWZmZXJlbnREb21haW5zKSB7XG4gICAgY29uc3QgZ2V0RG9tYWluT3B0aW9ucyA9IHtcbiAgICAgIGRpZmZlcmVudERvbWFpbnM6IGkxOG4uZGlmZmVyZW50RG9tYWlucyxcbiAgICAgIG5vcm1hbGl6ZWRMb2NhbGVzOiBvcHRpb25zLm5vcm1hbGl6ZWRMb2NhbGVzXG4gICAgfVxuICAgIGNvbnN0IGRvbWFpbiA9IGdldERvbWFpbkZyb21Mb2NhbGUobG9jYWxlLCB0aGlzLnJlcSwgZ2V0RG9tYWluT3B0aW9ucylcbiAgICBpZiAoZG9tYWluKSB7XG4gICAgICBwYXRoID0gZG9tYWluICsgcGF0aFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRoXG59XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi4vLi4vdHlwZXMvaW50ZXJuYWwnKS5QbHVnaW5Qcm94eX1cbiAqIEB0eXBlIHtWdWVbJ2dldFJvdXRlQmFzZU5hbWUnXX1cbiAqL1xuZnVuY3Rpb24gZ2V0Um91dGVCYXNlTmFtZSAoZ2l2ZW5Sb3V0ZSkge1xuICBjb25zdCByb3V0ZSA9IGdpdmVuUm91dGUgIT09IHVuZGVmaW5lZCA/IGdpdmVuUm91dGUgOiB0aGlzLnJvdXRlXG4gIGlmICghcm91dGUgfHwgIXJvdXRlLm5hbWUpIHtcbiAgICByZXR1cm5cbiAgfVxuICByZXR1cm4gcm91dGUubmFtZS5zcGxpdChvcHRpb25zLnJvdXRlc05hbWVTZXBhcmF0b3IpWzBdXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHJvdXRlTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZVxuICovXG5mdW5jdGlvbiBnZXRMb2NhbGVSb3V0ZU5hbWUgKHJvdXRlTmFtZSwgbG9jYWxlKSB7XG4gIGxldCBuYW1lID0gcm91dGVOYW1lICsgKG9wdGlvbnMuc3RyYXRlZ3kgPT09IENvbnN0YW50cy5TVFJBVEVHSUVTLk5PX1BSRUZJWCA/ICcnIDogb3B0aW9ucy5yb3V0ZXNOYW1lU2VwYXJhdG9yICsgbG9jYWxlKVxuXG4gIGlmIChsb2NhbGUgPT09IG9wdGlvbnMuZGVmYXVsdExvY2FsZSAmJiBvcHRpb25zLnN0cmF0ZWd5ID09PSBDb25zdGFudHMuU1RSQVRFR0lFUy5QUkVGSVhfQU5EX0RFRkFVTFQpIHtcbiAgICBuYW1lICs9IG9wdGlvbnMucm91dGVzTmFtZVNlcGFyYXRvciArIG9wdGlvbnMuZGVmYXVsdExvY2FsZVJvdXRlTmFtZVN1ZmZpeFxuICB9XG5cbiAgcmV0dXJuIG5hbWVcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgeyguLi5hcmdzOiBhbnlbXSkgPT4gYW55fSBUXG4gKiBAcGFyYW0ge1R9IHRhcmdldEZ1bmN0aW9uXG4gKiBAcmV0dXJuIHsodGhpczogVnVlLCAuLi
15hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiBSZXR1cm5UeXBlPFQ+fVxuICovXG5jb25zdCBWdWVJbnN0YW5jZVByb3h5ID0gZnVuY3Rpb24gKHRhcmdldEZ1bmN0aW9uKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcHJveHkgPSB7XG4gICAgICBnZXRSb3V0ZUJhc2VOYW1lOiB0aGlzLmdldFJvdXRlQmFzZU5hbWUsXG4gICAgICBpMThuOiB0aGlzLiRpMThuLFxuICAgICAgbG9jYWxlUGF0aDogdGhpcy5sb2NhbGVQYXRoLFxuICAgICAgbG9jYWxlUm91dGU6IHRoaXMubG9jYWxlUm91dGUsXG4gICAgICBsb2NhbGVMb2NhdGlvbjogdGhpcy5sb2NhbGVMb2NhdGlvbixcbiAgICAgIHJlcTogcHJvY2Vzcy5zZXJ2ZXIgPyB0aGlzLiRzc3JDb250ZXh0LnJlcSA6IG51bGwsXG4gICAgICByb3V0ZTogdGhpcy4kcm91dGUsXG4gICAgICByb3V0ZXI6IHRoaXMuJHJvdXRlcixcbiAgICAgIHN0b3JlOiB0aGlzLiRzdG9yZVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRGdW5jdGlvbi5jYWxsKHByb3h5LCAuLi5hcmd1bWVudHMpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgeyguLi5hcmdzOiBhbnlbXSkgPT4gYW55fSBUXG4gKiBAcGFyYW0ge2ltcG9ydCgnQG51eHQvdHlwZXMnKS5Db250ZXh0fSBjb250ZXh0XG4gKiBAcGFyYW0ge1R9IHRhcmdldEZ1bmN0aW9uXG4gKiBAcmV0dXJuIHsoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gUmV0dXJuVHlwZTxUPn1cbiAqL1xuY29uc3QgTnV4dENvbnRleHRQcm94eSA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRGdW5jdGlvbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHsgYXBwLCByZXEsIHJvdXRlLCBzdG9yZSB9ID0gY29udGV4dFxuXG4gICAgY29uc3QgcHJveHkgPSB7XG4gICAgICBnZXRSb3V0ZUJhc2VOYW1lOiBhcHAuZ2V0Um91dGVCYXNlTmFtZSxcbiAgICAgIGkxOG46IGFwcC5pMThuLFxuICAgICAgbG9jYWxlUGF0aDogYXBwLmxvY2FsZVBhdGgsXG4gICAgICBsb2NhbGVMb2NhdGlvbjogYXBwLmxvY2FsZUxvY2F0aW9uLFxuICAgICAgbG9jYWxlUm91dGU6IGFwcC5sb2NhbGVSb3V0ZSxcbiAgICAgIHJlcTogcHJvY2Vzcy5zZXJ2ZXIgPyByZXEgOiBudWxsLFxuICAgICAgcm91dGUsXG4gICAgICByb3V0ZXI6IGFwcC5yb3V0ZXIsXG4gICAgICBzdG9yZVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRGdW5jdGlvbi5jYWxsKHByb3h5LCAuLi5hcmd1bWVudHMpXG4gIH1cbn1cblxuLyoqIEB0eXBlIHtpbXBvcnQoJ3Z1ZScpLlBsdWdpbk9iamVjdDx2b2lkPn0gKi9cbmNvbnN0IHBsdWdpbiA9IHtcbiAgaW5zdGFsbCAoVnVlKSB7XG4gICAgVnVlLm1peGluKHtcbiAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgbG9jYWxlUGF0aDogVnVlSW5zdGFuY2VQcm94eShsb2NhbGVQYXRoKSxcbiAgICAgICAgbG9jYWxlUm91dGU6IFZ1ZUluc3RhbmNlUHJveHkobG9jYWxlUm91dGUpLFxuICAgICAgICBsb2NhbGVMb2NhdGlvbjogVnVlSW5zdGFuY2VQcm94eShsb2NhbGVMb2NhdGlvbiksXG4gICAgICAgIHN3aXRjaExvY2FsZVBhdGg6IFZ1ZUluc3RhbmNlUHJveHkoc3dpdGNoTG9jYWxlUGF0aCksXG4gICAgICAgIGdldFJvdXRlQmFzZU5hbWU6IFZ1ZUluc3RhbmNlUHJveHkoZ2V0Um91dGVCYXNlTmFtZSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdAbnV4dC90eXBlcycpLlBsdWdpbn0gKi9cbmV4cG9ydCBkZWZhdWx0IChjb250ZXh0KSA9PiB7XG4gIFZ1ZS51c2UocGx1Z2luKVxuICBjb25zdCB7IGFwcCwgc3RvcmUgfSA9IGNvbnRleHRcblxuICBhcHAubG9jYWxlUGF0aCA9IGNvbnRleHQubG9jYWxlUGF0aCA9IE51eHRDb250ZXh0UHJveHkoY29udGV4dCwgbG9jYWxlUGF0aClcbiAgYXBwLmxvY2FsZVJvdXRlID0gY29udGV4dC5sb2NhbGVSb3V0ZSA9IE51eHRDb250ZXh0UHJveHkoY29udGV4dCwgbG9jYWxlUm91dGUpXG4gIGFwcC5sb2NhbGVMb2NhdGlvbiA9IGNvbnRleHQubG9jYWxlTG9jYXRpb24gPSBOdXh0Q29udGV4dFByb3h5KGNvbnRleHQsIGxvY2FsZUxvY2F0aW9uKVxuICBhcHAuc3dpdGNoTG9jYWxlUGF0aCA9IGNvbnRleHQuc3dpdGNoTG9jYWxlUGF0aCA9IE51eHRDb250ZXh0UHJveHkoY29udGV4dCwgc3dpdGNoTG9jYWxlUGF0aClcbiAgYXBwLmdldFJvdXRlQmFzZU5hbWUgPSBjb250ZXh0LmdldFJvdXRlQmFzZU5hbWUgPSBOdXh0Q29udGV4dFByb3h5KGNvbnRleHQsIGdldFJvdXRlQmFzZU5hbWUpXG5cbiAgaWYgKHN0b3JlKSB7XG4gICAgc3RvcmUubG9jYWxlUGF0aCA9IGFwcC5sb2NhbGVQYXRoXG4gICAgc3RvcmUubG9jYWxlUm91dGUgPSBhcHAubG9jYWxlUm91dGVcbiAgICBzdG9yZS5sb2NhbGVMb2NhdGlvbiA9IGFwcC5sb2NhbGVMb2NhdGlvblxuICAgIHN0b3JlLnN3aXRjaExvY2FsZVBhdGggPSBhcHAuc3dpdGNoTG9jYWxlUGF0aFxuICAgIHN0b3JlLmdldFJvdXRlQmFzZU5hbWUgPSBhcHAuZ2V0Um91dGVCYXNlTmFtZVxuICB9XG59XG4iLCJpbXBvcnQgVnVlTWV0YSBmcm9tICd2dWUtbWV0YSdcbmltcG9ydCB7IENvbnN0YW50cywgb3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucydcbmltcG9ydCB7IGZvcm1hdE1lc3NhZ2UgfSBmcm9tICcuL3V0aWxzLWNvbW1vbidcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCd2dWUvdHlwZXMvdnVlJykuVnVlfVxuICogQHJldHVybiB7aW1wb3J0KCd2dWUtbWV0YScpLk1ldGFJbmZvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbnV4dEkxOG5IZWFkICh7IGFkZERpckF0dHJpYnV0ZSA9IHRydWUsIGFkZFNlb0F0dHJpYnV0ZXMgPSBmYWxzZSB9ID0ge30pIHtcbiAgLy8gQ2FuIGhhcHBlbiB3aGVuIHVzaW5nIGZyb20gYSBnbG9iYWwgbWl4aW4uXG4gIGlmICghdGhpcy4kaTE4bikge1xuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4uLy4uL3R5cGVzL3Z1ZScpLk51eHRJMThuTWV0YX0gKi9cbiAgY29uc3QgbWV0YU9iamVjdCA9IHtcbiAgICBodG1sQXR0cnM6IHt9LFxuICAgIGxpbms6IFtdLFxuICAgIG1ldGE6IFtdXG4gIH1cblxuICBjb25zdCBjdXJyZW50TG9jYWxlID0gdGhpcy4kaTE4bi5sb2NhbGVQcm9wZXJ0aWVzXG4gIGNvbnN0IGN1cnJlbnRMb2NhbGVJc28gPSBjdXJyZW50TG9jYWxlLmlzb1xuICBjb25zdCBjdXJyZW50TG9jYWxlRGlyID0gY3VycmVudExvY2FsZS5kaXIgfHwgb3B0aW9ucy5kZWZhdWx0RGlyZWN0aW9uXG5cbiAgLyoqXG4gICAqIEFkZGluZyBEaXJlY3Rpb24gQXR0cmlidXRlOlxuICAgKi9cbiAgaWYgKGFkZERpckF0dHJpYnV0ZSkge1xuICAgIG1ldGFPYmplY3QuaHRtbEF0dHJzLmRpciA9IGN1cnJlbnRMb2NhbGVEaXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRpbmcgU0VPIE1ldGE6XG4gICAqL1xuICBpZiAoXG4gICAgYWRkU2VvQXR0cmlidXRlcyAmJlxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAoVnVlTWV0YS5oYXNNZXRhSW5mbyA/IFZ1ZU1ldGEuaGFzTWV0YUluZm8odGhpcykgOiB0aGlzLl9oYXNNZXRhSW5mbykgJiZcbiAgICB0aGlzLiRp
1MThuLmxvY2FsZSAmJlxuICAgIHRoaXMuJGkxOG4ubG9jYWxlcyAmJlxuICAgIHRoaXMuJG9wdGlvbnNbQ29uc3RhbnRzLkNPTVBPTkVOVF9PUFRJT05TX0tFWV0gIT09IGZhbHNlICYmXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgICEodGhpcy4kb3B0aW9uc1tDb25zdGFudHMuQ09NUE9ORU5UX09QVElPTlNfS0VZXSAmJiB0aGlzLiRvcHRpb25zW0NvbnN0YW50cy5DT01QT05FTlRfT1BUSU9OU19LRVldLnNlbyA9PT0gZmFsc2UpXG4gICkge1xuICAgIGlmIChjdXJyZW50TG9jYWxlSXNvKSB7XG4gICAgICBtZXRhT2JqZWN0Lmh0bWxBdHRycy5sYW5nID0gY3VycmVudExvY2FsZUlzbyAvLyBUT0RPOiBzaW1wbGUgbGFuZyBvciBcInNwZWNpZmljXCIgbGFuZyB3aXRoIHRlcnJpdG9yeT9cbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbGVzID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuTG9jYWxlT2JqZWN0W119ICovKHRoaXMuJGkxOG4ubG9jYWxlcylcblxuICAgIGFkZEhyZWZsYW5nTGlua3MuYmluZCh0aGlzKShsb2NhbGVzLCB0aGlzLiRpMThuLl9fYmFzZVVybCwgbWV0YU9iamVjdC5saW5rKVxuICAgIGFkZENhbm9uaWNhbExpbmtzLmJpbmQodGhpcykodGhpcy4kaTE4bi5fX2Jhc2VVcmwsIG1ldGFPYmplY3QubGluaylcbiAgICBhZGRDdXJyZW50T2dMb2NhbGUuYmluZCh0aGlzKShjdXJyZW50TG9jYWxlLCBjdXJyZW50TG9jYWxlSXNvLCBtZXRhT2JqZWN0Lm1ldGEpXG4gICAgYWRkQWx0ZXJuYXRlT2dMb2NhbGVzLmJpbmQodGhpcykobG9jYWxlcywgY3VycmVudExvY2FsZUlzbywgbWV0YU9iamVjdC5tZXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsczpcbiAgICovXG5cbiAgLyoqXG4gICAqIEB0aGlzIHtpbXBvcnQoJ3Z1ZS90eXBlcy92dWUnKS5WdWV9XG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkxvY2FsZU9iamVjdFtdfSBsb2NhbGVzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVXJsXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy92dWUnKS5OdXh0STE4bk1ldGFbJ2xpbmsnXX0gbGlua1xuICAgKi9cbiAgZnVuY3Rpb24gYWRkSHJlZmxhbmdMaW5rcyAobG9jYWxlcywgYmFzZVVybCwgbGluaykge1xuICAgIGlmIChvcHRpb25zLnN0cmF0ZWd5ID09PSBDb25zdGFudHMuU1RSQVRFR0lFUy5OT19QUkVGSVgpIHtcbiAgICAgIHJldHVyblxuICAgI
1H1cbiAgICAvKiogQHR5cGUge01hcDxzdHJpbmcsIGltcG9ydCgnLi4vLi4vdHlwZXMnKS5Mb2NhbGVPYmplY3Q+fSAqL1xuICAgIGNvbnN0IGxvY2FsZU1hcCA9IG5ldyBNYXAoKVxuICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIGxvY2FsZXMpIHtcbiAgICAgIGNvbnN0IGxvY2FsZUlzbyA9IGxvY2FsZS5pc29cblxuICAgICAgaWYgKCFsb2NhbGVJc28pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKGZvcm1hdE1lc3NhZ2UoJ0xvY2FsZSBJU08gY29kZSBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSBhbHRlcm5hdGUgbGluaycpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBbbGFuZ3VhZ2UsIHJlZ2lvbl0gPSBsb2NhbGVJc28uc3BsaXQoJy0nKVxuXG4gICAgICBpZiAobGFuZ3VhZ2UgJiYgcmVnaW9uICYmIChsb2NhbGUuaXNDYXRjaGFsbExvY2FsZSB8fCAhbG9jYWxlTWFwLmhhcyhsYW5ndWFnZSkpKSB7XG4gICAgICAgIGxvY2FsZU1hcC5zZXQobGFuZ3VhZ2UsIGxvY2FsZSlcbiAgICAgIH1cblxuICAgICAgbG9jYWxlTWFwLnNldChsb2NhbGVJc28sIGxvY2FsZSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtpc28sIG1hcExvY2FsZV0gb2YgbG9jYWxlTWFwLmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgbG9jYWxlUGF0aCA9IHRoaXMuc3dpdGNoTG9jYWxlUGF0aChtYXBMb2NhbGUuY29kZSlcbiAgICAgIGlmIChsb2NhbGVQYXRoKSB7XG4gICAgICAgIGxpbmsucHVzaCh7XG4gICAgICAgICAgaGlkOiBgaTE4bi1hbHQtJHtpc299YCxcbiAgICAgICAgICByZWw6ICdhbHRlcm5hdGUnLFxuICAgICAgICAgIGhyZWY6IHRvQWJzb2x1dGVVcmwobG9jYWxlUGF0aCwgYmFzZVVybCksXG4gICAgICAgICAgaHJlZmxhbmc6IGlzb1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRlZmF1bHRMb2NhbGUpIHtcbiAgICAgIGNvbnN0IGxvY2FsZVBhdGggPSB0aGlzLnN3aXRjaExvY2FsZVBhdGgob3B0aW9ucy5kZWZhdWx0TG9jYWxlKVxuICAgICAgaWYgKGxvY2FsZVBhdGgpIHtcbiAgICAgICAgbGluay5wdXNoKHtcbiAgICAgICAgICBoaWQ6ICdpMThuLXhkJyxcbiAgICAgICAgICByZWw6ICdhbHRlcm5hdGUnLFxuICAgICAgICAgIGhyZWY6IHRvQWJzb2x1dGVVcmwobG9jYWxlUGF0aCwgYmFzZVVybCksXG4gICAgICAgICAgaHJlZmxhbmc6ICd4LWRlZmF1bHQnXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtpbXBvcnQoJ3Z1ZS90eXBlcy92dWUnKS5WdWV9XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVXJsXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy92dWUnKS5OdXh0STE4bk1ldGFbJ2xpbmsnXX0gbGlua1xuICAgKi9cbiAgZnVuY3Rpb24gYWRkQ2Fub25pY2FsTGlua3MgKGJhc2VVcmwsIGxpbmspIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLmxvY2FsZVJvdXRlKHtcbiAgICAgIC4uLnRoaXMuJHJvdXRlLFxuICAgICAgbmFtZTogdGh
1pcy5nZXRSb3V0ZUJhc2VOYW1lKClcbiAgICB9KVxuXG4gICAgY29uc3QgY2Fub25pY2FsUGF0aCA9IGN1cnJlbnRSb3V0ZSA/IGN1cnJlbnRSb3V0ZS5wYXRoIDogbnVsbFxuXG4gICAgaWYgKGNhbm9uaWNhbFBhdGgpIHtcbiAgICAgIGxpbmsucHVzaCh7XG4gICAgICAgIGhpZDogJ2kxOG4tY2FuJyxcbiAgICAgICAgcmVsOiAnY2Fub25pY2FsJyxcbiAgICAgICAgaHJlZjogdG9BYnNvbHV0ZVVybChjYW5vbmljYWxQYXRoLCBiYXNlVXJsKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge2ltcG9ydCgndnVlL3R5cGVzL3Z1ZScpLlZ1ZX1cbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuTG9jYWxlT2JqZWN0fSBjdXJyZW50TG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBjdXJyZW50TG9jYWxlSXNvXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi90eXBlcy92dWUnKS5OdXh0STE4bk1ldGFbJ21ldGEnXX0gbWV0YVxuICAgKi9cbiAgZnVuY3Rpb24gYWRkQ3VycmVudE9nTG9jYWxlIChjdXJyZW50TG9jYWxlLCBjdXJyZW50TG9jYWxlSXNvLCBtZXRhKSB7XG4gICAgY29uc3QgaGFzQ3VycmVudExvY2FsZUFuZElzbyA9IGN1cnJlbnRMb2NhbGUgJiYgY3VycmVudExvY2FsZUlzb1xuXG4gICAgaWYgKCFoYXNDdXJyZW50TG9jYWxlQW5kSXNvKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBtZXRhLnB1c2goe1xuICAgICAgaGlkOiAnaTE4bi1vZycsXG4gICAgICBwcm9wZXJ0eTogJ29nOmxvY2FsZScsXG4gICAgICAvLyBSZXBsYWNlIGRhc2ggd2l0aCB1bmRlcnNjb3JlIGFzIGRlZmluZWQgaW4gc3BlYzogbGFuZ3VhZ2VfVEVSUklUT1JZXG4gICAgICBjb250ZW50OiBoeXBlblRvVW5kZXJzY29yZShjdXJyZW50TG9jYWxlSXNvKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge2ltcG9ydCgndnVlL3R5cGVzL3Z1ZScpLlZ1ZX1cbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuTG9jYWxlT2JqZWN0W119IGxvY2FsZXNcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IGN1cnJlbnRMb2NhbGVJc29cbiAgICogQHBhcmFtIHtpbXBvcnQoJy4uLy4uL3R5cGVzL3Z1ZScpLk51eHRJMThuTWV0YVsnbWV0YSddfSBtZXRhXG4gICAqL1xuICBmdW5jdGlvbiBhZGRBbHRlcm5hdGVPZ0xvY2FsZXMgKGxvY2FsZXMsIGN1cnJlbnRMb2NhbGVJc28sIG1ldGEpIHtcbiAgICBjb25zdCBsb2NhbGVzV2l0aG91dEN1cnJlbnQgPSBsb2NhbGVzLmZpbHRlcihsb2NhbGUgPT4ge1xuICAgICAgY29uc3QgbG9jYWxlSXNvID0gbG9jYWxlLmlzb1xuICAgICAgcmV0dXJuIGxvY2FsZUlzbyAmJiBsb2NhbGVJc28gIT09IGN1cnJlbnRMb2NhbGVJc29cbiAgICB9KVxuXG4gICAgaWYgKGxvY2FsZXNXaXRob3V0Q3VycmVudC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGFsdGVybmF0ZUxvY2FsZXMgPSBsb2NhbGVzV2l0aG91dEN1cnJlbnQubWFwKGxvY2FsZSA9PiAoe1xuICAgICAgICBoaWQ6IGBpMThuLW9nLWFsdC0ke2xvY2FsZS5pc299YCxcbiAgICAgICAgcHJvcGVydHk6ICdvZzpsb2NhbGU6YWx0ZXJuYXRlJyxcbiAgICAgICAgY29udGVudDogaHlwZW5Ub1VuZGVyc2NvcmUobG9jYWxlLmlzbylcbiAgICAgIH0pKVxuXG4gICAgICBtZXRhLnB1c2goLi4uYWx0ZXJuYXRlTG9jYWxlcylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHN0clxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBmdW5jdGlvbiBoeXBlblRvVW5kZXJzY29yZSAoc3RyKSB7XG4gICAgcmV0dXJuIChzdHIgfHwgJycpLnJlcGxhY2UoLy0vZywgJ18nKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxPclBhdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVcmxcbiAgICovXG4gIGZ1bmN0aW9uIHRvQWJzb2x1dGVVcmwgKHVybE9yUGF0aCwgYmFzZVVybCkge1xuICAgIGlmICh1cmxPclBhdGgubWF0Y2goL15odHRwcz86XFwvXFwvLykpIHtcbiAgICAgIHJldHVybiB1cmxPclBhdGhcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VVcmwgKyB1cmxPclBhdGhcbiAgfVxuXG4gIHJldHVybiBtZXRhT2JqZWN0XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBudXh0STE4bkhlYWQoKWAgaW5zdGVhZC5cbiAqIEB0aGlzIHtpbXBvcnQoJ3Z1ZS90eXBlcy92dWUnKS5WdWV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudXh0STE4blNlbyAoKSB7XG4gIHJldHVybiBudXh0STE4bkhlYWQuY2FsbCh0aGlzLCB7IGFkZERpckF0dHJpYnV0ZTogZmFsc2UsIGFkZFNlb0F0dHJpYnV0ZXM6IHRydWUgfSlcbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IFZ1ZUkxOG4gZnJvbSAndnVlLWkxOG4nXG5pbXBvcnQgeyBudXh0STE4bkhlYWQsIG51eHRJMThuU2VvIH0gZnJvbSAnLi9oZWFkLW1ldGEnXG5pbXBvcnQgeyBDb25zdGFudHMsIG51eHRPcHRpb25zLCBvcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJ1xuaW1wb3J0IHtcbiAgY3JlYXRlTG9jYWxlRnJvbVJvdXRlR2V0dGVyLFxuICBnZXRMb2NhbGVDb29raWUsXG4gIGdldExvY2FsZURvbWFpbixcbiAgZ2V0TG9jYWxlc1JlZ2V4LFxuICBtYXRjaEJyb3dzZXJMb2NhbGUsXG4gIHBhcnNlQWNjZXB0TGFuZ3VhZ2UsXG4gIHNldExvY2FsZUNvb2tpZVxufSBmcm9tICcuL3V0aWxzLWNvbW1vbidcbmltcG9ydCB7IGxvYWRMYW5ndWFnZUFzeW5jLCByZXNvbHZlQmFzZVVybCwgcmVnaXN0ZXJTdG9yZSwgc3luY1Z1ZXggfSBmcm9tICcuL3BsdWdpbi51dGlscydcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGpvaW5VUkwgfSBmcm9tICd+aTE4bi11Zm8nXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBrbG9uYSB9IGZyb20gJ35pMThuLWtsb25hJ1xuXG5WdWUudXNlKFZ1ZUkxOG4pXG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdAbnV4dC90eXBlcycpLlBsdWdpbn0gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIChjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHsgYXBwLCByb3V0ZSwgc3RvcmUsIHJlcSwgcmVzLCByZWRpcmVjdCB9ID0gY29udGV4dFxuXG4gIGlmIChvcHRpb25zLnZ1ZXggJiYgc3RvcmUpIHtcbiAgICByZWdpc3RlclN0b3JlKHN0b3JlLCBvcHRpb25zLnZ1ZXgsIG9wdGlvbnMubG9jYWxlQ29kZXMpXG4gIH1cblxuICBjb25zdCB7IGxhenkgfSA9IG9wdGlvbnNcbiAgY29uc3QgaW5qZWN0SW5OdXh0U3RhdGUgPSBsYXp5ICYmIChsYXp5ID09PSB0cnVlIHx8IGxhenkuc2tpcE51eHRTdGF0ZSAhPT0gdHJ1ZSlcblxuICBpZiAocHJvY2Vzcy5zZXJ2ZXIgJiYgaW5qZWN0SW5OdXh0U3RhdGUpIHtcbiAgICBjb25zdCBkZXZhbHVlID0gKGF3YWl0IGltcG9ydCgnZGV2YWx1ZScpKS5kZWZh
1dWx0XG4gICAgY29udGV4dC5iZWZvcmVOdXh0UmVuZGVyKCh7IG51eHRTdGF0ZSB9KSA9PiB7XG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGltcG9ydCgndnVlLWkxOG4nKS5Mb2NhbGVNZXNzYWdlT2JqZWN0Pn0gKi9cbiAgICAgIGNvbnN0IGxhbmdzID0ge31cbiAgICAgIGNvbnN0IHsgZmFsbGJhY2tMb2NhbGUsIGxvY2FsZSB9ID0gYXBwLmkxOG5cbiAgICAgIGlmIChsb2NhbGUgJiYgbG9jYWxlICE9PSBmYWxsYmFja0xvY2FsZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlIFVzaW5nIGludGVybmFsIEFQSSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjbG9uaW5nLlxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IGFwcC5pMThuLl9nZXRNZXNzYWdlcygpW2xvY2FsZV1cbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRldmFsdWUobWVzc2FnZXMpXG4gICAgICAgICAgICBsYW5nc1tsb2NhbGVdID0gbWVzc2FnZXNcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIElnbm9yZSAtIGNsaWVudC1zaWRlIHdpbGwgbG9hZCB0aGUgY2h1bmsgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBudXh0U3RhdGUuX19pMThuID0geyBsYW5ncyB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBhbHdheXNSZWRpcmVjdCxcbiAgICBmYWxsYmFja0xvY2FsZSxcbiAgICBvbmx5T25Ob1ByZWZpeCxcbiAgICBvbmx5T25Sb290LFxuICAgIHVzZUNvb2tpZSxcbiAgICBjb29raWVLZXksXG4gICAgY29va2llRG9tYWluLFxuICAgIGNvb2tpZVNlY3VyZSxcbiAgICBjb29raWVDcm9zc09yaWdpblxuICB9ID0gLyoqIEB0eXBlIHtSZXF1aXJlZDxpbXBvcnQoJy4uLy4uL3R5cGVzJykuRGV0ZWN0QnJvd3Nlckxhbmd1YWdlT3B0aW9ucz59ICovKG9wdGlvbnMuZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gbmV3TG9jYWxlXG4gICAqIEBwYXJhbSB7eyBpbml0aWFsU2V0dXA/OiBib29sZWFuIH19IFtvcHRpb25zPWZhbHNlXVxuICAgKi9cbiAgY29uc3QgbG9hZEFuZFNldExvY2FsZSA9IGFzeW5jIChuZXdMb2NhbGUsIHsgaW5pdGlhbFNldHVwID0gZmFsc2UgfSA9IHt9KSA9PiB7XG4gICAgaWYgKCFuZXdMb2NhbGUpIHtcbiAgICAgIHJldHVyblxuICAgI
1H1cblxuICAgIC8vIEFib3J0IGlmIGRpZmZlcmVudCBkb21haW5zIG9wdGlvbiBlbmFibGVkXG4gICAgaWYgKCFpbml0aWFsU2V0dXAgJiYgYXBwLmkxOG4uZGlmZmVyZW50RG9tYWlucykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgb2xkTG9jYWxlID0gYXBwLmkxOG4ubG9jYWxlXG5cbiAgICBpZiAobmV3TG9jYWxlID09PSBvbGRMb2NhbGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsZU92ZXJyaWRlID0gYXBwLmkxOG4ub25CZWZvcmVMYW5ndWFnZVN3aXRjaChvbGRMb2NhbGUsIG5ld0xvY2FsZSwgaW5pdGlhbFNldHVwLCBjb250ZXh0KVxuICAgIGlmIChsb2NhbGVPdmVycmlkZSAmJiBhcHAuaTE4bi5sb2NhbGVDb2Rlcy5pbmNsdWRlcyhsb2NhbGVPdmVycmlkZSkpIHtcbiAgICAgIGlmIChsb2NhbGVPdmVycmlkZSA9PT0gb2xkTG9jYWxlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbmV3TG9jYWxlID0gbG9jYWxlT3ZlcnJpZGVcbiAgICB9XG5cbiAgICBpZiAoIWluaXRpYWxTZXR1cCkge1xuICAgICAgYXBwLmkxOG4uYmVmb3JlTGFuZ3VhZ2VTd2l0Y2gob2xkTG9jYWxlLCBuZXdMb2NhbGUpXG4gICAgfVxuXG4gICAgaWYgKHVzZUNvb2tpZSkge1xuICAgICAgYXBwLmkxOG4uc2V0TG9jYWxlQ29va2llKG5ld0xvY2FsZSlcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sYW5nRGlyKSB7XG4gICAgICBjb25zdCBpMThuRmFsbGJhY2tMb2NhbGUgPSBhcHAuaTE4bi5mYWxsYmFja0xvY2FsZVxuXG4gICAgICBpZiAob3B0aW9ucy5sYXp5KSB7XG4gICAgICAgIC8vIExvYWQgZmFsbGJhY2sgbG9jYWxlKHMpLlxuICAgICAgICBpZiAoaTE4bkZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICAgIC8qKiBAdHlwZSB7UHJvbWlzZTx2b2lkPltdfSAqL1xuICAgICAgICAgIGxldCBsb2NhbGVzVG9Mb2FkUHJvbWlzZXMgPSBbXVxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGkxOG5GYWxsYmFja0xvY2FsZSkpIHtcbiAgICAgICAgICAgIGxvY2FsZXNUb0xvYWRQcm9taXNlcyA9IGkxOG5GYWxsYmFja0xvY2FsZS5tYXAoZmJMb2NhbGUgPT4gbG9hZExhbmd1YWdlQXN5bmMoY29udGV4dCwgZmJMb2NhbGUpKVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkxOG5GYWxsYmFja0xvY2FsZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChpMThuRmFsbGJhY2tMb2NhbGVbbmV3TG9jYWxlXSkge1xuICAgICAgICAgICAgICBsb2NhbGVzVG9Mb2FkUHJvbWlzZXMgPSBsb2NhbGVzVG9Mb2FkUHJvbWlzZXMuY29uY2F0KGkxOG5GYWxsYmFja0xvY2FsZVtuZXdMb2NhbGVdLm1hcChmYkxvY2FsZSA9PiBsb2FkTGFuZ3VhZ2VBc3luYyhjb250ZXh0LCBmYkxvY2FsZSkpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGkxOG5GYWxsYmFja0xvY2FsZS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAgIGxvY2FsZXNUb0xvYWRQcm9taXNlcyA9IGxvY2FsZXNUb0xvYWRQcm9taXNlcy5jb25jYXQoaTE4bkZhbGxiYWNrTG9jYWxlLmRlZmF1bHQubWFwKGZiTG9jYWxlID0+IGxvYWRMYW5ndWFnZUFzeW5jKGNvbnRleHQsIGZiTG9jYWxlKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChuZXdMb2NhbGUgIT09IGkxOG5GYWxsYmFja0xvY2FsZSkge1xuICAgICAgICAgICAgbG9jYWxlc1RvTG9hZFByb21pc2VzLnB1c2gobG9hZExhbmd1YWdlQXN5bmMoY29udGV4dCwgaTE4bkZhbGxiYWNrTG9jYWxlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobG9jYWxlc1RvTG9hZFByb21pc2VzKVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGxvYWRMYW5ndWFnZUFzeW5jKGNvbnRleHQsIG5ld0xvY2FsZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExvYWQgYWxsIGxvY2FsZXMuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKG9wdGlvbnMubG9jYWxlQ29kZXMubWFwKGxvY2FsZSA9PiBsb2FkTGFuZ3VhZ2VBc3luYyhjb250ZXh0LCBsb2NhbGUpKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcHAuaTE4bi5sb2NhbGUgPSBuZXdMb2NhbGVcbiAgICAvKiogQHR5cGUge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Mb2NhbGVPYmplY3R9ICovXG4gICAgY29uc3QgbmV3TG9jYWxlUHJvcGVydGllcyA9IG9wdGlvbnMubm9ybWFsaXplZExvY2FsZXMuZmluZChsID0+IGwuY29kZSA9PT0gbmV3TG9jYWxlKSB8fCB7IGNvZGU6IG5ld0xvY2FsZSB9XG4gICAgLy8gSW4gY2FzZSBjZXJ0YWluIGxvY2FsZSBoYXMgbW9yZSBwcm9wZXJ0aWVzIHRoYW4gYW5vdGhlciwgcmVzZXQgYWxsIHRoZSBwcm9wZXJ0aWVzLlxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGFwcC5pMThuLmxvY2FsZVByb3BlcnRpZXMpKSB7XG4gICAgICBhcHAuaTE4bi5sb2NhbGVQcm9wZXJ0aWVzW2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG4gICAgLy8gQ29weSBwcm9wZXJ0aWVzIG9mIHRoZSBuZXcgbG9jYWxlXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVud
1HJpZXMobmV3TG9jYWxlUHJvcGVydGllcykpIHtcbiAgICAgIFZ1ZS5zZXQoYXBwLmkxOG4ubG9jYWxlUHJvcGVydGllcywga2V5LCBrbG9uYSh2YWx1ZSkpXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudnVleCkge1xuICAgICAgYXdhaXQgc3luY1Z1ZXgoc3RvcmUsIG5ld0xvY2FsZSwgYXBwLmkxOG4uZ2V0TG9jYWxlTWVzc2FnZShuZXdMb2NhbGUpLCBvcHRpb25zLnZ1ZXgpXG4gICAgfVxuXG4gICAgLy8gTXVzdCByZXRyaWV2ZSBmcm9tIGNvbnRleHQgYXMgaXQgbWlnaHQgaGF2ZSBjaGFuZ2VkIHNpbmNlIHBsdWdpbiBpbml0aWFsaXphdGlvbi5cbiAgICBjb25zdCB7IHJvdXRlIH0gPSBjb250ZXh0XG4gICAgY29uc3QgcmVkaXJlY3RQYXRoID0gZ2V0UmVkaXJlY3RQYXRoRm9yTG9jYWxlKHJvdXRlLCBuZXdMb2NhbGUpXG5cbiAgICBpZiAoaW5pdGlhbFNldHVwKSB7XG4gICAgICAvLyBSZWRpcmVjdCB3aWxsIGJlIGRlbGF5ZWQgdW50aWwgbWlkZGxld2FyZSBydW5zIGFzIHJlZGlyZWN0aW5nIGZyb20gcGx1Z2luIGRvZXMgbm90XG4gICAgICAvLyB3b3JrIGluIFNQQSAoaHR0cHM6Ly9naXRodWIuY29tL251eHQvbnV4dC5qcy9pc3N1ZXMvNDQ5MSkuXG4gICAgICBhcHAuaTE4bi5fX3JlZGlyZWN0ID0gcmVkaXJlY3RQYXRoXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcC5pMThuLm9uTGFuZ3VhZ2VTd2l0Y2hlZChvbGRMb2NhbGUsIG5ld0xvY2FsZSlcblxuICAgICAgaWYgKHJlZGlyZWN0UGF0aCkge1xuICAgICAgICByZWRpcmVjdChyZWRpcmVjdFBhdGgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2V0TG9jYWxlRnJvbVJvdXRlID0gY3JlYXRlTG9jYWxlRnJvbVJvdXRlR2V0dGVyKG9wdGlvbnMubG9jYWxlQ29kZXMsIHtcbiAgICByb3V0ZXNOYW1lU2VwYXJhdG9yOiBvcHRpb25zLnJvdXRlc05hbWVTZXBhcmF0b3IsXG4gICAgZGVmYXVsdExvY2FsZVJvdXRlTmFtZVN1ZmZpeDogb3B0aW9ucy5kZWZhdWx0TG9jYWxlUm91dGVOYW1lU3VmZml4XG4gIH0pXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlZGlyZWN0IHBhdGggZm9yIGxvY2FsZS5cbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoXCJ2dWUtcm91dGVyXCIpLlJvdXRlfSByb3V0ZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gbG9jYWxlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHJlZGlyZWN0IHBhdGggZm9yIGxvY2FsZS5cbiAgICovXG4gIGNvbnN0IGdldFJlZGlyZWN0UGF0aEZvckxvY2FsZSA9IChyb3V0ZSwgbG9jYWxlKSA9PiB7XG4gICAgLy8gUmVkaXJlY3RzIGFyZSBpZ25vcmVkIGlmIGl0IGlzIGEgbnV4dCBnZW5lcmF0ZS5cbiAgICBpZiAocHJvY2Vzcy5zdGF0aWMgJiYgcHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIGlmICghbG9jYWxlIHx8IGFwcC5pMThuLmRpZmZlcmVudERvbWFpbnMgfHwgb3B0aW9ucy5zdHJhdGVneSA9PT0gQ29uc3RhbnRzLlNUUkFURUdJRVMuTk9fUFJFRklYKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICBpZiAoZ2V0TG9jYWxlRnJvbVJvdXRlKHJvdXRlKSA9PT0gbG9jYWxlKSB7XG4gICAgICAvLyBJZiBcIm9ubHlPblJvb3RcIiBvciBcIm9ubHlPbk5vUHJlZml4XCIgaXMgc2V0IGFuZCBzdHJhdGVneSBpcyBcInByZWZpeF9hbmRfZGVmYXVsdFwiLCBwcmVmZXIgdW5wcmVmaXhlZCByb3V0ZSBmb3JcbiAgICAgIC8vIGRlZmF1bHQgbG9jYWxlLlxuICAgICAgaWYgKCEob25seU9uUm9vdCB8fCBvbmx5T25Ob1ByZWZpeCkgfHwgbG9jYWxlICE9PSBvcHRpb25zLmRlZmF1bHRMb2NhbGUgfHwgb3B0aW9ucy5zdHJhdGVneSAhPT0gQ29uc3RhbnRzLlNUUkFURUdJRVMuUFJFRklYX0FORF9ERUZBVUxUKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGxlZnQgd2l0aCByb3V0ZSB0aGF0IGVpdGhlciBoYXMgbm8gb3IgZGlmZmVyZW50IGxvY2FsZS5cbiAgICBsZXQgcmVkaXJlY3RQYXRoID0gYXBwLnN3aXRjaExvY2FsZVBhdGgobG9jYWxlKVxuXG4gICAgaWYgKCFyZWRpcmVjdFBhdGgpIHtcbiAgICAgIC8vIEN1cnJlbnQgcm91dGUgY291bGQgYmUgNDA0IGluIHdoaWNoIGNhc2UgYXR0ZW1wdCB0byBmaW5kIG1hdGNoaW5nIHJvdXRlIGZvciBnaXZlbiBsb2NhbGUuXG4gICAgICByZWRpcmVjdFBhdGggPSBhcHAubG9jYWxlUGF0aChyb3V0ZS5mdWxsUGF0aCwgbG9jYWxlKVxuICAgIH1cblxuICAgIGlmICghcmVkaXJlY3RQYXRoIHx8IHJlZGlyZWN0UGF0aCA9PT0gcm91dGUuZnVsbFBhdGggfHwgcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIHJldHVybiByZWRpcmVjdFBhdGhcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgbWlkZGxld2FyZSBvbiBuYXZpZ2F0aW9uIChhbHNvIG9uIHRoZSBpbml0aWFsIG9uZSkuXG4gICAqXG4gICAqIEB0eXBlIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2ludGVybmFsJykub25OYXZpZ2F0ZUludGVybmFsfVxuICAgKi9cbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IGFzeW5jIHJvdXRlID0+IHtcbiAgICAvLyBIYW5kbGUgcm9vdCBwYXRoIHJlZGlyZWN0XG4gICAgaWYgKHJvdXRlLnBhdGggPT09ICcvJyAmJiBvcHRpb25zLnJvb3RSZWRpcmVjdCkge1xuICAgICAgbGV0IHN0YXR1c0NvZGUgPSAzMDJcbiAgICAgIGxldCBwYXRoID0gb3B0aW9ucy5yb290UmVkaXJlY3RcblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnJvb3RSZWRpcmVjdCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RhdHVzQ29kZSA9IG9wdGlvbnMucm9vdFJlZGlyZWN0LnN0YXR1c0NvZGVcbiAgICAgICAgcGF0aCA9IG9wdGlvbnMucm9vdFJlZGlyZWN0LnBhdGhcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtzdGF0dXNDb2RlLCBgLyR7cGF0aH1gLCAvKiBwcmVzZXJ2ZSBxdWVyeSAqL3RydWVdXG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVkUmVkaXJlY3QgPSBhcHAuaTE4bi5fX3JlZGlyZWN0XG4gICAgaWYgKHN0b3JlZFJlZGlyZWN0KSB7XG4gICAgICBhcHAuaTE4bi5f
1X3JlZGlyZWN0ID0gbnVsbFxuICAgICAgcmV0dXJuIFszMDIsIHN0b3JlZFJlZGlyZWN0XVxuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVCYXNlVXJsT3B0aW9ucyA9IHtcbiAgICAgIGRpZmZlcmVudERvbWFpbnM6IG9wdGlvbnMuZGlmZmVyZW50RG9tYWlucyxcbiAgICAgIG5vcm1hbGl6ZWRMb2NhbGVzOiBvcHRpb25zLm5vcm1hbGl6ZWRMb2NhbGVzXG4gICAgfVxuICAgIGFwcC5pMThuLl9fYmFzZVVybCA9IHJlc29sdmVCYXNlVXJsKG9wdGlvbnMuYmFzZVVybCwgY29udGV4dCwgYXBwLmkxOG4ubG9jYWxlLCByZXNvbHZlQmFzZVVybE9wdGlvbnMpXG5cbiAgICBjb25zdCBmaW5hbExvY2FsZSA9XG4gICAgICAob3B0aW9ucy5kZXRlY3RCcm93c2VyTGFuZ3VhZ2UgJiYgZG9EZXRlY3RCcm93c2VyTGFuZ3VhZ2Uocm91dGUpKSB8fFxuICAgICAgZ2V0TG9jYWxlRnJvbVJvdXRlKHJvdXRlKSB8fCBhcHAuaTE4bi5sb2NhbGUgfHwgYXBwLmkxOG4uZGVmYXVsdExvY2FsZSB8fCAnJ1xuXG4gICAgaWYgKG9wdGlvbnMuc2tpcFNldHRpbmdMb2NhbGVPbk5hdmlnYXRlKSB7XG4gICAgICBhcHAuaTE4bi5fX3BlbmRpbmdMb2NhbGUgPSBmaW5hbExvY2FsZVxuICAgICAgYXBwLmkxOG4uX19wZW5kaW5nTG9jYWxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBhcHAuaTE4bi5fX3Jlc29sdmVQZW5kaW5nTG9jYWxlUHJvbWlzZSA9IHJlc29sdmVcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGFwcC5pMThuLnNldExvY2FsZShmaW5hbExvY2FsZSlcbiAgICB9XG5cbiAgICByZXR1cm4gW251bGwsIG51bGxdXG4gIH1cblxuICBjb25zdCBmaW5hbGl6ZVBlbmRpbmdMb2NhbGVDaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFhcHAuaTE4bi5fX3BlbmRpbmdMb2NhbGUpIHtcbiAgICAgIHJldHVyblxuICAgI
1H1cbiAgICBhd2FpdCBhcHAuaTE4bi5zZXRMb2NhbGUoYXBwLmkxOG4uX19wZW5kaW5nTG9jYWxlKVxuICAgIGFwcC5pMThuLl9fcmVzb2x2ZVBlbmRpbmdMb2NhbGVQcm9taXNlKCcnKVxuICAgIGFwcC5pMThuLl9fcGVuZGluZ0xvY2FsZSA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IHdhaXRGb3JQZW5kaW5nTG9jYWxlQ2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChhcHAuaTE4bi5fX3BlbmRpbmdMb2NhbGUpIHtcbiAgICAgIGF3YWl0IGFwcC5pMThuLl9fcGVuZGluZ0xvY2FsZVByb21pc2VcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXRCcm93c2VyTG9jYWxlID0gKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzKSB7XG4gICAgICAvLyBHZXQgYnJvd3NlciBsYW5ndWFnZSBlaXRoZXIgZnJvbSBuYXZpZ2F0b3IgaWYgcnVubmluZyBvbiBjbGllbnQgc2lkZSwgb3IgZnJvbSB0aGUgaGVhZGVyc1xuICAgICAgcmV0dXJuIG1hdGNoQnJvd3NlckxvY2FsZShvcHRpb25zLm5vcm1hbGl6ZWRMb2NhbGVzLCBuYXZpZ2F0b3IubGFuZ3VhZ2VzKVxuICAgIH0gZWxzZSBpZiAocmVxICYmIHR5cGVvZiByZXEuaGVhZGVyc1snYWNjZXB0LWxhbmd1YWdlJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbWF0Y2hCcm93c2VyTG9jYWxlKG9wdGlvbnMubm9ybWFsaXplZExvY2FsZXMsIHBhcnNlQWNjZXB0TGFuZ3VhZ2UocmVxLmhlYWRlcnNbJ2FjY2VwdC1sYW5ndWFnZSddKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgndnVlLXJvdXRlcicpLlJvdXRlfSByb3V0ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFJldHVybnMgdGhlIGJyb3dzZXIgbG9jYWxlIHRoYXQgd2FzIGRldGVjdGVkIG9yIGFuIGVtcHR5IHN0cmluZyBvdGhlcndpc2UuXG4gICAqL1xuICBjb25zdCBkb0RldGVjdEJyb3dzZXJMYW5ndWFnZSA9IHJvdXRlID0+IHtcbiAgICAvLyBCcm93c2VyIGRldGVjdGlvbiBpcyBpZ25vcmVkIGlmIGl0IGlzIGEgbnV4dCBnZW5lcmF0ZS5cbiAgICBpZiAocHJvY2Vzcy5zdGF0aWMgJiYgcHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnN0cmF0ZWd5ICE9PSBDb25zdGFudHMuU1RSQVRFR0lFUy5OT19QUkVGSVgpIHtcbiAgICAgIGlmIChvbmx5T25Sb290KSB7XG4gICAgICAgIGlmIChyb3V0ZS5wYXRoICE9PSAnLycpIHtcbiAgICAgICAgICByZXR1cm4gJydcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvbmx5T25Ob1ByZWZpeCkge1xuICAgICAgICBpZiAoIWFsd2F5c1JlZGlyZWN0ICYmIHJvdXRlLnBhdGgubWF0Y2goZ2V0TG9jYWxlc1JlZ2V4KG9wdGlvbnMubG9jYWxlQ29kZXMpKSkge1xuICAgICAgICAgIHJldHVybiAnJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG1hdGNoZWRMb2NhbGVcblxuICAgIGlmICh1c2VDb29raWUgJiYgKG1hdGNoZWRMb2NhbGUgPSBhcHAuaTE4bi5nZXRMb2NhbGVDb29raWUoKSkpIHtcbiAgICAgIC8vIEdldCBwcmVmZXJyZWQgbGFuZ3VhZ2UgZnJvbSBjb29raWUgaWYgcHJlc2VudCBhbmQgZW5hYmxlZFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUcnkgdG8gZ2V0IGxvY2FsZSBmcm9tIGVpdGhlciBuYXZpZ2F0b3Igb3IgaGVhZGVyIGRldGVjdGlvblxuICAgICAgbWF0Y2hlZExvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGZpbmFsTG9jYWxlID0gbWF0Y2hlZExvY2FsZSB8fCBmYWxsYmFja0xvY2FsZVxuXG4gICAgLy8gSGFuZGxlIGNvb2tpZSBvcHRpb24gdG8gcHJldmVudCBtdWx0aXBsZSByZWRpcmVjdGlvbnNcbiAgICBpZiAoZmluYWxMb2NhbGUgJiYgKCF1c2VDb29raWUgfHwgYWx3YXlzUmVkaXJlY3QgfHwgIWFwcC5pMThuLmdldExvY2FsZUNvb2tpZSgpKSkge1xuICAgICAgaWYgKGZpbmFsTG9jYWxlICE9PSBhcHAuaTE4bi5sb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbmFsTG9jYWxlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kcyB0aGUgbmV3bHkgY3JlYXRlZCB2dWUtaTE4biBpbnN0YW5jZSB3aXRoIG51eHQtaTE4biBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgndnVlLWkxOG4nKS5JVnVlSTE4bn0gaTE4blxuICAgKi9cbiAgY29uc3QgZXh0ZW5kVnVlSTE4bkluc3RhbmNlID0gaTE4biA9PiB7XG4gICAgaTE4bi5sb2NhbGVzID0ga2xvbmEob3B0aW9ucy5sb2NhbGVzKVxuICAgIGkxOG4ubG9jYWxlQ29kZXMgPSBrbG9uYShvcHRpb25zLmxvY2FsZUNvZGVzKVxuICAgIGkxOG4ubG9jYWxlUHJvcGVydGllcyA9IFZ1ZS5vYnNlcnZhYmxlKGtsb25hKG9wdGlvbnMubm9ybWFsaXplZExvY2FsZXMuZmluZChsID0+IGwuY29kZSA9PT0gaTE4bi5sb2NhbGUpIHx8IHsgY29kZTogaTE4bi5sb2NhbGUgfSkpXG4gICAgaTE4bi5kZWZhdWx0TG9jYWxlID0gb3B0aW9ucy5kZWZhdWx0TG9jYWxlXG4gICAgaTE4bi5kaWZmZXJlbnREb21haW5zID0gb3B0aW9ucy5kaWZmZXJlbnREb21haW5zXG4gICAgaTE4bi5iZWZvcmVMYW5ndWFnZVN3aXRjaCA9IG9wdGlvbnMuYmVmb3JlTGFuZ3VhZ2VTd2l0Y2hcbiAgICBpMThuLm9uQmVmb3JlTGFuZ3VhZ2VTd2l0Y2ggPSBvcHRpb25zLm9uQmVmb3JlTGFuZ3VhZ2VTd2l0Y2hcbiAgICBpMThuLm9uTGFuZ3VhZ2VTd2l0Y2hlZCA9IG9wdGlvbnMub25MYW5ndWFnZVN3aXRjaGVkXG4gICAgaTE4bi5zZXRMb2NhbGVDb29raWUgPSBsb2NhbGUgPT4gc2V0TG9jYWxlQ29va2llKGxvY2FsZSwgcmVzLCB7IHVzZUNvb2tpZSwgY29va2llRG9tYWluLCBjb29raWVLZXksIGNvb2tpZVNlY3VyZSwgY29va2llQ3Jvc3NPcmlnaW4gfSlcbiAgICBpMThuLmdldExvY2FsZUNvb2tpZSA9ICgpID0+IGdldExvY2FsZUNvb2tpZShyZXEsIHsgdXNlQ29va2llLCBjb29raWVLZXksIGxvY2FsZUNvZGVzOiBvcHRpb25zLmxvY2FsZUNvZGVzIH0pXG4gICAgaTE4bi5zZXRMb2NhbGUgPSAobG9jYWxlKSA9PiBsb2FkQW5kU2V0TG9jYWxlKGxvY2FsZSlcbiAgICBpMThuLmdldEJyb3dzZXJMb2NhbGUgPSAoKSA9PiBnZXRCcm93c2VyTG9jYWxlKClcbiAgICBpMThuLmZpbmFsaXplUGVuZGluZ0xvY2FsZUNoYW5nZSA9IGZpbmFsaXplUGVuZGluZ0xvY2FsZUNoYW5nZVxuICAgIGkxOG4ud2FpdEZvclBlbmRpbmdMb2NhbGVDaGFuZ2UgPSB3YWl
10Rm9yUGVuZGluZ0xvY2FsZUNoYW5nZVxuICAgIGkxOG4uX19iYXNlVXJsID0gYXBwLmkxOG4uX19iYXNlVXJsXG4gICAgaTE4bi5fX3BlbmRpbmdMb2NhbGUgPSBhcHAuaTE4bi5fX3BlbmRpbmdMb2NhbGVcbiAgICBpMThuLl9fcGVuZGluZ0xvY2FsZVByb21pc2UgPSBhcHAuaTE4bi5fX3BlbmRpbmdMb2NhbGVQcm9taXNlXG4gICAgaTE4bi5fX3Jlc29sdmVQZW5kaW5nTG9jYWxlUHJvbWlzZSA9IGFwcC5pMThuLl9fcmVzb2x2ZVBlbmRpbmdMb2NhbGVQcm9taXNlXG4gIH1cblxuICAvLyBTZXQgaW5zdGFuY2Ugb3B0aW9uc1xuICBjb25zdCB2dWVJMThuT3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zLnZ1ZUkxOG4gPT09ICdmdW5jdGlvbicgPyBhd2FpdCBvcHRpb25zLnZ1ZUkxOG4oY29udGV4dCkgOiBrbG9uYShvcHRpb25zLnZ1ZUkxOG4pXG4gIHZ1ZUkxOG5PcHRpb25zLmNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyID0gZXh0ZW5kVnVlSTE4bkluc3RhbmNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgYXBwLmkxOG4gPSBjb250ZXh0LmkxOG4gPSBuZXcgVnVlSTE4bih2dWVJMThuT3B0aW9ucylcbiAgLy8gSW5pdGlhbGl6ZSBsb2NhbGUgYW5kIGZhbGxiYWNrTG9jYWxlIGFzIHZ1ZS1pMThuIGRlZmF1bHRzIHRob3NlIHRvICdlbi1VUycgaWYgZmFsc2V5XG4gIGFwcC5pMThuLmxvY2FsZSA9ICcnXG4gIGFwcC5pMThuLmZhbGxiYWNrTG9jYWxlID0gdnVlSTE4bk9wdGlvbnMuZmFsbGJhY2tMb2NhbGUgfHwgJydcbiAgZXh0ZW5kVnVlSTE4bkluc3RhbmNlKGFwcC5pMThuKVxuICBjb25zdCByZXNvbHZlQmFzZVVybE9wdGlvbnMgPSB7XG4gICAgZGlmZmVyZW50RG9tYWluczogb3B0aW9ucy5kaWZmZXJlbnREb21haW5zLFxuICAgIG5vcm1hbGl6ZWRMb2NhbGVzOiBvcHRpb25zLm5vcm1hbGl6ZWRMb2NhbGVzXG4gIH1cbiAgYXBwLmkxOG4uX19iYXNlVXJsID0gcmVzb2x2ZUJhc2VVcmwob3B0aW9ucy5iYXNlVXJsLCBjb250ZXh0LCAnJywgcmVzb2x2ZUJhc2VVcmxPcHRpb25zKVxuICBhcHAuaTE4bi5fX29uTmF2aWdhdGUgPSBvbk5hdmlnYXRlXG5cbiAgVnVlLnByb3RvdHlwZS4kbnV4dEkxOG5TZW8gPSBudXh0STE4blNlb1xuICBWdWUucHJvdG90eXBlLiRudXh0STE4bkhlYWQgPSBudXh0STE4bkhlYWRcblxuICBpZiAoc3RvcmUpIHtcbiAgICAvLyBJbmplY3QgaW4gc3RvcmUuXG4gICAgc3RvcmUuJGkxOG4gPSBhcHAuaTE4blxuXG4gICAgaWYgKHN0b3JlLnN0YXRlLmxvY2FsZURvbWFpbnMpIHtcbiAgICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIGFwcC5pMThuLmxvY2FsZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobG9jYWxlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGxvY2FsZS5kb21haW4gPSBzdG9yZS5zdGF0ZS5sb2NhbGVEb21haW5zW2xvY2FsZS5jb2RlXVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7c3RyaW5nIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZmluYWxMb2NhbGUgPSBvcHRpb25zLmRldGVjdEJyb3dzZXJMYW5ndWFnZSA/IGRvRGV0ZWN0QnJvd3Nlckxhbmd1YWdlKHJvdXRlKSA6ICcnXG5cbiAgaWYgKCFmaW5hbExvY2FsZSkge1xuICAgIGNvbnN0IHsgdnVleCB9ID0gb3B0aW9uc1xuICAgIGlmICh2dWV4ICYmIHZ1ZXguc3luY0xvY2FsZSAmJiBzdG9yZSAmJiBzdG9yZS5zdGF0ZVt2dWV4Lm1vZHVsZU5hbWVdLmxvY2FsZSAhPT0gJycpIHtcbiAgICAgIGZpbmFsTG9jYWxlID0gc3RvcmUuc3RhdGVbdnVleC5tb2R1bGVOYW1lXS5sb2NhbGVcbiAgICB9IGVsc2UgaWYgKGFwcC5pMThuLmRpZmZlcmVudERvbWFpbnMpIHtcbiAgICAgIGNvbnN0IGRvbWFpbkxvY2FsZSA9IGdldExvY2FsZURvbWFpbihvcHRpb25zLm5vcm1hbGl6ZWRMb2NhbGVzLCByZXEpXG4gICAgICBmaW5hbExvY2FsZSA9IGRvbWFpbkxvY2FsZVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5zdHJhdGVneSAhPT0gQ29uc3RhbnRzLlNUUkFURUdJRVMuTk9fUFJFRklYKSB7XG4gICAgICBjb25zdCByb3V0ZUxvY2FsZSA9IGdldExvY2FsZUZyb21Sb3V0ZShyb3V0ZSlcbiAgICAgIGZpbmFsTG9jYWxlID0gcm91dGVMb2NhbGVcbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbmFsTG9jYWxlICYmIHVzZUNvb2tpZSkge1xuICAgIGZpbmFsTG9jYWxlID0gYXBwLmkxOG4uZ2V0TG9jYWxlQ29va2llKClcbiAgfVxuXG4gIGlmICghZmluYWxMb2NhbGUpIHtcbiAgICBmaW5hbExvY2FsZSA9IGFwcC5pMThuLmRlZmF1bHRMb2NhbGUgfHwgJydcbiAgfVxuXG4gIGF3YWl0IGxvYWRBbmRTZXRMb2NhbGUoZmluYWxMb2NhbGUsIHsgaW5pdGlhbFNldHVwOiB0cnVlIH0pXG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHByb2Nlc3Muc3RhdGljICYmIG51eHRPcHRpb25zLmlzVW5pdmVyc2FsTW9kZSkge1xuICAgIGNvbnN0IFtfLCByZWRpcmVjdFRvXSA9IGF3YWl0IG9uTmF2aWdhdGUoY29udGV4dC5yb3V0ZSlcbiAgICBpZiAocmVkaXJlY3RUbykge1xuICAgICAgbG9jYXRpb24uYXNzaWduKGpvaW5VUkwoY29udGV4dC5iYXNlLCByZWRpcmVjdFRvKSlcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IFJFR0VYX01PQklMRTEgPSAvKGFuZHJvaWR8YmJcXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVxcL3xibGFja2JlcnJ5fGJsYXplcnxjb21wYWx8ZWxhaW5lfEZCQU58RkJBVnxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhvbmV8b2QpfEluc3RhZ3JhbXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IFJFR0VYX01PQklMRTIgPSAvMTIwN3w2MzEwfDY1OTB8M2dzb3w0dGhwfDUwWzEtNl1pfDc3MHN8ODAyc3xhIHdhfGFiYWN8YWMoZXJ8b298c1xcLSl8YWko
1a298cm4pfGFsKGF2fGNhfGNvKXxhbW9pfGFuKGV4fG55fHl3KXxhcHR1fGFyKGNofGdvKXxhcyh0ZXx1cyl8YXR0d3xhdShkaXxcXC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcXC0obnx1KXxjNTVcXC98Y2FwaXxjY3dhfGNkbVxcLXxjZWxsfGNodG18Y2xkY3xjbWRcXC18Y28obXB8bmQpfGNyYXd8ZGEoaXR8bGx8bmcpfGRidGV8ZGNcXC1zfGRldml8ZGljYXxkbW9ifGRvKGN8cClvfGRzKDEyfFxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcXC18Xyl8ZzEgdXxnNTYwfGdlbmV8Z2ZcXC01fGdcXC1tb3xnbyhcXC53fG9kKXxncihhZHx1bil8aGFpZXxoY2l0fGhkXFwtKG18cHx0KXxoZWlcXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1xcLWN8aHQoYyhcXC18IHxffGF8Z3xwfHN8dCl8dHApfGh1KGF3fHRjKXxpXFwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFxcLXxcXC8pfGlicm98aWRlYXxpZzAxfGlrb218aW0xa3xpbm5vfGlwYXF8aXJpc3xqYSh0fHYpYXxqYnJvfGplbXV8amlnc3xrZGRpfGtlaml8a2d0KCB8XFwvKXxrbG9ufGtwdCB8a3djXFwtfGt5byhjfGspfGxlKG5vfHhpKXxsZyggZ3xcXC8oa3xsfHUpfDUwfDU0fFxcLVthLXddKXxsaWJ3fGx5bnh8bTFcXC13fG0zZ2F8bTUwXFwvfG1hKHRlfHVpfHhvKXxtYygwMXwyMXxjYSl8bVxcLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFxcLXwgfG98dil8enopfG10KDUwfHAxfHYgKXxtd2JwfG15d2F8bjEwWzAtMl18bjIwWzItM118bjMwKDB8Mil8bjUwKDB8Mnw1KXxuNygwKDB8MSl8MTApfG5lKChjfG0pXFwtfG9ufHRmfHdmfHdnfHd0KXxub2soNnxpKXxuenBofG8yaW18b3AodGl8d3YpfG9yYW58b3dnMXxwODAwfHBhbihhfGR8dCl8cGR4Z3xwZygxM3xcXC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cXC0yfHBvKGNrfHJ0fHNlKXxwcm94fHBzaW98cHRcXC1nfHFhXFwtYXxxYygwN3wxMnwyMXwzMnw2MHxcXC1bMi03XXxpXFwtKXxxdGVrfHIzODB8cjYwMHxyYWtzfHJpbTl8cm8odmV8em8pfHM1NVxcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFxcLXxvb3xwXFwtKXxzZGtcXC98c2UoYyhcXC18M
1HwxKXw0N3xtY3xuZHxyaSl8c2doXFwtfHNoYXJ8c2llKFxcLXxtKXxza1xcLTB8c2woNDV8aWQpfHNtKGFsfGFyfGIzfGl0fHQ1KXxzbyhmdHxueSl8c3AoMDF8aFxcLXx2XFwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXFwtfHRkZ1xcLXx0ZWwoaXxtKXx0aW1cXC18dFxcLW1vfHRvKHBsfHNoKXx0cyg3MHxtXFwtfG0zfG01KXx0eFxcLTl8dXAoXFwuYnxnMXxzaSl8dXRzdHx2NDAwfHY3NTB8dmVyaXx2aShyZ3x0ZSl8dmsoNDB8NVswLTNdfFxcLXYpfHZtNDB8dm9kYXx2dWxjfHZ4KDUyfDUzfDYwfDYxfDcwfDgwfDgxfDgzfDg1fDk4KXx3M2MoXFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXFwtfHlvdXJ8emV0b3x6dGVcXC0vaVxuXG5mdW5jdGlvbiBpc01vYmlsZSAoYSkge1xuICByZXR1cm4gUkVHRVhfTU9CSUxFMS50ZXN0KGEpIHx8IFJFR0VYX01PQklMRTIudGVzdChhLnN1YnN0cigwLCA0KSlcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5jb25zdCBSRUdFWF9NT0JJTEVfT1JfVEFCTEVUMSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8RkJBTnxGQkFWfGZlbm5lY3xoaXB0b3B8aWVtb2JpbGV8aXAoaG9uZXxvZCl8SW5zdGFncmFtfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVxcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIGNlfHhkYXx4aWlub3xhbmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IFJFR0VYX01PQklMRV9PUl9UQUJMRVQyID0gLzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XFwtKG58dSl8YzU1XFwvfGNhcGl8Y2N3YXxjZG1cXC18Y2VsbHxjaHRtfGNsZGN8Y21kXFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXFwtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcXC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXFwtNXxnXFwtbW98Z28oXFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFxcLShtfHB8dCl8aGVpXFwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcXC1jfGh0KGMoXFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVxcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcXC18XFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFxcLyl8a2xvbnxrcHQgfGt3Y1xcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XFwvKGt8bHx1KXw1MHw1NHxcXC1bYS13XSl8bGlid3xseW54fG0xXFwtd3xtM2dhfG01MFxcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVxcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXFwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XFwtZ3xxYVxcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XFwtWzItN118aVxcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcXC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcXC18b298cFxcLSl8c2RrXFwvfHNlKGMoXFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFxcLXxzaGFyfHNpZShcXC18bSl8c2tcXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcXC18dlxcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFxcLXx0ZGdcXC18dGVsKGl8bSl8dGltXFwtfHRcXC1tb3x0byhwbHxzaCl8dHMoNzB8bVxcLXxtM3xtNSl8dHhcXC05fHVwKFxcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcXC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFxcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1xcLXx5b3VyfHpldG98enRlXFwtL2lcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5jb25zdCBSRUdFWF9DUkFXTEVSID0gL0dvb2dsZWJvdFxcL3xHb29nbGVib3QtTW9iaWxlfEdvb2dsZWJvdC1JbWFnZXxHb29nbGVib3QtTmV3c3xHb29nbGVib3QtVmlkZW98QWRzQm90LUdvb2dsZShbXi1dfCQpfEFkc0JvdC1Hb29nbGUtTW9iaWxlfEZlZWRmZXRjaGVyLUdvb2dsZXxNZWRpYXBhcnRuZXJzLUdvb2dsZXxNZWRpYXBhcnRuZXJzIFxcKEdvb2dsZWJvdFxcKXxBUElzLUdvb2dsZXxiaW5nYm90fFNsdXJwfFt3V11nZXR8TGlua2VkSW5Cb3R8UHl0aG9uLXVybGxpYnxweXRob24tcmVxdWVzdHN8YWlvaHR0cHxodHRweHxsaWJ3d3ctcGVybHxodHRwdW5pdHxudXRjaHxHby1odHRwLWNsaWVudHxwaHBjcmF3bHxtc25ib3R8anl4b2JvdHxGQVNULVdlYkNyYXdsZXJ8RkFTVCBFbnRlcnByaXNlIENyYXdsZXJ8QklHTE9UUk9OfFRlb21hfGNvbnZlcmF8c2Vla2JvdHxHaWdhYm90fEdpZ2FibGFzdHxleGFib3R8aWFfYXJjaGl2ZXJ8R2luZ2VyQ3Jhd2xlcnx3ZWJtb24gfEhUVHJhY2t8Z3J1Yi5vcmd8VXNpbmVOb3V2ZWxsZUNyYXdsZXJ8YW50aWJvdHxuZXRyZXNlYXJjaHNlcnZlcnxzcGVlZHl8Zmx1ZmZ5fGZpbmRsaW5rfG1zcmJvdHxwYW5zY2llbnR8eWFjeWJvdHxBSVNlYXJjaEJvdHxpcHMtYWdlbnR8dGFnb29ib3R8TUoxMmJvdHx3b3Jpb2JvdHx5YW5nYXxidXp6Ym90fG1sYm90fFlhbmRleEJvdHxZYW5kZXhJbWFnZXN8WWFuZGV4QWNjZXNzaWJpbGl0eUJvdHxZYW5kZXhNb2JpbGVCb3R8WWFuZGV4TWV0cmlrYXxZYW5kZXhUdXJib3xZYW5kZXhJbWFnZVJlc2l6ZXJ8WWFuZGV4VmlkZW98WWFuZGV4QWROZXR8WWFuZGV4QmxvZ3N8WWFuZGV4Q2FsZW5kYXJ8WWFuZGV4RGlyZWN0fFlhbmRleEZhdmljb25zfFlhRGlyZWN0RmV0Y2hlcnxZYW5kZXhGb3JEb21haW58WWFuZGV4TWFya2V0fFlhbmRleE1lZGlhfFlhbmRleE1vYmlsZVNjcmVlblNob3RCb3R8WWFuZGV4TmV3c3xZYW5kZXhPbnRvREJ8WWFuZGV4UGFnZWNoZWNrZXJ8WWFuZGV4UGFydG5lcnxZYW5kZXhSQ0F8WWFuZGV4U2VhcmNoU2hvcHxZYW5kZXhTaXRlbGlua3N8WWFuZGV4U3ByYXZCb3R8WWFuZGV4VHJhY2tlcnxZYW5kZXhWZXJ0aXN8WWFuZGV4VmVydGljYWxzfFlhbmRleFdlYm1hc3RlcnxZYW5kZXhTY3JlZW5zaG90Qm90fHB1cmVib3R8TGluZ3VlZSBCb3R8Q3liZXJQYXRyb2x8dm9pbGFib3R8QmFpZHVzcGlkZXJ8Y2l0ZXNlZXJ4Ym90fHNwYm90fHR3ZW5nYWJvdHxwb3N0cmFua3xUdXJuaXRpbkJvdHxzY3JpYmRib3R8cGFnZTJyc3N8c2l0ZWJvdHxsaW5rZGV4fEFkaWR4Ym90fGV6b29tc3xkb3Rib3R8TWFpbC5SVV9Cb3R8ZGlzY29ib3R8aGVyaXRyaXh8ZmluZHRoYXRmaWxlfGV1cm9wYXJjaGl2ZS5vcmd8TmVyZEJ5TmF0dXJlLkJvdHxzaXN0cml4IGNyYXdsZXJ8QWhyZWZzKEJvdHxTaXRlQXVkaXQpfGZ1ZWxib3R8Q3J1bmNoQm90fEluZGVlZEJvdHxtYXBweWRhdGF8d29vYm90fFpvb21pbmZvQm90fFByaXZhY3lBd2FyZUJvdHxNdWx0aXZpZXdib3R8U1dJTUdCb3R8R3JvYmJvdHxlcmlnaHR8QXBlcmNpdGV8c2VtYW50aWNib3R8QWJvdW5kZXh8ZG9tYWluY3Jhd2xlcnx3YnNlYXJjaGJvdHxzdW1taWZ5fENDQm90fGVkaXN0ZXJib3R8c2V6bmFtYm90fGVjMmxpbmtmaW5kZXJ8Z3NsZmJvdHxhaUhpdEJvdHxpbnRlbGl1bV9ib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxZZXRpfFJldHJldm9QYWdlQW5hbHl6ZXJ8bGItc3BpZGVyfFNvZ291fGxzc2JvdHxjYXJlZXJib3R8d290Ym94fHdvY2JvdHxpY2hpcm98RHVja0R1Y2tCb3R8bHNzcm9ja2V0Y3Jhd2xlcnxkcnVwYWN0fHdlYmNvbXBhbnljcmF3bGVyfGFjb29uYm90fG9wZW5
1pbmRleHNwaWRlcnxnbmFtIGduYW0gc3BpZGVyfHdlYi1hcmNoaXZlLW5ldC5jb20uYm90fGJhY2tsaW5rY3Jhd2xlcnxjb2Njb2N8aW50ZWdyb21lZGJ8Y29udGVudCBjcmF3bGVyIHNwaWRlcnx0b3BsaXN0Ym90fGl0Mm1lZGlhLWRvbWFpbi1jcmF3bGVyfGlwLXdlYi1jcmF3bGVyLmNvbXxzaXRlZXhwbG9yZXIuaW5mb3xlbGlzYWJvdHxwcm94aW1pY3xjaGFuZ2VkZXRlY3Rpb258YXJhYm90fFdlU0VFOlNlYXJjaHxuaWtpLWJvdHxDcnlzdGFsU2VtYW50aWNzQm90fHJvZ2VyYm90fDM2MFNwaWRlcnxwc2JvdHxJbnRlcmZheFNjYW5Cb3R8Q0MgTWV0YWRhdGEgU2NhcGVyfGcwMGcxZS5uZXR8R3JhcGVzaG90Q3Jhd2xlcnx1cmxhcHBlbmRib3R8YnJhaW5vYm90fGZyLWNyYXdsZXJ8YmlubGFyfFNpbXBsZUNyYXdsZXJ8VHdpdHRlcmJvdHxjWGVuc2Vib3R8c210Ym90fGJuZi5mcl9ib3R8QTYtSW5kZXhlcnxBRG1hbnRYfEZhY2Vib3R8T3JhbmdlQm90XFwvfG1lbW9yeWJvdHxBZHZCb3R8TWVnYUluZGV4fFNlbWFudGljU2Nob2xhckJvdHxsdHg3MXxuZXJkeWJvdHx4b3ZpYm90fEJVYmlOR3xRd2FudGlmeXxhcmNoaXZlLm9yZ19ib3R8QXBwbGVib3R8VHdlZXRtZW1lQm90fGNyYXdsZXI0anxmaW5keGJvdHxTW2VFXVttTV1ydXNoQm90fHlvb3pCb3R8bGlwcGVyaGV5fFkhSnxEb21haW4gUmUtQW5pbWF0b3IgQm90fEFkZFRoaXN8U2NyZWFtaW5nIEZyb2cgU0VPIFNwaWRlcnxNZXRhVVJJfFNjcmFweXxMaXZlbGFwW2JCXW90fE9wZW5Ib3NlQm90fENhcHN1bGVDaGVja2VyfGNvbGxlY3Rpb25AaW5mZWd5LmNvbXxJc3RlbGxhQm90fERldVN1XFwvfGJldGFCb3R8Q2xpcXpib3RcXC98TW9qZWVrQm90XFwvfG5ldEVzdGF0ZSBORSBDcmF3bGVyfFNhZmVTZWFyY2ggbWljcm9kYXRhIGNyYXdsZXJ8R2x1dGVuIEZyZWUgQ3Jhd2xlclxcL3xTb25pY3xTeXNvbW9zfFRyb3ZlfGRlYWRsaW5rY2hlY2tlcnxTbGFjay1JbWdQcm94eXxFbWJlZGx5fFJhbmtBY3RpdmVMaW5rQm90fGlza2FuaWV8U2FmZUROU0JvdHxTa3lwZVVyaVByZXZpZXd8VmVvb3pib3R8U2xhY2tib3R8cmVkZGl0Ym90fGRhdGFnbmlvbmJvdHxHb29nbGUtQWR3b3Jkcy1JbnN0YW50fGFkYmVhdF9ib3R8V2hhdHNBcHB8Y29udHhib3R8cGludGVyZXN0LmNvbS5ib3R8ZWxlY3RyaWNtb25rfEdhcmxpa0NyYXdsZXJ8QmluZ1ByZXZpZXdcXC98dmViaWRvb2JvdHxGZW10b3NlYXJjaEJvdHxZYWhvbyBMaW5rIFByZXZpZXd8TWV0YUpvYkJvdHxEb21haW5TdGF0c0JvdHxtaW5kVXBCb3R8RGF1bVxcL3xKdWdlbmRzY2h1dHpwcm9ncmFtbS1DcmF3bGVyfFhlbnUgTGluayBTbGV1dGh8UGNvcmUtSFRUUHxtb2F0Ym90fEtvc21pb0JvdHxwaW5nZG9tfEFwcEluc2lnaHRzfFBoYW50b21KU3xHb3dpa2lib3R8UGlwbEJvdHxEaXNjb3JkYm90fFRlbGVncmFtQm90fEpldHNsaWRlfG5ld3NoYXJlY291bnRzfEphbWVzIEJPVHxCYXJrW3JSXW93bGVyfFRpbkV5ZXxTb2NpYWxSYW5rSU9Cb3R8dHJlbmRpY3Rpb25ib3R8T2NhcmluYWJvdHxlcGljYm90fFByaW1hbGJvdHxEdWNrRHVja0dvLUZhdmljb25zLUJvdHxHbm93aXROZXdzYm90fExlaWtpYm90fExpbmtBcmNoaXZlcnxZYUtcXC98UGFwZXJMaUJvdHxEaWdnIERlZXBlcnxkY3Jhd2x8U25hY2t0b3J5fEFuZGVyc1BpbmtCb3R8RnlyZWJvdHxFdmVyeW9uZVNvY2lhbEJvdHxNZWRpYXRvb2xraXRib3R8THVtaW5hdG9yLXJvYm90c3xFeHRMaW5rc0JvdHxTdXJ2ZXlCb3R8TklOR1xcL3xva2h0dHB8TnV6emVsfG9tZ2lsaXxQb2NrZXRQYXJzZXJ8WWlzb3VTcGlkZXJ8dW0tTE58VG91dGlhb1NwaWRlcnxNdWNrUmFja3xKYW1pZSdzIFNwaWRlcnxBSENcXC98TmV0Y3JhZnRTdXJ2ZXlBZ2VudHxMYXNlcmxpa2Vib3R8XkFwYWNoZS1IdHRwQ2xpZW50fEFwcEVuZ2luZS1Hb29nbGV8SmV0dHl8VXBmbG93fFRoaW5rbGFifFRyYWFja3IuY29tfFR3dXJseXxNYXN0b2RvbnxodHRwX2dldHxEbnl6Qm90fGJvdGlmeXwwMDdhYzkgQ3Jhd2xlcnxCZWhsb29sQm90fEJyYW5kVmVyaXR5fGNoZWNrX2h0dHB8QkRDYm90fFp1bUJvdHxFWklEfElDQy1DcmF3bGVyfEFyY2hpdmVCb3R8XkxDQyB8ZmlsdGVyZGIuaXNzLm5ldFxcL2NyYXdsZXJ8QkxQX2Jib3R8Qm9tYm9yYUJvdHxCdWNrXFwvfENvbXBhbnlib29rLUNyYXdsZXJ8R2VuaWVvfG1hZ3BpZS1jcmF3bGVyfE1lbHR3YXRlck5ld3N8TW9yZW92ZXJ8bmV3c3BhcGVyXFwvfFNjb3V0SmV0fChefCApc2VudHJ5XFwvfFN0b3J5Z2l6ZUJvdHxVcHRpbWVSb2JvdHxPdXRjbGlja3NCb3R8c2Vvc2Nhbm5lcnN8SGF0ZW5hfEdvb2dsZSBXZWIgUHJldmlld3xNYXVpQm90fEFscGhhQm90fFNCTC1CT1R8SUFTIGNyYXdsZXJ8YWRzY2FubmVyfE5ldHZpYmVzfGFjYXBib3R8QmFpZHUtWXVuR3VhbkNlfGJpdGx5Ym90fGJsb2dtdXJhQm90fEJvdC5BcmFUdXJrYS5jb218Ym90LXBnZS5jaGxvb2UuY29tfEJveGNhckJvdHxCVFdlYkNsaWVudHxDb250ZXh0QWQgQm90fERpZ2luY29yZSBib3R8RGlzcXVzfEZlZWRseXxGZXRjaFxcL3xGZXZlcnxGbGFtaW5nb19TZWFyY2hFbmdpbmV8RmxpcGJvYXJkUHJveHl8ZzJyZWFkZXItYm90fEcyIFdlYiBTZXJ2aWNlc3xpbXJib3R8SzdNTFdDQm90fEtlbXZpYm90fExhbmRhdS1NZWRpYS1TcGlkZXJ8bGlua2FwZWRpYWJvdHx2a1NoYXJlfFNpdGVpbXByb3ZlLmNvbXxCTEVYQm90XFwvfERhcmVCb29zdHxadXBlcmxpc3RCb3RcXC98TWluaWZsdXhcXC98RmVlZHNwb3R8RGlmZmJvdFxcL3xTRU9raWNrc3x0cmFjZW15ZmlsZXxOaW1ib3N0cmF0dXMtQm90fHpncmFifFBSLUNZLlJVfEFkc1R4dENyYXdsZXJ8RGF0YWZlZWR3YXRjaHxaYWJiaXh8VGFuZ2libGVlQm90fGdvb2dsZS14cmF3bGVyfGF4aW9zfFB1bHNlcG9pbnR8Q2xvdWRGbGFyZS1BbHdheXNPbmxpbmV8R29vZ2xlLVN0cnVjdHVyZWQtRGF0YS1UZXN0aW5nLVRvb2x8V29yZHVwSW5mb1NlYXJjaHxXZWJEYXRhU3RhdHN8SHR0cFVybENvbm5lY3Rpb258U2Vla3BvcnQgQ3Jhd2xlcnxab29tQm90fFZlbGVuUHVibGljV2ViQ3Jhd2xlcnxNb29kbGVCb3R8anBnLW5ld3Nib3R8b3V0YnJhaW58VzNDX1ZhbGlkYXRvcnxWYWxpZGF0b3JcXC5udXxXM0MtY2hlY2tsaW5rfFczQy1tb2JpbGVPS3xXM0NfSTE4bi1DaGVja2VyfEZlZWRWYWxpZGF0b3J8VzNDX0NTU19WYWxpZGF0b3J8VzNDX1VuaWNvcm58R29vZ2xlLVBoeXNpY2FsV2VifEJsYWNrYm9hcmR8SUNCb3RcXC98QmF6UXV4fFR3aW5nbHl8Uml2dmF8RXhwZXJpYm90fGF3ZXNvbWVjcmF3bGVyfERhdGFwcm92aWRlci5jb218R3JvdXB
1IaWdoXFwvfHRoZW9sZHJlYWRlci5jb218QW55RXZlbnR8VXB0aW1lYm90XFwub3JnfE5tYXAgU2NyaXB0aW5nIEVuZ2luZXwyaXAucnV8Q2xpY2thZ3l8Q2FsaXBlcmJvdHxNQkNyYXdsZXJ8b25saW5lLXdlYmNlby1ib3R8QjJCIEJvdHxBZGRTZWFyY2hCb3R8R29vZ2xlIEZhdmljb258SHViU3BvdHxDaHJvbWUtTGlnaHRob3VzZXxIZWFkbGVzc0Nocm9tZXxDaGVja01hcmtOZXR3b3JrXFwvfHd3d1xcLnVwdGltZVxcLmNvbXxTdHJlYW1saW5lM0JvdFxcL3xzZXJwc3RhdGJvdFxcL3xNaXhub2RlQ2FjaGVcXC98XmN1cmx8U2ltcGxlU2NyYXBlcnxSU1NpbmdCb3R8Sm9vYmxlYm90fGZlZG9yYXBsYW5ldHxGcmllbmRpY2F8TmV4dENsb3VkfFRpbnkgVGlueSBSU1N8UmVnaW9uU3R1dHRnYXJ0Qm90fEJ5dGVzcGlkZXJ8RGF0YW55emV8R29vZ2xlLVNpdGUtVmVyaWZpY2F0aW9ufFRyZW5kc21hcFJlc29sdmVyfHR3ZWV0ZWR0aW1lc3xOVEVOVGJvdHxHd2VuZXxTaW1wbGVQaWV8U2VhcmNoQXRsYXN8U3VwZXJmZWVkcnxmZWVkYm90fFVULURvcmtib3R8QW1hem9uYm90fFNlcmVuZGVwdXR5Qm90fEV5ZW90YWJvdHxvZmZpY2VzdG9yZWJvdHxOZXRpY2xlIENyYXdsZXJ8U3VyZG90bHlCb3R8TGlua2lzQm90fEF3YXJpb1NtYXJ0Qm90fEF3YXJpb1Jzc0JvdHxSeXRlQm90fEZyZWVXZWJNb25pdG9yaW5nIFNpdGVDaGVja2VyfEFzcGllZ2VsQm90fE5BVkVSIEJsb2cgUnNzYm90fHplbmJhY2sgYm90fFNlbnRpQm90fERvbWFpbnMgUHJvamVjdFxcL3xQYW5kYWx5dGljc3xWS1JvYm90fGJpZHN3aXRjaGJvdHx0aWdlcmJvdHxOSVhTdGF0c2JvdHxBdG9tIEZlZWQgUm9ib3R8Q3VyZWJvdHxQYWdlUGVla2VyXFwvfFZpZ2lsXFwvfHJzc2JvdFxcL3xzdGFydG1lYm90XFwvfEpvYmJvZXJzZUJvdHxzZWV3aXRoa2lkc3xOSU5KQSBib3R8Q3V0Ym90fEJ1Ymx1cEJvdHxCcmFuZE9OYm90fFJpZGRlckJvdHxUYWJvb2xhYm90fER1YmJvdGJvdHxGaW5kSVRBbnN3ZXJzYm90fGluZm9vYm90fFJlZmluZGJvdHxCbG9nVHJhZmZpY1xcL1xcZFxcLlxcZCsgRmVlZC1GZXRjaGVyfFNlb2JpbGl0eUJvdHxDaW5jcmF3fERyYWdvbmJvdHxWb2x1dW1EU1AtY29udGVudC1ib3R8RnJlc2hSU1N8Qml0Qm90fF5QSFAtQ3VybC1DbGFzc3xHb29nbGUtQ2VydGlmaWNhdGVzLUJyaWRnZS9cblxuZnVuY3Rpb24gaXNNb2JpbGVPclRhYmxldCAoYSkge1xuICByZXR1cm4gUkVHRVhfTU9CSUxFX09SX1RBQkxFVDEudGVzdChhKSB8fCBSRUdFWF9NT0JJTEVfT1JfVEFCTEVUMi50ZXN0KGEuc3Vic3RyKDAsIDQpKVxufVxuXG5mdW5jdGlvbiBpc0lvcyAoYSkge1xuICByZXR1cm4gL2lQYWR8aVBob25lfGlQb2QvLnRlc3QoYSlcbn1cblxuZnVuY3Rpb24gaXNBbmRyb2lkIChhKSB7XG4gIHJldHVybiAvYW5kcm9pZC9pLnRlc3QoYSlcbn1cblxuZnVuY3Rpb24gaXNXaW5kb3dzIChhKSB7XG4gIHJldHVybiAvV2luZG93cy8udGVzdChhKVxufVxuXG5mdW5jdGlvbiBpc01hY09TIChhKSB7XG4gIHJldHVybiAvTWFjIE9TIFgvLnRlc3QoYSlcbn1cblxuLy8gRm9sbG93aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIG9yaWdpbmF0ZWQgZnJvbSBib3dzZXIoaHR0cHM6Ly9naXRodWIuY29tL2xhbmNlZGlrc29uL2Jvd3NlcikuXG4vLyBDb3B5cmlnaHQgMjAxNSwgRHVzdGluIERpYXogKHRoZSBcIk9yaWdpbmFsIEF1dGhvclwiKVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2xhbmNlZGlrc29uL2Jvd3Nlci9ibG9iL21hc3Rlci9MSUNFTlNFXG5jb25zdCBicm93c2VycyA9IFtcbiAge25hbWU6ICdTYW1zdW5nJywgdGVzdDogL1NhbXN1bmdCcm93c2VyL2kgfSxcbiAge25hbWU6ICdFZGdlJywgdGVzdDogL2VkZyhbZWFdfGlvc3wpXFwvL2kgfSxcbiAge25hbWU6ICdGaXJlZm94JywgdGVzdDogL2ZpcmVmb3h8aWNld2Vhc2VsfGZ4aW9zL2kgfSxcbiAge25hbWU6ICdDaHJvbWUnLCB0ZXN0OiAvY2hyb21lfGNyaW9zfGNybW8vaSB9LFxuICB7bmFtZTogJ1NhZmFyaScsIHRlc3Q6IC9zYWZhcml8YXBwbGV3ZWJraXQvaSB9XG5dXG5cbmZ1bmN0aW9uIGdldEJyb3dzZXJOYW1lKGEpIHtcbiAgZm9yIChsZXQgYiBvZiBicm93c2Vycykge1xuICAgIGlmIChiLnRlc3QudGVzdChhKSkge1xuICAgICAgcmV0dXJuIGIubmFtZVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBERUZBVUxUX1VTRVJfQUdFTlQgPSAnTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTNfMikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzY0LjAuMzI4Mi4zOSBTYWZhcmkvNTM3LjM2J1xuY29uc3QgUkVGUkVTSF9PTl9SRVNJWkUgPSB0cnVlXG5cbmZ1bmN0aW9uIGV4dHJhY3REZXZpY2VzIChjdHgsIHVzZXJBZ2VudCA9IERFRkFVTFRfVVNFUl9BR0VOVCkge1xuICBsZXQgbW9iaWxlID0gbnVsbFxuICBsZXQgbW9iaWxlT3JUYWJsZXQgPSBudWxsXG4gIGxldCBpb3MgPSBudWxsXG4gIGxldCBhbmRyb2lkID0gbnVsbFxuXG4gIGlmICh1c2VyQWdlbnQgPT09ICdBbWF6b24gQ2xvdWRGcm9udCcpIHtcbiAgICBpZiAoY3R4LnJlcS5oZWFkZXJzWydjbG91ZGZyb250LWlzLW1vYmlsZS12aWV3ZXInXSA9PT0gJ3RydWUnKSB7XG4gICAgICBtb2JpbGUgPSB0cnVlXG4gICAgICBtb2JpbGVPclRhYmxldCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGN0eC5yZXEuaGVhZGVyc1snY2xvdWRmcm9udC1pcy10YWJsZXQtdmlld2VyJ10gPT09ICd0cnVlJykge1xuICAgICAgbW9iaWxlID0gZmFsc2VcbiAgICAgIG1vYmlsZU9yVGFibGV0ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoY3R4LnJlcS5oZWFkZXJzWydjbG91ZGZyb250LWlzLWRlc2t0b3Atdmlld2VyJ10gPT09ICd0cnVlJykge1xuICAgICAgbW9iaWxlID0gZmFsc2VcbiAgICAgIG1vYmlsZU9yVGFibGV0ID0gZmFsc2VcbiAgICB9XG4gICAgaWYgKGN0eC5yZXEuaGVhZGVyc1snY2xvdWRmcm9udC1pcy1pb3Mtdmlld2VyJ10gPT09ICd0cnVlJykge1xuICAgICAgaW9zID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoY3R4LnJlcS5oZWFkZXJzWydjbG91ZGZyb250LWlzLWFuZHJvaWQtdmlld2VyJ10gPT09ICd0cnVlJykge1xuICAgICAgYW5kcm9pZCA9IHRydWVcbiAgICB9XG4gI
1H0gZWxzZSBpZiAoY3R4LnJlcSAmJiBjdHgucmVxLmhlYWRlcnNbJ2NmLWRldmljZS10eXBlJ10pIHsgLy8gQ2xvdWRmbGFyZVxuICAgIHN3aXRjaCAoY3R4LnJlcS5oZWFkZXJzWydjZi1kZXZpY2UtdHlwZSddKSB7XG4gICAgICBjYXNlICdtb2JpbGUnOlxuICAgICAgICBtb2JpbGUgPSB0cnVlXG4gICAgICAgIG1vYmlsZU9yVGFibGV0ID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGFibGV0JzpcbiAgICAgICAgbW9iaWxlID0gZmFsc2VcbiAgICAgICAgbW9iaWxlT3JUYWJsZXQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkZXNrdG9wJzpcbiAgICAgICAgbW9iaWxlID0gZmFsc2VcbiAgICAgICAgbW9iaWxlT3JUYWJsZXQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtb2JpbGUgPSBpc01vYmlsZSh1c2VyQWdlbnQpXG4gICAgbW9iaWxlT3JUYWJsZXQgPSBpc01vYmlsZU9yVGFibGV0KHVzZXJBZ2VudClcbiAgICBpb3MgPSBpc0lvcyh1c2VyQWdlbnQpXG4gICAgYW5kcm9pZCA9IGlzQW5kcm9pZCh1c2VyQWdlbnQpXG4gIH1cbiAgY29uc3Qgd2luZG93cyA9IGlzV2luZG93cyh1c2VyQWdlbnQpXG4gIGNvbnN0IG1hY09TID0gaXNNYWNPUyh1c2VyQWdlbnQpXG4gIGNvbnN0IGJyb3dzZXJOYW1lID0gZ2V0QnJvd3Nlck5hbWUodXNlckFnZW50KVxuICBjb25zdCBpc1NhZmFyaSA9IGJyb3dzZXJOYW1lID09PSAnU2FmYXJpJ1xuICBjb25zdCBpc0ZpcmVmb3ggPSBicm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnXG4gIGNvbnN0IGlzRWRnZSA9IGJyb3dzZXJOYW1lID09PSAnRWRnZSdcbiAgY29uc3QgaXNDaHJvbWUgPSBicm93c2VyTmFtZSA9PT0gJ0Nocm9tZSdcbiAgY29uc3QgaXNTYW1zdW5nID0gYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nJ1xuICBjb25zdCBpc0NyYXdsZXIgPSBSRUdFWF9DUkFXTEVSLnRlc3QodXNlckFnZW50KVxuXG4gIHJldHVybiB7IG1vYmlsZSwgbW9iaWxlT3JUYWJsZXQsIGlvcywgYW5kcm9pZCwgd2luZG93cywgbWFjT1MsIGlzU2FmYXJpLCBpc0ZpcmVmb3gsIGlzRWRnZSwgaXNDaHJvbWUsIGlzU2Ftc3VuZywgaXNDcmF3bGVyIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKGN0eCwgaW5qZWN0KSB7XG4gIGNvbnN0IG1ha2VGbGFncyA9ICgpID0+IHtcbiAgICBsZXQgdXNlckFnZW50ID0gJydcbiAgICBpZiAodHlwZW9mIGN0eC5yZXEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB1c2VyQWdlbnQgPSBjdHgucmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICB9XG4gICAgY29uc3QgeyBtb2JpbGUsIG1vYmlsZU9yVGFibGV0LCBpb3MsIGFuZHJvaWQsIHdpbmRvd3MsIG1hY09TLCBpc1NhZmFyaSwgaXNGaXJlZm94LCBpc0VkZ2UsIGlzQ2hyb21lLCBpc1NhbXN1bmcsIGlzQ3Jhd2xlciB9ID0gZXh0cmFjdERldmljZXMoY3R4LCB1c2VyQWdlbnQpXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJBZ2VudCxcbiAgICAgIGlzTW9iaWxlOiBtb2JpbGUsXG4gICAgICBpc01vYmlsZU9yVGFibGV0OiBtb2JpbGVPclRhYmxldCxcbiAgICAgIGlzVGFibGV0OiAhbW9iaWxlICYmIG1vYmlsZU9yVGFibGV0LFxuICAgICAgaXNEZXNrdG9wOiAhbW9iaWxlT3JUYWJsZXQsXG4gICAgICBpc0lvczogaW9zLFxuICAgICAgaXNBbmRyb2lkOiBhbmRyb2lkLFxuICAgICAgaXNXaW5kb3dzOiB3aW5kb3dzLFxuICAgICAgaXNNYWNPUzogbWFjT1MsXG4gICAgICBpc0Rlc2t0b3BPclRhYmxldDogIW1vYmlsZSxcbiAgICAgIGlzU2FmYXJpLFxuICAgICAgaXNGaXJlZm94LFxuICAgICAgaXNFZGdlLFxuICAgICAgaXNDaHJvbWUsXG4gICAgICBpc1NhbXN1bmcsXG4gICAgICBpc0NyYXdsZXJcbiAgICB9XG4gIH1cbiAgY29uc3QgZmxhZ3MgPSBtYWtlRmxhZ3MoY3R4KVxuICBpZiAoUkVGUkVTSF9PTl9SRVNJWkUgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpbmplY3QoJ2RldmljZScsIFZ1ZS5vYnNlcnZhYmxlKGZsYWdzKSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0ZsYWdzID0gbWFrZUZsYWdzKGN0eClcbiAgICAgICAgZm9yIChsZXQga2V5IGluIG5ld0ZsYWdzKSB7XG4gICAgICAgICAgY3R4LiRkZXZpY2Vba2V5XSA9IG5ld0ZsYWdzW2tleV1cbiAgICAgICAgfVxuICAgICAgfSwgNTApXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBpbmplY3QoJ2RldmljZScsIGZsYWdzKVxuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoY3R4LCBpbmplY3QpIHtcbiAgY29uc3QgaWNvbnMgPSB7XCI2NHg2NFwiOlwiL19udXh0L2ljb25zL2ljb25fNjR4NjQuM2RkYTU3LnBuZ1wiLFwiMTIweDEyMFwiOlwiL19udXh0L2ljb25zL2ljb25fMTIweDEyMC4zZGRhNTcucG5nXCIsXCIxNDR4MTQ0XCI6XCIvX251eHQvaWNvbnMvaWNvbl8xNDR4MTQ0LjNkZGE1Ny5wbmdcIixcIjE1MngxNTJcIjpcIi9fbnV4dC9pY29ucy9pY29uXzE1MngxNTIuM2RkYTU3LnBuZ1wiLFwiMTkyeDE5MlwiOlwiL19udXh0L2ljb25zL2ljb25fMTkyeDE5Mi4zZGRhNTcucG5nXCIsXCIzODR4Mzg0XCI6XCIvX251eHQvaWNvbnMvaWNvbl8zODR4Mzg0LjNkZGE1Ny5wbmdcIixcIjUxMng1MTJcIjpcIi9fbnV4dC9pY29ucy9pY29uXzUxMng1MTIuM2RkYTU3LnBuZ1wiLFwiaXBhZF8xNTM2eDIwNDhcIjpcIi9fbnV4dC9pY29ucy9zcGxhc2hfaXBhZF8xNTM2eDIwNDguM2RkYTU3LnBuZ1wiLFwiaXBhZHBybzlfMTUzNngyMDQ4XCI6XCIvX251eHQvaWNvbnMvc3BsYXNoX2lwYWRwcm85XzE1MzZ4MjA0OC4zZGRhNTcucG5nXCIsXCJpcGFkcHJvMTBfMTY2OHgyMjI0XCI6XCIvX251eHQvaWNvbnMvc3BsYXNoX2lwYWRwcm8xMF8xNjY4eDIyMjQuM2RkYTU3LnBuZ1wiLFwiaXBhZHBybzEyXzIwNDh4MjczMlwiOlwiL19udXh0L2ljb25zL3NwbGFzaF9pcGFkcHJvMTJfMjA0OHgyNzMyLjNkZGE1Ny5wbmdcIixcImlwaG9uZXNlXzY0MHgxMTM2XCI6XCIvX251eHQvaWNvbnMvc3BsYXNoX2lwaG9uZXNlXzY0MHgxMTM2LjNkZGE1Ny5wbmdcIixcImlwaG9uZTZfNTB4MTMzNFwiOlwiL19udXh0L2ljb25zL3NwbGFzaF9pcGhvbmU2XzUweDEzMzQuM2RkYTU3LnBuZ1wiLFwiaXBob25lcGx1c18xMDgweDE5MjBcIjpcIi9fbnV4dC9pY29ucy9zcGxhc2hfaXBob25lcGx1c18xMDgweDE5MjAuM2RkYTU3LnBuZ1wiLFwiaXBob25leF8xMTI1eDI0MzZcIjpcIi9fbnV4dC9pY29ucy9zcGxhc2hfaXBob25leF8xMTI1eDI0MzYuM2RkYTU3LnBuZ1wiLFwiaXBob25leHJfODI4eDE3OTJcIjpcIi9fbnV4dC9pY29ucy9zcGxhc2hfaXBob25leHJfODI4eDE3OTIuM2RkYTU3LnBuZ1wiLFwiaXBob25leHNtYXhfMTI0MngyNjg4XCI6XCIvX251eHQvaWNvbnMvc3BsYXNoX2lwaG9uZXhzbWF4XzEyNDJ4MjY4OC4zZGRhNTcucG5nXCJ9XG4gIGNvbnN0IGdldEljb24gPSBzaXplID0+IGljb25zW3NpemUgKyAneCcgKyBzaXplXSB8fCAnJ1xuICBpbmplY3QoJ2ljb24nLCBnZXRJY29uKVxufVxuIiwiaW1wb3J0IEF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IGRlZnUgZnJvbSAnZGVmdSdcblxuLy8gQXhpb3MucHJvdG90eXBlIGNhbm5vdCBiZSBtb2RpZmllZFxuY29uc3QgYXhpb3NFeHRyYSA9IHtcbiAgc2V0QmFzZVVSTCAoYmFzZVVSTCkge1xuICAgIHRoaXMuZGVmYXVsdHMuYmFzZVVSTCA9IGJhc2VVUkxcbiAgfSxcbiAgc2V0SGVhZGVyIChuYW1lLCB2YWx1ZSwgc2NvcGVzID0gJ2NvbW1vbicpIHtcbiAgICBmb3IgKGNvbnN0IHNjb3BlIG9mIEFycmF5LmlzQXJyYXkoc2NvcGVzKSA/IHNjb3BlcyA6IFsgc2NvcGVzIF0pIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGVmYXVsdHMuaGVhZGVyc1tzY29wZV1bbmFtZV07XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICB0aGlzLmRlZmF1bHRzLmhlYWRlcnNbc2NvcGVdW25hbWVdID0gdmFsdWVcbiAgICB9XG4gI
1H0sXG4gIHNldFRva2VuICh0b2tlbiwgdHlwZSwgc2NvcGVzID0gJ2NvbW1vbicpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICF0b2tlbiA/IG51bGwgOiAodHlwZSA/IHR5cGUgKyAnICcgOiAnJykgKyB0b2tlblxuICAgIHRoaXMuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgdmFsdWUsIHNjb3BlcylcbiAgfSxcbiAgb25SZXF1ZXN0KGZuKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoY29uZmlnID0+IGZuKGNvbmZpZykgfHwgY29uZmlnKVxuICB9LFxuICBvblJlc3BvbnNlKGZuKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKHJlc3BvbnNlID0+IGZuKHJlc3BvbnNlKSB8fCByZXNwb25zZSlcbiAgfSxcbiAgb25SZXF1ZXN0RXJyb3IoZm4pIHtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZSh1bmRlZmluZWQsIGVycm9yID0+IGZuKGVycm9yKSB8fCBQcm9taXNlLnJlamVjdChlcnJvcikpXG4gIH0sXG4gIG9uUmVzcG9uc2VFcnJvcihmbikge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSh1bmRlZmluZWQsIGVycm9yID0+IGZuKGVycm9yKSB8fCBQcm9taXNlLnJlamVjdChlcnJvcikpXG4gIH0sXG4gIG9uRXJyb3IoZm4pIHtcbiAgICB0aGlzLm9uUmVxdWVzdEVycm9yKGZuKVxuICAgIHRoaXMub25SZXNwb25zZUVycm9yKGZuKVxuICB9LFxuICBjcmVhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBjcmVhdGVBeGlvc0luc3RhbmNlKGRlZnUob3B0aW9ucywgdGhpcy5kZWZhdWx0cykpXG4gIH1cbn1cblxuLy8gUmVxdWVzdCBoZWxwZXJzICgkZ2V0LCAkcG9zdCwgLi4uKVxuZm9yIChjb25zdCBtZXRob2Qgb2YgWydyZXF1ZXN0JywgJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10pIHtcbiAgYXhpb3NFeHRyYVsnJCcgKyBtZXRob2RdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpc1ttZXRob2RdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykudGhlbihyZXMgPT4gcmVzICYmIHJlcy5kYXRhKSB9XG59XG5cbmNvbnN0IGV4dGVuZEF4aW9zSW5zdGFuY2UgPSBheGlvcyA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIGF4aW9zRXh0cmEpIHtcbiAgICBheGlvc1trZXldID0gYXhpb3NFeHRyYVtrZXldLmJpbmQoYXhpb3MpXG4gIH1cbn1cblxuY29uc3QgY3JlYXRlQXhpb3NJbnN0YW5jZSA9IGF4aW9zT3B0aW9ucyA9PiB7XG4gIC8vIENyZWF0ZSBuZXcgYXhpb3MgaW5zdGFuY2VcbiAgY29uc3QgYXhpb3MgPSBBeGlvcy5jcmVhdGUoYXhpb3NPcHRpb25zKVxuICBheGlvcy5DYW5jZWxUb2tlbiA9IEF4aW9zLkNhbmNlbFRva2VuXG4gIGF4aW9zLmlzQ2FuY2VsID0gQXhpb3MuaXNDYW5jZWxcblxuICAvLyBFeHRlbmQgYXhpb3MgcHJvdG9cbiAgZXh0ZW5kQXhpb3NJbnN0YW5jZShheGlvcylcblxuICAvLyBJbnRlcmNlcHQgdG8gYXBwbHkgZGVmYXVsdCBoZWFkZXJzXG4gIGF4aW9zLm9uUmVxdWVzdCgoY29uZmlnKSA9PiB7XG4gICAgY29uZmlnLmhlYWRlcnMgPSB7IC4uLmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uLCAuLi5jb25maWcuaGVhZGVycyB9XG4gIH0pXG5cbiAgLy8gU2V0dXAgaW50ZXJjZXB0b3JzXG5cbiAgc2V0dXBQcm9ncmVzcyhheGlvcylcblxuICByZXR1cm4gYXhpb3Ncbn1cblxuY29uc3Qgc2V0dXBQcm9ncmVzcyA9IChheGlvcykgPT4ge1xuICBpZiAocHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIEEgbm9vcCBsb2FkaW5nIGludGV0ZXJmYWNlIGZvciB3aGVuICRudXh0IGlzIG5vdCB5ZXQgcmVhZHlcbiAgY29uc3Qgbm9vcExvYWRpbmcgPSB7XG4gICAgZmluaXNoOiAoKSA9PiB7IH0sXG4gICAgc3RhcnQ6ICgpID0+IHsgfSxcbiAgICBmYWlsOiAoKSA9PiB7IH0sXG4gICAgc2V0OiAoKSA9PiB7IH1cbiAgfVxuXG4gIGNvbnN0ICRsb2FkaW5nID0gKCkgPT4ge1xuICAgIGNvbnN0ICRudXh0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93WyckbnV4dCddXG4gICAgcmV0dXJuICgkbnV4dCAmJiAkbnV4dC4kbG9hZGluZyAmJiAkbnV4dC4kbG9hZGluZy5zZXQpID8gJG51eHQuJGxvYWRpbmcgOiBub29wTG9hZGluZ1xuICB9XG5cbiAgbGV0IGN1cnJlbnRSZXF1ZXN0cyA9IDBcblxuICBheGlvcy5vblJlcXVlc3QoY29uZmlnID0+IHtcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5wcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgI
1H1cblxuICAgIGN1cnJlbnRSZXF1ZXN0cysrXG4gIH0pXG5cbiAgYXhpb3Mub25SZXNwb25zZShyZXNwb25zZSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvbmZpZyAmJiByZXNwb25zZS5jb25maWcucHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjdXJyZW50UmVxdWVzdHMtLVxuICAgIGlmIChjdXJyZW50UmVxdWVzdHMgPD0gMCkge1xuICAgICAgY3VycmVudFJlcXVlc3RzID0gMFxuICAgICAgJGxvYWRpbmcoKS5maW5pc2goKVxuICAgIH1cbiAgfSlcblxuICBheGlvcy5vbkVycm9yKGVycm9yID0+IHtcbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29uZmlnICYmIGVycm9yLmNvbmZpZy5wcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGN1cnJlbnRSZXF1ZXN0cy0tXG5cbiAgICBpZiAoQXhpb3MuaXNDYW5jZWwoZXJyb3IpKSB7XG4gICAgICBpZiAoY3VycmVudFJlcXVlc3RzIDw9IDApIHtcbiAgICAgICAgY3VycmVudFJlcXVlc3RzID0gMFxuICAgICAgICAkbG9hZGluZygpLmZpbmlzaCgpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAkbG9hZGluZygpLmZhaWwoKVxuICAgICRsb2FkaW5nKCkuZmluaXNoKClcbiAgfSlcblxuICBjb25zdCBvblByb2dyZXNzID0gZSA9PiB7XG4gICAgaWYgKCFjdXJyZW50UmVxdWVzdHMgfHwgIWUudG90YWwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBwcm9ncmVzcyA9ICgoZS5sb2FkZWQgKiAxMDApIC8gKGUudG90YWwgKiBjdXJyZW50UmVxdWVzdHMpKVxuICAgICRsb2FkaW5nKCkuc2V0KE1hdGgubWluKDEwMCwgcHJvZ3Jlc3MpKVxuICB9XG5cbiAgYXhpb3MuZGVmYXVsdHMub25VcGxvYWRQcm9ncmVzcyA9IG9uUHJvZ3Jlc3NcbiAgYXhpb3MuZGVmYXVsdHMub25Eb3dubG9hZFByb2dyZXNzID0gb25Qcm9ncmVzc1xufVxuXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgLy8gcnVudGltZUNvbmZpZ1xuICBjb25zdCBydW50aW1lQ29uZmlnID0gY3R4LiRjb25maWcgJiYgY3R4LiRjb25maWcuYXhpb3MgfHwge31cbiAgLy8gYmFzZVVSTFxuICBjb25zdCBiYXNlVVJMID0gcHJvY2Vzcy5icm93c2VyXG4gICAgPyAocnVudGltZUNvbmZpZy5icm93c2VyQmFzZVVSTCB8fCBydW50aW1lQ29uZmlnLmJyb3dzZXJCYXNlVXJsIHx8IHJ1bnRpbWVDb25maWcuYmFzZVVSTCB8fCBydW50aW1lQ29uZmlnLmJhc2VVcmwgfHwgJ2h0dHBzOi8vbnhjLWFwaS40N3Roc3QuY29tOjQ0My8nKVxuICAgICAgOiAocnVudGltZUNvbmZpZy5iYXNlVVJMIHx8IHJ1bnRpbWVDb25maWcuYmFzZVVybCB8fCBwcm9jZXNzLmVudi5fQVhJT1NfQkFTRV9VUkxfIHx8ICdodHRwczovL254Yy1hcGkuNDd0aHN0LmNvbTo0NDMvJylcblxuICAvLyBDcmVhdGUgZnJlc2ggb2JqZWN0cyBmb3IgYWxsIGRlZmF1bHQgaGVhZGVyIHNjb3Blc1xuICAvLyBBeGlvcyBjcmVhdGVzIG9ubHkgb25lIHdoaWNoIGlzIHNoYXJlZCBhY3Jvc3MgU1NSIHJlcXVlc3RzIVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbXphYnJpc2tpZS9heGlvcy9ibG9iL21hc3Rlci9saWIvZGVmYXVsdHMuanNcbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBcImNvbW1vblwiOiB7XG4gICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qXCJcbiAgICB9LFxuICAgIFwiZGVsZXRlXCI6IHt9LFxuICAgIFwiZ2V0XCI6IHt9LFxuICAgIFwiaGVhZFwiOiB7fSxcbiAgICBcInBvc3RcIjoge30sXG4gICAgXCJwdXRcIjoge30sXG4gICAgXCJwYXRjaFwiOiB7fVxufVxuXG4gIGNvbnN0IGF4aW9zT3B0aW9ucyA9IHtcbiAgICBiYXNlVVJMLFxuICAgIGhlYWRlcnNcbiAgfVxuXG4gIC8vIFByb3h5IFNTUiByZXF1ZXN0IGhlYWRlcnMgaGVhZGVyc1xuICBpZiAocHJvY2Vzcy5zZXJ2ZXIgJiYgY3R4LnJlcSAmJiBjdHgucmVxLmhlYWRlcnMpIHtcbiAgICBjb25zdCByZXFIZWFkZXJzID0geyAuLi5jdHgucmVxLmhlYWRlcnMgfVxuICAgIGZvciAoY29uc3QgaCBvZiBbXCJhY2NlcHRcIixcImNmLWNvbm5lY3RpbmctaXBcIixcImNmLXJheVwiLFwiY29udGVudC1sZW5ndGhcIixcImNvbnRlbnQtbWQ1XCIsXCJjb250ZW50LXR5cGVcIixcImhvc3RcIixcIngtZm9yd2FyZGVkLWhvc3RcIixcIngtZm9yd2FyZGVkLXBvcnRcIixcIngtZm9yd2FyZGVkLXByb3RvXCJdKSB7XG4gICAgICBkZWxldGUgcmVxSGVhZGVyc1toXVxuICAgIH1cbiAgICBheGlvc09wdGlvbnMuaGVhZGVycy5jb21tb24gPSB7IC4uLnJlcUhlYWRlcnMsIC4uLmF4aW9zT3B0aW9ucy5oZWFkZXJzLmNvbW1vbiB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICAvLyBEb24ndCBhY2NlcHQgYnJvdGxpIGVuY29kaW5nIGJlY2F1c2UgTm9kZSBjYW4ndCBwYXJzZSBpdFxuICAgIGF4aW9zT3B0aW9ucy5oZWFkZXJzLmNvbW1vblsnYWNjZXB0LWVuY29kaW5nJ10gPSAnZ3ppcCwgZGVmbGF0ZSdcbiAgfVxuXG4gIGNvbnN0IGF4aW9zID0gY3JlYXRlQXhpb3NJbnN0YW5jZShheGlvc09wdGlvbnMpXG5cbiAgLy8gSW5qZWN0IGF4aW9zIHRvIHRoZSBjb250ZXh0IGFzICRheGlvc1xuICBjdHguJGF4aW9zID0gYXhpb3NcbiAgaW5qZWN0KCdheGlvcycsIGF4aW9zKVxufVxuIiwiaW1wb3J0IE1pZGRsZXdhcmUgZnJvbSAnLi9taWRkbGV3YXJlJ1xuaW1wb3J0IHsgQXV0aCwgYXV0aE1pZGRsZXdhcmUsIEV4cGlyZWRBdXRoU2Vzc2lvbkVycm9yIH0gZnJvbSAnfmF1dGgvcnVudGltZSdcblxuLy8gQWN0aXZlIHNjaGVtZXNcbmltcG9ydCB7IExvY2FsU2NoZW1lIH0gZnJvbSAnfmF1dGgvcnVudGltZSdcblxuTWlkZGxld2FyZS5hdXRoID0gYXV0aE1pZGRsZXdhcmVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGN0eCwgaW5qZWN0KSB7XG4gIC8vIE9wdGlvbnNcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgXCJyZXNldE9uRXJyb3JcIjogdHJ1ZSxcbiAgXCJpZ25vcmVFeGNlcHRpb25zXCI6IGZhbHNlLFxuICBcInNjb3BlS2V5XCI6IFwic2NvcGVcIixcbiAgXCJyZXdyaXRlUmVkaXJlY3RzXCI6IHRydWUsXG4gIFwiZnVsbFBhdGhSZWRpcmVjdFwiOiBmYWxzZSxcbiAgXCJ3YXRjaExvZ2dlZEluXCI6IHRydWUsXG4gIFwicmVkaXJlY3RcIjoge1xuICAgIFwibG9naW5cIjogXCIvYXV0aC9cIixcbiAgICBcImxvZ291dFwiOiBmYWxzZSxcbiAgICBcImhvbWVcIjogZmFsc2UsXG4gICAgXCJjYWxsYmFja1wiOiBcIi9sb2dpblwiXG4gIH0sXG4gIFwidnVleFwiOiB7XG4gICAgXCJuYW1lc3BhY2VcIjogXCJhdXRoXCJcbiAgfSxcbiAgXCJjb29raWVcIjoge1xuICAgIFwicHJlZml4XCI6IFwiYXV0aC5cIixcbiAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgXCJwYXRoXCI6IFwiL1wiLFxuICAgICAgXCJzYW1lU2l0ZVwiOiBcImxheFwiLFxuICAgICAgXCJzZWN1cmVcIjogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgXCJsb2NhbFN0b3JhZ2VcIjoge1xuICAgIFwicHJlZml4XCI6IFwiYXV0aC5cIlxuICB9LFxuICBcImRlZmF1bHRTdHJhdGVneVwiOiBcInJlZ2lzdGVyXCJcbn1cblxuICAvLyBDcmVhdGUgYSBuZXcgQXV0aCBpbnN0YW5jZVxuICBjb25zdCAkYXV0aCA9IG5ldyBBdXRoKGN0eCwgb3B0aW9ucylcblxuICAvLyBSZWdpc3RlciBzdHJhdGVnaWVzXG4gIC8vIHJlZ2lzdGVyXG4gICRhdXRoLnJlZ2lzdGVyU3RyYXRlZ3koJ3JlZ2lzdGVyJywgbmV3IExvY2FsU2NoZW1lKCRhdXRoLCB7XG4gIFwidG9rZW5cIjoge1xuICAgIFwibWF4QWdlXCI6IDE4MDAwLFxuICAgIFwicHJvcGVydHlcIjogXCJ0b2tlblwiLFxuICAgIFwidHlwZVwiOiBcIkJlYXJlclwiXG4gIH0sXG4gIFwidXNlclwiOiB7XG4gICAgXCJwcm9wZXJ0eVwiOiBmYWxzZSxcbiAgICBcImF1dG9GZXRjaFwiOiBmYWxzZVxuICB9LFxuICBcImVuZHBvaW50c1wiOiB7XG4gICAgXCJsb2dpblwiOiB7XG4gICAgICBcInVybFwiOiBcIi9wdWJsaWMvZW1lcmFsZC9hY2NvdW50L3NpZ251cFwiLFxuICAgICAgXCJtZXRob2RcIjogXCJwb3N0XCJcbiAgICB9LFxuICAgIFwidXNlclwiOiB7XG4gICAgICBcInVybFwiOiBcIi9wdWJsaWMvZW1lcmFsZC9hY2NvdW50L3Byb2ZpbGVcIixcbiAgICAgIFwibWV0aG9kXCI6IFwiZ2V0XCJcbiAgICB9LFxuICAgIFwibG9nb3V0XCI6IGZhbHNlXG4gI
1H0sXG4gIFwibmFtZVwiOiBcInJlZ2lzdGVyXCJcbn0pKVxuXG4gIC8vIGxvZ2luXG4gICRhdXRoLnJlZ2lzdGVyU3RyYXRlZ3koJ2xvZ2luJywgbmV3IExvY2FsU2NoZW1lKCRhdXRoLCB7XG4gIFwidG9rZW5cIjoge1xuICAgIFwibWF4QWdlXCI6IDE4MDAwLFxuICAgIFwicHJvcGVydHlcIjogXCJ0b2tlblwiLFxuICAgIFwidHlwZVwiOiBcIkJlYXJlclwiXG4gIH0sXG4gIFwidXNlclwiOiB7XG4gICAgXCJwcm9wZXJ0eVwiOiBmYWxzZSxcbiAgICBcImF1dG9GZXRjaFwiOiBmYWxzZVxuICB9LFxuICBcImVuZHBvaW50c1wiOiB7XG4gICAgXCJsb2dpblwiOiB7XG4gICAgICBcInVybFwiOiBcIi9wdWJsaWMvZW1lcmFsZC9hY2NvdW50L2F1dGhcIixcbiAgICAgIFwibWV0aG9kXCI6IFwicG9zdFwiXG4gICAgfSxcbiAgICBcInVzZXJcIjoge1xuICAgICAgXCJ1cmxcIjogXCIvcHVibGljL2VtZXJhbGQvYWNjb3VudC9wcm9maWxlXCIsXG4gICAgICBcIm1ldGhvZFwiOiBcImdldFwiXG4gICAgfSxcbiAgICBcImxvZ291dFwiOiBmYWxzZVxuICB9LFxuICBcIm5hbWVcIjogXCJsb2dpblwiXG59KSlcblxuICAvLyBJbmplY3QgaXQgdG8gbnV4dCBjb250ZXh0IGFzICRhdXRoXG4gIGluamVjdCgnYXV0aCcsICRhdXRoKVxuICBjdHguJGF1dGggPSAkYXV0aFxuXG4gIC8vIEluaXRpYWxpemUgYXV0aFxuICByZXR1cm4gJGF1dGguaW5pdCgpLmNhdGNoKGVycm9yID0+IHtcbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIC8vIERvbid0IGNvbnNvbGUgbG9nIGV4cGlyZWQgYXV0aCBzZXNzaW9uIGVycm9ycy4gVGhpcyBlcnJvciBpcyBjb21tb24sIGFuZCBleHBlY3RlZCB0byBoYXBwZW4uXG4gICAgICAvLyBUaGUgZXJyb3IgaGFwcGVucyB3aGVuZXZlciB0aGUgdXNlciBkb2VzIGFuIHNzciByZXF1ZXN0IChyZWxvYWQvaW5pdGlhbCBuYXZpZ2F0aW9uKSB3aXRoIGFuIGV4cGlyZWQgcmVmcmVzaFxuICAgICAgLy8gdG9rZW4uIFdlIGRvbid0IHdhbnQgdG8gbG9nIHRoaXMgYXMgYW4gZXJyb3IuXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFeHBpcmVkQXV0aFNlc3Npb25FcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcignW0VSUk9SXSBbQVVUSF0nLCBlcnJvcilcbiAgICB9XG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiBbXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9qcXVlcnktMy42LjAubWluLmpzJyxcbiAgICAgICdodHRwczovL2Fib3V0LmVtZXJhbGRzLmNvbS93cC1jb250ZW50L3BsdWdpbnMvZWFzeS1hY2NvcmRpb24tZnJlZS9wdWJsaWMvYXNzZXRzL2pzL2NvbGxhcHNlLm1pbi5qcycsXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9hY2NvcmRpb24ubWluLmpzJ1xuICAgIF0sXG4gICAgY3NzOiBbXG4gICAgICAnaHR0cHM6Ly9hYm91dC5lbWVyYWxkcy5jb20vd3AtY29udGVudC9wbHVnaW5zL2Vhc3ktYWNjb3JkaW9uLWZyZWUvcHVibGljL2Fzc2V0cy9jc3MvZWEtc3R5bGUuY3NzJ1xuICAgIF1cbiAgfSlcblxuICBpbmplY3QoJ2FjY29yZGlvbicsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuaW1wb3J0IHsgYWZmaXJtU2NyaXB0LCBnZXRBZmZpcm1QdWJsaWNLZXkgfSBmcm9tICd+fi91dGlscy9kZWZpbml0aW9ucy9hZmZpcm0nXG5cbi8vIE5YQy0xNTY6IGxhenkgU0RLIGxvYWRlciBmb3IgQWZmaXJtIChEaXJlY3QgQVBJLCBNb2RhbCBNb2RlKS5cbi8vIEF1dG8tcmVnaXN0ZXJlZCBhcyBhIE51eHQgcGx1Z2luIGJ5IG1vZHVsZXMvaW50ZWdyYXRpb25zLmpzLlxuLy8gT25seSB0aGUgUFVCTElDIGtleSBpcyByZWZlcmVuY2VkIGhlcmUuXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgcHVibGljQXBpS2V5ID0gZ2V0QWZmaXJtUHVibGljS2V5KClcblxuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoeyBzY3JpcHQ6IGFmZmlybVNjcmlwdCB9KVxuXG4gIGluamVjdCgnYWZmaXJtJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gYWZmaXJtLmpzIHJlYWRzIGl0cyBwdWJsaWMga2V5ICsgc2NyaXB0IHVybCBmcm9tIHdpbmRvdy5fYWZmaXJtX2NvbmZpZyxcbiAgICAgICAgLy8gd2hpY2ggbXVzdCBleGlzdCBCRUZPUkUgdGhlIHNjcmlwdCBpcyBhcHBlbmRlZCB0byB0aGUgcGFnZS5cbiAgICAgICAgd2luZG93Ll9hZmZpcm1fY29uZmlnID0ge1xuICAgICAgICAgIHB1YmxpY19hcGlfa2V5OiBwdWJsaWNBcGlLZXksXG4gICAgICAgICAgc2NyaXB0OiBhZmZpcm1TY3JpcHQsXG4gICAgICAgICAgbG9jYWxlOiAnZW5fVVMnLFxuICAgICAgICAgIGNvdW50cnlfY29kZTogJ1VTQSdcbiAgICAgICAgfVxuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBhZ0dyaWQgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogW1xuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW5
15LmNvbS9jZG4vYWctZ3JpZC1jb21tdW5pdHkubWluLm5vU3R5bGUuanM/dj0yNi4yLjEnXG4gICAgXSxcbiAgICBjc3M6IFtcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL2FnLWdyaWQuY3NzP3Y9MjYuMi4xJyxcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL2FnLXRoZW1lLWFscGluZS5jc3M/dj0yNi4yLjEnXG4gICAgXVxuICB9KVxuXG4gIGluamVjdCgnYWdHcmlkJywge1xuICAgIGluc2VydDogKGVHcmlkRGl2LCBncmlkT3B0aW9ucywgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG5ldyBhZ0dyaWQuR3JpZChlR3JpZERpdiwgZ3JpZE9wdGlvbnMpKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG5jb25zdCBhcGlLZXkgPSB7XG4gIHJ1Ynk6ICdHLVhZQ1hWTVRRNDAnLFxuICBlbWVyYWxkOiAnRy1NUEhNMkszVk5LJyxcbiAgZ2Vtc3RvbmU6ICdHLVhXWkVYU1I4N1onXG59XG4vLyBjb25zdCBhcGlLZXkgPSB7XG4vLyAgIHJ1Ynk6ICdVQS0xODc4OTgtNicsXG4vLyAgIGVtZXJhbGQ6ICdVQS0xODc4OTgtNSdcbi8vIH1cblxuLyogZ2xvYmFsIGdhICovXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IE9uRGVtYW5kKHtcbiAgICBzY3JpcHQ6ICcvanMvYW5hbHl0aWNzLmpzJ1xuICB9KVxuXG4gIGluamVjdCgnYW5hbHl0aWNzJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgZ2EoXG4gICAgICAgICAgICAnY3JlYXRlJyxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LmlzRGV2ID8gJ1VBLTE1MzU1NDI3My0xJyA6IGFwaUtleVtwcm9jZXNzLmVudi5zaXRlTmFtZV0sXG4gICAgICAgICAgICAnYXV0bydcbiAgICAgICAgICApXG4gICAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnLCBsb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OlxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vYm9keVNjcm9sbExvY2subWluLmpzP3Y9My4xLjUnXG4gIH0pXG5cbiAgaW5qZWN0KCdib2R5U2Nyb2xsTG9jaycsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBWdWVDbGlwYm9hcmQgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3Z1ZS1jbGlwYm9hcmQubWluLmpzJ1xuICB9KVxuXG4gIGluamVjdCgnY2xpcGJvYXJkJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgVnVlLnVzZShWdWVDbGlwYm9hcmQpXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuLyogZ2xvYmFsIFZ1ZURhdGVQaWNrICovXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IE9uRGVtYW5kKHtcbiAgICBzY3JpcHQ6XG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi92dWVEYXRlUGljay5taW4uanM/dj0xLjQuMScsXG4gICAgY3NzOiBbXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi92dWVEYXRlUGljay5taW4uY3NzP3Y9MS40LjEnXG4gICAgXVxuICB9KVxuXG4gIGluamVjdCgnZGF0ZVBpY2tlcicsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIFZ1ZS5jb21wb25lbnQoJ1Z1ZURhdGVQaWNrJywgVnVlRGF0ZVBpY2spXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuLyogZ2xvYmFsIHZ1ZWRyYWdnYWJsZSAqL1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiBbXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9Tb3J0YWJsZS5taW4uanM/dj0xLjEzLjAnLFxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW5
15LmNvbS9jZG4vdnVlZHJhZ2dhYmxlLnVtZC5taW4uanM/dj0yLjI0LjMnXG4gICAgXVxuICB9KVxuXG4gIGluamVjdCgnZHJhZ2dhYmxlJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgVnVlLmNvbXBvbmVudCgnRHJhZ2dhYmxlJywgdnVlZHJhZ2dhYmxlKVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG5jb25zdCBhcGlLZXkgPSB7XG4gIHJ1Ynk6ICdkZjhlOTNlYTdlNDFiZjdkMDg1MWU5NDYzMzE4ODQ0MTVhMjUzMjA5JyxcbiAgZW1lcmFsZDogJzVjNjQwZGI2NDI0OWZiZDJhOThjYjZjNGFhOTBiMjVjNzJlYzdjMzQnLFxuICBnZW1zdG9uZTogJzg0NjE0NWM1Njk5NjM3NzEwYzc1ZDlkNTUzN2U4MGE5YmM1NTc1MGQnLFxuICBzYXBwaGlyZTogJzhhYmY0OWY2NjRjZmFhNjE0MjhkN2M1NDYyOWRhZjg3MTBmYThjMjInXG59XG5cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogJ2h0dHBzOi8vZW1iZWRzb2NpYWwuY29tL2Nkbi9odC5qcydcbiAgfSlcblxuICBjb25zdCBhZGRFbWJlZFNvY2lhbFNjcmlwdCA9IChjYWxsYmFjaykgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBcGlLZXkgPSBhcGlLZXlbcHJvY2Vzcy5lbnYuc2l0ZU5hbWVdXG4gICAgY29uc3QgZXNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZW1iZWRzb2NpYWwtaGFzaHRhZycpXG5cbiAgICBpZiAoZXNDb250YWluZXIpIGVzQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZGF0YS1yZWYnLCBjdXJyZW50QXBpS2V5KVxuXG4gICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgfSlcbiAgfVxuXG4gIGluamVjdCgnZW1iZWRTb2NpYWwnLCB7XG4gICAgaW5zZXJ0OiAoY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWRkRW1iZWRTb2NpYWxTY3JpcHQoY2FsbGJhY2spXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRW1iZWRTb2NpYWwgbG9hZGluZyBmYWlsZWQ6JywgZXJyb3IpXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICBraWxsOiAoKSA9PiB7XG4gICAgICBsb2FkZXIuc2NyaXB0c0xvYWRlZCA9IDBcbiAgICAgIGxvYWRlci5pc0xvYWRpbmcgPSBmYWxzZVxuICAgICAgbG9hZGVyLmNhbGxiYWNrcyA9IFtdXG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnc2NyaXB0W3NyYz1cImh0dHBzOi8vZW1iZWRzb2NpYWwuY29tL2Nkbi9odC5qc1wiXSdcbiAgICAgIClcbiAgICAgIGlmIChzY3JpcHQpIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdClcbiAgICB9XG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcbmltcG9ydCB7IGV4dGVuZFNka0xvYWRUaW1lb3V0IH0gZnJvbSAnfn4vdXRpbHMvZGVmaW5pdGlvbnMvZGVmYXVsdHMnXG5cbi8qIGdsb2JhbCBFeHRlbmQgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3Nkay5oZWxsb2V4dGVuZC5jb20vZXh0ZW5kLXNkay1jbGllbnQvdjEvZXh0ZW5kLXNkay1jbGllbnQubWluLmpzJ1xuICB9KVxuXG4gIGluamVjdCgnZXh0ZW5kU0RLJywge1xuICAgIGluc2VydChvcHRpb25zID0ge30sIGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgICAgIHN0b3JlSWQ6IHByb2Nlc3MuZW52LmV4dGVuZFN0b3JlSWQsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogcHJvY2Vzcy5lbnYuaXNEZXYgPyAnZGVtbycgOiAncHJvZHVjdGlvbidcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBFeHRlbmQuY29uZmlnKHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBpbnNlcnRCdXR0b25zKG9wdGlvbnMgPSB7fSwgY2FsbGJhY2spIHtcbiAgICAgIGlmICghd2luZG93LkV4dGVuZCkge1xuICAgICAgICAvLyBFeHRlbmQgbm90IGluaXRpYWxpemVkXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgZWxlbWVudElkID0gb3B0aW9ucy5yZWYgfHwgJyNleHRlbmQtb2ZmZXInXG4gICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkLnJlcGxhY2UoJyMnLCAnJykpXG5cbiAgICAgIC8vIGlmIGVsZW1lbnQgZXhpc3RzIGFuZCBFeHRlbmQgbm90IGluc2VydGVkXG4gICAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBFeHRlbmQuYnV0dG9ucy5yZW5kZXIoZWxlbWVudElkLCBvcHRpb25zKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSwgMjAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGluc2VydFNpbXBsZUJ1dHRvbnMob3B0aW9ucyA9IHt9KSB7XG4gICAgICBpZiAoIXdpbmRvdy5FeHRlbmQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbnNlcnQoKVxuICAgICAgICB0aGlzLmluc2VydFNpbXBsZUJ1dHRvbnMob3B0aW9ucylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBlbGVtZW50SWQgPSBvcHRpb25zLnJlZiB8fCAnI2V4dGVuZC1vZmZlcidcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQucmVwbGFjZSgnIycsICcnKSlcblxuICAgICAgLy8gaWYgZWxlbWVudCBleGlzdHMgYW5kIEV4dGVuZCBub3QgaW5zZXJ0ZWRcbiAgICAgIGlmIChlbGVtZW50ICYmICFlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIEV4dGVuZC5idXR0b25zLnJlbmRlclNpbXBsZU9mZmVyKGVsZW1lbnRJZCwgb3B0aW9ucylcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNob3dNb2RhbChvcHRpb25zID0ge30pIHtcbiAgICAgIGlmICghd2luZG93LkV4dGVuZCkge1xuICAgICAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICAgI
1HRoaXMuaW5zZXJ0KCksXG4gICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZXh0ZW5kU2RrTG9hZFRpbWVvdXQpKVxuICAgICAgICBdKVxuXG4gICAgICAgIGlmICghd2luZG93LkV4dGVuZCkge1xuICAgICAgICAgIGlmIChvcHRpb25zLm9uQ2xvc2UpIG9wdGlvbnMub25DbG9zZShudWxsKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBFeHRlbmQubW9kYWwub3BlbihvcHRpb25zKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAob3B0aW9ucy5vbkNsb3NlKSBvcHRpb25zLm9uQ2xvc2UobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFBsYW4ob3B0aW9ucyA9IHt9KSB7XG4gICAgICBpZiAoIXdpbmRvdy5FeHRlbmQpIHtcbiAgICAgICAgLy8gRXh0ZW5kIG5vdCBpbml0aWFsaXplZFxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICBjb25zdCBlbGVtZW50SWQgPSBvcHRpb25zLnJlZiB8fCAnI2V4dGVuZC1vZmZlcidcbiAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQucmVwbGFjZSgnIycsICcnKSkpIHtcbiAgICAgICAgLyoqIGdldCB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIHByZXZpb3VzbHkgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gRXh0ZW5kLmJ1dHRvbnMuaW5zdGFuY2UoZWxlbWVudElkKVxuXG4gICAgICAgIGlmICghY29tcG9uZW50KSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8qKiBnZXQgdGhlIHVzZXJzIHBsYW4gc2VsZWN0aW9uICovXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZ2V0UGxhblNlbGVjdGlvbigpXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgdXBkYXRlQnV0dG9ucyhvcHRpb25zID0ge30pIHtcbiAgICAgIGlmICghd2luZG93LkV4dGVuZCkge1xuICAgICAgICAvLyBFeHRlbmQgbm90IGluaXRpYWxpemVkXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IG9wdGlvbnMucmVmIHx8ICcjZXh0ZW5kLW9mZmVyJ1xuXG4gICAgICBpZiAoIWVsZW1lbnRJZCB8fCAhb3B0aW9ucy5leHRlbmRSZWZlcmVuY2VJZCkgcmV0dXJuXG5cbiAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQucmVwbGFjZSgnIycsICcnKSkpIHtcbiAgICAgICAgLyoqIGdldCB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIHByZXZpb3VzbHkgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gRXh0ZW5kLmJ1dHRvbnMuaW5zdGFuY2UoZWxlbWVudElkKVxuXG4gICAgICAgIGlmICghY29tcG9uZW50KSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8qKiBnZXQgdGhlIHVzZXJzIHBsYW4gc2VsZWN0aW9uICovXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuc2V0QWN0aXZlUHJvZHVjdChvcHRpb25zLmV4dGVuZFJlZmVyZW5jZUlkKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiAnaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvcGxhdGZvcm0uanMnXG4gIH0pXG5cbiAgaW5qZWN0KCdnb29nbGVCYWRnZScsIHtcbiAgICBpbnNlcnQ6IChwYXJhbXMsIGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgd2luZG93LnJlbmRlckJhZGdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgcmF0aW5nQmFkZ2VDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyYXRpbmdCYWRnZUNvbnRhaW5lcilcbiAgICAgICAgICAgIHdpbmRvdy5nYXBpLmxvYWQoJ3JhdGluZ2JhZGdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB3aW5kb3cuZ2FwaS5yYXRpbmdiYWRnZS5yZW5kZXIocmF0aW5nQmFkZ2VDb250YWluZXIsIHtcbiAgICAgICAgICAgICAgICAvLyBSRVFVSVJFRFxuICAgICAgICAgICAgICAgIG1lcmNoYW50X2lkOiBwcm9jZXNzLmVudi5tZXJjaGFudElkLFxuICAgICAgICAgICAgICAgIC8vIE9QVElPTkFMXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdCT1RUT01fTEVGVCdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5yZW5kZXJCYWRnZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgICBzY3JpcHQ6IGBodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanM/a2V5PSR7cHJvY2Vzcy5lbnYuZ29vZ2xlTWFwS2V5fSZsYW5ndWFnZT1lbiZsaWJyYXJpZXM9cGxhY2VzYFxuICAgIH0pXG5cbiAgICBpbmplY3QoJ2dvb2dsZU1hcHMnLCB7XG4gICAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coZSlcbiAgfVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogJ2h0dHBzOi8vYXBpcy5nb29nbGUuY29tL2pzL3BsYXRmb3JtLmpzJ1xuICB9KVxuXG4gIGluamVjdCgnZ29vZ2xlU3VydmV5Jywge1xuICAgIGluc2VydDogKHBhcmFtcywgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICB3aW5kb3cucmVuZGVyT3B0SW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuZ2FwaS5sb2FkKCdzdXJ2ZXlvcHRpbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgd2luZG93LmdhcGkuc3VydmV5b3B0aW4u
1cmVuZGVyKHBhcmFtcylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbmNvbnN0IGFwaUtleSA9IHtcbiAgcnVieTogJ0ctWFlDWFZNVFE0MCcsXG4gIGVtZXJhbGQ6ICdHLU1QSE0ySzNWTksnLFxuICBnZW1zdG9uZTogJ0ctWFdaRVhTUjg3WicsXG4gIHNhcHBoaXJlOiAnRy1XWktDQko1NVRMJ1xufVxuXG4vKiBnbG9iYWwgVnVlR3RhZyAqL1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OlxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vdnVlLWd0YWcudW1kLm1pbi5qcz92PTEuMTEuMCdcbiAgfSlcblxuICBpbmplY3QoJ3Z1ZUdUYWcnLCB7XG4gICAgaW5zZXJ0OiAoY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICBWdWUudXNlKFZ1ZUd0YWcsIHtcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICBpZDogcHJvY2Vzcy5lbnYuaXNEZXZcbiAgICAgICAgICAgICAgICA/ICdVQS0xNTM1NTQyNzMtMSdcbiAgICAgICAgICAgICAgICA6IGFwaUtleVtwcm9jZXNzLmVudi5zaXRlTmFtZV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgYW5vbnltaXplX2lwOiB0cnVlLCAvLyBhbm9ueW1pemUgSVBcbiAgICAgICAgICAgICAgc2VuZF9wYWdlX3ZpZXc6IGZhbHNlLCAvLyBtaWdodCBiZSBuZWNlc3NhcnkgdG8gYXZvaWQgZHVwbGljYXRlZCBwYWdlIHRyYWNrIG9uIHBhZ2UgcmVsb2FkXG4gICAgICAgICAgICAgIGxpbmtlcjoge1xuICAgICAgICAgICAgICAgIGRvbWFpbnM6IGdldEd0YWdEb21haW5zKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxuXG4gIGZ1bmN0aW9uIGdldEd0YWdEb21haW5zKCkge1xuICAgIGlmICghcHJvY2Vzcy5lbnYuaXNEZXYpIHJldHVybiBbcHJvY2Vzcy5lbnYucHJvZERvbWFpbl1cbiAgICByZXR1cm4gWydsb2NhbGhvc3Q6MzAwMCcsIHByb2Nlc3MuZW52LmRldkRvbWFpbl1cbiAgfVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL2hhbW1lci5taW4uanM/dj0yLjAuOCdcbiAgfSlcblxuICBpbmplY3QoJ2hhbW1lcicsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG4vKiBnbG9iYWwgSGxzICovXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IE9uRGVtYW5kKHtcbiAgICBzY3JpcHQ6XG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9obHMubWluLmpzP3Y9MS4xLjUnXG4gIH0pXG5cbiAgaW5qZWN0KCdobHMnLCB7XG4gICAgaW5zZXJ0KGVsLCBzb3VyY2UsIG9wdGlvbnMsIGNhbGxiYWNrLCBmYWxsYmFjaykge1xuICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICBpZiAoSGxzICYmIEhscy5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICAgICAgY29uc3QgcGxheWVyID0gbmV3IEhscyhvcHRpb25zKVxuICAgICAgICAgIHBsYXllci5sb2FkU291cmNlKHNvdXJjZSlcbiAgICAgICAgICBwbGF5ZXIuYXR0YWNoTWVkaWEoZWwpXG4gICAgICAgICAgcGxheWVyLm9uKEhscy5FdmVudHMuQlVGRkVSX0NSRUFURUQsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmF1dG9wbGF5KVxuICAgICAgICAgICAgICBlbC5wbGF5KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gcGxheWVyXG4gICAgICAgIH0gZWxzZSBpZiAoZmFsbGJhY2spIGZhbGxiYWNrKClcbiAgICAgIH0pXG4gICAgfVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBJTWFzayAqL1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OlxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vaW1hc2subWluLmpzP3Y9Ni4wLjcnXG4gIH0pXG5cbiAgaW5qZWN0KCdpbWFzaycsIHtcbiAgICBpbnNlcnQ6IChlbCwgb3B0aW9ucywgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG5ldyBJTWFzayhlbCwgb3B0aW9ucykpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgI
1H0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vaXYzZC5taW4uanMnXG4gIH0pXG5cbiAgaW5qZWN0KCdpdjNkJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSdcbmltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG4vKiBnbG9iYWwgTGF6eUxvYWQgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL2xhenlsb2FkLm1pbi5qcz92PTE3LjMuMSdcbiAgfSlcblxuICBpbmplY3QoJ2xhenlsb2FkJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgd2luZG93LmxhenkgPSBuZXcgTGF6eUxvYWQoe1xuICAgICAgICAgICAgLy8gdXNlX25hdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGNhbmNlbF9vbl9leGl0OiBmYWxzZSxcbiAgICAgICAgICAgIGVsZW1lbnRzX3NlbGVjdG9yOiAnLmxhenknLFxuICAgICAgICAgICAgY2xhc3NfbG9hZGVkOiAnbGF6eS1sb2FkZWQnLFxuICAgICAgICAgICAgdW5vYnNlcnZlX2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICBjYWxsYmFja19lbnRlcjogZXhlY3V0ZUxhenlGdW5jdGlvbixcbiAgICAgICAgICAgIHRocmVzaG9sZDogMzAwXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHdpbmRvdy5sYXp5VXBkYXRlID0gZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXp5KSB3aW5kb3cubGF6eS51cGRhdGUoKVxuICAgICAgICAgIH0sIDUwKVxuXG4gICAgICAgICAgd2luZG93LmxhenkudXBkYXRlKClcblxuICAgICAgICAgIHJlc29sdmUod2luZG93LmxhenkpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxuXG4gIHdpbmRvdy5sYXp5RnVuY3Rpb25zID0ge1xuICAgIGxvYWRlZChlbGVtZW50KSB7XG4gICAgICAvLyBpdCdzIGJldHRlciB0byB1c2Ugc3BlY2lmaWMgYXR0cmlidXRlIGluc3RlYWQgb2Ygc3BlY2lmaWMgY2xhc3NcbiAgICAgIC8vIGNsYXNzIGxpc3QgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IG90aGVyIHNjcmlwdHNcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdsYXp5LXN0YXR1cycsICdlbnRlcmVkJylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBleGVjdXRlTGF6eUZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICBjb25zdCBsYXp5RnVuY3Rpb25OYW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGF6eS1mdW5jdGlvbicpXG4gICAgY29uc3QgbGF6eUZ1bmN0aW9uID0gd2luZG93LmxhenlGdW5jdGlvbnNbbGF6eUZ1bmN0aW9uTmFtZV1cbiAgICBpZiAoIWxhenlGdW5jdGlvbikgcmV0dXJuXG4gICAgbGF6eUZ1bmN0aW9uKGVsZW1lbnQpXG4gIH1cbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiAnL2pzL21pY3Jvc29mdENsYXJpdHkuanMnLFxuICAgIGhlYWQ6IHRydWVcbiAgfSlcblxuICBpbmplY3QoJ21pY3Jvc29mdENsYXJpdHknLCB7XG4gICAgaW5zZXJ0OiAoY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuLyogZ2xvYmFsIE1vZGVybml6ciAqL1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OlxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vbW9kZXJuaXpyLWN1c3RvbS5qcydcbiAgfSlcblxuICBpbmplY3QoJ21vZGVybml6cicsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0b3JlID0gY3R4LnN0b3JlXG4gICAgICAgICAgTW9kZXJuaXpyLm9uKCd3ZWJwJywgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAvLyBzdXBwb3J0ZWRcbiAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ2FwcC9zZXRXZWJwU3VwcG9ydCcsIHRydWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBub3Qtc3VwcG9ydGVkXG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCdhcHAvc2V0V2VicFN1cHBvcnQnLCBmYWxzZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgI
1H0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBub1VpU2xpZGVyICovXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IE9uRGVtYW5kKHtcbiAgICBzY3JpcHQ6XG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9ub3Vpc2xpZGVyLm1pbi5qcz92PTE1LjUuMScsXG4gICAgY3NzOiBbXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9ub3Vpc2xpZGVyLm1pbi5jc3M/dj0xNS41LjEnXG4gICAgXVxuICB9KVxuXG4gIGluamVjdCgnbm91aXNsaWRlcicsIHtcbiAgICBpbnNlcnQ6IChlbCwgb3B0aW9ucywgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG5vVWlTbGlkZXIuY3JlYXRlKGVsLCBvcHRpb25zKSlcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuLyogZ2xvYmFsIFBlcmZlY3RTY3JvbGxiYXIgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3BlcmZlY3Qtc2Nyb2xsYmFyLm1pbi5qcz92PTEuNS4zJyxcbiAgICBjc3M6IFtcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3BlcmZlY3Qtc2Nyb2xsYmFyLm1pbi5jc3M/dj0xLjUuMydcbiAgICBdXG4gIH0pXG5cbiAgaW5qZWN0KCdwZXJmZWN0U2Nyb2xsYmFyJywge1xuICAgIGluc2VydDogKGVsLCBvcHRpb25zID0ge30sIGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShuZXcgUGVyZmVjdFNjcm9sbGJhcihlbCwgb3B0aW9ucykpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBQb3BwZXIgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3BvcHBlci5taW4uanM/dj0yLjExLjInXG4gIH0pXG5cbiAgaW5qZWN0KCdwb3BwZXInLCB7XG4gICAgaW5zZXJ0OiAoZWwsIHRvb2x0aXAsIG9wdGlvbnMsIGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShQb3BwZXIuY3JlYXRlUG9wcGVyKGVsLCB0b29sdGlwLCBvcHRpb25zKSlcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiBbXG4gICAgICAnaHR0cHM6Ly93d3cucmVjYXB0Y2hhLm5ldC9yZWNhcHRjaGEvZW50ZXJwcmlzZS5qcz9vbmxvYWQ9b25sb2FkQ2FsbGJhY2smcmVuZGVyPWV4cGxpY2l0J1xuICAgIF1cbiAgfSlcblxuICBpbmplY3QoJ3JlY2FwdGNoYScsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgd2luZG93Ll9yZWpvaW5lciA9IHdpbmRvdy5fcmVqb2luZXIgfHwgW11cbiAgd2luZG93Ll9yZWpvaW5lci5wdXNoKFsnc2V0QWNjb3VudCcsIHByb2Nlc3MuZW52LnJlam9pbmVyU2l0ZUlEXSlcbiAgd2luZG93Ll9yZWpvaW5lci5wdXNoKFsnc2V0RG9tYWluJywgcHJvY2Vzcy5lbnYucmVqb2luZXJQcm9kdWN0aW9uU2l0ZUlEXSlcbiAgd2luZG93Ll9yZWpvaW5lci5wdXNoKFtcbiAgICAnc2V0RXhjbHVkZUZpZWxkTmFtZScsXG4gICAgWydjYy1uYW1lJywgJ2NjLW51bWJlcicsICdjYy1leHAtbW9udGgnLCAnY2MtZXhwLXllYXInLCAnY2MtY3NjJ11cbiAgXSlcbiAgd2luZG93Ll9yZWpvaW5lci5wdXNoKFsndHJhY2tQYWdlVmlldycsIHRydWVdKVxuXG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OiAnLy9jZG4ucmVqb2luZXIuY29tL2pzL3Y0L3JqMi5saWIuanMnXG4gIH0pXG5cbiAgaW5qZWN0KCdyZWpvaW5lcicsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgcHVzaDogKHBhcmFtcykgPT4ge1xuICAgICAgaWYgKHdpbmRvdz8uX3Jlam9pbmVyKSB7XG4gICAgICAgI
1HdpbmRvdy5fcmVqb2luZXIucHVzaChwYXJhbXMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ1Jlam9pbmVyIGlzIG5vdCBpbml0aWFsaXplZCcpXG4gICAgfVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuLyogZ2xvYmFsIFZ1ZVNvY2lhbFNoYXJpbmcgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3Z1ZS1zb2NpYWwtc2hhcmluZy5taW4uanM/dj0zLjAuNSdcbiAgfSlcblxuICBpbmplY3QoJ3NvY2lhbCcsIHtcbiAgICBpbnNlcnQ6IChjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIFZ1ZS51c2UoVnVlU29jaWFsU2hhcmluZy5kZWZhdWx0KVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG4vKiBnbG9iYWwgU3dhbCAqL1xuZXhwb3J0IGRlZmF1bHQgKGN0eCwgaW5qZWN0KSA9PiB7XG4gIGNvbnN0IGxvYWRlciA9IG5ldyBPbkRlbWFuZCh7XG4gICAgc2NyaXB0OlxuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vc3dlZXRhbGVydDIuYWxsLm1pbi5qcz92PTEwLjE2LjcnLFxuICAgIGNzczogW1xuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vc3dlZXRhbGVydDIubWluLmNzcz92PTEwLjE2LjcnXG4gICAgXVxuICB9KVxuXG4gIGNvbnN0IHdpdGhUZXN0SWQgPSAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsRGlkT3BlbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kaWRPcGVuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkaWRPcGVuOiAocG9wdXApID0+IHtcbiAgICAgICAgcG9wdXAuc2V0QXR0cmlidXRlKCdkYXRhLXRlc3RpZCcsICdzd2VldGFsZXJ0JylcbiAgICAgICAgaWYgKG9yaWdpbmFsRGlkT3Blbikgb3JpZ2luYWxEaWRPcGVuKHBvcHVwKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluamVjdCgnc3dlZXRhbGVydCcsIHtcbiAgICBpbnNlcnQ6IChvcHRpb25zLCBtaXhpbiwgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICBpZiAobWl4aW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHRvYXN0ID0gU3dhbC5taXhpbihtaXhpbilcbiAgICAgICAgICAgIHRvYXN0XG4gICAgICAgICAgICAgIC5maXJlKHdpdGhUZXN0SWQob3B0aW9ucykpXG4gICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgU3dhbC5maXJlKHdpdGhUZXN0SWQob3B0aW9ucykpXG4gICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBTd2lwZXIgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDpcbiAgICAgICdodHRwczovL3NlcnZpY2UudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vY2RuL3N3aXBlci1idW5kbGUubWluLmpzP3Y9Ni44LjQnXG4gICAgLy8gY3NzOiBbXG4gICAgLy8gICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi9zd2lwZXItYnVuZGxlLm1pbi5jc3M/dj02LjguNCdcbiAgICAvLyBdXG4gIH0pXG4gIC8vIENTUyBhZGRlZCBvbiBhbGwgcGFnZXMgaW4gYmFzZVBhZ2UgY29tcG9uZW50XG4gIGluamVjdCgnc3dpcGVyJywge1xuICAgIGluc2VydDogKGVsLCBvcHRpb25zLCBjYWxsYmFjaykgPT5cbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbG9hZGVyLmxvYWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobmV3IFN3aXBlcihlbCwgb3B0aW9ucykpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IE9uRGVtYW5kIGZyb20gJ35+L3V0aWxzL2hlbHBlcnMvb25EZW1hbmQnXG5cbi8qIGdsb2JhbCBUYWJ1bGF0b3IgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogW1xuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vdGFidWxhdG9yLm1pbi5qcz92PTUuMC43J1xuICAgIF0sXG4gICAgY3NzOiBbXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi90YWJ1bGF0b3JfYnVsbWEubWluLmNzcz92PTUuMC43J1xuICAgIF1cbiAgfSlcblxuICBpbmplY3QoJ3RhYnVsYXRvcicsIHtcbiAgICBpbnNlcnQ6IChlbCwgb3B0aW9ucywgY2FsbGJhY2spID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKG5ldyBUYWJ1bGF0b3IoZWwsIG9wdGlvbnMpKVxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soVGFidWxhdG9yKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgfSlcbn1cbiIsImltcG9ydCBPbkRlbWFuZCBmcm9tICd+fi91dGlscy9oZWxwZXJzL29uRGVtYW5kJ1xuXG4vKiBnbG9iYWwgdGlwcHkgKi9cbmV4cG9ydCBkZWZhdWx0IChjdHgsIGluamVjdCkgPT4ge1xuICBjb25zdCBsb2FkZXIgPSBuZXcgT25EZW1hbmQoe1xuICAgIHNjcmlwdDogW1xuICAgICAgJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW5
15LmNvbS9jZG4vcG9wcGVyLm1pbi5qcz92PTIuMTEuMicsXG4gICAgICAnaHR0cHM6Ly9zZXJ2aWNlLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tL2Nkbi90aXBweS1idW5kbGUudW1kLm1pbi5qcz92PTYuMy43J1xuICAgIF0sXG4gICAgY3NzOiBbJ2h0dHBzOi8vc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbS9jZG4vbGlnaHQuY3NzP3Y9Ni4zLjcnXVxuICB9KVxuXG4gIGluamVjdCgndGlwcHknLCB7XG4gICAgaW5zZXJ0OiAoZWwsIG9wdGlvbnMpID0+XG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxvYWRlci5sb2FkKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRpcHB5KGVsLCBvcHRpb25zKSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH0pXG59XG4iLCJpbXBvcnQgT25EZW1hbmQgZnJvbSAnfn4vdXRpbHMvaGVscGVycy9vbkRlbWFuZCdcblxuY29uc3QgYXBpS2V5ID0ge1xuICBydWJ5OiAnNjZhZGUzYzY5NWE1ODMxNDU0OWNhMzJkMzYyNmY0Y2ZmZGQwNjc3M2QwOTE5MTZhYjc4NDA1MjdmYzRhYzlkNycsXG4gIGVtZXJhbGQ6ICdkNGM4OGY3Mjk2YWE0NzUzYTE0YjYxNmJiZGJhMjE1OWRhZmI4MjcwY2E5MjQyZmFhOWViMDkzMWYwZDM2NjM4JyxcbiAgZ2Vtc3RvbmU6ICdhODFhMjVjZTA3Y2U0MmU0ODI3Njg2MDk0MjY0YzYzNjQ3YTFhODk2ZTlhMDRmOThiYTBjZmFjY2UzZTk1ZDhjJyxcbiAgc2FwcGhpcmU6ICc5OGRhNWMyYWM1MTk0MDVkYjVmNGU3NWM3ZDA0MmIzYWJmNWJiNWZjYzcxZTRmY2M5Mjc0ZGEyNWYyNjBmZDdmJ1xufVxuXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IE9uRGVtYW5kKHtcbiAgICBzY3JpcHQ6IGBodHRwczovL3VzZXJsaWtlLWNkbi13aWRnZXRzLnMzLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tLyR7XG4gICAgICBhcGlLZXlbcHJvY2Vzcy5lbnYuc2l0ZU5hbWVdXG4gICAgfS5qc2BcbiAgfSlcblxuICBpbmplY3QoJ3VzZXJsaWtlJywge1xuICAgIGluc2VydDogKGNhbGxiYWNrKSA9PlxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsb2FkZXIubG9hZCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgVnVleCBmcm9tICd2dWV4J1xuaW1wb3J0IE1ldGEgZnJvbSAndnVlLW1ldGEnXG5pbXBvcnQgQ2xpZW50T25seSBmcm9tICd2dWUtY2xpZW50LW9ubHknXG5pbXBvcnQgTm9Tc3IgZnJvbSAndnVlLW5vLXNzcidcbmltcG9ydCB7IGNyZWF0ZVJvdXRlciB9IGZyb20gJy4vcm91dGVyLmpzJ1xuaW1wb3J0IE51eHRDaGlsZCBmcm9tICcuL2NvbXBvbmVudHMvbnV4dC1jaGlsZC5qcydcbmltcG9ydCBOdXh0RXJyb3IgZnJvbSAnLi9jb21wb25lbnRzL251eHQtZXJyb3IudnVlJ1xuaW1wb3J0IE51eHQgZnJvbSAnLi9jb21wb25lbnRzL251eHQuanMnXG5pbXBvcnQgQXBwIGZyb20gJy4vQXBwLmpzJ1xuaW1wb3J0IHsgc2V0Q29udGV4dCwgZ2V0TG9jYXRpb24sIGdldFJvdXRlRGF0YSwgbm9ybWFsaXplRXJyb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICcuL3N0b3JlLmpzJ1xuXG4vKiBQbHVnaW5zICovXG5cbmltcG9ydCBudXh0X3BsdWdpbl9zZW50cnlzZXJ2ZXJfNmFjMGIwZDYgZnJvbSAnbnV4dF9wbHVnaW5fc2VudHJ5c2VydmVyXzZhYzBiMGQ2JyAvLyBTb3VyY2U6IC4vc2VudHJ5LnNlcnZlci5qcyAobW9kZTogJ3NlcnZlcicpXG5pbXBvcnQgbnV4dF9wbHVnaW5fc2VudHJ5Y2xpZW50XzY0ZTYzNjBkIGZyb20gJ251eHRfcGx1Z2luX3NlbnRyeWNsaWVudF82NGU2MzYwZCcgLy8gU291cmNlOiAuL3NlbnRyeS5jbGllbnQuanMgKG1vZGU6ICdjbGllbnQnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2Nvb2tpZXVuaXZlcnNhbG51eHRfYzdhMWIzMGUgZnJvbSAnbnV4dF9wbHVnaW5fY29va2lldW5pdmVyc2FsbnV4dF9jN2ExYjMwZScgLy8gU291cmNlOiAuL2Nvb2tpZS11bml2ZXJzYWwtbnV4dC5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fcGx1Z2ludXRpbHNfMTk3YzdjZWMgZnJvbSAnbnV4dF9wbHVnaW5fcGx1Z2ludXRpbHNfMTk3YzdjZWMnIC8vIFNvdXJjZTogLi9udXh0LWkxOG4vcGx1Z2luLnV0aWxzLmpzIChtb2RlOiAnYWxsJylcbmltcG9ydCBudXh0X3BsdWdpbl9wbHVnaW5yb3V0aW5nXzQwNGZkNzU2IGZyb20gJ251eHRfcGx1Z2luX3BsdWdpbnJvdXRpbmdfNDA0ZmQ3NTYnIC8vIFNvdXJjZTogLi9udXh0LWkxOG4vcGx1Z2luLnJvdXRpbmcuanMgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX3BsdWdpbm1haW5fMTQyZjgxOGMgZnJvbSAnbnV4dF9wbHVnaW5fcGx1Z2lubWFpbl8xNDJmODE4YycgLy8gU291cmNlOiAuL251eHQtaTE4bi9wbHVnaW4ubWFpbi5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fZGV2aWNlcGx1Z2luXzI2NzUwMTQ4IGZyb20gJ251eHRfcGx1Z2luX2RldmljZXBsdWdpbl8yNjc1MDE0OCcgLy8gU291cmNlOiAuL2RldmljZS5wbHVnaW4uanMgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2ljb25wbHVnaW5fN2E1YmJkMzQgZnJvbSAnbnV4dF9wbHVnaW5faWNvbnBsdWdpbl83YTViYmQzNCcgLy8gU291cmNlOiAuL3B3YS9pY29uLnBsdWdpbi5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fYXhpb3NfZDdkMTZlNWUgZnJvbSAnbnV4dF9wbHVnaW5fYXhpb3NfZDdkMTZlNWUnIC8vIFNvdXJjZTogLi9heGlvcy5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fbG9nZ2VyX2FmMDc0NTE2IGZyb20gJ251eHRfcGx1Z2luX2xvZ2dlcl9hZjA3NDUxNicgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2xvZ2dlciAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fc3RvcmVfNjhjMzBjMWIgZnJvbSAnbnV4dF9wbHVnaW5fc3RvcmVfNjhjMzBjMWInIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9zdG9yZS5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fZXZlbnRCdXNfNTAxMDI0MjggZnJvbSAnbnV4dF9wbHVnaW5fZXZlbnRCdXNfNTAxMDI0MjgnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9ldmVudEJ1cy5qcyAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fYXBpXzEyZTBiNzU2IGZyb20gJ251eHRfcGx1Z2luX2FwaV8xMmUwYjc1NicgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2FwaSAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5faHR0cEFnZW50c18yMGFlZDY3NiBmcm9tICdudXh0X3BsdWdpbl9odHRwQWdlbnRzXzIwYWVkNjc2JyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvaHR0cEFnZW50cy5zZXJ2ZXIgKG1vZGU6ICdzZXJ2ZXInKVxuaW1wb3J0IG51eHRfcGx1Z2luX2F4aW9zX2RkODhkODFlIGZyb20gJ251eHRfcGx1Z2luX2F4aW9zX2RkODhkODFlJyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvYXhpb3MgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2FuYWx5dGljc180ZmYwYWU1MCBmcm9tICdudXh0X3BsdWdpbl9hbmFseXRpY3NfNGZmMGFlNTAnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9hbmFseXRpY3MuY2xpZW50IChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl92dWVvYnNlcnZlcl8wMGRlOGI2MiBmcm9tICdudXh0X3BsdWdpbl92dWVvYnNlcnZlcl8wMGRlOGI2MicgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL3Z1ZS1vYnNlcnZlciAobW9kZTogJ2FsbCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5fZXZlbnRzXzRmZTI1MjhhIGZyb20gJ251eHRfcGx1Z2luX2V2ZW50c180ZmUyNTI4YScgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2V2ZW50cy5jbGllbnQgKG1vZGU6ICdjbGllbnQnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2dsb2JhbGNvbXBvbmVudHNfNTNjZDAzMGEgZnJvbSAnbnV4dF9wbHVnaW5fZ2xvYmFsY29tcG9uZW50c181M2NkMDMwYScgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2dsb2JhbC1jb21wb25lbnRzIChtb2RlOiAnYWxsJylcbmltcG9ydCBudXh0X3BsdWdpbl9mb250c19mODZkOTFjYyBmcm9tICdudXh0X3BsdWdpbl9mb250c19mODZkOTFjYycgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2ZvbnRzLmNsaWVudCAobW9kZTogJ2NsaWVudCcpXG5pbXBvcnQgbnV4dF9wbHVnaW5faW50ZXJwb2xhdGlvbkxpbmtzXzI1ZTY4YjVmIGZyb20gJ251eHRfcGx1Z2luX2ludGVycG9sYXRpb25MaW5rc18yNWU2OGI1ZicgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2ludGVycG9sYXRpb25MaW5rcy5jbGllbnQgKG1vZGU6ICdjbGllbnQnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2hlbHBlcnNfZmE5ZjA5ODAgZnJvbSAnbnV4dF9wbHVnaW5faGVscGVyc19mYTlmMDk4MCcgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2hlbHBlcnMgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2xvY2FsU3RvcmFnZV83NzkzY2YyNCBmcm9tICdudXh0X3BsdWdpbl9sb2NhbFN0b3JhZ2VfNzc5M2NmMjQnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9sb2NhbFN0b3JhZ2UuY2xpZW50IChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl92dWVqc21vZGFsXzA1YmU3OWI1IGZyb20gJ251eHRfcGx1Z2luX3Z1ZWpzbW9kYWxfMDViZTc5Y
1jUnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy92dWUtanMtbW9kYWwgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX21ldGFUYWdzXzMwZGY5MzNhIGZyb20gJ251eHRfcGx1Z2luX21ldGFUYWdzXzMwZGY5MzNhJyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvbWV0YVRhZ3MgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2NsZWFyUXVlcnlQYXJhbXNVcmxfNDA4MzliNTAgZnJvbSAnbnV4dF9wbHVnaW5fY2xlYXJRdWVyeVBhcmFtc1VybF80MDgzOWI1MCcgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2NsZWFyUXVlcnlQYXJhbXNVcmwuY2xpZW50IChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pY29uc2xvYWRlcl83ZWNhYzc3NCBmcm9tICdudXh0X3BsdWdpbl9pY29uc2xvYWRlcl83ZWNhYzc3NCcgLy8gU291cmNlOiAuLi8uLi9wbHVnaW5zL2ljb25zLWxvYWRlci5zZXJ2ZXIgKG1vZGU6ICdzZXJ2ZXInKVxuaW1wb3J0IG51eHRfcGx1Z2luX2NvbnN1bHRDaGF0X2U5N2JlODBjIGZyb20gJ251eHRfcGx1Z2luX2NvbnN1bHRDaGF0X2U5N2JlODBjJyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvY29uc3VsdENoYXQuY2xpZW50IChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9yb3V0ZXJfOWE4MDAxYTQgZnJvbSAnbnV4dF9wbHVnaW5fcm91dGVyXzlhODAwMWE0JyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvcm91dGVyIChtb2RlOiAnYWxsJylcbmltcG9ydCBudXh0X3BsdWdpbl9nb29nbGVhdXRoX2E1OGJhY2JjIGZyb20gJ251eHRfcGx1Z2luX2dvb2dsZWF1dGhfYTU4YmFjYmMnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9nb29nbGUtYXV0aC5jbGllbnQgKG1vZGU6ICdjbGllbnQnKVxuaW1wb3J0IG51eHRfcGx1Z2luX3RvYXN0XzViNjI0MTk3IGZyb20gJ251eHRfcGx1Z2luX3RvYXN0XzViNjI0MTk3JyAvLyBTb3VyY2U6IC4uLy4uL3BsdWdpbnMvdG9hc3QuY2xpZW50IChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9hdXRoXzIxNDc4MjNmIGZyb20gJ251eHRfcGx1Z2luX2F1dGhfMjE0NzgyM2YnIC8vIFNvdXJjZTogLi9hdXRoLmpzIChtb2RlOiAnYWxsJylcbmltcG9ydCBudXh0X3BsdWdpbl9hdXRoXzQ5MzYwYTY2IGZyb20gJ251eHRfcGx1Z2luX2F1dGhfNDkzNjBhNjYnIC8vIFNvdXJjZTogLi4vLi4vcGx1Z2lucy9hdXRoIChtb2RlOiAnYWxsJylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhY2NvcmRpb25jbGllbnQ1NmE4NjRkZF8zZTUxNDI0MyBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhY2NvcmRpb25jbGllbnQ1NmE4NjRkZF8zZTUxNDI0MycgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5hY2NvcmRpb24uY2xpZW50LjU2YTg2NGRkLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhZmZpcm1jbGllbnRiNWE0ZjRhY18zNWU2MmUwYSBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhZmZpcm1jbGllbnRiNWE0ZjRhY18zNWU2MmUwYScgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5hZmZpcm0uY2xpZW50LmI1YTRmNGFjLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhZ0dyaWRjbGllbnRmMzAwYjFkYV8yNzQ3MjA4NCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhZ0dyaWRjbGllbnRmMzAwYjFkYV8yNzQ3MjA4NCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5hZ0dyaWQuY2xpZW50LmYzMDBiMWRhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhbmFseXRpY3NjbGllbnRiYzM3ZjRjYV9kMjkzMjNhYyBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhbmFseXRpY3NjbGllbnRiYzM3ZjRjYV9kMjkzMjNhYycgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5hbmFseXRpY3MuY2xpZW50LmJjMzdmNGNhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNib2R5U2Nyb2xsTG9ja2NsaWVudDAwYWZjMGUxXzMzY2NhYmFhIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc2JvZHlTY3JvbGxMb2NrY2xpZW50MDBhZmMwZTFfMzNjY2FiYWEnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMuYm9keVNjcm9sbExvY2suY2xpZW50LjAwYWZjMGUxLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNjbGlwYm9hcmRjbGllbnRlY2VjMThhYV9iMzgwODQzMCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNjbGlwYm9hcmRjbGllbnRlY2VjMThhYV9iMzgwODQzMCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5jbGlwYm9hcmQuY2xpZW50LmVjZWMxOGFhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNkYXRlUGlja2VyY2xpZW50N2Q4NmIwM2FfYzI5MWYzNDAgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZGF0ZVBpY2tlcmNsaWVudDdkODZiMDNhX2MyOTFmMzQwJyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLmRhdGVQaWNrZXIuY2xpZW50LjdkODZiMDNhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNkcmFnZ2FibGVjbGllbnQzYjk1Y2FlMl9iMzdlNGI4NCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNkcmFnZ2FibGVjbGllbnQzYjk1Y2FlMl9iMzdlNGI4NCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5kcmFnZ2FibGUuY2xpZW50LjNiOTVjYWUyLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNlbWJlZHNvY2lhbGNsaWVudGQ0ZGQxMDRhX2EzODc0YzAyIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc2VtYmVkc29jaWFsY2xpZW50ZDRkZDEwNGFfYTM4NzRjMDInIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMuZW1iZWRzb2NpYWwuY2xpZW50LmQ0ZGQxMDRhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNleHRlbmRTREtjbGllbnRhN2Q5Yzc1Nl82MWEzZDA4MSBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNleHRlbmRTREtjbGllbnRhN2Q5Yzc1Nl82MWEzZDA4MScgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5leHRlbmRTREsuY2xpZW50LmE3ZDljNzU2LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNnb29nbGVCYWRnZWNsaWVudGU3OTk5NzgyXzc5OTYyNmU2IGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc2dvb2dsZUJhZGdlY2xpZW50ZTc5OTk3ODJfNzk5NjI2ZTYnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMuZ29vZ2xlQmFkZ2UuY2xpZW50LmU3OTk5NzgyLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNnb29nbGVNYXBzY2xpZW50MTQ2NGFkMTJfNjE2NDI1Y2UgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlTWFwc2NsaWVudDE0NjRhZDEyXzYxNjQyNWNlJyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLmdvb2dsZU1hcHMuY2xpZW50LjE0NjRhZDEyLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNnb29nbGVTdXJ2ZXljbGllbnQxZWU1MDlmYV8yNWEyYjdiMCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNnb29nbGVTdXJ2ZXljbGllbnQxZWU1MDlmYV8yNWEyYjdiMCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5nb29nbGVTdXJ2ZXkuY2xpZW50LjFlZTUwOWZhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNndGFnY2xpZW50YzExMDRjNGNfMzcxYWI0NzYgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ3RhZ2NsaWVudGMxMTA0YzRjXzM3MWFiNDc2JyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLmd0YWcuY2xpZW50LmMxMTA0YzRjLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNoYW1tZXJjbGllbnQ3YTcwMzhjZF82ZjkwMGI3NCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNoYW1tZXJjbGllbnQ3YTcwMzhjZF82ZjkwMGI3NCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5oYW1tZXIuY2xpZW50LjdhNzAzOGNkLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNobHNjbGllbnQwYzc3YjdmOF8yNTZhYWU1MCBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNobHNjbGllbnQwYzc3YjdmOF8yNTZhYWU1MCcgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5obHMuY2xpZW50LjBjNzdiN2Y4LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpbWFza2NsaWVudDQxZWExY2FjXzM4ZWJiYzdmIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc2ltYXNrY2xpZW50NDFlYTFjYWNfMzhlYmJjN2YnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMuaW1hc2suY2xpZW50LjQxZWExY2FjLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpdjNkY2xpZW50MWY5ZmFhYzVfM2Q4NzgyNWUgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zaXYzZGNsaWVudDFmOWZhYWM1XzNkODc4MjVlJyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLml2M2QuY2xpZW50LjFmOWZhYWM1LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNsYXp5bG9hZGNsaWVudDFmNzgyNWJlXzM0OGEwMjI2IGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc2xhenlsb2FkY2xpZW50MWY3ODI1YmVfMzQ4YTAyMjYnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMubGF6eWxvYWQuY2xpZW50LjFmNzgyNWJlLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNtaWNyb3NvZnRDbGFyaXR5Y2xpZW50MTQzMTAzZTZfODZjNjdlYjAgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbWljcm9zb2Z0Q2xhcml0eWNsaWVudDE0MzEwM2U2Xzg2YzY3ZWIwJyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLm1pY3Jvc29mdENsYXJpdHkuY2xpZW50LjE0MzEwM2U2LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNtb2Rlcm5penJjbGllbnQyZDUxOGNmN19hNmU5MGIxNiBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNtb2Rlcm5penJjbGllbnQyZDUxOGNmN19hNmU5MGIxNicgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5tb2Rlcm5penIuY2xpZW50LjJkNTE4Y2Y3LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNub3Vpc2xpZGVyY2xpZW50ODM4YTRhODZfNTM5NDhmNDQgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbm91aXNsaWRlcmNsaWVudDgzOGE0YTg2XzUzOTQ4ZjQ0JyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLm5vdWlzbGlkZXIuY2xpZW50LjgzOGE0YTg2LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwZXJmZWN0U2Nyb2xsYmFyY2xpZW50Mzk5Yzk3YTBfNDc4M2Q2YTYgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zcGVyZmVjdFNjcm9sbGJhcmNsaWVudDM5OWM5N2EwXzQ3ODNkNmE2JyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLnBlcmZlY3RTY3JvbGxiYXIuY2xpZW50LjM5OWM5N2EwLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwb3BwZXJjbGllbnQzYmJkMzA5YV81ZDQ4YWFhMSBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwb3BwZXJjbGllbnQzYmJkMzA5YV81ZDQ4YWFhMScgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5wb3BwZXIuY2xpZW50LjNiYmQzMDlhLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNyZWNhcHRjaGFjbGllbnQzZmJkODliY182MWVhMmMyMyBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNyZWNhcHRjaGFjbGllbnQzZmJkODliY182MWVhMmMyMycgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5yZWNhcHRjaGEuY2xpZW50LjNmYmQ4OWJjLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNyZWpvaW5lcmNsaWVudDNjNWFiM2RlXzUxNjc1MWNiIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc3Jlam9pbmVyY2xpZW50M2M1YWIzZGVfNTE2NzUxY2InIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMucmVqb2luZXIuY2xpZW50LjNjNWFiM2RlLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNzb2NpYWxTaGFyaW5nY2xpZW50NzY3NDc3ZjhfNDA1YmUzYTQgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zc29jaWFsU2hhcmluZ2NsaWVudDc2NzQ3N2Y4XzQwNWJlM2E0JyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLnNvY2lhbFNoYXJpbmcuY2xpZW50Ljc2NzQ3N2Y4LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNzd2VldGFsZXJ0Y2xpZW50NGQwMGZhNzNfNTYzZmQwYjAgZnJvbSAnbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zc3dlZXRhbGVydGNsaWVudDRkM
1DBmYTczXzU2M2ZkMGIwJyAvLyBTb3VyY2U6IC4vaW50ZWdyYXRpb25zLnN3ZWV0YWxlcnQuY2xpZW50LjRkMDBmYTczLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNzd2lwZXJjbGllbnQyOGExY2ZmZl8xZDQ2NmJkMiBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNzd2lwZXJjbGllbnQyOGExY2ZmZl8xZDQ2NmJkMicgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy5zd2lwZXIuY2xpZW50LjI4YTFjZmZmLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnN0YWJ1bGF0b3JjbGllbnQ0NzNkMjE1Ml8xYzhiNjE2ZiBmcm9tICdudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnN0YWJ1bGF0b3JjbGllbnQ0NzNkMjE1Ml8xYzhiNjE2ZicgLy8gU291cmNlOiAuL2ludGVncmF0aW9ucy50YWJ1bGF0b3IuY2xpZW50LjQ3M2QyMTUyLmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnN0aXBweWNsaWVudDNiMWI5M2Y5XzE3YmM3MjEwIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc3RpcHB5Y2xpZW50M2IxYjkzZjlfMTdiYzcyMTAnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMudGlwcHkuY2xpZW50LjNiMWI5M2Y5LmpzIChtb2RlOiAnY2xpZW50JylcbmltcG9ydCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnN1c2VybGlrZWNsaWVudDRiYmIzYWFlXzI1OGMxMWZlIGZyb20gJ251eHRfcGx1Z2luX2ludGVncmF0aW9uc3VzZXJsaWtlY2xpZW50NGJiYjNhYWVfMjU4YzExZmUnIC8vIFNvdXJjZTogLi9pbnRlZ3JhdGlvbnMudXNlcmxpa2UuY2xpZW50LjRiYmIzYWFlLmpzIChtb2RlOiAnY2xpZW50JylcblxuLy8gQ29tcG9uZW50OiA8Q2xpZW50T25seT5cblZ1ZS5jb21wb25lbnQoQ2xpZW50T25seS5uYW1lLCBDbGllbnRPbmx5KVxuXG4vLyBUT0RPOiBSZW1vdmUgaW4gTnV4dCAzOiA8Tm9Tc3I+XG5WdWUuY29tcG9uZW50KE5vU3NyLm5hbWUsIHtcbiAgLi4uTm9Tc3IsXG4gIHJlbmRlciAoaCwgY3R4KSB7XG4gICAgaWYgKHByb2Nlc3MuY2xpZW50ICYmICFOb1Nzci5fd2FybmVkKSB7XG4gICAgICBOb1Nzci5fd2FybmVkID0gdHJ1ZVxuXG4gICAgICBjb25zb2xlLndhcm4oJzxuby1zc3I+IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBOdXh0IDMsIHBsZWFzZSB1c2UgPGNsaWVudC1vbmx5PiBpbnN0ZWFkJylcbiAgICB9XG4gICAgcmV0dXJuIE5vU3NyLnJlbmRlcihoLCBjdHgpXG4gIH1cbn0pXG5cbi8vIENvbXBvbmVudDogPE51eHRDaGlsZD5cblZ1ZS5jb21wb25lbnQoTnV4dENoaWxkLm5hbWUsIE51eHRDaGlsZClcblZ1ZS5jb21wb25lbnQoJ05DaGlsZCcsIE51eHRDaGlsZClcblxuLy8gQ29tcG9uZW50IE51eHRMaW5rIGlzIGltcG9ydGVkIGluIHNlcnZlci5qcyBvciBjbGllbnQuanNcblxuLy8gQ29tcG9uZW50OiA8TnV4dD5cblZ1ZS5jb21wb25lbnQoTnV4dC5uYW1lLCBOdXh0KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRudXh0Jywge1xuICBnZXQoKSB7XG4gICAgY29uc3QgZ2xvYmFsTnV4dCA9IHRoaXMuJHJvb3QgPyB0aGlzLiRyb290LiRvcHRpb25zLiRudXh0IDogbnVsbFxuICAgIGlmIChwcm9jZXNzLmNsaWVudCAmJiAhZ2xvYmFsTnV4dCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy4kbnV4dFxuICAgIH1cbiAgICByZXR1cm4gZ2xvYmFsTnV4dFxuICB9LFxuICBjb25maWd1cmFibGU6IHRydWVcbn0pXG5cblZ1ZS51c2UoTWV0YSwge1wia2V5TmFtZVwiOlwiaGVhZFwiLFwiYXR0cmlidXRlXCI6XCJkYXRhLW4taGVhZFwiLFwic3NyQXR0cmlidXRlXCI6XCJkYXRhLW4taGVhZC1zc3JcIixcInRhZ0lES2V5TmFtZVwiOlwiaGlkXCJ9KVxuXG5jb25zdCBkZWZhdWx0VHJhbnNpdGlvbiA9IHtcIm5hbWVcIjpcInBhZ2VcIixcIm1vZGVcIjpcIm91dC1pblwiLFwiYXBwZWFyXCI6ZmFsc2UsXCJhcHBlYXJDbGFzc1wiOlwiYXBwZWFyXCIsXCJhcHBlYXJBY3RpdmVDbGFzc1wiOlwiYXBwZWFyLWFjdGl2ZVwiLFwiYXBwZWFyVG9DbGFzc1wiOlwiYXBwZWFyLXRvXCJ9XG5cbmNvbnN0IG9yaWdpbmFsUmVnaXN0ZXJNb2R1bGUgPSBWdWV4LlN0b3JlLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZVxuXG5mdW5jdGlvbiByZWdpc3Rlck1vZHVsZSAocGF0aCwgcmF3TW9kdWxlLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgcHJlc2VydmVTdGF0ZSA9IHByb2Nlc3MuY2xpZW50ICYmIChcbiAgICBBcnJheS5pc0FycmF5KHBhdGgpXG4gICAgICA/ICEhcGF0aC5yZWR1Y2UoKG5hbWVzcGFjZWRTdGF0ZSwgcGF0aCkgPT4gbmFtZXNwYWNlZFN0YXRlICYmIG5hbWVzcGFjZWRTdGF0ZVtwYXRoXSwgdGhpcy5zdGF0ZSlcbiAgICAgIDogcGF0aCBpbiB0aGlzLnN0YXRlXG4gIClcbiAgcmV0dXJuIG9yaWdpbmFsUmVnaXN0ZXJNb2R1bGUuY2FsbCh0aGlzLCBwYXRoLCByYXdNb2R1bGUsIHsgcHJlc2VydmVTdGF0ZSwgLi4ub3B0aW9ucyB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVBcHAoc3NyQ29udGV4dCwgY29uZmlnID0ge30pIHtcbiAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShzc3JDb250ZXh0KVxuICBjb25zdCByb3V0ZXIgPSBhd2FpdCBjcmVhdGVSb3V0ZXIoc3NyQ29udGV4dCwgY29uZmlnLCB7IHN0b3JlIH0pXG5cbiAgLy8gQWRkIHRoaXMuJHJvdXRlciBpbnRvIHN0b3JlIGFjdGlvbnMvbXV0YXRpb25zXG4gIHN0b3JlLiRyb3V0ZXIgPSByb3V0ZXJcblxuICAvLyBGaXggU1NSIGNhdmVhdCBodHRwczovL2dpdGh1Yi5jb20vbnV4dC9udXh0LmpzL2lzc3Vlcy8zNzU3I2lzc3VlY29tbWVudC00MTQ2ODkxNDFcbiAgc3RvcmUucmVnaXN0ZXJNb2R1bGUgPSByZWdpc3Rlck1vZHVsZVxuXG4gIC8vIENyZWF0ZSBSb290IGluc3RhbmNlXG5cbiAgLy8gaGVyZSB3ZSBpbmplY3QgdGhlIHJvdXRlciBhbmQgc3RvcmUgdG8gYWxsIGNoaWxkIGNvbXBvbmVudHMsXG4gIC8vIG1ha2luZyB0aGVtIGF2YWlsYWJsZSBldmVyeXdoZXJlIGFzIGB0aGlzLiRyb3V0ZXJgIGFuZCBgdGhpcy4kc3RvcmVgLlxuICBjb25zdCBhcHAgPSB7XG4gICAgaGVhZDoge1widGl0bGVcIjpcIlRoZSBOYXR1cmFsIEVtZXJhbGQgQ29tcGFueVwiLFwibWV0YVwiOlt7XCJjaGFyc2V0XCI6XCJ1dGYtOFwifSx7XCJuYW1lXCI6XCJwOmRvbWFpbl92ZXJpZnlcIixcImNvbnRlbn
1RcIjpcImE3YzRhNDA4NWEwMzg2MGNjZDMyMjJhYjE3MzhlZTVjXCJ9LHtcIm5hbWVcIjpcInZpZXdwb3J0XCIsXCJjb250ZW50XCI6XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwifSx7XCJuYW1lXCI6XCJ0aGVtZS1jb2xvclwiLFwiY29udGVudFwiOlwiI2UyZTJlMlwifV0sXCJzY3JpcHRcIjpbe1wic3JjXCI6XCJodHRwczpcXHUwMDJGXFx1MDAyRmY4NmE2NWRjYTE5YS5lZGdlLnNkay5hd3N3YWYuY29tXFx1MDAyRmY4NmE2NWRjYTE5YVxcdTAwMkZiOGIzNTk4ODhlODVcXHUwMDJGY2hhbGxlbmdlLmpzXCIsXCJkZWZlclwiOnRydWV9XSxcImxpbmtcIjpbe1wicmVsXCI6XCJwcmVjb25uZWN0XCIsXCJocmVmXCI6XCJodHRwczpcXHUwMDJGXFx1MDAyRjM2MGltYWdlcy50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbVxcdTAwMkZcIn0se1wicmVsXCI6XCJwcmVjb25uZWN0XCIsXCJocmVmXCI6XCJodHRwczpcXHUwMDJGXFx1MDAyRmltYWdlcy50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbVxcdTAwMkZcIn0se1wicmVsXCI6XCJkbnMtcHJlZmV0Y2hcIixcImhyZWZcIjpcImh0dHBzOlxcdTAwMkZcXHUwMDJGaW1hZ2VzLnRoZW5hdHVyYWxzYXBwaGlyZWNvbXBhbnkuY29tXFx1MDAyRlwifSx7XCJyZWxcIjpcInByZWNvbm5lY3RcIixcImhyZWZcIjpcImh0dHBzOlxcdTAwMkZcXHUwMDJGc2VydmljZS50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbVwifSx7XCJyZWxcIjpcInByZWxvYWRcIixcImFzXCI6XCJmb250XCIsXCJjcm9zc09yaWdpblwiOlwiYW5vbnltb3VzXCIsXCJocmVmXCI6XCJcXHUwMDJGc3R5bGVzXFx1MDAyRmZvbnRzXFx1MDAyRkxvcmFcXHUwMDJGd29mZjJcXHUwMDJGTG9yYS1SZWd1bGFyLndvZmYyXCJ9LHtcInJlbFwiOlwicHJlbG9hZFwiLFwiYXNcIjpcImZvbnRcIixcImNyb3NzT3JpZ2luXCI6XCJhbm9ueW1vdXNcIixcImhyZWZcIjpcIlxcdTAwMkZzdHlsZXNcXHUwMDJGZm9udHNcXHUwMDJGTG9yYVxcdTAwMkZ3b2ZmMlxcdTAwMkZMb3JhLUl0YWxpYy53b2ZmMlwifSx7XCJyZWxcIjpcInByZWxvYWRcIixcImFzXCI6XCJmb250XCIsXCJjcm9zc09yaWdpblwiOlwiYW5vbnltb3VzXCIsXCJocmVmXCI6XCJcXHUwMDJGc3R5bGVzXFx1MDAyRmZvbnRzXFx1MDAyRkxhdG9cXHUwMDJGd29mZjJcXHUwMDJGTGF0by1SZWd1bGFyLndvZmYyXCJ9XSxcInN0eWxlXCI6W119LFxuXG4gICAgc3RvcmUsXG4gICAgcm91dGVyLFxuICAgIG51eHQ6IHtcbiAgICAgIGRlZmF1bHRUcmFuc2l0aW9uLFxuICAgICAgdHJhbnNpdGlvbnM6IFtkZWZhdWx0VHJhbnNpdGlvbl0sXG4gICAgICBzZXRUcmFuc2l0aW9ucyAodHJhbnNpdGlvbnMpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRyYW5zaXRpb25zKSkge1xuICAgICAgICAgIHRyYW5zaXRpb25zID0gW3RyYW5zaXRpb25zXVxuICAgICAgICB9XG4gICAgICAgIHRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMubWFwKCh0cmFuc2l0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKCF0cmFuc2l0aW9uKSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uID0gZGVmYXVsdFRyYW5zaXRpb25cbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0cmFuc2l0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRUcmFuc2l0aW9uLCB7IG5hbWU6IHRyYW5zaXRpb24gfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRUcmFuc2l0aW9uLCB0cmFuc2l0aW9uKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvblxuICAgICAgICB9KVxuICAgICAgICB0aGlzLiRvcHRpb25zLm51eHQudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9uc1xuICAgICAgICByZXR1cm4gdHJhbnNpdGlvbnNcbiAgICAgIH0sXG5cbiAgICAgIGVycjogbnVsbCxcbiAgICAgIGRhdGVFcnI6IG51bGwsXG4gICAgICBlcnJvciAoZXJyKSB7XG4gICAgICAgIGVyciA9IGVyciB8fCBudWxsXG4gICAgICAgIGFwcC5jb250ZXh0Ll9lcnJvcmVkID0gQm9vbGVhbihlcnIpXG4gICAgICAgIGVyciA9IGVyciA/IG5vcm1hbGl6ZUVycm9yKGVycikgOiBudWxsXG4gICAgICAgIGxldCBudXh0ID0gYXBwLm51eHQgLy8gdG8gd29yayB3aXRoIEB2dWUvY29tcG9zaXRpb24tYXBpLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL251eHQvbnV4dC5qcy9pc3N1ZXMvNjUxNyNpc3N1ZWNvbW1lbnQtNTczMjgwMjA3XG4gICAgICAgIGlmICh0aGlzKSB7XG4gICAgICAgICAgbnV4dCA9IHRoaXMubnV4dCB8fCB0aGlzLiRvcHRpb25zLm51eHRcbiAgICAgICAgfVxuICAgICAgICBudXh0LmRhdGVFcnIgPSBEYXRlLm5vdygpXG4gICAgICAgIG51eHQuZXJyID0gZXJyXG4gICAgICAgIC8vIFVzZWQgaW4gc3JjL3NlcnZlci5qc1xuICAgICAgICBpZiAoc3NyQ29udGV4dCkge1xuICAgICAgICAgIHNzckNvbnRleHQubnV4dC5lcnJvciA9IGVyclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcnJcbiAgICAgIH1cbiAgICB9LFxuICAgIC4uLkFwcFxuICB9XG5cbiAgLy8gTWFrZSBhcHAgYXZhaWxhYmxlIGludG8gc3RvcmUgdmlhIHRoaXMuYXBwXG4gIHN0b3JlLmFwcCA9IGFwcFxuXG4gIGNvbnN0IG5leHQgPSBzc3JDb250ZXh0ID8gc3NyQ29udGV4dC5uZXh0IDogbG9jYXRpb24gPT4gYXBwLnJvdXRlci5wdXNoKGxvY2F0aW9uKVxuICAvLyBSZXNvbHZlIHJvdXRlXG4gIGxldCByb3V0ZVxuICBpZiAoc3NyQ29udGV4dCkge1xuICAgIHJvdXRlID0gcm91dGVyLnJlc29sdmUoc3NyQ29udGV4dC51cmwpLnJvdXRlXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGF0aCA9IGdldExvY2F0aW9uKHJvdXRlci5vcHRpb25zLmJhc2UsIHJvdXRlci5vcHRpb25zLm1vZGUpXG4gICAgcm91dGUgPSByb3V0ZXIucmVzb2x2ZShwYXRoKS5yb3V0ZVxuICB9XG5cbiAgLy8gU2V0IGNvbnRleHQgdG8gYXBwLmNvbnRleHRcbiAgYXdhaXQgc2V0Q29udGV4dChhcHAsIHtcbiAgICBzdG9yZSxcbiAgICByb3V0ZSxcbiAgICBuZXh0LFxuICAgIGVycm9yOi
1BhcHAubnV4dC5lcnJvci5iaW5kKGFwcCksXG4gICAgcGF5bG9hZDogc3NyQ29udGV4dCA/IHNzckNvbnRleHQucGF5bG9hZCA6IHVuZGVmaW5lZCxcbiAgICByZXE6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LnJlcSA6IHVuZGVmaW5lZCxcbiAgICByZXM6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LnJlcyA6IHVuZGVmaW5lZCxcbiAgICBiZWZvcmVSZW5kZXJGbnM6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LmJlZm9yZVJlbmRlckZucyA6IHVuZGVmaW5lZCxcbiAgICBiZWZvcmVTZXJpYWxpemVGbnM6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LmJlZm9yZVNlcmlhbGl6ZUZucyA6IHVuZGVmaW5lZCxcbiAgICBzc3JDb250ZXh0XG4gIH0pXG5cbiAgZnVuY3Rpb24gaW5qZWN0KGtleSwgdmFsdWUpIHtcbiAgICBpZiAoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbmplY3Qoa2V5LCB2YWx1ZSkgaGFzIG5vIGtleSBwcm92aWRlZCcpXG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluamVjdCgnJHtrZXl9JywgdmFsdWUpIGhhcyBubyB2YWx1ZSBwcm92aWRlZGApXG4gICAgfVxuXG4gICAga2V5ID0gJyQnICsga2V5XG4gICAgLy8gQWRkIGludG8gYXBwXG4gICAgYXBwW2tleV0gPSB2YWx1ZVxuICAgIC8vIEFkZCBpbnRvIGNvbnRleHRcbiAgICBpZiAoIWFwcC5jb250ZXh0W2tleV0pIHtcbiAgICAgIGFwcC5jb250ZXh0W2tleV0gPSB2YWx1ZVxuICAgIH1cblxuICAgIC8vIEFkZCBpbnRvIHN0b3JlXG4gICAgc3RvcmVba2V5XSA9IGFwcFtrZXldXG5cbiAgICAvLyBDaGVjayBpZiBwbHVnaW4gbm90IGFscmVhZHkgaW5zdGFsbGVkXG4gICAgY29uc3QgaW5zdGFsbEtleSA9ICdfX251eHRfJyArIGtleSArICdfaW5zdGFsbGVkX18nXG4gICAgaWYgKFZ1ZVtpbnN0YWxsS2V5XSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIFZ1ZVtpbnN0YWxsS2V5XSA9IHRydWVcbiAgICAvLyBDYWxsIFZ1ZS51c2UoKSB0byBpbnN0YWxsIHRoZSBwbHVnaW4gaW50byB2bVxuICAgIFZ1ZS51c2UoKCkgPT4ge1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVnVlLnByb3RvdHlwZSwga2V5KSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwga2V5LCB7XG4gICAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRyb290LiRvcHRpb25zW2tleV1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8vIEluamVjdCBydW50aW1lIGNvbmZpZyBhcyAkY29uZmlnXG4gIGluamVjdCgnY29uZmlnJywgY29uZmlnKVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCkge1xuICAgIC8vIFJlcGxhY2Ugc3RvcmUgc3RhdGUgYmVmb3JlIHBsdWdpbnMgZXhlY3V0aW9uXG4gICAgaWYgKHdpbmRvdy5fX05VWFRfXyAmJiB3aW5kb3cuX19OVVhUX18uc3RhdGUpIHtcbiAgICAgIHN0b3JlLnJlcGxhY2VTdGF0ZSh3aW5kb3cuX19OVVhUX18uc3RhdGUpXG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGVuYWJsZVByZXZpZXcocHJldmlld0RhdGEgPSB7fSkgaW4gY29udGV4dCBmb3IgcGx1Z2luc1xuICBpZiAocHJvY2Vzcy5zdGF0aWMgJiYgcHJvY2Vzcy5jbGllbnQpIHtcbiAgICBhcHAuY29udGV4dC5lbmFibGVQcmV2aWV3ID0gZnVuY3Rpb24gKHByZXZpZXdEYXRhID0ge30pIHtcbiAgICAgIGFwcC5wcmV2aWV3RGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIHByZXZpZXdEYXRhKVxuICAgICAgaW5qZWN0KCdwcmV2aWV3JywgcHJldmlld0RhdGEpXG4gICAgfVxuICB9XG4gIC8vIFBsdWdpbiBleGVjdXRpb25cblxuICBpZiAocHJvY2Vzcy5zZXJ2ZXIgJiYgdHlwZW9mIG51eHRfcGx1Z2luX3NlbnRyeXNlcnZlcl82YWMwYjBkNiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX3NlbnRyeXNlcnZlcl82YWMwYjBkNihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9zZW50cnljbGllbnRfNjRlNjM2MGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9zZW50cnljbGllbnRfNjRlNjM2MGQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fY29va2lldW5pdmVyc2FsbnV4dF9jN2ExYjMwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2Nvb2tpZXVuaXZlcnNhbG51eHRfYzdhMWIzMGUoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fcGx1Z2ludXRpbHNfMTk3YzdjZWMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9wbHVnaW51dGlsc18xOTdjN2NlYyhhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9wbHVnaW5yb3V0aW5nXzQwNGZkNzU2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fcGx1Z2lucm91dGluZ180MDRmZDc1NihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9wbHVnaW5tYWluXzE0MmY4MThjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fcGx1Z2lubWFpbl8xNDJmODE4YyhhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9kZXZpY2VwbHVnaW5fMjY3NTAxNDggPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9kZXZpY2VwbHVnaW5fMjY3NTAxNDgoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5faWNvbnBsdWdpbl83YTViYmQzNCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ljb25wbHVnaW5fN2E1YmJkMzQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fYXhpb3NfZDdkMTZlNWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9heGlvc19kN2QxNmU1ZShhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9sb2dnZXJfYWYwNzQ1MTYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9sb2dnZXJfYWYwNzQ1MTYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fc3RvcmVfNjhjMzBjMWIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9zdG9yZV82OGMzMGMxYihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9ldmVudEJ1c181MDEwMjQyOCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2V2ZW50QnVzXzUwMTAyNDI4KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAodHlwZW9mIG51eHRfcGx1Z2luX2FwaV8xMmUwYjc1NiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2FwaV8xMmUwYjc1NihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3Muc2VydmVyICYmIHR5cGVvZiBudXh0X3BsdWdpbl9odHRwQWdlbnRzXzIwYWVkNjc2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faHR0cEFnZW50c18yMGFlZDY3NihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9heGlvc19kZDg4ZDgxZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2F4aW9zX2RkODhkODFlKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2FuYWx5dGljc180ZmYwYWU1MCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2FuYWx5dGljc180ZmYwYWU1MChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl92dWVvYnNlcnZlcl8wMGRlOGI2MiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX3Z1ZW9ic2VydmVyXzAwZGU4YjYyKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2V2ZW50c180ZmUyNTI4YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2V2ZW50c180ZmUyNTI4YShhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9nbG9iYWxjb21wb25lbnRzXzUzY2QwMzBhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fZ2xvYmFsY29tcG9uZW50c181M2NkMDMwYShhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9mb250c19mODZkOTFjYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ZvbnRzX2Y4NmQ5MWNjKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVycG9sYXRpb25MaW5rc18yNWU2OGI1ZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVycG9sYXRpb25MaW5rc18yNWU2OGI1ZihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9oZWxwZXJzX2ZhOWYwOTgwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faGVscGVyc19mYTlmMDk4MChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9sb2NhbFN0b3JhZ2VfNzc5M2NmMjQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9sb2NhbFN0b3JhZ2VfNzc5M2NmMjQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fdnVlanNtb2RhbF8wNWJlNzliNSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX3Z1ZWpzbW9kYWxfMDViZTc5Y
1jUoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fbWV0YVRhZ3NfMzBkZjkzM2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9tZXRhVGFnc18zMGRmOTMzYShhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9jbGVhclF1ZXJ5UGFyYW1zVXJsXzQwODM5YjUwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fY2xlYXJRdWVyeVBhcmFtc1VybF80MDgzOWI1MChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3Muc2VydmVyICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pY29uc2xvYWRlcl83ZWNhYzc3NCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ljb25zbG9hZGVyXzdlY2FjNzc0KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2NvbnN1bHRDaGF0X2U5N2JlODBjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fY29uc3VsdENoYXRfZTk3YmU4MGMoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fcm91dGVyXzlhODAwMWE0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fcm91dGVyXzlhODAwMWE0KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2dvb2dsZWF1dGhfYTU4YmFjYmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9nb29nbGVhdXRoX2E1OGJhY2JjKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX3RvYXN0XzViNjI0MTk3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5fdG9hc3RfNWI2MjQxOTcoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fYXV0aF8yMTQ3ODIzZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2F1dGhfMjE0NzgyM2YoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fYXV0aF80OTM2MGE2NiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2F1dGhfNDkzNjBhNjYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zYWNjb3JkaW9uY2xpZW50NTZhODY0ZGRfM2U1MTQyNDMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhY2NvcmRpb25jbGllbnQ1NmE4NjRkZF8zZTUxNDI0MyhhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhZmZpcm1jbGllbnRiNWE0ZjRhY18zNWU2MmUwYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2FmZmlybWNsaWVudGI1YTRmNGFjXzM1ZTYyZTBhKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2FnR3JpZGNsaWVudGYzMDBiMWRhXzI3NDcyMDg0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zYWdHcmlkY2xpZW50ZjMwMGIxZGFfMjc0NzIwODQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zYW5hbHl0aWNzY2xpZW50YmMzN2Y0Y2FfZDI5MzIzYWMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNhbmFseXRpY3NjbGllbnRiYzM3ZjRjYV9kMjkzMjNhYyhhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNib2R5U2Nyb2xsTG9ja2NsaWVudDAwYWZjMGUxXzMzY2NhYmFhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zYm9keVNjcm9sbExvY2tjbGllbnQwMGFmYzBlMV8zM2NjYWJhYShhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNjbGlwYm9hcmRjbGllbnRlY2VjMThhYV9iMzgwODQzMCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2NsaXBib2FyZGNsaWVudGVjZWMxOGFhX2IzODA4NDMwKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2RhdGVQaWNrZXJjbGllbnQ3ZDg2YjAzYV9jMjkxZjM0MCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2RhdGVQaWNrZXJjbGllbnQ3ZDg2YjAzYV9jMjkxZjM0MChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNkcmFnZ2FibGVjbGllbnQzYjk1Y2FlMl9iMzdlNGI4NCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2RyYWdnYWJsZWNsaWVudDNiOTVjYWUyX2IzN2U0Yjg0KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2VtYmVkc29jaWFsY2xpZW50ZDRkZDEwNGFfYTM4NzRjMDIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNlbWJlZHNvY2lhbGNsaWVudGQ0ZGQxMDRhX2EzODc0YzAyKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2V4dGVuZFNES2NsaWVudGE3ZDljNzU2XzYxYTNkMDgxID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZXh0ZW5kU0RLY2xpZW50YTdkOWM3NTZfNjFhM2QwODEoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlQmFkZ2VjbGllbnRlNzk5OTc4Ml83OTk2MjZlNiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2dvb2dsZUJhZGdlY2xpZW50ZTc5OTk3ODJfNzk5NjI2ZTYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlTWFwc2NsaWVudDE0NjRhZDEyXzYxNjQyNWNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlTWFwc2NsaWVudDE0NjRhZDEyXzYxNjQyNWNlKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2dvb2dsZVN1cnZleWNsaWVudDFlZTUwOWZhXzI1YTJiN2IwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ29vZ2xlU3VydmV5Y2xpZW50MWVlNTA5ZmFfMjVhMmI3YjAoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ3RhZ2NsaWVudGMxMTA0YzRjXzM3MWFiNDc2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zZ3RhZ2NsaWVudGMxMTA0YzRjXzM3MWFiNDc2KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2hhbW1lcmNsaWVudDdhNzAzOGNkXzZmOTAwYjc0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zaGFtbWVyY2xpZW50N2E3MDM4Y2RfNmY5MDBiNzQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zaGxzY2x
1pZW50MGM3N2I3ZjhfMjU2YWFlNTAgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNobHNjbGllbnQwYzc3YjdmOF8yNTZhYWU1MChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpbWFza2NsaWVudDQxZWExY2FjXzM4ZWJiYzdmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zaW1hc2tjbGllbnQ0MWVhMWNhY18zOGViYmM3ZihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpdjNkY2xpZW50MWY5ZmFhYzVfM2Q4NzgyNWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNpdjNkY2xpZW50MWY5ZmFhYzVfM2Q4NzgyNWUoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbGF6eWxvYWRjbGllbnQxZjc4MjViZV8zNDhhMDIyNiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc2xhenlsb2FkY2xpZW50MWY3ODI1YmVfMzQ4YTAyMjYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbWljcm9zb2Z0Q2xhcml0eWNsaWVudDE0MzEwM2U2Xzg2YzY3ZWIwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbWljcm9zb2Z0Q2xhcml0eWNsaWVudDE0MzEwM2U2Xzg2YzY3ZWIwKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc21vZGVybml6cmNsaWVudDJkNTE4Y2Y3X2E2ZTkwYjE2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbW9kZXJuaXpyY2xpZW50MmQ1MThjZjdfYTZlOTBiMTYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbm91aXNsaWRlcmNsaWVudDgzOGE0YTg2XzUzOTQ4ZjQ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zbm91aXNsaWRlcmNsaWVudDgzOGE0YTg2XzUzOTQ4ZjQ0KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3BlcmZlY3RTY3JvbGxiYXJjbGllbnQzOTljOTdhMF80NzgzZDZhNiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3BlcmZlY3RTY3JvbGxiYXJjbGllbnQzOTljOTdhMF80NzgzZDZhNihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNwb3BwZXJjbGllbnQzYmJkMzA5YV81ZDQ4YWFhMSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3BvcHBlcmNsaWVudDNiYmQzMDlhXzVkNDhhYWExKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3JlY2FwdGNoYWNsaWVudDNmYmQ4OWJjXzYxZWEyYzIzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zcmVjYXB0Y2hhY2xpZW50M2ZiZDg5YmNfNjFlYTJjMjMoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zcmVqb2luZXJjbGllbnQzYzVhYjNkZV81MTY3NTFjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3Jlam9pbmVyY2xpZW50M2M1YWIzZGVfNTE2NzUxY2IoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zc29jaWFsU2hhcmluZ2NsaWVudDc2NzQ3N2Y4XzQwNWJlM2E0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zc29jaWFsU2hhcmluZ2NsaWVudDc2NzQ3N2Y4XzQwNWJlM2E0KGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3N3ZWV0YWxlcnRjbGllbnQ0ZDAwZmE3M181NjNmZDBiMCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3N3ZWV0YWxlcnRjbGllbnQ0ZDAwZmE3M181NjNmZDBiMChhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50ICYmIHR5cGVvZiBudXh0X3BsdWdpbl9pbnRlZ3JhdGlvbnNzd2lwZXJjbGllbnQyOGExY2ZmZl8xZDQ2NmJkMiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3N3aXBlcmNsaWVudDI4YTFjZmZmXzFkNDY2YmQyKGFwcC5jb250ZXh0LCBpbmplY3QpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgdHlwZW9mIG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3RhYnVsYXRvcmNsaWVudDQ3M2QyMTUyXzFjOGI2MTZmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgYXdhaXQgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zdGFidWxhdG9yY2xpZW50NDczZDIxNTJfMWM4YjYxNmYoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zdGlwcHljbGllbnQzYjFiOTNmOV8xN2JjNzIxMCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3RpcHB5Y2xpZW50M2IxYjkzZjlfMTdiYzcyMTAoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmNsaWVudCAmJiB0eXBlb2YgbnV4dF9wbHVnaW5faW50ZWdyYXRpb25zdXNlcmxpa2VjbGllbnQ0YmJi
1M2FhZV8yNThjMTFmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGF3YWl0IG51eHRfcGx1Z2luX2ludGVncmF0aW9uc3VzZXJsaWtlY2xpZW50NGJiYjNhYWVfMjU4YzExZmUoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIC8vIExvY2sgZW5hYmxlUHJldmlldyBpbiBjb250ZXh0XG4gIGlmIChwcm9jZXNzLnN0YXRpYyAmJiBwcm9jZXNzLmNsaWVudCkge1xuICAgIGFwcC5jb250ZXh0LmVuYWJsZVByZXZpZXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW5ub3QgY2FsbCBlbmFibGVQcmV2aWV3KCkgb3V0c2lkZSBhIHBsdWdpbi4nKVxuICAgIH1cbiAgfVxuXG4gIC8vIFdhaXQgZm9yIGFzeW5jIGNvbXBvbmVudCB0byBiZSByZXNvbHZlZCBmaXJzdFxuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gSWdub3JlIDQwNHMgcmF0aGVyIHRoYW4gYmxpbmRseSByZXBsYWNpbmcgVVJMIGluIGJyb3dzZXJcbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIGNvbnN0IHsgcm91dGUgfSA9IHJvdXRlci5yZXNvbHZlKGFwcC5jb250ZXh0LnJvdXRlLmZ1bGxQYXRoKVxuICAgICAgaWYgKCFyb3V0ZS5tYXRjaGVkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpXG4gICAgICB9XG4gICAgfVxuICAgIHJvdXRlci5yZXBsYWNlKGFwcC5jb250ZXh0LnJvdXRlLmZ1bGxQYXRoLCByZXNvbHZlLCAoZXJyKSA9PiB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9ibG9iL3YzLjQuMy9zcmMvdXRpbC9lcnJvcnMuanNcbiAgICAgIGlmICghZXJyLl9pc1JvdXRlcikgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICBpZiAoZXJyLnR5cGUgIT09IDIgLyogTmF2aWdhdGlvbkZhaWx1cmVUeXBlLnJlZGlyZWN0ZWQgKi8pIHJldHVybiByZXNvbHZlKClcblxuICAgICAgLy8gbmF2aWdhdGVkIHRvIGEgZGlmZmVyZW50IHJvdXRlIGluIHJvdXRlciBndWFyZFxuICAgICAgY29uc3QgdW5yZWdpc3RlciA9IHJvdXRlci5hZnRlckVhY2goYXN5bmMgKHRvLCBmcm9tKSA9PiB7XG4gICAgICAgIGlmIChwcm9jZXNzLnNlcnZlciAmJiBzc3JDb250ZXh0ICYmIHNzckNvbnRleHQudXJsKSB7XG4gICAgICAgICAgc3NyQ29udGV4dC51cmwgPSB0by5mdWxsUGF0aFxuICAgICAgICB9XG4gICAgICAgIGFwcC5jb250ZXh0LnJvdXRlID0gYXdhaXQgZ2V0Um91dGVEYXRhKHRvKVxuICAgICAgICBhcHAuY29udGV4dC5wYXJhbXMgPSB0by5wYXJhbXMgfHwge31cbiAgICAgICAgYXBwLmNvbnRleHQucXVlcnkgPSB0by5xdWVyeSB8fCB7fVxuICAgICAgICB1bnJlZ2lzdGVyKClcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBhcHAsXG4gICAgcm91dGVyXG4gIH1cbn1cblxuZXhwb3J0IHsgY3JlYXRlQXBwLCBOdXh0RXJyb3IgfVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///105\n')},132:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("var middleware = {};\nmiddleware['blockRoutes'] = __webpack_require__(953);\nmiddleware['blockRoutes'] = middleware['blockRoutes'].default || middleware['blockRoutes'];\nmiddleware['isAuthorized'] = __webpack_require__(954);\nmiddleware['isAuthorized'] = middleware['isAuthorized'].default || middleware['isAuthorized'];\nmiddleware['legacySlugRedirect'] = __webpack_require__(955);\nmiddleware['legacySlugRedirect'] = middleware['legacySlugRedirect'].default || middleware['legacySlugRedirect'];\nmiddleware['notAuthorized'] = __webpack_require__(956);\nmiddleware['notAuthorized'] = middleware['notAuthorized'].default || middleware['notAuthorized'];\nmiddleware['performance'] = __webpack_require__(645);\nmiddleware['performance'] = middleware['performance'].default || middleware['performance'];\n/* harmony default export */ __webpack_exports__[\"a\"] = (middleware);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL21pZGRsZXdhcmUuanM/OGQ2OCJdLCJuYW1lcyI6WyJtaWRkbGV3YXJlIiwicmVxdWlyZSIsImRlZmF1bHQiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFckJBLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBR0MsbUJBQU8sQ0FBQyxHQUFrRCxDQUFDO0FBQ3ZGRCxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUdBLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQ0UsT0FBTyxJQUFJRixVQUFVLENBQUMsYUFBYSxDQUFDO0FBRTFGQSxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUdDLG1CQUFPLENBQUMsR0FBbUQsQ0FBQztBQUN6RkQsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHQSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUNFLE9BQU8sSUFBSUYsVUFBVSxDQUFDLGNBQWMsQ0FBQztBQUU3RkEsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUdDLG1CQUFPLENBQUMsR0FBeUQsQ0FBQztBQUNyR0QsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUdBLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDRSxPQUFPLElBQUlGLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztBQUUvR0EsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHQyxtQkFBTyxDQUFDLEdBQW9ELENBQUM7QUFDM0ZELFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBR0EsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDRSxPQUFPLElBQUlGLFVBQVUsQ0FBQyxlQUFlLENBQUM7QUFFaEdBLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBR0MsbUJBQU8sQ0FBQyxHQUFrRCxDQUFDO0FBQ3ZGRCxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUdBLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQ0UsT0FBTyxJQUFJRixVQUFVLENBQUMsYUFBYSxDQUFDO0FBRTNFQSxtRUFBVSIsImZpbGUiOiIxMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtaWRkbGV3YXJlID0ge31cblxubWlkZGxld2FyZVsnYmxvY2tSb3V0ZXMnXSA9IHJlcXVpcmUoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvbWlkZGxld2FyZS9ibG9ja1JvdXRlcy5qcycpXG5taWRkbGV3YXJlWydibG9ja1JvdXRlcyddID0gbWlkZGxld2FyZVsnYmxvY2tSb3V0ZXMnXS5kZWZh
1dWx0IHx8IG1pZGRsZXdhcmVbJ2Jsb2NrUm91dGVzJ11cblxubWlkZGxld2FyZVsnaXNBdXRob3JpemVkJ10gPSByZXF1aXJlKCcuLi8uLi9wcm9qZWN0cy9lbWVyYWxkL21pZGRsZXdhcmUvaXNBdXRob3JpemVkLmpzJylcbm1pZGRsZXdhcmVbJ2lzQXV0aG9yaXplZCddID0gbWlkZGxld2FyZVsnaXNBdXRob3JpemVkJ10uZGVmYXVsdCB8fCBtaWRkbGV3YXJlWydpc0F1dGhvcml6ZWQnXVxuXG5taWRkbGV3YXJlWydsZWdhY3lTbHVnUmVkaXJlY3QnXSA9IHJlcXVpcmUoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvbWlkZGxld2FyZS9sZWdhY3lTbHVnUmVkaXJlY3QuanMnKVxubWlkZGxld2FyZVsnbGVnYWN5U2x1Z1JlZGlyZWN0J10gPSBtaWRkbGV3YXJlWydsZWdhY3lTbHVnUmVkaXJlY3QnXS5kZWZhdWx0IHx8IG1pZGRsZXdhcmVbJ2xlZ2FjeVNsdWdSZWRpcmVjdCddXG5cbm1pZGRsZXdhcmVbJ25vdEF1dGhvcml6ZWQnXSA9IHJlcXVpcmUoJy4uLy4uL3Byb2plY3RzL2VtZXJhbGQvbWlkZGxld2FyZS9ub3RBdXRob3JpemVkLmpzJylcbm1pZGRsZXdhcmVbJ25vdEF1dGhvcml6ZWQnXSA9IG1pZGRsZXdhcmVbJ25vdEF1dGhvcml6ZWQnXS5kZWZhdWx0IHx8IG1pZGRsZXdhcmVbJ25vdEF1dGhvcml6ZWQnXVxuXG5taWRkbGV3YXJlWydwZXJmb3JtYW5jZSddID0gcmVxdWlyZSgnLi4vLi4vcHJvamVjdHMvZW1lcmFsZC9taWRkbGV3YXJlL3BlcmZvcm1hbmNlLmpzJylcbm1pZGRsZXdhcmVbJ3BlcmZvcm1hbmNlJ10gPSBtaWRkbGV3YXJlWydwZXJmb3JtYW5jZSddLmRlZmF1bHQgfHwgbWlkZGxld2FyZVsncGVyZm9ybWFuY2UnXVxuXG5leHBvcnQgZGVmYXVsdCBtaWRkbGV3YXJlXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///132\n")},264:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);\n\n\n\n\n\n\nvar requestIdleCallback = window.requestIdleCallback || function (cb) {\n var start = Date.now();\n return setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: () => Math.max(0, 50 - (Date.now() - start))\n });\n }, 1);\n};\nvar cancelIdleCallback = window.cancelIdleCallback || function (id) {\n clearTimeout(id);\n};\nvar observer = window.IntersectionObserver && new window.IntersectionObserver(entries => {\n entries.forEach(_ref => {\n var {\n intersectionRatio,\n target: link\n } = _ref;\n if (intersectionRatio <= 0 || !link.__prefetch) {\n return;\n }\n link.__prefetch();\n });\n});\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n name: 'NuxtLink',\n extends: vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"].component('RouterLink'),\n props: {\n prefetch: {\n type: Boolean,\n default: false\n },\n noPrefetch: {\n type: Boolean,\n default: false\n }\n },\n mounted() {\n if (this.prefetch && !this.noPrefetch) {\n this.handleId = requestIdleCallback(this.observe, {\n timeout: 2e3\n });\n }\n },\n beforeDestroy() {\n cancelIdleCallback(this.handleId);\n if (this.__observed) {\n observer.unobserve(this.$el);\n delete this.$el.__prefetch;\n }\n },\n methods: {\n observe() {\n // If no IntersectionObserver, avoid prefetching\n if (!observer) {\n return;\n }\n // Add to observer\n if (this.shouldPrefetch()) {\n this.$el.__prefetch = this.prefetchLink.bind(this);\n observer.observe(this.$el);\n this.__observed = true;\n }\n },\n shouldPrefetch() {\n return this.getPrefetchComponents().length > 0;\n },\n canPrefetch() {\n var conn = navigator.connection;\n var hasBadConnection = this.$nuxt.isOffline || conn && ((conn.effectiveType || '').includes('2g') || conn.saveData);\n return !hasBadConnection;\n },\n getPrefetchComponents() {\n var ref = this.$router.resolve(this.to, this.$route, this.append);\n var Components = ref.resolved.matched.map(r => r.components.default);\n return Components.filter(Component => typeof Component === 'function' && !Component.options && !Component.__prefetched);\n }
1,\n prefetchLink() {\n if (!this.canPrefetch()) {\n return;\n }\n // Stop observing this link (in case of internet connection changes)\n observer.unobserve(this.$el);\n var Components = this.getPrefetchComponents();\n for (var Component of Components) {\n var componentOrPromise = Component();\n if (componentOrPromise instanceof Promise) {\n componentOrPromise.catch(() => {});\n }\n Component.__prefetched = true;\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NvbXBvbmVudHMvbnV4dC1saW5rLmNsaWVudC5qcz9hMDE2Il0sIm5hbWVzIjpbInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJpZCIsImNsZWFyVGltZW91dCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIl9yZWYiLCJpbnRlcnNlY3Rpb25SYXRpbyIsInRhcmdldCIsImxpbmsiLCJfX3ByZWZldGNoIiwibmFtZSIsImV4dGVuZHMiLCJWdWUiLCJjb21wb25lbnQiLCJwcm9wcyIsInByZWZldGNoIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0Iiwibm9QcmVmZXRjaCIsIm1vdW50ZWQiLCJoYW5kbGVJZCIsIm9ic2VydmUiLCJ0aW1lb3V0IiwiYmVmb3JlRGVzdHJveSIsIl9fb2JzZXJ2ZWQiLCJ1bm9ic2VydmUiLCIkZWwiLCJtZXRob2RzIiwic2hvdWxkUHJlZmV0Y2giLCJwcmVmZXRjaExpbmsiLCJiaW5kIiwiZ2V0UHJlZmV0Y2hDb21wb25lbnRzIiwibGVuZ3RoIiwiY2FuUHJlZmV0Y2giLCJjb25uIiwibmF2aWdhdG9yIiwiY29ubmVjdGlvbiIsImhhc0JhZENvbm5lY3Rpb24iLCIkbnV4dCIsImlzT2ZmbGluZSIsImVmZmVjdGl2ZVR5cGUiLCJpbmNsdWRlcyIsInNhdmVEYXRhIiwicmVmIiwiJHJvdXRlciIsInJlc29sdmUiLCJ0byIsIiRyb3V0ZSIsImFwcGVuZCIsIkNvbXBvbmVudHMiLCJyZXNvbHZlZCIsIm1hdGNoZWQiLCJtYXAiLCJyIiwiY29tcG9uZW50cyIsImZpbHRlciIsIkNvbXBvbmVudCIsIm9wdGlvbnMiLCJfX3ByZWZldGNoZWQi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SSxDQUFDbEIscUJBQXFCLENBQUMsQ0FBQztNQUUvQyxLQUFLLElBQU15QixTQUFTLElBQUlQLFVBQVUsRUFBRTtRQUNsQyxJQUFNVSxrQkFBa0IsR0FBR0gsU0FBUyxDQUFDLENBQUM7UUFDdEMsSUFBSUcsa0JBQWtCLFlBQVlDLE9BQU8sRUFBRTtVQUN6Q0Qsa0JBQWtCLENBQUNFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3BDO1FBQ0FMLFNBQVMsQ0FBQ0UsWUFBWSxHQUFHLElBQUk7TUFDL0I7SUFDRjtFQUNGO0FBQ0YsQ0FBQyIsImZpbGUiOiIyNjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcblxuY29uc3QgcmVxdWVzdElkbGVDYWxsYmFjayA9IHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrIHx8XG4gIGZ1bmN0aW9uIChjYikge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKHtcbiAgICAgICAgZGlkVGltZW91dDogZmFsc2UsXG4gICAgICAgIHRpbWVSZW1haW5pbmc6ICgpID0+IE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpXG4gICAgICB9KVxuICAgIH0sIDEpXG4gIH1cblxuY29uc3QgY2FuY2VsSWRsZUNhbGxiYWNrID0gd2luZG93LmNhbmNlbElkbGVDYWxsYmFjayB8fCBmdW5jdGlvbiAoaWQpIHtcbiAgY2xlYXJUaW1lb3V0KGlkKVxufVxuXG5jb25zdCBvYnNlcnZlciA9IHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlciAmJiBuZXcgd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gIGVudHJpZXMuZm9yRWFjaCgoeyBpbnRlcnNlY3Rpb25SYXRpbywgdGFyZ2V0OiBsaW5rIH0pID0+IHtcbiAgICBpZiAoaW50ZXJzZWN0aW9uUmF0aW8gPD0gMCB8fCAhbGluay5fX3ByZWZldGNoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgbGluay5fX3ByZWZldGNoKClcbiAgfSlcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ051eHRMaW5rJyxcbiAgZXh0ZW5kczogVnVlLmNvbXBvbmVudCgnUm91dGVyTGluaycpLFxuICBwcm9wczoge1xuICAgIHByZWZldGNoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vUHJlZmV0Y2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZCAoKSB7XG4gICAgaWYgKHRoaXMucHJlZmV0Y2ggJiYgIXRoaXMubm9QcmVmZXRjaCkge1xuICAgICAgdGhpcy5oYW5kbGVJZCA9IHJlcXVlc3RJZGxlQ2FsbGJhY2sodGhpcy5vYnNlcnZlLCB7IHRpbWVvdXQ6IDJlMyB9KVxuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveSAoKSB7XG4gICAgY2FuY2VsSWRsZUNhbGxiYWNrKHRoaXMuaGFuZGxlSWQpXG5cbiAgICBpZiAodGhpcy5fX29ic2VydmVkKSB7XG4gICAgICBvYnNlcnZlci51bm9ic2VydmUodGhpcy4kZWwpXG4gICAgICBkZWxldGUgdGhpcy4kZWwuX19wcmVmZXRjaFxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9ic2VydmUgKCkge1xuICAgICAgLy8gSWYgbm8gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIGF2b2lkIHByZWZldGNoaW5nXG4gICAgICBpZiAoIW9ic2VydmVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gQWRkIHRvIG9ic2VydmVyXG4gICAgICBpZiAodGhpcy5zaG91bGRQcmVmZXRjaCgpKSB7XG4gICAgICAgIHRoaXMuJGVsLl9fcHJlZmV0Y2ggPSB0aGlzLnByZWZldGNoTGluay5iaW5kKHRoaXMpXG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy4kZWwpXG4gICAgICAgIHRoaXMuX19vYnNlcnZlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3VsZFByZWZldGNoICgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFByZWZldGNoQ29tcG9uZW50cygpLmxlbmd0aCA+IDBcbiAgICB9LFxuICAgIGNhblByZWZldGNoICgpIHtcbiAgICAgIGNvbnN0IGNvbm4gPSBuYXZpZ2F0b3IuY29ubmVjdGlvblxuICAgICAgY29uc3QgaGFzQmFkQ29ubmVjdGlvbiA9IHRoaXMuJG51eHQuaXNPZmZsaW5lIHx8IChjb25uICYmICgoY29ubi5lZmZlY3RpdmVUeXBlIHx8ICcnKS5pbmNsdWRlcygnMmcnKSB8fCBjb25uLnNhdmVEYXRhKSlcblxuICAgICAgcmV0dXJuICFoYXNCYWRDb25uZWN0aW9uXG4gICAgfSxcbiAgICBnZXRQcmVmZXRjaENvbXBvbmVudHMgKCkge1xuICAgICAgY29uc3QgcmVmID0gdGhpcy4kcm91dGVyLnJlc29sdmUodGhpcy50bywgdGhpcy4kcm91dGUsIHRoaXMuYXBwZW5kKVxuICAgICAgY29uc3QgQ29tcG9uZW50cyA9IHJlZi5yZXNvbHZlZC5tYXRjaGVkLm1hcChyID0+IHIuY29tcG9uZW50cy5kZWZh
1dWx0KVxuXG4gICAgICByZXR1cm4gQ29tcG9uZW50cy5maWx0ZXIoQ29tcG9uZW50ID0+IHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgIUNvbXBvbmVudC5vcHRpb25zICYmICFDb21wb25lbnQuX19wcmVmZXRjaGVkKVxuICAgIH0sXG4gICAgcHJlZmV0Y2hMaW5rICgpIHtcbiAgICAgIGlmICghdGhpcy5jYW5QcmVmZXRjaCgpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gU3RvcCBvYnNlcnZpbmcgdGhpcyBsaW5rIChpbiBjYXNlIG9mIGludGVybmV0IGNvbm5lY3Rpb24gY2hhbmdlcylcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLiRlbClcbiAgICAgIGNvbnN0IENvbXBvbmVudHMgPSB0aGlzLmdldFByZWZldGNoQ29tcG9uZW50cygpXG5cbiAgICAgIGZvciAoY29uc3QgQ29tcG9uZW50IG9mIENvbXBvbmVudHMpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50T3JQcm9taXNlID0gQ29tcG9uZW50KClcbiAgICAgICAgaWYgKGNvbXBvbmVudE9yUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBjb21wb25lbnRPclByb21pc2UuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgIH1cbiAgICAgICAgQ29tcG9uZW50Ll9fcHJlZmV0Y2hlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///264\n")},355:function(module,exports){eval("// This file is intentionally left empty for noop aliases//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2VtcHR5LmpzPzM2NmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiMzU1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIGludGVudGlvbmFsbHkgbGVmdCBlbXB0eSBmb3Igbm9vcCBhbGlhc2VzXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///355\n")},449:function(module,exports,__webpack_require__){eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(652);\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(79).default\nvar update = add(\"4bc8f2a9\", content, true, {\"sourceMap\":false});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NvbXBvbmVudHMvbnV4dC1lcnJvci52dWU/NGZiZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxHQUEwVTtBQUNoVztBQUNBLDRDQUE0QyxRQUFTO0FBQ3JEO0FBQ0E7QUFDQSxVQUFVLG1CQUFPLENBQUMsRUFBZ0U7QUFDbEYsNkNBQTZDLGtCQUFrQiIsImZpbGUiOiI0NDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMy1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0zLW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL251eHQtZXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjRmNzZjMWUmcHJvZCZsYW5nPWNzcyZcIik7XG5pZihjb250ZW50Ll9fZXNNb2R1bGUpIGNvbnRlbnQgPSBjb250ZW50LmRlZmF1bHQ7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gYWRkIHRoZSBzdHlsZXMgdG8gdGhlIERPTVxudmFyIGFkZCA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1wiKS5kZWZhdWx0XG52YXIgdXBkYXRlID0gYWRkKFwiNGJjOGYyYTlcIiwgY29udGVudCwgdHJ1ZSwge1wic291cmNlTWFwXCI6ZmFsc2V9KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///449\n")},582:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);\n\n\n\n\nvar isSsrHydration = vm => vm.$vnode && vm.$vnode.elm && vm.$vnode.elm.dataset && vm.$vnode.elm.dataset.fetchKey;\nvar nuxtState = window.__NUXT__;\n/* harmony default export */ __webpack_exports__["a"] = ({\n beforeCreate() {\n if (!Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* hasFetch */ "l"])(this)) {\n return;\n }\n this._fetchDelay = typeof this.$options.fetchDelay === \'number\' ? this.$options.fetchDelay : 200;\n vue__WEBPACK_IMPORTED_MODULE_2__["default"].util.defineReactive(this, \'$fetchState\', {\n pending: false,\n error: null,\n timestamp: Date.now()\n });\n this.$fetch = $fetch.bind(this);\n Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* addLifecycleHook */ "a"])(this, \'created\', created);\n Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* addLifecycleHook */ "a"])(this, \'beforeMount\', beforeMount);\n }\n});\nfunction beforeMount() {\n if (!this._hydrated) {\n return this.$fetch();\n }\n}\nfunction created() {\n if (!isSsrHydration(this)) {\n return;\n }\n\n // Hydrate component\n this._hydrated = true;\n this._fetchKey = this.$vnode.elm.dataset.fetchKey;\n var data = nuxtState.fetch[this._fetchKey];\n\n // If fetch error\n if (data && data._error) {\n this.$fetchState.error = data._error;\n return;\n }\n\n // Merge data\n for (var key in data) {\n vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(this.$data, key, data[key]);\n }\n}\nfunction $fetch() {\n if (!this._fetchPromise) {\n this._fetchPromise = $_fetch.call(this).then(() =>
1 {\n delete this._fetchPromise;\n });\n }\n return this._fetchPromise;\n}\nfunction $_fetch() {\n return _$_fetch.apply(this, arguments);\n}\nfunction _$_fetch() {\n _$_fetch = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* () {\n this.$nuxt.nbFetching++;\n this.$fetchState.pending = true;\n this.$fetchState.error = null;\n this._hydrated = false;\n var error = null;\n var startTime = Date.now();\n try {\n yield this.$options.fetch.call(this);\n } catch (err) {\n if (false) {}\n error = Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* normalizeError */ "p"])(err);\n }\n var delayLeft = this._fetchDelay - (Date.now() - startTime);\n if (delayLeft > 0) {\n yield new Promise(resolve => setTimeout(resolve, delayLeft));\n }\n this.$fetchState.error = error;\n this.$fetchState.pending = false;\n this.$fetchState.timestamp = Date.now();\n this.$nextTick(() => this.$nuxt.nbFetching--);\n });\n return _$_fetch.apply(this, arguments);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL21peGlucy9mZXRjaC5jbGllbnQuanM/ZGUyNCJdLCJuYW1lcyI6WyJpc1Nzckh5ZHJhdGlvbiIsInZtIiwiJHZub2RlIiwiZWxtIiwiZGF0YXNldCIsImZldGNoS2V5IiwibnV4dFN0YXRlIiwid2luZG93IiwiX19OVVhUX18iLCJiZWZvcmVDcmVhdGUiLCJoYXNGZXRjaCIsIl9mZXRjaERlbGF5IiwiJG9wdGlvbnMiLCJmZXRjaERlbGF5IiwiVnVlIiwidXRpbCIsImRlZmluZVJlYWN0aXZlIiwicGVuZGluZyIsImVycm9yIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsIiRmZXRjaCIsImJpbmQiLCJhZGRMaWZlY3ljbGVIb29rIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwiX2h5ZHJhdGVkIiwiX2ZldGNoS2V5IiwiZGF0YSIsImZldGNoIiwiX2Vycm9yIiwiJGZldGNoU3RhdGUiLCJrZXkiLCJzZXQiLCIkZGF0YSIsIl9mZXRjaFByb21pc2UiLCIkX2ZldGNoIiwiY2FsbCIsInRoZW4iLCJfJF9mZXRjaCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCIkbnV4dCIsIm5iRmV0Y2hpbmciLCJzdGFydFRpbWUiLCJlcnIiLCJwcm9jZXNzIiwibm9ybWFsaXplRXJyb3IiLCJkZWxheUxlZnQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCIkbmV4dFRpY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBcUI7QUFDa0U7QUFFdkYsSUFBTUEsY0FBYyxHQUFJQyxFQUFFLElBQUtBLEVBQUUsQ0FBQ0MsTUFBTSxJQUFJRCxFQUFFLENBQUNDLE1BQU0sQ0FBQ0MsR0FBRyxJQUFJRixFQUFFLENBQUNDLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDQyxPQUFPLElBQUlILEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQyxHQUFHLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUTtBQUNwSCxJQUFNQyxT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LEtBQUssQ0FBQ1EsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDLENBQUMsT0FBT1MsR0FBRyxFQUFFO01BQ1osSUFBSUMsS0FBVyxFQUFFLEVBRWhCO01BQ0Q5QixLQUFLLEdBQUcrQixxRUFBYyxDQUFDRixHQUFHLENBQUM7SUFDN0I7SUFFQSxJQUFNRyxTQUFTLEdBQUcsSUFBSSxDQUFDdkMsV0FBVyxJQUFJUyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUd5QixTQUFTLENBQUM7SUFDN0QsSUFBSUksU0FBUyxHQUFHLENBQUMsRUFBRTtNQUNqQixNQUFNLElBQUlDLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJQyxVQUFVLENBQUNELE9BQU8sRUFBRUYsU0FBUyxDQUFDLENBQUM7SUFDOUQ7SUFFQSxJQUFJLENBQUNsQixXQUFXLENBQUNkLEtBQUssR0FBR0EsS0FBSztJQUM5QixJQUFJLENBQUNjLFdBQVcsQ0FBQ2YsT0FBTyxHQUFHLEtBQUs7SUFDaEMsSUFBSSxDQUFDZSxXQUFXLENBQUNiLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztJQUV2QyxJQUFJLENBQUNpQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUNWLEtBQUssQ0FBQ0MsVUFBVSxFQUFFLENBQUM7RUFDL0MsQ0FBQztFQUFBLE9BQUFMLFFBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0FBQUEiLCJmaWxlIjoiNTgyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgeyBoYXNGZXRjaCwgbm9ybWFsaXplRXJyb3IsIGFkZExpZmVjeWNsZUhvb2ssIGNyZWF0ZUdldENvdW50ZXIgfSBmcm9tICcuLi91dGlscydcblxuY29uc3QgaXNTc3JIeWRyYXRpb24gPSAodm0p
1ID0+IHZtLiR2bm9kZSAmJiB2bS4kdm5vZGUuZWxtICYmIHZtLiR2bm9kZS5lbG0uZGF0YXNldCAmJiB2bS4kdm5vZGUuZWxtLmRhdGFzZXQuZmV0Y2hLZXlcbmNvbnN0IG51eHRTdGF0ZSA9IHdpbmRvdy5fX05VWFRfX1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgaWYgKCFoYXNGZXRjaCh0aGlzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5fZmV0Y2hEZWxheSA9IHR5cGVvZiB0aGlzLiRvcHRpb25zLmZldGNoRGVsYXkgPT09ICdudW1iZXInID8gdGhpcy4kb3B0aW9ucy5mZXRjaERlbGF5IDogMjAwXG5cbiAgICBWdWUudXRpbC5kZWZpbmVSZWFjdGl2ZSh0aGlzLCAnJGZldGNoU3RhdGUnLCB7XG4gICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgfSlcblxuICAgIHRoaXMuJGZldGNoID0gJGZldGNoLmJpbmQodGhpcylcbiAgICBhZGRMaWZlY3ljbGVIb29rKHRoaXMsICdjcmVhdGVkJywgY3JlYXRlZClcbiAgICBhZGRMaWZlY3ljbGVIb29rKHRoaXMsICdiZWZvcmVNb3VudCcsIGJlZm9yZU1vdW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIGJlZm9yZU1vdW50KCkge1xuICBpZiAoIXRoaXMuX2h5ZHJhdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuJGZldGNoKClcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVkKCkge1xuICBpZiAoIWlzU3NySHlkcmF0aW9uKHRoaXMpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBIeWRyYXRlIGNvbXBvbmVudFxuICB0aGlzLl9oeWRyYXRlZCA9IHRydWVcbiAgdGhpcy5fZmV0Y2hLZXkgPSB0aGlzLiR2bm9kZS5lbG0uZGF0YXNldC5mZXRjaEtleVxuICBjb25zdCBkYXRhID0gbnV4dFN0YXRlLmZldGNoW3RoaXMuX2ZldGNoS2V5XVxuXG4gIC8vIElmIGZldGNoIGVycm9yXG4gIGlmIChkYXRhICYmIGRhdGEuX2Vycm9yKSB7XG4gICAgdGhpcy4kZmV0Y2hTdGF0ZS5lcnJvciA9IGRhdGEuX2Vycm9yXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBNZXJnZSBkYXRhXG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBWdWUuc2V0KHRoaXMuJGRhdGEsIGtleSwgZGF0YVtrZXldKVxuICB9XG59XG5cbmZ1bmN0aW9uICRmZXRjaCgpIHtcbiAgaWYgKCF0aGlzLl9mZXRjaFByb21pc2UpIHtcbiAgICB0aGlzLl9mZXRjaFByb21pc2UgPSAkX2ZldGNoLmNhbGwodGhpcylcbiAgICAgIC50aGVuKCgpID0+IHsgZGVsZXRlIHRoaXMuX2ZldGNoUHJvbWlzZSB9KVxuICB9XG4gIHJldHVybiB0aGlzLl9mZXRjaFByb21pc2Vcbn1cblxuYXN5bmMgZnVuY3Rpb24gJF9mZXRjaCgpIHtcbiAgdGhpcy4kbnV4dC5uYkZldGNoaW5nKytcbiAgdGhpcy4kZmV0Y2hTdGF0ZS5wZW5kaW5nID0gdHJ1ZVxuICB0aGlzLiRmZXRjaFN0YXRlLmVycm9yID0gbnVsbFxuICB0aGlzLl9oeWRyYXRlZCA9IGZhbHNlXG4gIGxldCBlcnJvciA9IG51bGxcbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy4kb3B0aW9ucy5mZXRjaC5jYWxsKHRoaXMpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChwcm9jZXNzLmRldikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZmV0Y2goKTonLCBlcnIpXG4gICAgfVxuICAgIGVycm9yID0gbm9ybWFsaXplRXJyb3IoZXJyKVxuICB9XG5cbiAgY29uc3QgZGVsYXlMZWZ0ID0gdGhpcy5fZmV0Y2hEZWxheSAtIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKVxuICBpZiAoZGVsYXlMZWZ0ID4gMCkge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkZWxheUxlZnQpKVxuICB9XG5cbiAgdGhpcy4kZmV0Y2hTdGF0ZS5lcnJvciA9IGVycm9yXG4gIHRoaXMuJGZldGNoU3RhdGUucGVuZGluZyA9IGZhbHNlXG4gIHRoaXMuJGZldGNoU3RhdGUudGltZXN0YW1wID0gRGF0ZS5ub3coKVxuXG4gIHRoaXMuJG5leHRUaWNrKCgpID0+IHRoaXMuJG51eHQubmJGZXRjaGluZy0tKVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///582\n')},6:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* unused harmony export createGetCounter */\n/* unused harmony export empty */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return globalHandleError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return interopDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return hasFetch; });\n/* unused harmony export purifyData */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getChildrenComponentInstancesUsingFetch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return applyAsyncData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return sanitizeComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return getMatchedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return getMatchedComponentsInstances; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return flatMapComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return resolveRouteComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return getRouteData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return setContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return middlewareSeries; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return promisify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return getQueryDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return normalizeError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addLifecycleHook; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return urlJoin; });\n/* unused harmony export stripTrailingSlash */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return isSamePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return setScrollRestoration; });\n/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(139);\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(213);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(58);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(19);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(30);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(214);\n/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(142);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(20);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(5);\n/* harmony import */ var ufo__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(104);\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {};
1 r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// window.{{globals.loadedCallback}} hook\n// Useful for jsdom testing or plugins (https://github.com/tmpvar/jsdom#dealing-with-asynchronous-script-loading)\nif (true) {\n window.onNuxtReadyCbs = [];\n window.onNuxtReady = cb => {\n window.onNuxtReadyCbs.push(cb);\n };\n}\nfunction createGetCounter(counterObject) {\n var defaultKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \'\';\n return function getCounter() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultKey;\n if (counterObject[id] === undefined) {\n counterObject[id] = 0;\n }\n return counterObject[id]++;\n };\n}\nfunction empty() {}\nfunction globalHandleError(error) {\n if (vue__WEBPACK_IMPORTED_MODULE_15__["default"].config.errorHandler) {\n vue__WEBPACK_IMPORTED_MODULE_15__["default"].config.errorHandler(error);\n }\n}\nfunction interopDefault(promise) {\n return promise.then(m => m.default || m);\n}\nfunction hasFetch(vm) {\n return vm.$options && typeof vm.$options.fetch === \'function\' && !vm.$options.fetch.length;\n}\nfunction purifyData(data) {\n if (true) {\n return data;\n }\n return Object.entries(data).filter(_ref => {\n var [key, value] = _ref;\n var valid = !(value instanceof Function) && !(value instanceof Promise);\n if (!valid) {\n console.warn("".concat(key, " is not able to be stringified. This will break in a production environment."));\n }\n return valid;\n }).reduce((obj, _ref2) => {\n var [key, value] = _ref2;\n obj[key] = value;\n return obj;\n }, {});\n}\nfunction getChildrenComponentInstancesUsingFetch(vm) {\n var instances = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var children = vm.$children || [];\n for (var child of children) {\n if (child.$fetch) {\n instances.push(child);\n }\n if (child.$children) {\n getChildrenComponentInstancesUsingFetch(child, instances);\n }\n }\n return instances;\n}\nfunction applyAsyncData(Component, asyncData) {\n if (\n // For SSR, we once all this function without second param to just apply asyncData\n // Prevent doing this for each SSR request\n !asyncData && Component.options.__hasNuxtData) {\n return;\n }\n var ComponentData = Component.options._originDataFn || Component.options.data || function () {\n return {};\n };\n Component.options._originDataFn = ComponentData;\n Component.options.data = function () {\n var data = ComponentData.call(this, this);\n if (this.$ssrContext) {\n asyncData = this.$ssrContext.asyncData[Component.cid];\n }\n return _objectSpread(_objectSpread({}, data), asyncData);\n };\n Component.options.__hasNuxtData = true;\n if (Component._Ctor && Component._Ctor.options) {\n Component._Ctor.options.data = Component.options.data;\n }\n}\nfunction sanitizeComponent(Component) {\n // If Component already sanitized\n if (Component.options && Component._Ctor === Component) {\n return Component;\n }\n if (!Component.options) {\n Component = vue__WEBPACK_IMPORTED_MODULE_15__["default"].extend(Component); // fix issue #6\n Component._Ctor = Component;\n } else {\n Component._Ctor = Component;\n Component.extendOptions = Component.options;\n }\n // If no component name defined, set file path as name, (also fixes #5703)\n if (!Component.options.name && Component.options.__file) {\n Component.options.name = Component.options.__file;\n }\n return Component;\n}\nfunction getMatchedComponents(route) {\n var matches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var prop = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \'components\';\n return Array.prototype.concat.apply([], route.matched.map((m, index) =>
1 {\n return Object.keys(m[prop]).map(key => {\n matches && matches.push(index);\n return m[prop][key];\n });\n }));\n}\nfunction getMatchedComponentsInstances(route) {\n var matches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return getMatchedComponents(route, matches, \'instances\');\n}\nfunction flatMapComponents(route, fn) {\n return Array.prototype.concat.apply([], route.matched.map((m, index) => {\n return Object.keys(m.components).reduce((promises, key) => {\n if (m.components[key]) {\n promises.push(fn(m.components[key], m.instances[key], m, key, index));\n } else {\n delete m.components[key];\n }\n return promises;\n }, []);\n }));\n}\nfunction resolveRouteComponents(route, fn) {\n return Promise.all(flatMapComponents(route, /*#__PURE__*/function () {\n var _ref3 = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (Component, instance, match, key) {\n // If component is a function, resolve it\n if (typeof Component === \'function\' && !Component.options) {\n try {\n Component = yield Component();\n } catch (error) {\n // Handle webpack chunk loading errors\n // This may be due to a new deployment or a network problem\n if (error && error.name === \'ChunkLoadError\' && typeof window !== \'undefined\' && window.sessionStorage) {\n var timeNow = Date.now();\n var previousReloadTime = parseInt(window.sessionStorage.getItem(\'nuxt-reload\'));\n\n // check for previous reload time not to reload infinitely\n if (!previousReloadTime || previousReloadTime + 60000 < timeNow) {\n window.sessionStorage.setItem(\'nuxt-reload\', timeNow);
1\n window.location.reload(true /* skip cache */);\n }\n }\n throw error;\n }\n }\n match.components[key] = Component = sanitizeComponent(Component);\n return typeof fn === \'function\' ? fn(Component, instance, match, key) : Component;\n });\n return function (_x, _x2, _x3, _x4) {\n return _ref3.apply(this, arguments);\n };\n }()));\n}\nfunction getRouteData(_x5) {\n return _getRouteData.apply(this, arguments);\n}\nfunction _getRouteData() {\n _getRouteData = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (route) {\n if (!route) {\n return;\n }\n // Make sure the components are resolved (code-splitting)\n yield resolveRouteComponents(route);\n // Send back a copy of route with meta based on Component definition\n return _objectSpread(_objectSpread({}, route), {}, {\n meta: getMatchedComponents(route).map((Component, index) => {\n return _objectSpread(_objectSpread({}, Component.options.meta), (route.matched[index] || {}).meta);\n })\n });\n });\n return _getRouteData.apply(this, arguments);\n}\nfunction setContext(_x6, _x7) {\n return _setContext.apply(this, arguments);\n}\nfunction _setContext() {\n _setContext = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (app, context) {\n // If context not defined, create it\n if (!app.context) {\n app.context = {\n isStatic: false,\n isDev: false,\n isHMR: false,\n app,\n store: app.store,\n payload: context.payload,\n error: context.error,\n base: app.router.options.base,\n env: {\n "lokiEndpoint": "https://logging.thenaturalsapphirecompany.com/loki/api/v1/push",\n "LOG_DEBUG": false,\n "LOG_LEVEL": "info",\n "LOG_CLIENT": true,\n "LOG_SERVER": true,\n "affirmEnabled": true,\n "googleMapKey": "AIzaSyDHsyaqtbzsihMpZTTlSIYJHApR0kFEAyQ",\n "logPushSecret": "",\n "appName": "Emeralds",\n "enableDmto": false,\n "siteName": "emerald",\n "prodDomain": "emeralds.com",\n "devDomain": "emeralds.nxcstaging.com",\n "GOOGLE_CLIENT_ID": "312114256851-knaqc2ccul8mja3astj1c33uto07070i.apps.googleusercontent.com",\n "version": "2.0.3",\n "isDev": false,\n "merchantId": 166899398,\n "extendStoreId": "c56d453f-1883-44f1-93c6-0d957c8a1693",\n "reCaptchaKey": "6LfWHAEfAAAAAAmFPxW9t6fdUcR4lYk2KwGkccgW",\n "wpDomain": "https://about.emeralds.com",\n "video360Url": "https://360images.thenaturalsapphirecompany.com",\n "host": "https://emeralds.com",\n "wpAPIHost": "https://about.emeralds.com/",\n "fbAppId": null,\n "rejoinerSiteID": "9dMeYYd",\n "rejoinerProductionSiteID": "emeralds.com"\n }\n };\n // Only set once\n\n if (context.req) {\n app.context.req = context.req;\n }\n if (context.res) {\n app.context.res = context.res;\n }\n if (context.ssrContext) {\n app.context.ssrContext = context.ssrContext;\n }\n app.context.redirect = (status, path, query) => {\n if (!status) {\n return;\n }\n app.context._redirected = true;\n // if only 1 or 2 arguments: redirect(\'/\') or redirect(\'/\', { foo: \'bar\' })\n var pathType = typeof path;\n if (typeof status !== \'number\' && (pathType === \'undefined\' || pathType === \'object\')) {\n query = path || {};\n path = status;\n pathType = typeof path;\n status = 302;\n }\n if (pathType === \'object\') {\n path = app.router.resolve(path).route.fullPath;\n }\n // "/absolute/route", "./relative/route" or "../relative/route"\n if (/(^[.]{1,2}\\/)|(^\\/(?!\\/))/.test(path)) {\n app.context.next({\n path,\n query,\n status\n });\n } else {\n path = Object(ufo__WEBPACK_IMPORTED_MODULE_16__[/* withQuery */ "d"])(path, query);\n if (false) {}\n if (true) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Location/assign\n window.location.assign(path);\n\n // Throw a redirect error\n throw new Error(\'ERR_REDIRECT\');\n }\n }\n };\n if (false) {}\n if (true) {\n app.context.nuxtState = window.__NUXT__;\n }\n }\n\n // Dynamic keys\n var [currentRouteData, fromRouteData] = yield Promise.all([getRouteData(context.route), getRouteData(context.from)]);\n if (context.route) {\n app.context.route = currentRouteData;\n }\n if (context.from) {\n app.context.from = fromRouteData;\n }\n if (context.error) {\n app.context.error = context.error;\n }\n app.context.next = context.next;\n app.context._redirected = false;\n app.context._errored = false;
1\n app.context.isHMR = false;\n app.context.params = app.context.route.params || {};\n app.context.query = app.context.route.query || {};\n });\n return _setContext.apply(this, arguments);\n}\nfunction middlewareSeries(promises, appContext, renderState) {\n if (!promises.length || appContext._redirected || appContext._errored || renderState && renderState.aborted) {\n return Promise.resolve();\n }\n return promisify(promises[0], appContext).then(() => {\n return middlewareSeries(promises.slice(1), appContext, renderState);\n });\n}\nfunction promisify(fn, context) {\n var promise;\n if (fn.length === 2) {\n // fn(context, callback)\n promise = new Promise(resolve => {\n fn(context, function (err, data) {\n if (err) {\n context.error(err);\n }\n data = data || {};\n resolve(data);\n });\n });\n } else {\n promise = fn(context);\n }\n if (promise && promise instanceof Promise && typeof promise.then === \'function\') {\n return promise;\n }\n return Promise.resolve(promise);\n}\n\n// Imported from vue-router\nfunction getLocation(base, mode) {\n if (mode === \'hash\') {\n return window.location.hash.replace(/^#\\//, \'\');\n }\n base = decodeURI(base).slice(0, -1); // consideration is base is normalized with trailing slash\n var path = decodeURI(window.location.pathname);\n if (base && path.startsWith(base)) {\n path = path.slice(base.length);\n }\n var fullPath = (path || \'/\') + window.location.search + window.location.hash;\n return Object(ufo__WEBPACK_IMPORTED_MODULE_16__[/* normalizeURL */ "c"])(fullPath);\n}\n\n// Imported from path-to-regexp\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\nfunction getQueryDiff(toQuery, fromQuery) {\n var diff = {};\n var queries = _objectSpread(_objectSpread({}, toQuery), fromQuery);\n for (var k in queries) {\n if (String(toQuery[k]) !== String(fromQuery[k])) {\n diff[k] = true;\n }\n }\n return diff;\n}\nfunction normalizeError(err) {\n var message;\n if (!(err.message || typeof err === \'string\')) {\n try {\n message = JSON.stringify(err, null, 2);\n } catch (e) {\n message = "[".concat(err.constructor.name, "]");\n }\n } else {\n message = err.message || err;\n }\n return _objectSpread(_objectSpread({}, err), {}, {\n message,\n statusCode: err.statusCode || err.status || err.response && err.response.status || 500\n });\n}\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won\'t transform.\n\'(\\\\\\\\.)\',\n// Match Express-style parameters and un-named parameters with a prefix\n// and optional suffixes. Matches appear as:\n//\n// "/:test(\\\\d+)?" => ["/", "test", "\\d+", undefined, "?", undefined]\n// "/route(\\\\d+)" => [undefined, undefined, undefined, "\\d+", undefined, undefined]\n// "/*" => ["/", undefined, undefined, undefined, undefined, "*"]\n\'([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))\'].join(\'|\'), \'g\');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse(str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = \'\';\n var defaultDelimiter = options && options.delimiter || \'/\';\n var res;\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue;\n }\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = \'\';\n }\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === \'+\' || modifier === \'*\';\n var optional = modifier === \'?\' || modifier === \'*\';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prefix || \'\',\n delimiter,\n optional,\n repeat,\n partial,\n asterisk: Boolean(asterisk),\n pattern: pattern ? escapeGroup(pattern) : asterisk ? \'.*\' : \'[^\' + escapeString(delimiter) + \']+?\'\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n return tokens;\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty(str, slashAllowed) {\n var re = slashAllowed ? /[?#]/g : /[/?#]/g;
1\n return encodeURI(str).replace(re, c => {\n return \'%\' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk(str) {\n return encodeURIComponentPretty(str, true);\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \'\\\\$1\');\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup(group) {\n return group.replace(/([=!:$/()])/g, \'\\\\$1\');\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction(tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === \'object\') {\n matches[i] = new RegExp(\'^(?:\' + tokens[i].pattern + \')$\', flags(options));\n }\n }\n return function (obj, opts) {\n var path = \'\';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n for (var _i = 0; _i < tokens.length;
1 _i++) {\n var token = tokens[_i];\n if (typeof token === \'string\') {\n path += token;\n continue;\n }\n var value = data[token.name || \'pathMatch\'];\n var segment = void 0;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n continue;\n } else {\n throw new TypeError(\'Expected "\' + token.name + \'" to be defined\');\n }\n }\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError(\'Expected "\' + token.name + \'" to not repeat, but received `\' + JSON.stringify(value) + \'`\');\n }\n if (value.length === 0) {\n if (token.optional) {\n continue;\n } else {\n throw new TypeError(\'Expected "\' + token.name + \'" to not be empty\');\n }\n }\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n if (!matches[_i].test(segment)) {\n throw new TypeError(\'Expected all "\' + token.name + \'" to match "\' + token.pattern + \'", but received `\' + JSON.stringify(segment) + \'`\');\n }\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n if (!matches[_i].test(segment)) {\n throw new TypeError(\'Expected "\' + token.name + \'" to match "\' + token.pattern + \'", but received "\' + segment + \'"\');\n }\n path += token.prefix + segment;\n }\n return path;\n };\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags(options) {\n return options && options.sensitive ? \'\' : \'i\';\n}\nfunction addLifecycleHook(vm, hook, fn) {\n if (!vm.$options[hook]) {\n vm.$options[hook] = [];\n }\n if (!vm.$options[hook].includes(fn)) {\n vm.$options[hook].push(fn);\n }\n}\nvar urlJoin = ufo__WEBPACK_IMPORTED_MODULE_16__[/* joinURL */ "b"];\nvar stripTrailingSlash = ufo__WEBPACK_IMPORTED_MODULE_16__[/* withoutTrailingSlash */ "e"];\nvar isSamePath = ufo__WEBPACK_IMPORTED_MODULE_16__[/* isSamePath */ "a"];\nfunction setScrollRestoration(newVal) {\n try {\n window.history.scrollRestoration = newVal;\n } catch (e) {}\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL3V0aWxzLmpzPzZiNTgiXSwibmFtZXMiOlsicHJvY2VzcyIsIndpbmRvdyIsIm9uTnV4dFJlYWR5Q2JzIiwib25OdXh0UmVhZHkiLCJjYiIsInB1c2giLCJjcmVhdGVHZXRDb3VudGVyIiwiY291bnRlck9iamVjdCIsImRlZmF1bHRLZXkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZXRDb3VudGVyIiwiaWQiLCJlbXB0eSIsImdsb2JhbEhhbmRsZUVycm9yIiwiZXJyb3IiLCJWdWUiLCJjb25maWciLCJlcnJvckhhbmRsZXIiLCJpbnRlcm9wRGVmYXVsdCIsInByb21pc2UiLCJ0aGVuIiwibSIsImRlZmF1bHQiLCJoYXNGZXRjaCIsInZtIiwiJG9wdGlvbnMiLCJmZXRjaCIsInB1cmlmeURhdGEiLCJkYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbHRlciIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsInZhbGlkIiwiRnVuY3Rpb24iLCJQcm9taXNlIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJyZWR1Y2UiLCJvYmoiLCJfcmVmMiIsImdldENoaWxkcmVuQ29tcG9uZW50SW5zdGFuY2VzVXNpbmdGZXRjaCIsImluc3RhbmNlcyIsImNoaWxkcmVuIiwiJGNoaWxkcmVuIiwiY2hpbGQiLCIkZmV0Y2giLCJhcHBseUFzeW5jRGF0YSIsIkNvbXBvbmVudCIsImFzeW5jRGF0YSIsIm9wdGlvbnMiLCJfX2hhc051eHREYXRhIiwiQ29tcG9uZW50RGF0YSIsIl9vcmlnaW5EYXRhRm4iLCJjYWxsIiwiJHNzckNvbnRleHQiLCJjaWQiLCJfb2JqZWN0U3ByZWFkIiwiX0N0b3IiLCJzYW5pdGl6ZUNvbXBvbmVudCIsImV4dGVuZCIsImV4dGVuZE9wdGlvbnMiLCJuYW1lIiwiX19maWxlIiwiZ2V0TWF0Y2hlZENvbXBvbmVudHMiLCJyb3V0ZSIsIm1hdGNoZXMiLCJwcm9wIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsIm1hdGNoZWQiLCJtYXAiLCJpbmRleCIsImtleXMiLCJnZXRNYXRjaGVkQ29tcG9uZW50c0luc3RhbmNlcyIsImZsYXRNYXBDb21wb25lbnRzIiwiZm4iLCJjb21wb25lbnRzIiwicHJvbWlzZXMiLCJyZXNvbHZlUm91dGVDb21wb25lbnRzIiwiYWxsIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsImluc3RhbmNlIiwibWF0Y2giLCJzZXNzaW9uU3RvcmFnZSIsInRpbWVOb3ciLCJEYXRlIiwibm93IiwicHJldmlvdXNSZWxvYWRUaW1lIiwicGFyc2VJbnQiLCJnZXRJdGVtIiwic2V0SXRlbSIsImxvY2F0aW9uIiwicmVsb2FkIiwiX3giLCJfeDIiLCJfeDMiLCJfeDQiLCJnZXRSb3V0ZURhdGEiLCJfeDUiLCJfZ2V0Um91dGVEYXRhIiwibWV0YSIsInNldENvbnRleHQiLCJfeDYiLCJfeDciLCJfc2V0Q29udGV4dCIsImFwcCIsImNvbn
1RleHQiLCJpc1N0YXRpYyIsImlzRGV2IiwiaXNITVIiLCJzdG9yZSIsInBheWxvYWQiLCJiYXNlIiwicm91dGVyIiwiZW52IiwicmVxIiwicmVzIiwic3NyQ29udGV4dCIsInJlZGlyZWN0Iiwic3RhdHVzIiwicGF0aCIsInF1ZXJ5IiwiX3JlZGlyZWN0ZWQiLCJwYXRoVHlwZSIsInJlc29sdmUiLCJmdWxsUGF0aCIsInRlc3QiLCJuZXh0Iiwid2l0aFF1ZXJ5IiwiYXNzaWduIiwiRXJyb3IiLCJudXh0U3RhdGUiLCJfX05VWFRfXyIsImN1cnJlbnRSb3V0ZURhdGEiLCJmcm9tUm91dGVEYXRhIiwiZnJvbSIsIl9lcnJvcmVkIiwicGFyYW1zIiwibWlkZGxld2FyZVNlcmllcyIsImFwcENvbnRleHQiLCJyZW5kZXJTdGF0ZSIsImFib3J0ZWQiLCJwcm9taXNpZnkiLCJzbGljZSIsImVyciIsImdldExvY2F0aW9uIiwibW9kZSIsImhhc2giLCJyZXBsYWNlIiwiZGVjb2RlVVJJIiwicGF0aG5hbWUiLCJzdGFydHNXaXRoIiwic2VhcmNoIiwibm9ybWFsaXplVVJMIiwiY29tcGlsZSIsInN0ciIsInRva2Vuc1RvRnVuY3Rpb24iLCJwYXJzZSIsImdldFF1ZXJ5RGlmZiIsInRvUXVlcnkiLCJmcm9tUXVlcnkiLCJkaWZmIiwicXVlcmllcyIsImsiLCJTdHJpbmciLCJub3JtYWxpemVFcnJvciIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsImNvbnN0cnVjdG9yIiwic3RhdHVzQ29kZSIsInJlc3BvbnNlIiwiUEFUSF9SRUdFWFAiLCJSZWdFeHAiLCJqb2luIiwidG9rZW5zIiwiZGVmYXVsdERlbGltaXRlciIsImRlbGltaXRlciIsImV4ZWMiLCJlc2NhcGVkIiwib2Zmc2V0IiwicHJlZml4IiwiY2FwdHVyZSIsImdyb3VwIiwibW9kaWZpZXIiLCJhc3RlcmlzayIsInBhcnRpYWwiLCJyZXBlYXQiLCJvcHRpb25hbCIsInBhdHRlcm4iLCJCb29sZWFuIiwiZXNjYXBlR3JvdXAiLCJlc2NhcGVTdHJpbmciLCJzdWJzdHIiLCJlbmNvZGVVUklDb21wb25lbnRQcmV0dHkiLCJzbGFzaEFsbG93ZWQiLCJyZSIsImVuY29kZVVSSSIsImMiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImVuY29kZUFzdGVyaXNrIiwiaSIsImZsYWdzIiwib3B0cyIsImVuY29kZSIsInByZXR0eSIsImVuY29kZVVSSUNvbXBvbmVudCIsInRva2VuIiwic2VnbWVudCIsIlR5cGVFcnJvciIsImlzQXJyYXkiLCJqIiwic2Vuc2l0aXZlIiwiYWRkTGlmZWN5Y2xlSG9vayIsImhvb2siLCJpbmNsdWRlcyIsInVybEpvaW4iLCJqb2luVVJMIiwic3RyaXBUcmFpbGluZ1NsYXNoIiwid2l0aG91dFRyYWlsaW5nU2xhc2giLCJpc1NhbWVQYXRoIiwiX2lzU2FtZVBhdGgiLCJzZXRTY3JvbGxSZXN0b3JhdGlvbiIsIm5ld1ZhbCIsImhpc3RvcnkiLCJzY3JvbGxSZXN0b3JhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxQjtBQUNrRjs7QUFFdkc7QUFDQTtBQUNBLElBQUlBLElBQWMsRUFBRTtFQUNsQkMsTUFBTSxDQUFDQyxjQUFjLEdBQUcsRUFBRTtFQUMxQkQsTUFBTSxDQUFDRSxXQUFXLEdBQUlDLEVBQUUsSUFBSztJQUMzQkgsTUFBTSxDQUFDQyxjQUFjLENBQUNHLElBQUksQ0FBQ0QsRUFBRSxDQUFDO0VBQ2hDLENBQUM7QUFDSDtBQUVPLFNBQVNFLGdCQUFnQkEsQ0FBRUMsYUFBYSxFQUFtQjtFQUFBLElBQWpCQyxVQUFVLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEVBQUU7RUFDOUQsT0FBTyxTQUFTRyxVQUFVQSxDQUFBLEVBQW1CO0lBQUEsSUFBakJDLEVBQUUsR0FBQUosU0FBQSxDQUFBQyxNQUFBL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DNUMsSUFBSTtJQUNGek8sTUFBTSxDQUFDME8sT0FBTyxDQUFDQyxpQkFBaUIsR0FBR0YsTUFBTTtFQUMzQyxDQUFDLENBQUMsT0FBTXpELENBQUMsRUFBRSxDQUFDO0FBQ2QiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IHsgaXNTYW1lUGF0aCBhcyBfaXNTYW1lUGF0aCwgam9pblVSTCwgbm9ybWFsaXplVVJMLCB3aXRoUXVlcnksIHdpdGhvdXRUcmFpbGluZ1NsYXNoIH0gZnJvbSAndWZvJ1xuXG4vLyB3aW5kb3cue3tnbG9iYWxzLmxvYWRlZENhbGxiYWNrfX0gaG9va1xuLy8gVXNlZnVsIGZvciBqc2RvbSB0ZXN0aW5nIG9yIHBsdWdpbnMgKGh0dHBzOi8vZ2l0aHViLmNvbS90bXB2YXIvanNkb20jZGVhbGluZy13aXRoLWFzeW5jaHJvbm91cy1zY3JpcHQtbG9hZGluZylcbmlmIChwcm9jZXNzLmNsaWVudCkge1xuICB3aW5kb3cub25OdXh0UmVhZHlDYnMgPSBbXVxuICB3aW5kb3cub25OdXh0UmVhZHkgPSAoY2IpID0+IHtcbiAgICB3aW5kb3cub25OdXh0UmVhZHlDYnMucHVzaChjYilcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2V0Q291bnRlciAoY291bnRlck9iamVjdCwgZGVmYXVsdEtleSA9ICcnKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRDb3VudGVyIChpZCA9IGRlZmF1bHRLZXkpIHtcbiAgICBpZiAoY291bnRlck9iamVjdFtpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgY291bnRlck9iamVjdFtpZF0gPSAwXG4gICAgfVxuICAgIHJldHVybiBjb3VudGVyT2JqZWN0W2lkXSsrXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5ICgpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxIYW5kbGVFcnJvciAoZXJyb3IpIHtcbiAgaWYgKFZ1ZS5jb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgVnVlLmNvbmZpZy5lcnJvckhhbmRsZXIoZXJyb3IpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVyb3BEZWZhdWx0IChwcm9taXNlKSB7XG4gIHJldHVybiBwcm9taXNlLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ZldGNoKHZtKSB7XG4gIHJldHVybiB2bS4kb3B0aW9ucyAmJiB0eXBlb2Ygdm0uJG9wdGlvbnMuZmV0Y2ggPT09ICdmdW5jdGlvbicgJiYgIXZtLiRvcHRpb25zLmZldGNoLmxlbmd0aFxufVxuZXhwb3J0IGZ1bmN0aW9uIHB1cmlmeURhdGEoZGF0YSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmVud
1HJpZXMoZGF0YSkuZmlsdGVyKFxuICAgIChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkID0gISh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSlcbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAke2tleX0gaXMgbm90IGFibGUgdG8gYmUgc3RyaW5naWZpZWQuIFRoaXMgd2lsbCBicmVhayBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuYClcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWxpZFxuICAgIH1cbiAgICApLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIG9ialtrZXldID0gdmFsdWVcbiAgICAgIHJldHVybiBvYmpcbiAgICB9LCB7fSlcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGlsZHJlbkNvbXBvbmVudEluc3RhbmNlc1VzaW5nRmV0Y2godm0sIGluc3RhbmNlcyA9IFtdKSB7XG4gIGNvbnN0IGNoaWxkcmVuID0gdm0uJGNoaWxkcmVuIHx8IFtdXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQuJGZldGNoKSB7XG4gICAgICBpbnN0YW5jZXMucHVzaChjaGlsZClcbiAgICB9XG4gICAgaWYgKGNoaWxkLiRjaGlsZHJlbikge1xuICAgICAgZ2V0Q2hpbGRyZW5Db21wb25lbnRJbnN0YW5jZXNVc2luZ0ZldGNoKGNoaWxkLCBpbnN0YW5jZXMpXG4gICAgfVxuICB9XG4gIHJldHVybiBpbnN0YW5jZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QXN5bmNEYXRhIChDb21wb25lbnQsIGFzeW5jRGF0YSkge1xuICBpZiAoXG4gICAgLy8gRm9yIFNTUiwgd2Ugb25jZSBhbGwgdGhpcyBmdW5jdGlvbiB3aXRob3V0IHNlY29uZCBwYXJhbSB0byBqdXN0IGFwcGx5IGFzeW5jRGF0YVxuICAgIC8vIFByZXZlbnQgZG9pbmcgdGhpcyBmb3IgZWFjaCBTU1IgcmVxdWVzdFxuICAgICFhc3luY0RhdGEgJiYgQ29tcG9uZW50Lm9wdGlvbnMuX19oYXNOdXh0RGF0YVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IENvbXBvbmVudERhdGEgPSBDb21wb25lbnQub3B0aW9ucy5fb3JpZ2luRGF0YUZuIHx8IENvbXBvbmVudC5vcHRpb25zLmRhdGEgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4ge30gfVxuICBDb21wb25lbnQub3B0aW9ucy5fb3JpZ2luRGF0YUZuID0gQ29tcG9uZW50RGF0YVxuXG4gIENvbXBvbmVudC5vcHRpb25zLmRhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGF0YSA9IENvbXBvbmVudERhdGEuY2FsbCh0aGlzLCB0aGlzKVxuICAgIGlmICh0aGlzLiRzc3JDb250ZXh0KSB7XG4gICAgICBhc3luY0RhdGEgPSB0aGlzLiRzc3JDb250ZXh0LmFzeW5jRGF0YVtDb21wb25lbnQuY2lkXVxuICAgIH1cbiAgICByZXR1cm4geyAuLi5kYXRhLCAuLi5hc3luY0RhdGEgfVxuICB9XG5cbiAgQ29tcG9uZW50Lm9wdGlvbnMuX19oYXNOdXh0RGF0YSA9IHRydWVcblxuICBpZiAoQ29tcG9uZW50Ll9DdG9yICYmIENvbXBvbmVudC5fQ3Rvci5vcHRpb25zKSB7XG4gICAgQ29tcG9uZW50Ll9DdG9yLm9wdGlvbnMuZGF0YSA9IENvbXBvbmVudC5vcHRpb25zLmRhdGFcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVDb21wb25lbnQgKENvbXBvbmVudCkge1xuICAvLyBJZiBDb21wb25lbnQgYWxyZWFkeSBzYW5pdGl6ZWRcbiAgaWYgKENvbXBvbmVudC5vcHRpb25zICYmIENvbXBvbmVudC5fQ3RvciA9PT0gQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIENvbXBvbmVudFxuICB9XG4gIGlmICghQ29tcG9uZW50Lm9wdGlvbnMpIHtcbiAgICBDb21wb25lbnQgPSBWdWUuZXh0ZW5kKENvbXBvbmVudCkgLy8gZml4IGlzc3VlICM2XG4gICAgQ29tcG9uZW50Ll9DdG9yID0gQ29tcG9uZW50XG4gIH0gZWxzZSB7XG4gICAgQ29tcG9uZW50Ll9DdG9yID0gQ29tcG9uZW50XG4gICAgQ29tcG9uZW50LmV4dGVuZE9wdGlvbnMgPSBDb21wb25lbnQub3B0aW9uc1xuICB9XG4gIC8vIElmIG5vIGNvbXBvbmVudCBuYW1lIGRlZmluZWQsIHNldCBmaWxlIHBhdGggYXMgbmFtZSwgKGFsc28gZml4ZXMgIzU3MDMpXG4gIGlmICghQ29tcG9uZW50Lm9wdGlvbnMubmFtZSAmJiBDb21wb25lbnQub3B0aW9ucy5fX2ZpbGUpIHtcbiAgICBDb21wb25lbnQub3B0aW9ucy5uYW1lID0gQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlXG4gIH1cbiAgcmV0dXJuIENvbXBvbmVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZENvbXBvbmVudHMgKHJvdXRlLCBtYXRjaGVzID0gZmFsc2UsIHByb3AgPSAnY29tcG9uZW50cycpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIHJvdXRlLm1hdGNoZWQubWFwKChtLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhtW3Byb3BdKS5tYXAoKGtleSkgPT4ge1xuICAgICAgbWF0Y2hlcyAmJiBtYXRjaGVzLnB1c2goaW5kZXgpXG4gICAgICByZXR1cm4gbVtwcm9wXVtrZXldXG4gICAgfSlcbiAgfSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkQ29tcG9uZW50c0luc3RhbmNlcyAocm91dGUsIG1hdGNoZXMgPSBmYWxzZSkge1xuICByZXR1cm4gZ2V0TWF0Y2hlZENvbXBvbmVudHMocm91dGUsIG1hdGNoZXMsICdpbnN0YW5jZXMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcENvbXBvbmVudHMgKHJvdXRlLCBmbikge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgcm91dGUubWF0Y2hlZC5tYXAoKG0sIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG0uY29tcG9uZW50cykucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG4gICAgICBpZiAobS5jb21wb25lbnRzW2tleV0pIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChmbihtLmNvbXBvbmVudHNba2V5XSwgbS5pbnN0YW5jZXNba2V5XSwgbSwga2V5LCBpbmRleCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgbS5jb21wb25lbnRzW2tleV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9taXNlc1xuICAgIH0sIFtdKVxuICB9KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSb3V0ZUNvbXBvbmVudHMgKHJvdXRlLCBmbikge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgZmxh
1dE1hcENvbXBvbmVudHMocm91dGUsIGFzeW5jIChDb21wb25lbnQsIGluc3RhbmNlLCBtYXRjaCwga2V5KSA9PiB7XG4gICAgICAvLyBJZiBjb21wb25lbnQgaXMgYSBmdW5jdGlvbiwgcmVzb2x2ZSBpdFxuICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgIUNvbXBvbmVudC5vcHRpb25zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgQ29tcG9uZW50ID0gYXdhaXQgQ29tcG9uZW50KClcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgd2VicGFjayBjaHVuayBsb2FkaW5nIGVycm9yc1xuICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIGR1ZSB0byBhIG5ldyBkZXBsb3ltZW50IG9yIGEgbmV0d29yayBwcm9ibGVtXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXJyb3IgJiZcbiAgICAgICAgICAgIGVycm9yLm5hbWUgPT09ICdDaHVua0xvYWRFcnJvcicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVOb3cgPSBEYXRlLm5vdygpXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1JlbG9hZFRpbWUgPSBwYXJzZUludCh3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbnV4dC1yZWxvYWQnKSlcblxuICAgICAgICAgICAgLy8gY2hlY2sgZm9yIHByZXZpb3VzIHJlbG9hZCB0aW1lIG5vdCB0byByZWxvYWQgaW5maW5pdGVseVxuICAgICAgICAgICAgaWYgKCFwcmV2aW91c1JlbG9hZFRpbWUgfHwgcHJldmlvdXNSZWxvYWRUaW1lICsgNjAwMDAgPCB0aW1lTm93KSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdudXh0LXJlbG9hZCcsIHRpbWVOb3cpXG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQodHJ1ZSAvKiBza2lwIGNhY2hlICovKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1hdGNoLmNvbXBvbmVudHNba2V5XSA9IENvbXBvbmVudCA9IHNhbml0aXplQ29tcG9uZW50KENvbXBvbmVudClcbiAgICAgIHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyBmbihDb21wb25lbnQsIGluc3RhbmNlLCBtYXRjaCwga2V5KSA6IENvbXBvbmVudFxuICAgIH0pXG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvdXRlRGF0YSAocm91dGUpIHtcbiAgaWYgKCFyb3V0ZSkge1xuICAgIHJldHVyblxuICB9XG4gIC8vIE1ha2Ugc3VyZSB0aGUgY29tcG9uZW50cyBhcmUgcmVzb2x2ZWQgKGNvZGUtc3BsaXR0aW5nKVxuICBhd2FpdCByZXNvbHZlUm91dGVDb21wb25lbnRzKHJvdXRlKVxuICAvLyBTZW5kIGJhY2sgYSBjb3B5IG9mIHJvdXRlIHdpdGggbWV0YSBiYXNlZCBvbiBDb21wb25lbnQgZGVmaW5pdGlvblxuICByZXR1cm4ge1xuICAgIC4uLnJvdXRlLFxuICAgIG1ldGE6IGdldE1hdGNoZWRDb21wb25lbnRzKHJvdXRlKS5tYXAoKENvbXBvbmVudCwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7IC4uLkNvbXBvbmVudC5vcHRpb25zLm1ldGEsIC4uLihyb3V0ZS5tYXRjaGVkW2luZGV4XSB8fCB7fSkubWV0YSB9XG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAoYXBwLCBjb250ZXh0KSB7XG4gIC8vIElmIGNvbnRleHQgbm90IGRlZmluZWQsIGNyZWF0ZSBpdFxuICBpZiAoIWFwcC5jb250ZXh0KSB7XG4gICAgYXBwLmNvbnRleHQgPSB7XG4gICAgICBpc1N0YXRpYzogcHJvY2Vzcy5zdGF0aWMsXG4gICAgICBpc0RldjogZmFsc2UsXG4gICAgICBpc0hNUjogZmFsc2UsXG4gICAgICBhcHAsXG4gICAgICBzdG9yZTogYXBwLnN0b3JlLFxuICAgICAgcGF5bG9hZDogY29udGV4dC5wYXlsb2FkLFxuICAgICAgZXJyb3I6IGNvbnRleHQuZXJyb3IsXG4gICAgICBiYXNlOiBhcHAucm91dGVyLm9wdGlvbnMuYmFzZSxcbiAgICAgIGVudjoge1wibG9raUVuZHBvaW50XCI6XCJodHRwczovL2xvZ2dpbmcudGhlbmF0dXJhbHNhcHBoaXJlY29tcGFueS5jb20vbG9raS9hcGkvdjEvcHVzaFwiLFwiTE9HX0RFQlVHXCI6ZmFsc2UsXCJMT0dfTEVWRUxcIjpcImluZm9cIixcIkxPR19DTElFTlRcIjp0cnVlLFwiTE9HX1NFUlZFUlwiOnRydWUsXCJhZmZpcm1FbmFibGVkXCI6dHJ1ZSxcImdvb2dsZU1hcEtleVwiOlwiQUl6YVN5REhzeWFxdGJ6c2loTXBaVFRsU0lZSkhBcFIwa0ZFQXlRXCIsXCJsb2dQdXNoU2VjcmV0XCI6XCJcIixcImFwcE5hbWVcIjpcIkVtZXJhbGRzXCIsXCJlbmFibGVEbXRvXCI6ZmFsc2UsXCJzaXRlTmFtZVwiOlwiZW1lcmFsZFwiLFwicHJvZERvbWFpblwiOlwiZW1lcmFsZHMuY29tXCIsXCJkZXZEb21haW5cIjpcImVtZXJhbGRzLm54Y3N0YWdpbmcuY29tXCIsXCJHT09HTEVfQ0xJRU5UX0lEXCI6XCIzMTIxMTQyNTY4NTEta25hcWMyY2N1bDhtamEzYXN0ajFjMzN1dG8wNzA3MGkuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb21cIixcInZlcnNpb25cIjpcIjIuMC4zXCIsXCJpc0RldlwiOmZhbHNlLFwibWVyY2hhbnRJZFwiOjE2Njg5OTM5OCxcImV4dGVuZFN0b3JlSWRcIjpcImM1NmQ0NTNmLTE4ODMtNDRmMS05M2M2LTBkOTU3YzhhMTY5M1wiLFwicmVDYXB0Y2hhS2V5XCI6XCI2TGZXSEFFZkFBQUFBQW1GUHhXOXQ2ZmRVY1I0bFlrMkt3R2tjY2dXXCIsXCJ3cERvbWFpblwiOlwiaHR0cHM6Ly9hYm91dC5lbWVyYWxkcy5jb21cIixcInZpZGVvMzYwVXJsXCI6XCJodHRwczovLzM2MGltYWdlcy50aGVuYXR1cmFsc2FwcGhpcmVjb21wYW55LmNvbVwiLFwiaG9zdFwiOlwiaHR0cHM6Ly9lbWVyYWxkcy5jb21cIixcIndwQVBJSG9zdFwiOlwiaHR0cHM6Ly9hYm91dC5lbWVyYWxkcy5jb20vXCIsXCJmYkFwcElkXCI6bnVsbCxcInJlam9pbmVyU2l0ZUlEXCI6XCI5ZE1lWVlkXCIsXCJyZWpvaW5lclByb2R1Y3Rpb25TaXRlSURcIjpcImVtZXJhbGRzLmNvbVwifVxuICAgIH1cbiAgICAvLyBPbmx5IHNldCBvbmNlXG5cbiAgICBpZiAoY29udGV4dC5yZXEpIHtcbiAgICAgIGFwcC5jb250ZXh0LnJlcSA9IGNvbnRleHQucmVxXG4gICAgfVxuICAgIGlmIChjb250ZXh0LnJlcykge1xuICAgICAgYXBwLmNvbnRleHQucmVzID0gY29udGV4dC5yZXNcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5zc3JDb250ZXh0KSB7XG4gICAgICBhcHAuY29udGV4dC5zc3JDb250ZXh0ID0gY29udGV4dC5zc3JDb250ZXh0XG4gICAgfVxuICAgIGFwcC5jb250ZXh0LnJlZGlyZWN0ID0gKHN0YXR1cywgcGF0aCwgcXVlcnkpID0+IHtcbiAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgI
1HJldHVyblxuICAgICAgfVxuICAgICAgYXBwLmNvbnRleHQuX3JlZGlyZWN0ZWQgPSB0cnVlXG4gICAgICAvLyBpZiBvbmx5IDEgb3IgMiBhcmd1bWVudHM6IHJlZGlyZWN0KCcvJykgb3IgcmVkaXJlY3QoJy8nLCB7IGZvbzogJ2JhcicgfSlcbiAgICAgIGxldCBwYXRoVHlwZSA9IHR5cGVvZiBwYXRoXG4gICAgICBpZiAodHlwZW9mIHN0YXR1cyAhPT0gJ251bWJlcicgJiYgKHBhdGhUeXBlID09PSAndW5kZWZpbmVkJyB8fCBwYXRoVHlwZSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgIHF1ZXJ5ID0gcGF0aCB8fCB7fVxuICAgICAgICBwYXRoID0gc3RhdHVzXG4gICAgICAgIHBhdGhUeXBlID0gdHlwZW9mIHBhdGhcbiAgICAgICAgc3RhdHVzID0gMzAyXG4gICAgICB9XG4gICAgICBpZiAocGF0aFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHBhdGggPSBhcHAucm91dGVyLnJlc29sdmUocGF0aCkucm91dGUuZnVsbFBhdGhcbiAgICAgIH1cbiAgICAgIC8vIFwiL2Fic29sdXRlL3JvdXRlXCIsIFwiLi9yZWxhdGl2ZS9yb3V0ZVwiIG9yIFwiLi4vcmVsYXRpdmUvcm91dGVcIlxuICAgICAgaWYgKC8oXlsuXXsxLDJ9XFwvKXwoXlxcLyg/IVxcLykpLy50ZXN0KHBhdGgpKSB7XG4gICAgICAgIGFwcC5jb250ZXh0Lm5leHQoe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgc3RhdHVzXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoID0gd2l0aFF1ZXJ5KHBhdGgsIHF1ZXJ5KVxuICAgICAgICBpZiAocHJvY2Vzcy5zZXJ2ZXIpIHtcbiAgICAgICAgICBhcHAuY29udGV4dC5uZXh0KHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmNsaWVudCkge1xuICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Mb2NhdGlvbi9hc3NpZ25cbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHBhdGgpXG5cbiAgICAgICAgICAvLyBUaHJvdyBhIHJlZGlyZWN0IGVycm9yXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFUlJfUkVESVJFQ1QnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLnNlcnZlcikge1xuICAgICAgYXBwLmNvbnRleHQuYmVmb3JlTnV4dFJlbmRlciA9IGZuID0+IGNvbnRleHQuYmVmb3JlUmVuZGVyRm5zLnB1c2goZm4pXG4gICAgICBhcHAuY29udGV4dC5iZWZvcmVTZXJpYWxpemUgPSBmbiA9PiBjb250ZXh0LmJlZm9yZVNlcmlhbGl6ZUZucy5wdXNoKGZuKVxuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIGFwcC5jb250ZXh0Lm51eHRTdGF0ZSA9IHdpbmRvdy5fX05VWFRfX1xuICAgIH1cbiAgfVxuXG4gIC8vIER5bmFtaWMga2V5c1xuICBjb25zdCBbY3VycmVudFJvdXRlRGF0YSwgZnJvbVJvdXRlRGF0YV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZ2V0Um91dGVEYXRhKGNvbnRleHQucm91dGUpLFxuICAgIGdldFJvdXRlRGF0YShjb250ZXh0LmZyb20pXG4gIF0pXG5cbiAgaWYgKGNvbnRleHQucm91dGUpIHtcbiAgICBhcHAuY29udGV4dC5yb3V0ZSA9IGN1cnJlbnRSb3V0ZURhdGFcbiAgfVxuXG4gIGlmIChjb250ZXh0LmZyb20pIHtcbiAgICBhcHAuY29udGV4dC5mcm9tID0gZnJvbVJvdXRlRGF0YVxuICB9XG5cbiAgaWYgKGNvbnRleHQuZXJyb3IpIHtcbiAgICBhcHAuY29udGV4dC5lcnJvciA9IGNvbnRleHQuZXJyb3JcbiAgfVxuXG4gIGFwcC5jb250ZXh0Lm5leHQgPSBjb250ZXh0Lm5leHRcbiAgYXBwLmNvbnRleHQuX3JlZGlyZWN0ZWQgPSBmYWxzZVxuICBhcHAuY29udGV4dC5fZXJyb3JlZCA9IGZhbHNlXG4gIGFwcC5jb250ZXh0LmlzSE1SID0gZmFsc2VcbiAgYXBwLmNvbnRleHQucGFyYW1zID0gYXBwLmNvbnRleHQucm91dGUucGFyYW1zIHx8IHt9XG4gIGFwcC5jb250ZXh0LnF1
1ZXJ5ID0gYXBwLmNvbnRleHQucm91dGUucXVlcnkgfHwge31cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmVTZXJpZXMgKHByb21pc2VzLCBhcHBDb250ZXh0LCByZW5kZXJTdGF0ZSkge1xuICBpZiAoIXByb21pc2VzLmxlbmd0aCB8fCBhcHBDb250ZXh0Ll9yZWRpcmVjdGVkIHx8IGFwcENvbnRleHQuX2Vycm9yZWQgfHwgKHJlbmRlclN0YXRlICYmIHJlbmRlclN0YXRlLmFib3J0ZWQpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gIH1cbiAgcmV0dXJuIHByb21pc2lmeShwcm9taXNlc1swXSwgYXBwQ29udGV4dClcbiAgICAudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gbWlkZGxld2FyZVNlcmllcyhwcm9taXNlcy5zbGljZSgxKSwgYXBwQ29udGV4dCwgcmVuZGVyU3RhdGUpXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeSAoZm4sIGNvbnRleHQpIHtcbiAgbGV0IHByb21pc2VcbiAgaWYgKGZuLmxlbmd0aCA9PT0gMikge1xuICAgIC8vIGZuKGNvbnRleHQsIGNhbGxiYWNrKVxuICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZm4oY29udGV4dCwgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29udGV4dC5lcnJvcihlcnIpXG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IGRhdGEgfHwge31cbiAgICAgICAgcmVzb2x2ZShkYXRhKVxuICAgICAgfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHByb21pc2UgPSBmbihjb250ZXh0KVxuICB9XG5cbiAgaWYgKHByb21pc2UgJiYgcHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UgJiYgdHlwZW9mIHByb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9taXNlXG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwcm9taXNlKVxufVxuXG4vLyBJbXBvcnRlZCBmcm9tIHZ1ZS1yb3V0ZXJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhdGlvbiAoYmFzZSwgbW9kZSkge1xuICBpZiAobW9kZSA9PT0gJ2hhc2gnKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jXFwvLywgJycpXG4gIH1cblxuICBiYXNlID0gZGVjb2RlVVJJKGJhc2UpLnNsaWNlKDAsIC0xKSAvLyBjb25zaWRlcmF0aW9uIGlzIGJhc2UgaXMgbm9ybWFsaXplZCB3aXRoIHRyYWlsaW5nIHNsYXNoXG4gIGxldCBwYXRoID0gZGVjb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSlcblxuICBpZiAoYmFzZSAmJiBwYXRoLnN0YXJ0c1dpdGgoYmFzZSkpIHtcbiAgICBwYXRoID0gcGF0aC5zbGljZShiYXNlLmxlbmd0aClcbiAgfVxuXG4gIGNvbnN0IGZ1bGxQYXRoID0gKHBhdGggfHwgJy8nKSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyB3aW5kb3cubG9jYXRpb24uaGFzaFxuXG4gIHJldHVybiBub3JtYWxpemVVUkwoZnVsbFBhdGgpXG59XG5cbi8vIEltcG9ydGVkIGZyb20gcGF0aC10by1yZWdleHBcblxuLyoqXG4gKiBDb21waWxlIGEgc3RyaW5nIHRvIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHRoZSBwYXRoLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFmdW5jdGlvbihPYmplY3Q9LCBPYmplY3Q9KX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHN0ciwgb3B0aW9ucykge1xuICByZXR1cm4gdG9rZW5zVG9GdW5jdGlvbihwYXJzZShzdHIsIG9wdGlvbnMpLCBvcHRpb25zKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlEaWZmICh0b1F1ZXJ5LCBmcm9tUXVlcnkpIHtcbiAgY29uc3QgZGlmZiA9IHt9XG4gIGNvbnN0IHF1ZXJpZXMgPSB7IC4uLnRvUXVlcnksIC4uLmZyb21RdWVyeSB9XG4gIGZvciAoY29uc3QgayBpbiBxdWVyaWVzKSB7XG4gICAgaWYgKFN0cmluZyh0b1F1ZXJ5W2tdKSAhPT0gU3RyaW5nKGZyb21RdWVyeVtrXSkpIHtcbiAgICAgIGRpZmZba10gPSB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBkaWZmXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFcnJvciAoZXJyKSB7XG4gIGxldCBtZXNzYWdlXG4gIGlmICghKGVyci5tZXNzYWdlIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSkge1xuICAgIHRyeSB7XG4gICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyLCBudWxsLCAyKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG1lc3NhZ2UgPSBgWyR7ZXJyLmNvbnN0cnVjdG9yLm5hbWV9XWBcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWVzc2FnZSA9IGVyci5tZXNzYWdlIHx8IGVyclxuICB9XG4gIHJldHVybiB7XG4gICAgLi4uZXJyLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhdHVzQ29kZTogKGVyci5zdGF0dXNDb2RlIHx8IGVyci5zdGF0dXMgfHwgKGVyci5yZXNwb25zZSAmJiBlcnIucmVzcG9uc2Uuc3RhdHVzKSB8fCA1MDApXG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgbWFpbiBwYXRoIG1hdGNoaW5nIHJlZ2V4cCB1dGlsaXR5LlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbmNvbnN0IFBBVEhfUkVHRVhQID0gbmV3IFJlZ0V4cChbXG4gIC8vIE1hdGNoIGVzY2FwZWQgY2hhcmFjdGVycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBhcHBlYXIgaW4gZnV0dXJlIG1hdGNoZXMuXG4gIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCB3b24ndCB0cmFuc2Zvcm0uXG4gICcoXFxcXFxcXFwuKScsXG4gIC8vIE1hdGNoIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycyBhbmQgdW4tbmFtZWQgcGFyYW1ldGVycyB3aXRoIGEgcHJlZml4XG4gIC8vIGFuZCBvcHRpb25hbCBzdWZmaXhlcy4gTWF0Y2hlcyBhcHBlYXIgYXM6XG4gIC8vXG4gIC8vIFwiLzp0ZXN0KFxcXFxkKyk/XCIgPT4gW1wiL1wiLCBcInRlc3RcIiwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgXCI/XCIsIHVuZGVmaW5lZF1cbiAgLy8gXCIvcm91dGUoXFxcXGQrKVwiICA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAvLyBcIi8qXCIgICAgICAgICAgICA9PiBbXCIvXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCIqXCJdXG4gICcoW
11xcXFwvLl0pPyg/Oig/OlxcXFw6KFxcXFx3KykoPzpcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKT98XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSkoWysqP10pP3woXFxcXCopKSdcbl0uam9pbignfCcpLCAnZycpXG5cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgZm9yIHRoZSByYXcgdG9rZW5zLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gIHN0clxuICogQHBhcmFtICB7T2JqZWN0PX0gb3B0aW9uc1xuICogQHJldHVybiB7IUFycmF5fVxuICovXG5mdW5jdGlvbiBwYXJzZSAoc3RyLCBvcHRpb25zKSB7XG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGxldCBrZXkgPSAwXG4gIGxldCBpbmRleCA9IDBcbiAgbGV0IHBhdGggPSAnJ1xuICBjb25zdCBkZWZhdWx0RGVsaW1pdGVyID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5kZWxpbWl0ZXIpIHx8ICcvJ1xuICBsZXQgcmVzXG5cbiAgd2hpbGUgKChyZXMgPSBQQVRIX1JFR0VYUC5leGVjKHN0cikpICE9IG51bGwpIHtcbiAgICBjb25zdCBtID0gcmVzWzBdXG4gICAgY29uc3QgZXNjYXBlZCA9IHJlc1sxXVxuICAgIGNvbnN0IG9mZnNldCA9IHJlcy5pbmRleFxuICAgIHBhdGggKz0gc3RyLnNsaWNlKGluZGV4LCBvZmZzZXQpXG4gICAgaW5kZXggPSBvZmZzZXQgKyBtLmxlbmd0aFxuXG4gICAgLy8gSWdub3JlIGFscmVhZHkgZXNjYXBlZCBzZXF1ZW5jZXMuXG4gICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgIHBhdGggKz0gZXNjYXBlZFsxXVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0ID0gc3RyW2luZGV4XVxuICAgIGNvbnN0IHByZWZpeCA9IHJlc1syXVxuICAgIGNvbnN0IG5hbWUgPSByZXNbM11cbiAgICBjb25zdCBjYXB0dXJlID0gcmVzWzRdXG4gICAgY29uc3QgZ3JvdXAgPSByZXNbNV1cbiAgICBjb25zdCBtb2RpZmllciA9IHJlc1s2XVxuICAgIGNvbnN0IGFzdGVyaXNrID0gcmVzWzddXG5cbiAgICAvLyBQdXNoIHRoZSBjdXJyZW50IHBhdGggb250byB0aGUgdG9rZW5zLlxuICAgIGlmIChwYXRoKSB7XG4gICAgICB0b2tlbnMucHVzaChwYXRoKVxuICAgICAgcGF0aCA9ICcnXG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbCA9IHByZWZpeCAhPSBudWxsICYmIG5leHQgIT0gbnVsbCAmJiBuZXh0ICE9PSBwcmVmaXhcbiAgICBjb25zdCByZXBlYXQgPSBtb2RpZmllciA9PT0gJysnIHx8IG1vZGlmaWVyID09PSAnKidcbiAgICBjb25zdCBvcHRpb25hbCA9IG1vZGlmaWVyID09PSAnPycgfHwgbW9kaWZpZXIgPT09ICcqJ1xuICAgIGNvbnN0IGRlbGltaXRlciA9IHJlc1syXSB8fCBkZWZhdWx0RGVsaW1pdGVyXG4gICAgY29uc3QgcGF0dGVybiA9IGNhcHR1cmUgfHwgZ3JvdXBcblxuICAgI
1HRva2Vucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgfHwga2V5KyssXG4gICAgICBwcmVmaXg6IHByZWZpeCB8fCAnJyxcbiAgICAgIGRlbGltaXRlcixcbiAgICAgIG9wdGlvbmFsLFxuICAgICAgcmVwZWF0LFxuICAgICAgcGFydGlhbCxcbiAgICAgIGFzdGVyaXNrOiBCb29sZWFuKGFzdGVyaXNrKSxcbiAgICAgIHBhdHRlcm46IHBhdHRlcm4gPyBlc2NhcGVHcm91cChwYXR0ZXJuKSA6IChhc3RlcmlzayA/ICcuKicgOiAnW14nICsgZXNjYXBlU3RyaW5nKGRlbGltaXRlcikgKyAnXSs/JylcbiAgICB9KVxuICB9XG5cbiAgLy8gTWF0Y2ggYW55IGNoYXJhY3RlcnMgc3RpbGwgcmVtYWluaW5nLlxuICBpZiAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgcGF0aCArPSBzdHIuc3Vic3RyKGluZGV4KVxuICB9XG5cbiAgLy8gSWYgdGhlIHBhdGggZXhpc3RzLCBwdXNoIGl0IG9udG8gdGhlIGVuZC5cbiAgaWYgKHBhdGgpIHtcbiAgICB0b2tlbnMucHVzaChwYXRoKVxuICB9XG5cbiAgcmV0dXJuIHRva2Vuc1xufVxuXG4vKipcbiAqIFByZXR0aWVyIGVuY29kaW5nIG9mIFVSSSBwYXRoIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IChzdHIsIHNsYXNoQWxsb3dlZCkge1xuICBjb25zdCByZSA9IHNsYXNoQWxsb3dlZCA/IC9bPyNdL2cgOiAvWy8/I10vZ1xuICByZXR1cm4gZW5jb2RlVVJJKHN0cikucmVwbGFjZShyZSwgKGMpID0+IHtcbiAgICByZXR1cm4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIH0pXG59XG5cbi8qKlxuICogRW5jb2RlIHRoZSBhc3RlcmlzayBwYXJhbWV0ZXIuIFNpbWlsYXIgdG8gYHByZXR0eWAsIGJ1dCBhbGxvd3Mgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzdGVyaXNrIChzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudFByZXR0eShzdHIsIHRydWUpXG59XG5cbi8qKlxuICogRXNjYXBlIGEgcmVndWxhciBleHByZXNzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18L1xcXFxdKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBFc2NhcGUgdGhlIGNhcHR1cmluZyBncm91cCBieSBlc2NhcGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgYW5kIG1lYW5pbmcuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBncm91cFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVHcm91cCAoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLnJlcGxhY2UoLyhbPSE6JC8oKV0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEV4cG9zZSBhIG1ldGhvZCBmb3IgdHJhbnNmb3JtaW5nIHRva2VucyBpbnRvIHRoZSBwYXRoIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiB0b2tlbnNUb0Z1bmN0aW9uICh0b2tlbnMsIG9wdGlvbnMpIHtcbiAgLy8gQ29tcGlsZSBhbGwgdGhlIHRva2VucyBpbnRvIHJlZ2V4cHMuXG4gIGNvbnN0IG1hdGNoZXMgPSBuZXcgQXJyYXkodG9rZW5zLmxlbmd0aClcblxuICAvLyBDb21waWxlIGFsbCB0aGUgcGF0dGVybnMgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0eXBlb2YgdG9rZW5zW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgbWF0Y2hlc1tpXSA9IG5ldyBSZWdFeHAoJ14oPzonICsgdG9rZW5zW2ldLnBhdHRlcm4gKyAnKSQnLCBmbGFncyhvcHRpb25zKSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKG9iaiwgb3B0cykge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBjb25zdCBkYXRhID0gb2JqIHx8IHt9XG4gICAgY29uc3Qgb3B0aW9ucyA9IG9wdHMgfHwge31cbiAgICBjb25zdCBlbmNvZGUgPSBvcHRpb25zLnByZXR0eSA/IGVuY29kZVVSSUNvbXBvbmVudFByZXR0eSA6IGVuY29kZVVSSUNvbXBvbmVudFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHBhdGggKz0gdG9rZW5cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbdG9rZW4ubmFtZSB8fCAncGF0aE1hdGNoJ11cbiAgICAgIGxldCBzZWdtZW50XG5cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICAgIC8vIFByZXBlbmQgcGFydGlhbCBzZWdtZW50IHByZWZpeGVzLlxuICAgICAgICAgIGlmICh0b2tlbi5wYXJ0aWFsKSB7XG4gICAgICAgICAgICBwYXRoICs9IHRva2VuLnByZWZpeFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBiZSBkZWZpbmVkJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCF0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCByZXBlYXQsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICdgJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IGJlIGVtcHR5JylcbiAgICAgICAgICB9XG4gICAgICAgI
1H1cblxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgc2VnbWVudCA9IGVuY29kZSh2YWx1ZVtqXSlcblxuICAgICAgICAgIGlmICghbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhbGwgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgYCcgKyBKU09OLnN0cmluZ2lmeShzZWdtZW50KSArICdgJylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXRoICs9IChqID09PSAwID8gdG9rZW4ucHJlZml4IDogdG9rZW4uZGVsaW1pdGVyKSArIHNlZ21lbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHNlZ21lbnQgPSB0b2tlbi5hc3RlcmlzayA/IGVuY29kZUFzdGVyaXNrKHZhbHVlKSA6IGVuY29kZSh2YWx1ZSlcblxuICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgXCInICsgc2VnbWVudCArICdcIicpXG4gICAgICB9XG5cbiAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudFxuICAgIH1cblxuICAgIHJldHVybiBwYXRoXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZsYWdzIGZvciBhIHJlZ2V4cCBmcm9tIHRoZSBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmbGFncyAob3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLnNlbnNpdGl2ZSA/ICcnIDogJ2knXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMaWZlY3ljbGVIb29rKHZtLCBob29rLCBmbikge1xuICBpZiAoIXZtLiRvcHRpb25zW2hvb2tdKSB7XG4gICAgdm0uJG9wdGlvbnNbaG9va10gPSBbXVxuICB9XG4gIGlmICghdm0uJG9wdGlvbnNbaG9va10uaW5jbHVkZXMoZm4pKSB7XG4gICAgdm0uJG9wdGlvbnNbaG9va10ucHVzaChmbilcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXJsSm9pbiA9IGpvaW5VUkxcblxuZXhwb3J0IGNvbnN0IHN0cmlwVHJhaWxpbmdTbGFzaCA9IHdpdGhvdXRUcmFpbGluZ1NsYXNoXG5cbmV4cG9ydCBjb25zdCBpc1NhbWVQYXRoID0gX2lzU2FtZVBhdGhcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNjcm9sbFJlc3RvcmF0aW9uIChuZXdWYWwpIHtcbiAgdHJ5IHtcbiAgICB3aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9IG5ld1ZhbDtcbiAgfSBjYXRjaChlKSB7fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6\n')},623:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(71);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(20);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5);\n/* harmony import */ var unfetch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(551);\n/* harmony import */ var _middleware_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(132);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(105);\n/* harmony import */ var _mixins_fetch_client__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(582);\n/* harmony import */ var _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(264);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // should be included after ./index.js\n\n// Fetch mixin\nif (!vue__WEBPACK_IMPORTED_MODULE_8__["default"].__nuxt__fetch__mixin__) {\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].mixin(_mixins_fetch_client__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"]);\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].__nuxt__fetch__mixin__ = true;\n}\n\n// Component: <NuxtLink>\nvue__WEBPACK_IMPORTED_MODULE_8__["default"].component(_components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].name, _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"]);\nvue__WEBPACK_IMPORTED_MODULE_8__["default"].component(\'NLink\', _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"]);\nif (!global.fetch) {\n global.fetch = unfetch__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"];\n}\n\n// Global shared references\nvar _lastPaths = [];\nvar app;\nvar router;\nvar store;\n\n// Try to rehydrate SSR data from window\nvar NUXT = window.__NUXT__ || {};\nvar $config = NUXT.config || {};\nif ($config._app) {\n __webpack_require__.p = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* urlJoin */ "v"])($config._app.cdnURL, $config._app.assetsPath);\n}\nObject.assign(vue__WEBPACK_IMPORTED_MODULE_8__["default"].config, {\n "silent": true,\n "performance": false\n});\nvar errorHandler = vue__WEBPACK_IMPORTED_MODULE_8__["default"].config.errorHandler || console.error;\n\n// Create and mount App\nObject(_index_js__WEBPACK_IMPORTED_MODULE_12__[/* createApp */ "b"])(null, NUXT.config).then(mountApp).catch(errorHandler);\nfunction componentOption(component, key) {\n if (!component || !component.options || !component.options[key]) {\n return {};\n }\n var option = component.options[key];\n if (typeof option === \'function\') {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return option(...args);\n }\n return option;\n}\nfunction mapTransitions(toComponents, to, from) {\n var componentTransitions = component => {\n var transition = componentOption(component, \'transition\', to, from) || {};
1\n return typeof transition === \'string\' ? {\n name: transition\n } : transition;\n };\n var fromComponents = from ? Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponents */ "g"])(from) : [];\n var maxDepth = Math.max(toComponents.length, fromComponents.length);\n var mergedTransitions = [];\n var _loop = function _loop() {\n // Clone original objects to prevent overrides\n var toTransitions = Object.assign({}, componentTransitions(toComponents[i]));\n var transitions = Object.assign({}, componentTransitions(fromComponents[i]));\n\n // Combine transitions & prefer `leave` properties of "from" route\n Object.keys(toTransitions).filter(key => typeof toTransitions[key] !== \'undefined\' && !key.toLowerCase().includes(\'leave\')).forEach(key => {\n transitions[key] = toTransitions[key];\n });\n mergedTransitions.push(transitions);\n };\n for (var i = 0; i < maxDepth; i++) {\n _loop();\n }\n return mergedTransitions;\n}\nfunction loadAsyncComponents(_x, _x2, _x3) {\n return _loadAsyncComponents.apply(this, arguments);\n}\nfunction _loadAsyncComponents() {\n _loadAsyncComponents = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (to, from, next) {\n // Check if route changed (this._routeChanged), only if the page is not an error (for validate())\n this._routeChanged = Boolean(app.nuxt.err) || from.name !== to.name;\n this._paramChanged = !this._routeChanged && from.path !== to.path;\n this._queryChanged = !this._paramChanged && from.fullPath !== to.fullPath;\n this._diffQuery = this._queryChanged ? Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getQueryDiff */ "i"])(to.query, from.query) : [];\n if ((this._routeChanged || this._paramChanged) && this.$loading.start && !this.$loading.manual) {\n this.$loading.start();\n }\n try {\n if (this._queryChanged) {\n var Components = yield Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* resolveRouteComponents */ "r"])(to, (Component, instance) => ({\n Component,\n instance\n }));\n // Add a marker on each component that it needs to refresh or not\n var startLoader = Components.some(_ref2 => {\n var {\n Component,\n instance\n } = _ref2;\n var watchQuery = Component.options.watchQuery;\n if (watchQuery === true) {\n return true;\n }\n if (Array.isArray(watchQuery)) {\n return watchQuery.some(key => this._diffQuery[key]);\n }\n if (typeof watchQuery === \'function\') {\n return watchQuery.apply(instance, [to.query, from.query]);\n }\n return false;\n });\n if (startLoader && this.$loading.start && !this.$loading.manual) {\n this.$loading.start();\n }\n }\n // Call next()\n next();\n } catch (error) {\n var err = error || {};\n var statusCode = err.statusCode || err.status || err.response && err.response.status || 500;\n var message = err.message || \'\';\n\n // Handle chunk loading errors\n // This may be due to a new deployment or a network problem\n if (/^Loading( CSS)? chunk (\\d)+ failed\\./.test(message)) {\n window.location.reload(true /* skip cac
1he */);\n return; // prevent error page blinking for user\n }\n this.error({\n statusCode,\n message\n });\n this.$nuxt.$emit(\'routeChanged\', to, from, err);\n next();\n }\n });\n return _loadAsyncComponents.apply(this, arguments);\n}\nfunction applySSRData(Component, ssrData) {\n if (NUXT.serverRendered && ssrData) {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* applyAsyncData */ "b"])(Component, ssrData);\n }\n Component._Ctor = Component;\n return Component;\n}\n\n// Get matched components\nfunction resolveComponents(route) {\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* flatMapComponents */ "d"])(route, /*#__PURE__*/function () {\n var _ref = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (Component, _, match, key, index) {\n // If component is not resolved yet, resolve it\n if (typeof Component === \'function\' && !Component.options) {\n Component = yield Component();\n }\n // Sanitize it and save it\n var _Component = applySSRData(Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* sanitizeComponent */ "s"])(Component), NUXT.data ? NUXT.data[index] : null);\n match.components[key] = _Component;\n return _Component;\n });\n return function (_x4, _x5, _x6, _x7, _x8) {\n return _ref.apply(this, arguments);\n };\n }());\n}\nfunction callMiddleware(Components, context, layout, renderState) {\n var midd = ["blockRoutes", "legacySlugRedirect", "nuxti18n"];\n var unknownMiddleware = false;\n\n // If layout is undefined, only call global middleware\n if (typeof layout !== \'undefined\') {\n midd = []; // Exclude global middleware if layout defined (already called before)\n layout = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* sanitizeComponent */ "s"])(layout);\n if (layout.options.middleware) {\n midd = midd.concat(layout.options.middleware);\n }\n Components.forEach(Component => {\n if (Component.options.middleware) {\n midd = midd.concat(Component.options.middleware);\n }\n });\n }\n midd = midd.map(name => {\n if (typeof name === \'function\') {\n return name;\n }\n if (typeof _middleware_js__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"][name] !== \'function\') {\n unknownMiddleware = true;\n this.error({\n statusCode: 500,\n message: \'Unknown middleware \' + name\n });\n }\n return _middleware_js__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"][name];\n });\n if (unknownMiddleware) {\n return;\n }\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* middlewareSeries */ "o"])(midd, context, renderState);\n}\nfunction render(_x9, _x0, _x1, _x10) {\n return _render.apply(this, arguments);\n} // Fix components format in matched, it\'s due to code-splitting of vue-router\nfunction _render() {\n _render = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (to, from, next, renderState) {\n var _this = this;\n if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) {\n return next();\n }\n // Handle first render on SPA mode\n var spaFallback = false;\n if (to === from) {\n _lastPaths = [];\n spaFallback = true;\n } else {\n var fromMatches = [];\n _lastPaths = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponents */ "g"])(from, fromMatches).map((Component, i) => {\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* compile */ "c"])(from.matched[fromMatches[i]].path)(from.params);\n });\n }\n\n // nextCalled is true when redirected\n var nextCalled = false;\n var _next = path => {\n if (from.path === path.path && this.$loading.finish) {\n this.$loading.finish();\n }\n if (from.path !== path.path && this.$loading.pause) {\n this.$loading.pause();\n }\n if (nextCalled) {\n return;\n }\n nextCalled = true;\n next(path);\n };\n\n // Update context\n yield Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* setContext */ "t"])(app, {\n route: to,\n from,\n error: err => {\n if (renderState.aborted) {\n return;\n }\n app.nuxt.error.call(this, err);\n },\n next: _next.bind(this)\n });\n this._dateLastError = app.nuxt.dateErr;\n this._hadError = Boolean(app.nuxt.err);\n\n // Get route\'s matched components\n var matches = [];\n var Components = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponents */ "g"])(to, matches);\n\n // If no Components matched, generate 404\n if (!Components.length) {\n // Default layout\n yield callMiddleware.call(this, Components, app.context, undefined, renderState);\n if (nextCalled) {\n return;\n }\n if (renderState.aborted) {\n next(false);\n return;\n }\n\n // Load layout for error page\n var errorLayout = (_index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"]).layout;\n var layout = yield this.loadLayout(typeof errorLayout === \'function\' ? errorLayout.call(_index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"], app.context) : errorLayout);\n yield callMiddleware.call(this, Components, app.context, layout, renderState);\n if (nextCalled) {\n return;\n }\n if (renderState.aborted) {\n next(false);\n return;\n }\n\n // Show error page\n app.context.error({\n statusCode: 404,\n message: \'This page could not be found\'\n });\n return next();\n }\n\n // Update ._data and other properties if hot reloaded\n Components.forEac
1h(Component => {\n if (Component._Ctor && Component._Ctor.options) {\n Component.options.asyncData = Component._Ctor.options.asyncData;\n Component.options.fetch = Component._Ctor.options.fetch;\n }\n });\n\n // Apply transitions\n this.setTransitions(mapTransitions(Components, to, from));\n try {\n // Call middleware\n yield callMiddleware.call(this, Components, app.context, undefined, renderState);\n if (nextCalled) {\n return;\n }\n if (renderState.aborted) {\n next(false);\n return;\n }\n if (app.context._errored) {\n return next();\n }\n\n // Set layout\n var _layout = Components[0].options.layout;\n if (typeof _layout === \'function\') {\n _layout = _layout(app.context);\n }\n _layout = yield this.loadLayout(_layout);\n\n // Call middleware for layout\n yield callMiddleware.call(this, Components, app.context, _layout, renderState);\n if (nextCalled) {\n return;\n }\n if (renderState.aborted) {\n next(false);\n return;\n }\n if (app.context._errored) {\n return next();\n }\n\n // Call .validate()\n var isValid = true;\n try {\n for (var Component of Components) {\n if (typeof Component.options.validate !== \'function\') {\n continue;\n }\n isValid = yield Component.options.validate(app.context);\n if (!isValid) {\n break;\n }\n }\n } catch (validationError) {\n // ...If .validate() threw an error\n this.error({\n statusCode: validationError.statusCode || \'500\',\n message: validationError.message\n });\n return next();\n }\n\n // ...If .validate() returned false\n if (!isValid) {\n this.error({\n statusCode: 404,\n message: \'This page could not be found\'\n });\n return next();\n }\n var instances;\n // Call asyncData & fetch hooks on components matched by the route.\n yield Promise.all(Components.map(/*#__PURE__*/function () {\n var _ref3 = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (Component, i) {\n // Check if only children route changed\n Component._path = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* compile */ "c"])(to.matched[matches[i]].path)(to.params);\n Component._dataRefresh = false;\n var childPathChanged = Component._path !== _lastPaths[i];\n // Refresh component (call asyncData & fetch) when:\n // Route path changed part includes current component\n // Or route param changed part includes current component and watchParam is not `false`\n // Or route query is changed and watchQuery returns `true`\n if (_this._routeChanged && childPathChanged) {\n Component._dataRefresh = true;\n } else if (_this._paramChanged && childPathChanged) {\n var watchParam = Component.options.watchParam;\n Component._dataRefresh = watchParam !== false;\n } else if (_this._queryChanged) {\n var watchQuery = Component.options.watchQuery;\n if (watchQuery === true) {\n Component._dataRefresh = true;\n } else if (Array.isArray(watchQuery)) {\n Component._dataRefresh = watchQuery.some(key => _this._diffQuery[key]);\n } else if (typeof watchQuery === \'function\') {\n if (!instances) {\n instances = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponentsInstances */ "h"])(to);\n }\n Component._dataRefresh = watchQuery.apply(instances[i], [to.query, from.query]);\n }\n }\n if (!_this._hadError && _this._isMounted && !Component._dataRefresh) {\n return;\n }\n var promises = [];\n var hasAsyncData = Component.options.asyncData && typeof Component.options.asyncData === \'function\';\n var hasFetch = Boolean(Component.options.fetch) && Component.options.fetch.length;\n var loadingIncrease = hasAsyncData && hasFetch ? 30 : 45;\n\n // Call asyncData(context)\n if (hasAsyncData) {\
1n var promise = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* promisify */ "q"])(Component.options.asyncData, app.context);\n promise.then(asyncDataResult => {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* applyAsyncData */ "b"])(Component, asyncDataResult);\n if (_this.$loading.increase) {\n _this.$loading.increase(loadingIncrease);\n }\n });\n promises.push(promise);\n }\n\n // Check disabled page loading\n _this.$loading.manual = Component.options.loading === false;\n\n // Call fetch(context)\n if (hasFetch) {\n var p = Component.options.fetch(app.context);\n if (!p || !(p instanceof Promise) && typeof p.then !== \'function\') {\n p = Promise.resolve(p);\n }\n p.then(fetchResult => {\n if (_this.$loading.increase) {\n _this.$loading.increase(loadingIncrease);\n }\n });\n promises.push(p);\n }\n return Promise.all(promises);\n });\n return function (_x12, _x13) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n // If not redirected\n if (!nextCalled) {\n if (this.$loading.finish && !this.$loading.manual) {\n this.$loading.finish();\n }\n if (renderState.aborted) {\n next(false);\n return;\n }\n next();\n }\n } catch (err) {\n if (renderState.aborted) {\n next(false);\n return;\n }\n var error = err || {};\n if (error.message === \'ERR_REDIRECT\') {\n return this.$nuxt.$emit(\'routeChanged\', to, from, error);\n }\n _lastPaths = [];\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* globalHandleError */ "k"])(error);\n\n // Load error layout\n var _layout2 = (_index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"]).layout;\n if (typeof _layout2 === \'function\') {\n _layout2 = _layout2(app.context);\n }\n yield this.loadLayout(_layout2);\n this.error(error);\n this.$nuxt.$emit(\'routeChanged\', to, from, error);\n next();\n }\n });\n return _render.apply(this, arguments);\n}\nfunction normalizeComponents(to, ___) {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* flatMapComponents */ "d"])(to, (Component, _, match, key) => {\n if (typeof Component === \'object\' && !Component.options) {\n // Updated via vue-router resolveAsyncComponents()\n Component = vue__WEBPACK_IMPORTED_MODULE_8__["default"].extend(Component);\n Component._Ctor = Component;\n match.components[key] = Component;\n }\n return Component;\n });\n}\nfunction setLayoutForNextPage(to) {\n // Set layout\n var hasError = Boolean(this.$options.nuxt.err);\n if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) {\n hasError = false;\n }\n var layout = hasError ? (_index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_12__[/* NuxtError */ "a"]).layout : to.matched[0].components.default.options.layout;\n if (typeof layout === \'function\') {\n layout = layout(app.context);\n }\n this.setLayout(layout);\n}\nfunction checkForErrors(app) {\n // Hide error component if no error\n if (app._hadError && app._dateLastError === app.$options.nuxt.dateErr) {\n app.error();\n }\n}\n\n// When navigating on a different route but the same component is used, Vue.js\n// Will not update the instance data, so we have to update $data ourselves\nfunction fixPrepatch(to, ___) {\n if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) {\n return;\n }\n var instances = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponentsInstances */ "h"])(to);\n var Components = Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* getMatchedComponents */ "g"])(to);\n var triggerScroll = false;\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].nextTick(() =>
1 {\n instances.forEach((instance, i) => {\n if (!instance || instance._isDestroyed) {\n return;\n }\n if (instance.constructor._dataRefresh && Components[i] === instance.constructor && instance.$vnode.data.keepAlive !== true && typeof instance.constructor.options.data === \'function\') {\n var newData = instance.constructor.options.data.call(instance);\n for (var key in newData) {\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].set(instance.$data, key, newData[key]);\n }\n triggerScroll = true;\n }\n });\n if (triggerScroll) {\n // Ensure to trigger scroll event after calling scrollBehavior\n window.$nuxt.$nextTick(() => {\n window.$nuxt.$emit(\'triggerScroll\');\n });\n }\n checkForErrors(this);\n });\n}\nfunction nuxtReady(_app) {\n window.onNuxtReadyCbs.forEach(cb => {\n if (typeof cb === \'function\') {\n cb(_app);\n }\n });\n // Special JSDOM\n if (typeof window._onNuxtLoaded === \'function\') {\n window._onNuxtLoaded(_app);\n }\n // Add router hooks\n router.afterEach((to, from) => {\n // Wait for fixPrepatch + $data updates\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].nextTick(() => _app.$nuxt.$emit(\'routeChanged\', to, from));\n });\n}\nfunction mountApp(_x11) {\n return _mountApp.apply(this, arguments);\n}\nfunction _mountApp() {\n _mountApp = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(function* (__app) {\n // Set global variables\n app = __app.app;\n router = __app.router;\n store = __app.store;\n\n // Create Vue instance\n var _app = new vue__WEBPACK_IMPORTED_MODULE_8__["default"](app);\n\n // Load layout\n var layout = NUXT.layout || \'default\';\n yield _app.loadLayout(layout);\n _app.setLayout(layout);\n\n // Mounts Vue app to DOM element\n var mount = () => {\n _app.$mount(\'#__nuxt\');\n\n // Add afterEach router hooks\n router.afterEach(normalizeComponents);\n router.afterEach(setLayoutForNextPage.bind(_app));\n router.afterEach(fixPrepatch.bind(_app));\n\n // Listen for first Vue update\n vue__WEBPACK_IMPORTED_MODULE_8__["default"].nextTick(() => {\n // Call window.{{globals.readyCallback}} callbacks\n nuxtReady(_app);\n });\n };\n\n // Resolve route components\n var Components = yield Promise.all(resolveComponents(app.context.route));\n\n // Enable transitions\n _app.setTransitions = _app.$options.nuxt.setTransitions.bind(_app);\n if (Components.length) {\n _app.setTransitions(mapTransitions(Components, router.currentRoute));\n _lastPaths = router.currentRoute.matched.map(route => Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* compile */ "c"])(route.path)(router.currentRoute.params));\n }\n\n // Initialize error handler\n _app.$loading = {}; // To avoid error while _app.$nuxt does not exist\n if (NUXT.error) {\n _app.error(NUXT.error);\n }\n\n // Add beforeEach router hooks\n router.beforeEach(loadAsyncComponents.bind(_app));\n\n // Each new invocation of render() aborts previous invocation\n var renderState = null;\n var boundRender = render.bind(_app);\n router.beforeEach((to, from, next) => {\n if (renderState) {\n renderState.aborted = true;\n }\n renderState = {\n aborted: false\n };\n boundRender(to, from, next, renderState);\n });\n\n // Fix in static: remove trailing slash to force hydration\n // Full static, if server-rendered: hydrate, to allow custom redirect to generated page\n\n // Fix in static: remove trailing slash to force hydration\n if (NUXT.serverRendered && Object(_utils_js__WEBPACK_IMPORTED_MODULE_11__[/* isSamePath */ "n"])(NUXT.routePath, _app.context.route.path)) {\n return mount();\n }\n\n // First render on client-side\n var clientFirstMount = () => {\n normalizeComponents(router.currentRoute, router.currentRoute);\n setLayoutForNextPage.call(_app, router.currentRoute);\n checkForErrors(_app);\n // Don\'t call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it\'s first render\n mount();\n };\n\n // fix: force next tick to avoid having same timestamp when an error happen on
1spa fallback\n yield new Promise(resolve => setTimeout(resolve, 0));\n render.call(_app, router.currentRoute, router.currentRoute, path => {\n // If not redirected\n if (!path) {\n clientFirstMount();\n return;\n }\n\n // Add a one-time afterEach hook to\n // mount the app wait for redirect and route gets resolved\n var unregisterHook = router.afterEach((to, from) => {\n unregisterHook();\n clientFirstMount();\n });\n\n // Push the path and let route to be resolved\n router.push(path, undefined, err => {\n if (err) {\n errorHandler(err);\n }\n });\n }, {\n aborted: false\n });\n });\n return _mountApp.apply(this, arguments);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(34)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NsaWVudC5qcz9kZDU4Il0sIm5hbWVzIjpbIlZ1ZSIsIl9fbnV4dF9fZmV0Y2hfX21peGluX18iLCJtaXhpbiIsImZldGNoTWl4aW4iLCJjb21wb25lbnQiLCJOdXh0TGluayIsIm5hbWUiLCJnbG9iYWwiLCJmZXRjaCIsIl9sYXN0UGF0aHMiLCJhcHAiLCJyb3V0ZXIiLCJzdG9yZSIsIk5VWFQiLCJ3aW5kb3ciLCJfX05VWFRfXyIsIiRjb25maWciLCJjb25maWciLCJfYXBwIiwiX193ZWJwYWNrX3B1YmxpY19wYXRoX18iLCJ1cmxKb2luIiwiY2RuVVJMIiwiYXNzZXRzUGF0aCIsIk9iamVjdCIsImFzc2lnbiIsImVycm9ySGFuZGxlciIsImNvbnNvbGUiLCJlcnJvciIsImNyZWF0ZUFwcCIsInRoZW4iLCJtb3VudEFwcCIsImNhdGNoIiwiY29tcG9uZW50T3B0aW9uIiwia2V5Iiwib3B0aW9ucyIsIm9wdGlvbiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwibWFwVHJhbnNpdGlvbnMiLCJ0b0NvbXBvbmVudHMiLCJ0byIsImZyb20iLCJjb21wb25lbnRUcmFuc2l0aW9ucyIsInRyYW5zaXRpb24iLCJmcm9tQ29tcG9uZW50cyIsImdldE1hdGNoZWRDb21wb25lbnRzIiwibWF4RGVwdGgiLCJNYXRoIiwibWF4IiwibWVyZ2VkVHJhbnNpdGlvbnMiLCJfbG9vcCIsInRvVHJhbnNpdGlvbnMiLCJpIiwidHJhbnNpdGlvbnMiLCJrZXlzIiwiZmlsdGVyIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImZvckVhY2giLCJwdXNoIiwibG9hZEFzeW5jQ29tcG9uZW50cyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRBc3luY0NvbX
1BvbmVudHMiLCJhcHBseSIsIl9hc3luY1RvR2VuZXJhdG9yIiwibmV4dCIsIl9yb3V0ZUNoYW5nZWQiLCJCb29sZWFuIiwibnV4dCIsImVyciIsIl9wYXJhbUNoYW5nZWQiLCJwYXRoIiwiX3F1ZXJ5Q2hhbmdlZCIsImZ1bGxQYXRoIiwiX2RpZmZRdWVyeSIsImdldFF1ZXJ5RGlmZiIsInF1ZXJ5IiwiJGxvYWRpbmciLCJzdGFydCIsIm1hbnVhbCIsIkNvbXBvbmVudHMiLCJyZXNvbHZlUm91dGVDb21wb25lbnRzIiwiQ29tcG9uZW50IiwiaW5zdGFuY2UiLCJzdGFydExvYWRlciIsInNvbWUiLCJfcmVmMiIsIndhdGNoUXVlcnkiLCJpc0FycmF5Iiwic3RhdHVzQ29kZSIsInN0YXR1cyIsInJlc3BvbnNlIiwibWVzc2FnZSIsInRlc3QiLCJsb2NhdGlvbiIsInJlbG9hZCIsIiRudXh0IiwiJGVtaXQiLCJhcHBseVNTUkRhdGEiLCJzc3JEYXRhIiwic2VydmVyUmVuZGVyZWQiLCJhcHBseUFzeW5jRGF0YSIsIl9DdG9yIiwicmVzb2x2ZUNvbXBvbmVudHMiLCJyb3V0ZSIsImZsYXRNYXBDb21wb25lbnRzIiwiX3JlZiIsIl8iLCJtYXRjaCIsImluZGV4IiwiX0NvbXBvbmVudCIsInNhbml0aXplQ29tcG9uZW50IiwiZGF0YSIsImNvbXBvbmVudHMiLCJfeDQiLCJfeDUiLCJfeDYiLCJfeDciLCJfeDgiLCJjYWxsTWlkZGxld2FyZSIsImNvbnRleHQiLCJsYXlvdXQiLCJyZW5kZXJTdGF0ZSIsIm1pZGQiLCJ1bmtub3duTWlkZGxld2FyZSIsIm1pZGRsZXdhcmUiLCJjb25jYXQiLCJtYXAiLCJtaWRkbGV3YXJlU2VyaWVzIiwicmVuZGVyIiwiX3g5IiwiX3gwIiwiX3gxIiwiX3gxMCIsIl9yZW5kZXIiLCJfdGhpcyIsInNwYUZhbGxiYWNrIiwiZnJvbU1hdGNoZXMiLCJjb21waWxlIiwibWF0Y2hlZCIsInBhcmFtcyIsIm5leHRDYWxsZWQiLCJfbmV4dCIsImZpbmlzaCIsInBhdXNlIiwic2V0Q29udGV4dCIsImFib3J0ZWQiLCJjYWxsIiwiYmluZCIsIl9kYXRlTGFzdEVycm9yIiwiZGF0ZUVyciIsIl9oYWRFcnJvciIsIm1hdGNoZXMiLCJ1bmRlZmluZWQiLCJlcnJvckxheW91dCIsIk51eHRFcnJvciIsImxvYWRMYXlvdXQiLCJhc3luY0RhdGEiLCJzZXRUcmFuc2l0aW9ucyIsIl9lcnJvcmVkIiwiaXNWYWxpZCIsInZhbGlkYXRlIiwidmFsaWRhdGlvbkVycm9yIiwiaW5zdGFuY2VzIiwiUHJvbWlzZSIsImFsbCIsIl9yZWYzIiwiX3BhdGgiLCJfZGF0YVJlZnJlc2giLCJjaGlsZFBhdGhDaGFuZ2VkIiwid2F0Y2hQYXJhbSIsImdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzIiwiX2lzTW91bnRlZCIsInByb21pc2VzIiwiaGFzQXN5bmNEYXRhIiwiaGFzRmV0Y2giLCJsb2FkaW5nSW5jcmVhc2UiLCJwcm9taXNlIiwicHJvbWlzaWZ5IiwiYXN5bmNEYXRhUmVzdWx0IiwiaW5jcmVhc2UiLCJsb2FkaW5nIiwicCIsInJlc29sdmUiLCJmZXRjaFJlc3VsdCIsIl94MTIiLCJfeDEzIiwiZ2xvYmFsSGFuZGxlRXJyb3IiLCJub3JtYWxpemVDb21wb25lbnRzIiwiX19fIiwiZXh0ZW5kIiwic2V0TGF5b3V0Rm9yTmV4dFBhZ2UiLCJoYXNFcnJvciIsIiRvcHRpb25zIiwiZGVmYXVsdCIsInNldExheW91dCIsImNoZWNrRm9yRXJyb3JzIiwiZml4UHJlcGF0Y2giLCJ0cmlnZ2VyU2Nyb2xsIiwibmV4dFRpY2siLCJfaXNEZXN0cm95ZWQiLCJjb25zdHJ1Y3RvciIsIiR2bm9kZSIsImtlZXBBbGl2ZSIsIm5ld0RhdGEiLCJzZXQiLCIkZGF0YSIsIiRuZXh0VGljayIsIm51eHRSZWFkeSIsIm9uTnV4dFJlYWR5Q2JzIiwiY2IiLCJfb25OdXh0TG9hZGVkIiwiYWZ0ZXJFYWNoIiwiX3gxMSIsIl9tb3VudEFwcCIsIl9fYXBwIiwibW91bnQiLCIkbW91bnQiLCJjdXJyZW50Um91dGUiLCJiZWZvcmVFYWNoIiwiYm91bmRSZW5kZXIiLCJpc1NhbWVQYXRoIiwicm91dGVQYXRoIiwiY2xpZW50Rmlyc3RNb3VudCIsInNldFRpbWVvdXQiLCJ1bnJlZ2lzdGVySG9vayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxQjtBQUNNO0FBQ2E7QUFpQnJCO0FBQzhCO0FBQ0g7QUFDUyxDQUFDOztBQUV4RDtBQUNBLElBQUksQ0FBQ0EsMkNBQUcsQ0FBQ0Msc0JBQXNCLEVBQUU7RUFDL0JELDJDQUFHLENBQUNFLEtBQUssQ0FBQ0MscUVBQVUsQ0FBQztFQUNyQkgsMkNBQUcsQ0FBQ0Msc0JBQXNCLEdBQUcsSUFBSTtBQUNuQzs7QUFFQTtBQUNBRCwyQ0FBRyxDQUFDSSxTQUFTLENBQUNDLGdGQUFRLENBQUNDLElBQUksRUFBRUQsZ0ZBQVEsQ0FBQztBQUN0Q0wsMkNBQUcsQ0FBQ0ksU0FBUyxDQUFDLE9BQU8sRUFBRUMsZ0ZBQVEsQ0FBQztBQUVoQyxJQUFJLENBQUNFLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFO0VBQUVELE1BQU0sQ0FBQ0MsS0FBSyxHQUFHQSx1REFBSztBQUFDOztBQUUxQztBQUNBLElBQUlDLFVBQVUsR0FBRyxFQUFFO0FBQ25CLElBQUlDLEdBQUc7QUFDUCxJQUFJQyxNQUFNO0FBQ1YsSUFBSUMsS0FBSzs7QUFFVDtBQUNBLElBQU1DLElBQUksR0FBR0MsTUFBTSxDQUFDQyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBRWxDLElBQU1DLE9BQU8sR0FBR0gsSUFBSSxDQUFDSSxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUlELE9BQU8sQ0FBQ0UsSUFBSSxFQUFFO0VBQ2hCQyxxQkFBdUIsR0FBR0Msa0VBQU8sQ0FBQ0osT0FBTyxDQUFDRSxJQUFJLENBQUNHLE1BQU0sRUFBRUwsT0FBTyxDQUFDRSxJQUFJLENBQUNJLFVBQVUsQ0FBQztBQUNqRjtBQUVBQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ3hCLDJDQUFHLENBQUNpQixNQUFNLEVBQUU7RUFBQyxRQUFRL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QUFZLENBQUM7TUFDcER0QixjQUFjLENBQUN4TCxJQUFJLENBQUM7T
1UFDcEI7TUFDQTRNLEtBQUssQ0FBQyxDQUFDO0lBQ1QsQ0FBQzs7SUFFRDtJQUNBLE1BQU0sSUFBSXBELE9BQU8sQ0FBQ21CLE9BQU8sSUFBSXlDLFVBQVUsQ0FBQ3pDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRHRELE1BQU0sQ0FBQ2tCLElBQUksQ0FBQ3ZJLElBQUksRUFBRVAsTUFBTSxDQUFDcU4sWUFBWSxFQUFFck4sTUFBTSxDQUFDcU4sWUFBWSxFQUFHbkosSUFBSSxJQUFLO01BQ3BFO01BQ0EsSUFBSSxDQUFDQSxJQUFJLEVBQUU7UUFDVHdKLGdCQUFnQixDQUFDLENBQUM7UUFDbEI7TUFDRjs7TUFFQTtNQUNBO01BQ0EsSUFBTUUsY0FBYyxHQUFHNU4sTUFBTSxDQUFDK00sU0FBUyxDQUFDLENBQUM5SyxFQUFFLEVBQUVDLElBQUksS0FBSztRQUNwRDBMLGNBQWMsQ0FBQyxDQUFDO1FBQ2hCRixnQkFBZ0IsQ0FBQyxDQUFDO01BQ3BCLENBQUMsQ0FBQzs7TUFFRjtNQUNBMU4sTUFBTSxDQUFDb0QsSUFBSSxDQUFDYyxJQUFJLEVBQUVrRixTQUFTLEVBQUdwRixHQUFHLElBQUs7UUFDcEMsSUFBSUEsR0FBRyxFQUFFO1VBQ1BsRCxZQUFZLENBQUNrRCxHQUFHLENBQUM7UUFDbkI7TUFDRixDQUFDLENBQUM7SUFDSixDQUFDLEVBQ0Q7TUFBRTZFLE9BQU8sRUFBRTtJQUFNLENBQUMsQ0FBQztFQUNyQixDQUFDO0VBQUEsT0FBQW9FLFNBQUEsQ0FBQXZKLEtBQUEsT0FBQWhDLFNBQUE7QUFBQSxDIiwiZmlsZSI6IjYyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IGZldGNoIGZyb20gJ3VuZmV0Y2gnXG5pbXBvcnQgbWlkZGxld2FyZSBmcm9tICcuL21pZGRsZXdhcmUuanMnXG5pbXBvcnQge1xuICBhcHBseUFzeW5jRGF0YSxcbiAgcHJvbWlzaWZ5LFxuICBtaWRkbGV3YXJlU2VyaWVzLFxuICBzYW5pdGl6ZUNvbXBvbmVudCxcbiAgcmVzb2x2ZVJvdXRlQ29tcG9uZW50cyxcbiAgZ2V0TWF0Y2hlZENvbXBvbmVudHMsXG4gIGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzLFxuICBmbGF0TWFwQ29tcG9uZW50cyxcbiAgc2V0Q29udGV4dCxcbiAgZ2V0TG9jYXRpb24sXG4gIGNvbXBpbGUsXG4gIGdldFF1ZXJ5RGlmZixcbiAgZ2xvYmFsSGFuZGxlRXJyb3IsXG4gIGlzU2FtZVBhdGgsXG4gIHVybEpvaW5cbn0gZnJvbSAnLi91dGlscy5qcydcbmltcG9ydCB7IGNyZWF0ZUFwcCwgTnV4dEVycm9yIH0gZnJvbSAnLi9pbmRleC5qcydcbmltcG9ydCBmZXRjaE1peGluIGZyb20gJy4vbWl4aW5zL2ZldGNoLmNsaWVudCdcbmltcG9ydCBOdXh0TGluayBmcm9tICcuL2NvbXBvbmVudHMvbnV4dC1saW5rLmNsaWVudC5qcycgLy8gc2hvdWxkIGJlIGluY2x1ZGVkIGFmdGVyIC4vaW5kZXguanNcblxuLy8gRmV0Y2ggbWl4aW5cbmlmICghVnVlLl9fbnV4dF9fZmV0Y2hfX21peGluX18pIHtcbiAgVnVlLm1peGluKGZldGNoTWl4aW4pXG4gIFZ1ZS5fX251eHRfX2ZldGNoX19taXhpbl9fID0gdHJ1ZVxufVxuXG4vLyBDb21wb25lbnQ6IDxOdXh0TGluaz5cblZ1ZS5jb21wb25lbnQoTnV4dExpbmsubmFtZSwgTnV4dExpbmspXG5WdWUuY29tcG9uZW50KCdOTGluaycsIE51eHRMaW5rKVxuXG5pZiAoIWdsb2JhbC5mZXRjaCkgeyBnbG9iYWwuZmV0Y2ggPSBmZXRjaCB9XG5cbi8vIEdsb2JhbCBzaGFyZWQgcmVmZXJlbmNlc1xubGV0IF9sYXN0UGF0aHMgPSBbXVxubGV0IGFwcFxubGV0IHJvdXRlclxubGV0IHN0b3JlXG5cbi8vIFRyeSB0byByZWh5ZHJhdGUgU1NSIGRhdGEgZnJvbSB3aW5kb3dcbmNvbnN0IE5VWFQgPSB3aW5kb3cuX19OVVhUX18gfHwge31cblxuY29uc3QgJGNvbmZpZyA9IE5VWFQuY29uZmlnIHx8IHt9XG5pZiAoJGNvbmZpZy5fYXBwKSB7XG4gIF9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gdXJsSm9pbigkY29uZmlnLl9hcHAuY2RuVVJMLCAkY29uZmlnLl9hcHAuYXNzZXRzUGF0aClcbn1cblxuT2JqZWN0LmFzc2lnbihWdWUuY29uZmlnLCB7XCJzaWxlbnRcIjp0cnVlLFwicGVyZm9ybWFuY2VcIjpmYWxzZX0pXG5cbmNvbnN0IGVycm9ySGFuZGxlciA9IFZ1ZS5jb25maWcuZXJyb3JIYW5kbGVyIHx8IGNvbnNvbGUuZXJyb3JcblxuLy8gQ3JlYXRlIGFuZCBtb3VudCBBcHBcbmNyZWF0ZUFwcChudWxsLCBOVVhULmNvbmZpZykudGhlbihtb3VudEFwcCkuY2F0Y2goZXJyb3JIYW5kbGVyKVxuXG5mdW5jdGlvbiBjb21wb25lbnRPcHRpb24gKGNvbXBvbmVudCwga2V5LCAuLi5hcmdzKSB7XG4gIGlmICghY29tcG9uZW50IHx8ICFjb21wb25lbnQub3B0aW9ucyB8fCAhY29tcG9uZW50Lm9wdGlvbnNba2V5XSkge1xuICAgIHJldHVybiB7fVxuICB9XG4gIGNvbnN0IG9wdGlvbiA9IGNvbXBvbmVudC5vcHRpb25zW2tleV1cbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb3B0aW9uKC4uLmFyZ3MpXG4gIH1cbiAgcmV0dXJuIG9wdGlvblxufVxuXG5mdW5jdGlvbiBtYXBUcmFuc2l0aW9ucyAodG9Db21wb25lbnRzLCB0bywgZnJvbSkge1xuICBjb25zdCBjb21wb25lbnRUcmFuc2l0aW9ucyA9IChjb21wb25lbnQpID0+IHtcbiAgICBjb25zdCB0cmFuc2l0aW9uID0gY29tcG9uZW50T3B0aW9uKGNvbXBvbmVudCwgJ3RyYW5zaXRpb24nLCB0bywgZnJvbSkgfHwge31cbiAgICByZXR1cm4gKHR5cGVvZiB0cmFuc2l0aW9uID09PSAnc3RyaW5nJyA/IHsgbmFtZTogdHJhbnNpdGlvbiB9IDogdHJhbnNpdGlvbilcbiAgfVxuXG4gIGNvbnN0IGZyb21Db21wb25lbnRzID0gZnJvbSA/IGdldE1hdGNoZWRDb21wb25lbnRzKGZyb20pIDogW11cbiAgY29uc3QgbWF4RGVwdGggPSBNYXRoLm1heCh0b0NvbXBvbmVudHMubGVuZ3RoLCBmcm9tQ29tcG9uZW50cy5sZW5ndGgpXG5cbiAgY29uc3QgbWVyZ2VkVHJhbnNpdGlvbnMgPSBbXVxuICBmb3IgKGxldCBpPTA7IGk8bWF4RGVwdGg7IGkrKykge1xuICAgIC8vIENsb25lIG9yaWdpbmFsIG9iamVjdHMgdG8gcHJldmVudCBvdmVycmlkZXNcbiAgICBjb25zdCB0b1RyYW5zaXRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgY29tcG9uZW50VHJhbnNpdGlvbnModG9Db21wb25lbnRzW2ldKSlcbiAgICBjb25zdCB0cmFuc2l0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGNvbXBvbmVudFRyYW5zaXRpb25zKGZyb21
1Db21wb25lbnRzW2ldKSlcblxuICAgIC8vIENvbWJpbmUgdHJhbnNpdGlvbnMgJiBwcmVmZXIgYGxlYXZlYCBwcm9wZXJ0aWVzIG9mIFwiZnJvbVwiIHJvdXRlXG4gICAgT2JqZWN0LmtleXModG9UcmFuc2l0aW9ucylcbiAgICAgICAgLmZpbHRlcihrZXkgPT4gdHlwZW9mIHRvVHJhbnNpdGlvbnNba2V5XSAhPT0gJ3VuZGVmaW5lZCcgJiYgIWtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdsZWF2ZScpKVxuICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7IHRyYW5zaXRpb25zW2tleV0gPSB0b1RyYW5zaXRpb25zW2tleV0gfSlcblxuICAgIG1lcmdlZFRyYW5zaXRpb25zLnB1c2godHJhbnNpdGlvbnMpXG4gIH1cbiAgcmV0dXJuIG1lcmdlZFRyYW5zaXRpb25zXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRBc3luY0NvbXBvbmVudHMgKHRvLCBmcm9tLCBuZXh0KSB7XG4gIC8vIENoZWNrIGlmIHJvdXRlIGNoYW5nZWQgKHRoaXMuX3JvdXRlQ2hhbmdlZCksIG9ubHkgaWYgdGhlIHBhZ2UgaXMgbm90IGFuIGVycm9yIChmb3IgdmFsaWRhdGUoKSlcbiAgdGhpcy5fcm91dGVDaGFuZ2VkID0gQm9vbGVhbihhcHAubnV4dC5lcnIpIHx8IGZyb20ubmFtZSAhPT0gdG8ubmFtZVxuICB0aGlzLl9wYXJhbUNoYW5nZWQgPSAhdGhpcy5fcm91dGVDaGFuZ2VkICYmIGZyb20ucGF0aCAhPT0gdG8ucGF0aFxuICB0aGlzLl9xdWVyeUNoYW5nZWQgPSAhdGhpcy5fcGFyYW1DaGFuZ2VkICYmIGZyb20uZnVsbFBhdGggIT09IHRvLmZ1bGxQYXRoXG4gIHRoaXMuX2RpZmZRdWVyeSA9ICh0aGlzLl9xdWVyeUNoYW5nZWQgPyBnZXRRdWVyeURpZmYodG8ucXVlcnksIGZyb20ucXVlcnkpIDogW10pXG5cbiAgaWYgKCh0aGlzLl9yb3V0ZUNoYW5nZWQgfHwgdGhpcy5fcGFyYW1DaGFuZ2VkKSAmJiB0aGlzLiRsb2FkaW5nLnN0YXJ0ICYmICF0aGlzLiRsb2FkaW5nLm1hbnVhbCkge1xuICAgIHRoaXMuJGxvYWRpbmcuc3RhcnQoKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5fcXVlcnlDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBDb21wb25lbnRzID0gYXdhaXQgcmVzb2x2ZVJvdXRlQ29tcG9uZW50cyhcbiAgICAgICAgdG8sXG4gICAgICAgIChDb21wb25lbnQsIGluc3RhbmNlKSA9PiAoeyBDb21wb25lbnQsIGluc3RhbmNlIH0pXG4gICAgICApXG4gICAgICAvLyBBZGQgYSBtYXJrZXIgb24gZWFjaCBjb21wb25lbnQgdGhhdCBpdCBuZWVkcyB0byByZWZyZXNoIG9yIG5vdFxuICAgICAgY29uc3Qgc3RhcnRMb2FkZXIgPSBDb21wb25lbnRzLnNvbWUoKHsgQ29tcG9uZW50LCBpbnN0YW5jZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHdhdGNoUXVlcnkgPSBDb21wb25lbnQub3B0aW9ucy53YXRjaFF1ZXJ5XG4gICAgICAgIGlmICh3YXRjaFF1ZXJ5ID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh3YXRjaFF1ZXJ5KSkge1xuICAgICAgICAgIHJldHVybiB3YXRjaFF1ZXJ5LnNvbWUoa2V5ID0+IHRoaXMuX2RpZmZRdWVyeVtrZXldKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygd2F0Y2hRdWVyeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiB3YXRjaFF1ZXJ5LmFwcGx5KGluc3RhbmNlLCBbdG8ucXVlcnksIGZyb20ucXVlcnldKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKHN0YXJ0TG9hZGVyICYmIHRoaXMuJGxvYWRpbmcuc3RhcnQgJiYgIXRoaXMuJGxvYWRpbmcubWFudWFsKSB7XG4gICAgICAgIHRoaXMuJGxvYWRpbmcuc3RhcnQoKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBDYWxsIG5leHQoKVxuICAgIG5leHQoKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGVyciA9IGVycm9yIHx8IHt9XG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IGVyci5zdGF0dXNDb2RlIHx8IGVyci5zdGF0dXMgfHwgKGVyci5yZXNwb25zZSAmJiBlcnIucmVzcG9uc2Uuc3RhdHVzKSB8fCA1MDBcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyLm1lc3NhZ2UgfHwgJydcblxuICAgIC8vIEhhbmRsZSBjaHVuayBsb2FkaW5nIGVycm9yc1xuICAgIC8vIFRoaXMgbWF5IGJlIGR1ZSB0byBhIG5ldyBkZXBsb3ltZW50IG9yIGEgbmV0d29yayBwcm9ibGVtXG4gICAgaWYgKC9eTG9hZGluZyggQ1NTKT8gY2h1bmsgKFxcZCkrIGZhaWxlZFxcLi8udGVzdChtZXNzYWdlKSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCh0cnVlIC8qIHNraXAgY2FjaGUgKi8pXG4gICAgICByZXR1cm4gLy8gcHJldmVudCBlcnJvciBwYWdlIGJsaW5raW5nIGZvciB1c2VyXG4gICAgfVxuXG4gICAgdGhpcy5lcnJvcih7IHN0YXR1c0NvZGUsIG1lc3NhZ2UgfSlcbiAgICB0aGlzLiRudXh0LiRlbWl0KCdyb3V0ZUNoYW5nZWQnLCB0bywgZnJvbSwgZXJyKVxuICAgIG5leHQoKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5U1NSRGF0YSAoQ29tcG9uZW50LCBzc3JEYXRhKSB7XG4gIGlmIChOVVhULnNlcnZlclJlbmRlcmVkICYmIHNzckRhdGEpIHtcbiAgICBhcHBseUFzeW5jRGF0YShDb21wb25lbnQsIHNzckRhdGEpXG4gIH1cblxuICBDb21wb25lbnQuX0N0b3IgPSBDb21wb25lbnRcbiAgcmV0dXJuIENvbXBvbmVudFxufVxuXG4vLyBHZXQgbWF0Y2hlZCBjb21wb25lbnRzXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50cyAocm91dGUpIHtcbiAgcmV0dXJuIGZsYXRNYXBDb21wb25lbnRzKHJvdXRlLCBhc3luYyAoQ29tcG9uZW50LCBfLCBtYXRjaCwga2V5LCBpbmRleCkgPT4ge1xuICAgIC8vIElmIGNvbXBvbmVudCBpcyBub3QgcmVzb2x2ZWQgeWV0LCByZXNvbHZlIGl0XG4gICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgIUNvbXBvbmVudC5vcHRpb25zKSB7XG4gICAgICBDb21wb25lbnQgPSBhd2FpdCBDb21wb25lbnQoKVxuICAgIH1cbiAgICAvLyBTYW5pdGl6ZSBpdCBhbmQgc2F2ZSBpdFxuICAgIGNvbnN0IF9Db21wb25lbnQgPSBhcHBseVNTUkRhdGEoc2FuaXRpemVDb21wb25lbnQoQ29tcG9uZW50KSwgTlVYVC5kYXRhID8gTlVYVC5kYXRhW2luZGV4XSA6IG51bGwpXG4gICAgbWF0Y2guY29tcG9uZW50c1trZXldID0gX0NvbXBvbmVudFxuICAgIHJldHVybi
1BfQ29tcG9uZW50XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNhbGxNaWRkbGV3YXJlIChDb21wb25lbnRzLCBjb250ZXh0LCBsYXlvdXQsIHJlbmRlclN0YXRlKSB7XG4gIGxldCBtaWRkID0gW1wiYmxvY2tSb3V0ZXNcIixcImxlZ2FjeVNsdWdSZWRpcmVjdFwiLFwibnV4dGkxOG5cIl1cbiAgbGV0IHVua25vd25NaWRkbGV3YXJlID0gZmFsc2VcblxuICAvLyBJZiBsYXlvdXQgaXMgdW5kZWZpbmVkLCBvbmx5IGNhbGwgZ2xvYmFsIG1pZGRsZXdhcmVcbiAgaWYgKHR5cGVvZiBsYXlvdXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbWlkZCA9IFtdIC8vIEV4Y2x1ZGUgZ2xvYmFsIG1pZGRsZXdhcmUgaWYgbGF5b3V0IGRlZmluZWQgKGFscmVhZHkgY2FsbGVkIGJlZm9yZSlcbiAgICBsYXlvdXQgPSBzYW5pdGl6ZUNvbXBvbmVudChsYXlvdXQpXG4gICAgaWYgKGxheW91dC5vcHRpb25zLm1pZGRsZXdhcmUpIHtcbiAgICAgIG1pZGQgPSBtaWRkLmNvbmNhdChsYXlvdXQub3B0aW9ucy5taWRkbGV3YXJlKVxuICAgIH1cbiAgICBDb21wb25lbnRzLmZvckVhY2goKENvbXBvbmVudCkgPT4ge1xuICAgICAgaWYgKENvbXBvbmVudC5vcHRpb25zLm1pZGRsZXdhcmUpIHtcbiAgICAgICAgbWlkZCA9IG1pZGQuY29uY2F0KENvbXBvbmVudC5vcHRpb25zLm1pZGRsZXdhcmUpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG1pZGQgPSBtaWRkLm1hcCgobmFtZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG5hbWVcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtaWRkbGV3YXJlW25hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB1bmtub3duTWlkZGxld2FyZSA9IHRydWVcbiAgICAgIHRoaXMuZXJyb3IoeyBzdGF0dXNDb2RlOiA1MDAsIG1lc3NhZ2U6ICdVbmtub3duIG1pZGRsZXdhcmUgJyArIG5hbWUgfSlcbiAgICB9XG4gICAgcmV0dXJuIG1pZGRsZXdhcmVbbmFtZV1cbiAgfSlcblxuICBpZiAodW5rbm93bk1pZGRsZXdhcmUpIHtcbiAgICByZXR1cm5cbiAgfVxuICByZXR1cm4gbWlkZGxld2FyZVNlcmllcyhtaWRkLCBjb250ZXh0LCByZW5kZXJTdGF0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyICh0bywgZnJvbSwgbmV4dCwgcmVuZGVyU3RhdGUpIHtcbiAgaWYgKHRoaXMuX3JvdXRlQ2hhbmdlZCA9PT0gZmFsc2UgJiYgdGhpcy5fcGFyYW1DaGFuZ2VkID09PSBmYWxzZSAmJiB0aGlzLl9xdWVyeUNoYW5nZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5leHQoKVxuICB9XG4gIC8vIEhhbmRsZSBmaXJzdCByZW5kZXIgb24gU1BBIG1vZGVcbiAgbGV0IHNwYUZhbGxiYWNrID0gZmFsc2VcbiAgaWYgKHRvID09PSBmcm9tKSB7XG4gICAgX2xhc3RQYXRocyA9IFtdXG4gICAgc3BhRmFsbGJhY2sgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZnJvbU1hdGNoZXMgPSBbXVxuICAgIF9sYXN0UGF0aHMgPSBnZXRNYXRjaGVkQ29tcG9uZW50cyhmcm9tLCBmcm9tTWF0Y2hlcykubWFwKChDb21wb25lbnQsIGkpID0+IHtcbiAgICAgIHJldHVybiBjb21waWxlKGZyb20ubWF0Y2hlZFtmcm9tTWF0Y2hlc1tpXV0ucGF0aCkoZnJvbS5wYXJhbXMpXG4gICAgfSlcbiAgfVxuXG4gIC8vIG5leHRDYWxsZWQgaXMgdHJ1ZSB3aGVuIHJlZGlyZWN0ZWRcbiAgbGV0IG5leHRDYWxsZWQgPSBmYWxzZVxuICBjb25zdCBfbmV4dCA9IChwYXRoKSA9PiB7XG4gICAgaWYgKGZyb20ucGF0aCA9PT0gcGF0aC5wYXRoICYmIHRoaXMuJGxvYWRpbmcuZmluaXNoKSB7XG4gICAgICB0aGlzLiRsb2FkaW5nLmZpbmlzaCgpXG4gICAgfVxuXG4gICAgaWYgKGZyb20ucGF0aCAhPT0gcGF0aC5wYXRoICYmIHRoaXMuJGxvYWRpbmcucGF1c2UpIHtcbiAgICAgIHRoaXMuJGxvYWRpbmcucGF1c2UoKVxuICAgIH1cblxuICAgIGlmIChuZXh0Q2FsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBuZXh0Q2FsbGVkID0gdHJ1ZVxuICAgIG5leHQocGF0aClcbiAgfVxuXG4gIC8vIFVwZGF0ZSBjb250ZXh0XG4gIGF3YWl0IHNldENvbnRleHQoYXBwLCB7XG4gICAgcm91dGU6IHRvLFxuICAgIGZyb20sXG4gICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgIGlmIChyZW5kZXJTdGF0ZS5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwLm51eHQuZXJyb3IuY2FsbCh0aGlzLCBlcnIpXG4gICAgfSxcbiAgICBuZXh0OiBfbmV4dC5iaW5kKHRoaXMpXG4gIH0pXG4gIHRoaXMuX2RhdGVMYXN0RXJyb3IgPSBhcHAubnV4dC5kYXRlRXJyXG4gIHRoaXMuX2hhZEVycm9yID0gQm9vbGVhbihhcHAubnV4dC5lcnIpXG5cbiAgLy8gR2V0IHJvdXRlJ3MgbWF0Y2hlZCBjb21wb25lbnRzXG4gIGNvbnN0IG1hdGNoZXMgPSBbXVxuICBjb25zdCBDb21wb25lbnRzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHModG8sIG1hdGNoZXMpXG5cbiAgLy8gSWYgbm8gQ29tcG9uZW50cyBtYXRjaGVkLCBnZW5lcmF0ZSA0MDRcbiAgaWYgKCFDb21wb25lbnRzLmxlbmd0aCkge1xuICAgIC8vIERlZmF1bHQgbGF5b3V0XG4gICAgYXdhaXQgY2FsbE1pZGRsZXdhcmUuY2FsbCh0aGlzLCBDb21wb25lbnRzLCBhcHAuY29udGV4dCwgdW5kZWZpbmVkLCByZW5kZXJTdGF0ZSlcbiAgICBpZiAobmV4dENhbGxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChyZW5kZXJTdGF0ZS5hYm9ydGVkKSB7XG4gICAgICBuZXh0KGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTG9hZCBsYXlvdXQgZm9yIGVycm9yIHBhZ2VcbiAgICBjb25zdCBlcnJvckxheW91dCA9IChOdXh0RXJyb3Iub3B0aW9ucyB8fCBOdXh0RXJyb3IpLmxheW91dFxuICAgIGNvbnN0IGxheW91dCA9IGF3YWl0IHRoaXMubG9hZExheW91dChcbiAgICAgIHR5cGVvZiBlcnJvckxheW91dCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGVycm9yTGF5b3V0LmNhbGwoTnV4dEVycm9yLCBhcHAuY29udGV4dClcbiAgICAgICAgOiBlcnJvckxheW91dFxuICAgIClcblxuICAgIGF3YWl0IGNhbGxNaWRkbGV3YXJlLmNhbGwodGhpcywgQ29tcG9uZW50cywgYXBwLmNvbnRleHQsIGxheW91dCwgcmVuZGVyU3RhdGUpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgI
1H1cbiAgICBpZiAocmVuZGVyU3RhdGUuYWJvcnRlZCkge1xuICAgICAgbmV4dChmYWxzZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNob3cgZXJyb3IgcGFnZVxuICAgIGFwcC5jb250ZXh0LmVycm9yKHsgc3RhdHVzQ29kZTogNDA0LCBtZXNzYWdlOiAnVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZCcgfSlcbiAgICByZXR1cm4gbmV4dCgpXG4gIH1cblxuICAvLyBVcGRhdGUgLl9kYXRhIGFuZCBvdGhlciBwcm9wZXJ0aWVzIGlmIGhvdCByZWxvYWRlZFxuICBDb21wb25lbnRzLmZvckVhY2goKENvbXBvbmVudCkgPT4ge1xuICAgIGlmIChDb21wb25lbnQuX0N0b3IgJiYgQ29tcG9uZW50Ll9DdG9yLm9wdGlvbnMpIHtcbiAgICAgIENvbXBvbmVudC5vcHRpb25zLmFzeW5jRGF0YSA9IENvbXBvbmVudC5fQ3Rvci5vcHRpb25zLmFzeW5jRGF0YVxuICAgICAgQ29tcG9uZW50Lm9wdGlvbnMuZmV0Y2ggPSBDb21wb25lbnQuX0N0b3Iub3B0aW9ucy5mZXRjaFxuICAgIH1cbiAgfSlcblxuICAvLyBBcHBseSB0cmFuc2l0aW9uc1xuICB0aGlzLnNldFRyYW5zaXRpb25zKG1hcFRyYW5zaXRpb25zKENvbXBvbmVudHMsIHRvLCBmcm9tKSlcblxuICB0cnkge1xuICAgIC8vIENhbGwgbWlkZGxld2FyZVxuICAgIGF3YWl0IGNhbGxNaWRkbGV3YXJlLmNhbGwodGhpcywgQ29tcG9uZW50cywgYXBwLmNvbnRleHQsIHVuZGVmaW5lZCwgcmVuZGVyU3RhdGUpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocmVuZGVyU3RhdGUuYWJvcnRlZCkge1xuICAgICAgbmV4dChmYWxzZSlcbiAgICAgIHJldHVyblxuICAgI
1H1cbiAgICBpZiAoYXBwLmNvbnRleHQuX2Vycm9yZWQpIHtcbiAgICAgIHJldHVybiBuZXh0KClcbiAgICB9XG5cbiAgICAvLyBTZXQgbGF5b3V0XG4gICAgbGV0IGxheW91dCA9IENvbXBvbmVudHNbMF0ub3B0aW9ucy5sYXlvdXRcbiAgICBpZiAodHlwZW9mIGxheW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0KGFwcC5jb250ZXh0KVxuICAgIH1cbiAgICBsYXlvdXQgPSBhd2FpdCB0aGlzLmxvYWRMYXlvdXQobGF5b3V0KVxuXG4gICAgLy8gQ2FsbCBtaWRkbGV3YXJlIGZvciBsYXlvdXRcbiAgICBhd2FpdCBjYWxsTWlkZGxld2FyZS5jYWxsKHRoaXMsIENvbXBvbmVudHMsIGFwcC5jb250ZXh0LCBsYXlvdXQsIHJlbmRlclN0YXRlKVxuICAgIGlmIChuZXh0Q2FsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHJlbmRlclN0YXRlLmFib3J0ZWQpIHtcbiAgICAgIG5leHQoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGFwcC5jb250ZXh0Ll9lcnJvcmVkKSB7XG4gICAgICByZXR1cm4gbmV4dCgpXG4gICAgfVxuXG4gICAgLy8gQ2FsbCAudmFsaWRhdGUoKVxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZVxuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IENvbXBvbmVudCBvZiBDb21wb25lbnRzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgQ29tcG9uZW50Lm9wdGlvbnMudmFsaWRhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaXNWYWxpZCA9IGF3YWl0IENvbXBvbmVudC5vcHRpb25zLnZhbGlkYXRlKGFwcC5jb250ZXh0KVxuXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoICh2YWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIC8vIC4uLklmIC52YWxpZGF0ZSgpIHRocmV3IGFuIGVycm9yXG4gICAgICB0aGlzLmVycm9yKHtcbiAgICAgICAgc3RhdHVzQ29kZTogdmFsaWRhdGlvbkVycm9yLnN0YXR1c0NvZGUgfHwgJzUwMCcsXG4gICAgICAgIG1lc3NhZ2U6IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlXG4gICAgICB9KVxuICAgICAgcmV0dXJuIG5leHQoKVxuICAgIH1cblxuICAgIC8vIC4uLklmIC52YWxpZGF0ZSgpIHJldHVybmVkIGZhbHNlXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICB0aGlzLmVycm9yKHsgc3RhdHVzQ29kZTogNDA0LCBtZXNzYWdlOiAnVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZCcgfSlcbiAgICAgIHJldHVybiBuZXh0KClcbiAgICB9XG5cbiAgICBsZXQgaW5zdGFuY2VzXG4gICAgLy8gQ2FsbCBhc3luY0RhdGEgJiBmZXRjaCBob29rcyBvbiBjb21wb25lbnRzIG1hdGNoZWQgYnkgdGhlIHJvdXRlLlxuICAgIGF3YWl0IFByb21pc2UuYWxsKENvbXBvbmVudHMubWFwKGFzeW5jIChDb21wb25lbnQsIGkpID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIG9ubHkgY2hpbGRyZW4gcm91dGUgY2hhbmdlZFxuICAgICAgQ29tcG9uZW50Ll9wYXR
1oID0gY29tcGlsZSh0by5tYXRjaGVkW21hdGNoZXNbaV1dLnBhdGgpKHRvLnBhcmFtcylcbiAgICAgIENvbXBvbmVudC5fZGF0YVJlZnJlc2ggPSBmYWxzZVxuICAgICAgY29uc3QgY2hpbGRQYXRoQ2hhbmdlZCA9IENvbXBvbmVudC5fcGF0aCAhPT0gX2xhc3RQYXRoc1tpXVxuICAgICAgLy8gUmVmcmVzaCBjb21wb25lbnQgKGNhbGwgYXN5bmNEYXRhICYgZmV0Y2gpIHdoZW46XG4gICAgICAvLyBSb3V0ZSBwYXRoIGNoYW5nZWQgcGFydCBpbmNsdWRlcyBjdXJyZW50IGNvbXBvbmVudFxuICAgICAgLy8gT3Igcm91dGUgcGFyYW0gY2hhbmdlZCBwYXJ0IGluY2x1ZGVzIGN1cnJlbnQgY29tcG9uZW50IGFuZCB3YXRjaFBhcmFtIGlzIG5vdCBgZmFsc2VgXG4gICAgICAvLyBPciByb3V0ZSBxdWVyeSBpcyBjaGFuZ2VkIGFuZCB3YXRjaFF1ZXJ5IHJldHVybnMgYHRydWVgXG4gICAgICBpZiAodGhpcy5fcm91dGVDaGFuZ2VkICYmIGNoaWxkUGF0aENoYW5nZWQpIHtcbiAgICAgICAgQ29tcG9uZW50Ll9kYXRhUmVmcmVzaCA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fcGFyYW1DaGFuZ2VkICYmIGNoaWxkUGF0aENoYW5nZWQpIHtcbiAgICAgICAgY29uc3Qgd2F0Y2hQYXJhbSA9IENvbXBvbmVudC5vcHRpb25zLndhdGNoUGFyYW1cbiAgICAgICAgQ29tcG9uZW50Ll9kYXRhUmVmcmVzaCA9IHdhdGNoUGFyYW0gIT09IGZhbHNlXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3F1ZXJ5Q2hhbmdlZCkge1xuICAgICAgICBjb25zdCB3YXRjaFF1ZXJ5ID0gQ29tcG9uZW50Lm9wdGlvbnMud2F0Y2hRdWVyeVxuICAgICAgICBpZiAod2F0Y2hRdWVyeSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIENvbXBvbmVudC5fZGF0YVJlZnJlc2ggPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh3YXRjaFF1ZXJ5KSkge1xuICAgICAgICAgIENvbXBvbmVudC5fZGF0YVJlZnJlc2ggPSB3YXRjaFF1ZXJ5LnNvbWUoa2V5ID0+IHRoaXMuX2RpZmZRdWVyeVtrZXldKVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3YXRjaFF1ZXJ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaWYgKCFpbnN0YW5jZXMpIHtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzKHRvKVxuICAgICAgICAgIH1cbiAgICAgICAgICBDb21wb25lbnQuX2RhdGFSZWZyZXNoID0gd2F0Y2hRdWVyeS5hcHBseShpbnN0YW5jZXNbaV0sIFt0by5xdWVyeSwgZnJvbS5xdWVyeV0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5faGFkRXJyb3IgJiYgdGhpcy5faXNNb3VudGVkICYmICFDb21wb25lbnQuX2RhdGFSZWZyZXNoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG5cbiAgICAgIGNvbnN0IGhhc0FzeW5jRGF0YSA9IChcbiAgICAgICAgQ29tcG9uZW50Lm9wdGlvbnMuYXN5bmNEYXRhICYmXG4gICAgICAgIHR5cGVvZiBDb21wb25lbnQub3B0aW9ucy5hc3luY0RhdGEgPT09ICdmdW5jdGlvbidcbiAgICAgIClcblxuICAgICAgY29uc3QgaGFzRmV0Y2ggPSBCb29sZWFuKENvbXBvbmVudC5vcHRpb25zLmZldGNoKSAmJiBDb21wb25lbnQub3B0aW9ucy5mZXRjaC5sZW5ndGhcblxuICAgICAgY29uc3QgbG9hZGluZ0luY3JlYXNlID0gKGhhc0FzeW5jRGF0YSAmJiBoYXNGZXRjaCkgPyAzMCA6IDQ1XG5cbiAgICAgIC8vIENhbGwgYXN5bmNEYXRhKGNvbnRleHQpXG4gICAgICBpZiAoaGFzQXN5bmNEYXRhKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBwcm9taXNpZnkoQ29tcG9uZW50Lm9wdGlvbnMuYXN5bmNEYXRhLCBhcHAuY29udGV4dClcblxuICAgICAgICBwcm9taXNlLnRoZW4oKGFzeW5jRGF0YVJlc3VsdCkgPT4ge1xuICAgICAgICAgIGFwcGx5QXN5bmNEYXRhKENvbXBvbmVudCwgYXN5bmNEYXRhUmVzdWx0KVxuXG4gICAgICAgICAgaWYgKHRoaXMuJGxvYWRpbmcuaW5jcmVhc2UpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvYWRpbmcuaW5jcmVhc2UobG9hZGluZ0luY3JlYXNlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBkaXNhYmxlZCBwYWdlIGxvYWRpbmdcbiAgICAgIHRoaXMuJGxvYWRpbmcubWFudWFsID0gQ29tcG9uZW50Lm9wdGlvbnMubG9hZGluZyA9PT0gZmFsc2VcblxuICAgICAgLy8gQ2FsbCBmZXRjaChjb250ZXh0KVxuICAgICAgaWYgKGhhc0ZldGNoKSB7XG4gICAgICAgIGxldCBwID0gQ29tcG9uZW50Lm9wdGlvbnMuZmV0Y2goYXBwLmNvbnRleHQpXG4gICAgICAgIGlmICghcCB8fCAoIShwIGluc3RhbmNlb2YgUHJvbWlzZSkgJiYgKHR5cGVvZiBwLnRoZW4gIT09ICdmdW5jdGlvbicpKSkge1xuICAgICAgICAgIHAgPSBQcm9taXNlLnJlc29sdmUocClcbiAgICAgICAgfVxuICAgICAgICBwLnRoZW4oKGZldGNoUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuJGxvYWRpbmcuaW5jcmVhc2UpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvYWRpbmcuaW5jcmVhc2UobG9hZGluZ0luY3JlYXNlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcHJvbWlzZXMucHVzaChwKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgfSkpXG5cbiAgICAvLyBJZiBub3QgcmVkaXJlY3RlZFxuICAgIGlmICghbmV4dENhbGxlZCkge1xuICAgICAgaWYgKHRoaXMuJGxvYWRpbmcuZmluaXNoICYmICF0aGlzLiRsb2FkaW5nLm1hbnVhbCkge1xuICAgICAgICB0aGlzLiRsb2FkaW5nLmZpbmlzaCgpXG4gICAgICB9XG5cbiAgICAgIGlmIChyZW5kZXJTdGF0ZS5hYm9ydGVkKSB7XG4gICAgICAgIG5leHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbmV4dCgpXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocmVuZGVyU3RhdGUuYWJvcnRlZCkge1xuICAgICAgbmV4dChmYWxzZSlcbiAgICAgIHJldHVyblxuICAgI
1H1cbiAgICBjb25zdCBlcnJvciA9IGVyciB8fCB7fVxuICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnRVJSX1JFRElSRUNUJykge1xuICAgICAgcmV0dXJuIHRoaXMuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tLCBlcnJvcilcbiAgICB9XG4gICAgX2xhc3RQYXRocyA9IFtdXG5cbiAgICBnbG9iYWxIYW5kbGVFcnJvcihlcnJvcilcblxuICAgIC8vIExvYWQgZXJyb3IgbGF5b3V0XG4gICAgbGV0IGxheW91dCA9IChOdXh0RXJyb3Iub3B0aW9ucyB8fCBOdXh0RXJyb3IpLmxheW91dFxuICAgIGlmICh0eXBlb2YgbGF5b3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsYXlvdXQgPSBsYXlvdXQoYXBwLmNvbnRleHQpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMubG9hZExheW91dChsYXlvdXQpXG5cbiAgICB0aGlzLmVycm9yKGVycm9yKVxuICAgIHRoaXMuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tLCBlcnJvcilcbiAgICBuZXh0KClcbiAgfVxufVxuXG4vLyBGaXggY29tcG9uZW50cyBmb3JtYXQgaW4gbWF0Y2hlZCwgaXQncyBkdWUgdG8gY29kZS1zcGxpdHRpbmcgb2YgdnVlLXJvdXRlclxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50cyAodG8sIF9fXykge1xuICBmbGF0TWFwQ29tcG9uZW50cyh0bywgKENvbXBvbmVudCwgXywgbWF0Y2gsIGtleSkgPT4ge1xuICAgIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiAhQ29tcG9uZW50Lm9wdGlvbnMpIHtcbiAgICAgIC8vIFVwZGF0ZWQgdmlhIHZ1ZS1yb3V0ZXIgcmVzb2x2ZUFzeW5jQ29tcG9uZW50cygpXG4gICAgICBDb21wb25lbnQgPSBWdWUuZXh0ZW5kKENvbXBvbmVudClcbiAgICAgIENvbXBvbmVudC5fQ3RvciA9IENvbXBvbmVudFxuICAgICAgbWF0Y2guY29tcG9uZW50c1trZXldID0gQ29tcG9uZW50XG4gICAgfVxuICAgIHJldHVybiBDb21wb25lbnRcbiAgfSlcbn1cblxuZnVuY3Rpb24gc2V0TGF5b3V0Rm9yTmV4dFBhZ2UgKHRvKSB7XG4gIC8vIFNldCBsYXlvdXRcbiAgbGV0IGhhc0Vycm9yID0gQm9vbGVhbih0aGlzLiRvcHRpb25zLm51eHQuZXJyKVxuICBpZiAodGhpcy5faGFkRXJyb3IgJiYgdGhpcy5fZGF0ZUxhc3RFcnJvciA9PT0gdGhpcy4kb3B0aW9ucy5udXh0LmRhdGVFcnIpIHtcbiAgICBoYXNFcnJvciA9IGZhbHNlXG4gIH1cbiAgbGV0IGxheW91dCA9IGhhc0Vycm9yXG4gICAgPyAoTnV4dEVycm9yLm9wdGlvbnMgfHwgTnV4dEVycm9yKS5sYXlvdXRcbiAgICA6IHRvLm1hdGNoZWRbMF0uY29tcG9uZW50cy5kZWZhdWx0Lm9wdGlvbnMubGF5b3V0XG5cbiAgaWYgKHR5cGVvZiBsYXlvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsYXlvdXQgPSBsYXlvdXQoYXBwLmNvbnRleHQpXG4gIH1cblxuICB0aGlzLnNldExheW91dChsYXlvdXQpXG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yRXJyb3JzIChhcHApIHtcbiAgLy8gSGlkZSBlcnJvciBjb21wb25lbnQgaWYgbm8gZXJyb3JcbiAgaWYgKGFwcC5faGFkRXJyb3IgJiYgYXBwLl9kYXRlTGFzdEVycm9yID09PSBhcHAuJG9wdGlvbnMubnV4dC5kYXRlRXJyKSB7XG4gICAgYXBwLmVycm9yKClcbiAgfVxufVxuXG4vLyBXaGVuIG5hdmlnYXRpbmcgb24gYSBkaWZmZXJlbnQgcm91dGUgYnV0IHRoZSBzYW1lIGNvbXBvbmVudCBpcyB1c2VkLCBWdWUuanNcbi8vIFdpbGwgbm90IHVwZGF0ZSB0aGUgaW5zdGFuY2UgZGF0YSwgc28gd2UgaGF2ZSB0byB1cGRhdGUgJGRhdGEgb3Vyc2VsdmVzXG5mdW5jdGlvbiBmaXhQcmVwYXRjaCAodG8sIF9fXykge1xuICBpZiAodGhpcy5fcm91dGVDaGFuZ2VkID09PSBmYWxzZSAmJiB0aGlzLl9wYXJhbUNoYW5nZWQgPT09IGZhbHNlICYmIHRoaXMuX3F1ZXJ5Q2hhbmdlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGluc3RhbmNlcyA9IGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzKHRvKVxuICBjb25zdCBDb21wb25lbnRzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHModG8pXG5cbiAgbGV0IHRyaWdnZXJTY3JvbGwgPSBmYWxzZVxuXG4gIFZ1ZS5uZXh0VGljaygoKSA9PiB7XG4gICAgaW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlLCBpKSA9PiB7XG4gICAgICBpZiAoIWluc3RhbmNlIHx8IGluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBpbnN0YW5jZS5jb25zdHJ1Y3Rvci5fZGF0YVJlZnJlc2ggJiZcbiAgICAgICAgQ29tcG9uZW50c1tpXSA9PT0gaW5zdGFuY2UuY29uc3RydWN0b3IgJiZcbiAgICAgICAgaW5zdGFuY2UuJHZub2RlLmRhdGEua2VlcEFsaXZlICE9PSB0cnVlICYmXG4gICAgICAgIHR5cGVvZiBpbnN0YW5jZS5jb25zdHJ1Y3Rvci5vcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCBuZXdEYXRhID0gaW5zdGFuY2UuY29uc3RydWN0b3Iub3B0aW9ucy5kYXRhLmNhbGwoaW5zdGFuY2UpXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld0RhdGEpIHtcbiAgICAgICAgICBWdWUuc2V0KGluc3RhbmNlLiRkYXRhLCBrZXksIG5ld0RhdGFba2V5XSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRyaWdnZXJTY3JvbGwgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmICh0cmlnZ2VyU2Nyb2xsKSB7XG4gICAgICAvLyBFbnN1cmUgdG8gdHJpZ2dlciBzY3JvbGwgZXZlbnQgYWZ0ZXIgY2FsbGluZyBzY3JvbGxCZWhhdmlvclxuICAgICAgd2luZG93LiRudXh0LiRuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHdpbmRvdy4kbnV4dC4kZW1pdCgndHJpZ2dlclNjcm9sbCcpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNoZWNrRm9yRXJyb3JzKHRoaXMpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIG51eHRSZWFkeSAoX2FwcCkge1xuICB3aW5kb3cub25OdXh0UmVhZHlDYnMuZm9yRWFjaCgoY2IpID0+IHtcbiAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYihfYXBwKVxuICAgIH1cbiAgfSlcbiAgLy8gU3BlY2lhbCBKU0RPTVxuICBpZiAodHlwZW9mIHdpbmRvdy5fb25OdXh0TG9hZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgd2luZG93Ll9vbk51eHRMb2FkZWQoX2FwcClcbiAgfVxuICAvLyBBZGQgcm91dGVyIGhvb2tzXG4gI
1HJvdXRlci5hZnRlckVhY2goKHRvLCBmcm9tKSA9PiB7XG4gICAgLy8gV2FpdCBmb3IgZml4UHJlcGF0Y2ggKyAkZGF0YSB1cGRhdGVzXG4gICAgVnVlLm5leHRUaWNrKCgpID0+IF9hcHAuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tKSlcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gbW91bnRBcHAgKF9fYXBwKSB7XG4gIC8vIFNldCBnbG9iYWwgdmFyaWFibGVzXG4gIGFwcCA9IF9fYXBwLmFwcFxuICByb3V0ZXIgPSBfX2FwcC5yb3V0ZXJcbiAgc3RvcmUgPSBfX2FwcC5zdG9yZVxuXG4gIC8vIENyZWF0ZSBWdWUgaW5zdGFuY2VcbiAgY29uc3QgX2FwcCA9IG5ldyBWdWUoYXBwKVxuXG4gIC8vIExvYWQgbGF5b3V0XG4gIGNvbnN0IGxheW91dCA9IE5VWFQubGF5b3V0IHx8ICdkZWZhdWx0J1xuICBhd2FpdCBfYXBwLmxvYWRMYXlvdXQobGF5b3V0KVxuICBfYXBwLnNldExheW91dChsYXlvdXQpXG5cbiAgLy8gTW91bnRzIFZ1ZSBhcHAgdG8gRE9NIGVsZW1lbnRcbiAgY29uc3QgbW91bnQgPSAoKSA9PiB7XG4gICAgX2FwcC4kbW91bnQoJyNfX251eHQnKVxuXG4gICAgLy8gQWRkIGFmdGVyRWFjaCByb3V0ZXIgaG9va3NcbiAgICByb3V0ZXIuYWZ0ZXJFYWNoKG5vcm1hbGl6ZUNvbXBvbmVudHMpXG5cbiAgICByb3V0ZXIuYWZ0ZXJFYWNoKHNldExheW91dEZvck5leHRQYWdlLmJpbmQoX2FwcCkpXG5cbiAgICByb3V0ZXIuYWZ0ZXJFYWNoKGZpeFByZXBhdGNoLmJpbmQoX2FwcCkpXG5cbiAgICAvLyBMaXN0ZW4gZm9yIGZpcnN0IFZ1ZSB1cGRhdGVcbiAgICBWdWUubmV4dFRpY2soKCkgPT4ge1xuICAgICAgLy8gQ2FsbCB3aW5kb3cue3tnbG9iYWxzLnJlYWR5Q2FsbGJhY2t9fSBjYWxsYmFja3NcbiAgICAgIG51eHRSZWFkeShfYXBwKVxuICAgIH0pXG4gIH1cblxuICAvLyBSZXNvbHZlIHJvdXRlIGNvbXBvbmVudHNcbiAgY29uc3QgQ29tcG9uZW50cyA9IGF3YWl0IFByb21pc2UuYWxsKHJlc29sdmVDb21wb25lbnRzKGFwcC5jb250ZXh0LnJvdXRlKSlcblxuICAvLyBFbmFibGUgdHJhbnNpdGlvbnNcbiAgX2FwcC5zZXRUcmFuc2l0aW9ucyA9IF9hcHAuJG9wdGlvbnMubnV4dC5zZXRUcmFuc2l0aW9ucy5iaW5kKF9hcHApXG4gIGlmIChDb21wb25lbnRzLmxlbmd0aCkge1xuICAgIF9hcHAuc2V0VHJhbnNpdGlvbnMobWFwVHJhbnNpdGlvbnMoQ29tcG9uZW50cywgcm91dGVyLmN1cnJlbnRSb3V0ZSkpXG4gICAgX2xhc3RQYXRocyA9IHJvdXRlci5jdXJyZW50Um91dGUubWF0Y2hlZC5tYXAocm91dGUgPT4gY29tcGlsZShyb3V0ZS5wYXRoKShyb3V0ZXIuY3VycmVudFJvdXRlLnBhcmFtcykpXG4gIH1cblxuICAvLyBJbml0aWFsaXplIGVycm9yIGhhbmRsZXJcbiAgX2FwcC4kbG9hZGluZyA9IHt9IC8vIFRvIGF2b2lkIGVycm9yIHdoaWxlIF9hcHAuJG51eHQgZG9lcyBub3QgZXhpc3RcbiAgaWYgKE5VWFQuZXJyb3IpIHtcbiAgICBfYXBwLmVycm9yKE5VWFQuZXJyb3IpXG4gIH1cblxuICAvLyBBZGQgYmVmb3JlRWFjaCByb3V0ZXIgaG9va3NcbiAgcm91dGVyLmJlZm9yZUVhY2gobG9hZEFzeW5jQ29tcG9uZW50cy5iaW5kKF9hcHApKVxuXG4gIC8vIEVhY2ggbmV3IGludm9jYXRpb24gb2YgcmVuZGVyKCkgYWJvcnRzIHByZXZpb3VzIGludm9jYXRpb25cbiAgbGV0IHJlbmRlclN0YXRlID0gbnVsbFxuICBjb25zdCBib3VuZFJlbmRlciA9IHJlbmRlci5iaW5kKF9hcHApXG4gIHJvdXRlci5iZWZvcmVFYWNoKCh0bywgZnJvbSwgbmV4dCkgPT4ge1xuICAgIGlmIChyZW5kZXJTdGF0ZSkge1xuICAgICAgcmVuZGVyU3RhdGUuYWJvcnRlZCA9IHRydWVcbiAgICB9XG4gICAgcmVuZGVyU3RhdGUgPSB7IGFib3J0ZWQ6IGZhbHNlIH1cbiAgICBib3VuZFJlbmRlcih0bywgZnJvbSwgbmV4dCwgcmVuZGVyU3RhdGUpXG4gIH0pXG5cbiAgLy8gRml4IGluIHN0YXRpYzogcmVtb3ZlIHRyYWlsaW5nIHNsYXNoIHRvIGZvcmNlIGh5ZHJhdGlvblxuICAvLyBGdWxsIHN0YXRpYywgaWYgc2VydmVyLXJlbmRlcmVkOiBoeWRyYXRlLCB0byBhbGxvdyBjdXN0b20gcmVkaXJlY3QgdG8gZ2VuZXJhdGVkIHBhZ2VcblxuICAvLyBGaXggaW4gc3RhdGljOiByZW1vdmUgdHJhaWxpbmcgc2xhc2ggdG8gZm9yY2UgaHlkcmF0aW9uXG4gIGlmIChOVVhULnNlcnZlclJlbmRlcmVkICYmIGlzU2FtZVBhdGgoTlVYVC5yb3V0ZVBhdGgsIF9hcHAuY29udGV4dC5yb3V0ZS5wYXRoKSkge1xuICAgIHJldHVybiBtb3VudCgpXG4gIH1cblxuICAvLyBGaXJzdCByZW5kZXIgb24gY2xpZW50LXNpZGVcbiAgY29uc3QgY2xpZW50Rmlyc3RNb3VudCA9ICgpID0+IHtcbiAgICBub3JtYWxpemVDb21wb25lbnRzKHJvdXRlci5jdXJyZW50Um91dGUsIHJvdXRlci5jdXJyZW50Um91dGUpXG4gICAgc2V0TGF5b3V0Rm9yTmV4dFBhZ2UuY2FsbChfYXBwLCByb3V0ZXIuY3VycmVudFJvdXRlKVxuICAgIGNoZWNrRm9yRXJyb3JzKF9hcHApXG4gICAgLy8gRG9uJ3QgY2FsbCBmaXhQcmVwYXRjaC5jYWxsKF9hcHAsIHJvdXRlci5jdXJyZW50Um91dGUsIHJvdXRlci5jdXJyZW50Um91dGUpIHNpbmNlIGl0J3MgZmlyc3QgcmVuZGVyXG4gICAgbW91bnQoKVxuICB9XG5cbiAgLy8gZml4OiBmb3JjZSBuZXh0IHRpY2sgdG8gYXZvaWQgaGF2aW5nIHNhbWUgdGltZXN0YW1wIHdoZW4gYW4gZXJyb3IgaGFwcGVuIG9uIHNwYSBmYWxsYmFja1xuICBhd2FpdCBuZXcgUHJvbWlzZS
1hyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpXG4gIHJlbmRlci5jYWxsKF9hcHAsIHJvdXRlci5jdXJyZW50Um91dGUsIHJvdXRlci5jdXJyZW50Um91dGUsIChwYXRoKSA9PiB7XG4gICAgLy8gSWYgbm90IHJlZGlyZWN0ZWRcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIGNsaWVudEZpcnN0TW91bnQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQWRkIGEgb25lLXRpbWUgYWZ0ZXJFYWNoIGhvb2sgdG9cbiAgICAvLyBtb3VudCB0aGUgYXBwIHdhaXQgZm9yIHJlZGlyZWN0IGFuZCByb3V0ZSBnZXRzIHJlc29sdmVkXG4gICAgY29uc3QgdW5yZWdpc3Rlckhvb2sgPSByb3V0ZXIuYWZ0ZXJFYWNoKCh0bywgZnJvbSkgPT4ge1xuICAgICAgdW5yZWdpc3Rlckhvb2soKVxuICAgICAgY2xpZW50Rmlyc3RNb3VudCgpXG4gICAgfSlcblxuICAgIC8vIFB1c2ggdGhlIHBhdGggYW5kIGxldCByb3V0ZSB0byBiZSByZXNvbHZlZFxuICAgIHJvdXRlci5wdXNoKHBhdGgsIHVuZGVmaW5lZCwgKGVycikgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBlcnJvckhhbmRsZXIoZXJyKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIHsgYWJvcnRlZDogZmFsc2UgfSlcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///623\n')},651:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_error_vue_vue_type_style_index_0_id_64f76c1e_prod_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(449);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_error_vue_vue_type_style_index_0_id_64f76c1e_prod_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_error_vue_vue_type_style_index_0_id_64f76c1e_prod_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NvbXBvbmVudHMvbnV4dC1lcnJvci52dWU/ZjZkMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEiLCJmaWxlIjoiNjUxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tMy1vbmVPZi0xLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMy1vbmVPZi0xLTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0zLW9uZU9mLTEtMiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL251eHQtZXJyb3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjRmNzZjMWUmcHJvZCZsYW5nPWNzcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///651\n")},652:function(module,exports,__webpack_require__){eval('// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(78);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, ".__nuxt-error-page{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;align-items:center;background:#f7f8fb;bottom:0;color:#47494e;display:flex;flex-direction:column;font-family:sans-serif;font-weight:100!important;justify-content:center;left:0;padding:1rem;position:absolute;right:0;text-align:center;top:0}.__nuxt-error-page .error{max-width:450px}.__nuxt-error-page .title{color:#47494e;font-size:1.5rem;margin-bottom:8px;margin-top:15px}.__nuxt-error-page .description{color:#7f828b;line-height:21px;margin-bottom:10px}.__nuxt-error-page a{color:#7f828b!important;-webkit-text-decoration:none;text-decoration:none}.__nuxt-error-page .logo{bottom:12px;left:12px;position:fixed}", ""]);
1\n// Exports\n___CSS_LOADER_EXPORT___.locals = {};\nmodule.exports = ___CSS_LOADER_EXPORT___;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9lbWVyYWxkL2NvbXBvbmVudHMvbnV4dC1lcnJvci52dWU/NDU4NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGtDQUFrQyxtQkFBTyxDQUFDLEVBQXNEO0FBQ2hHLHNFQUFzRSxZQUFZO0FBQ2xGO0FBQ0EsOEJBQThCLFFBQVMsc0JBQXNCLDBCQUEwQiw4QkFBOEIsbUNBQW1DLG1CQUFtQixtQkFBbUIsU0FBUyxjQUFjLGFBQWEsc0JBQXNCLHVCQUF1QiwwQkFBMEIsdUJBQXVCLE9BQU8sYUFBYSxrQkFBa0IsUUFBUSxrQkFBa0IsTUFBTSwwQkFBMEIsZ0JBQWdCLDBCQUEwQixjQUFjLGlCQUFpQixrQkFBa0IsZ0JBQWdCLGdDQUFnQyxjQUFjLGlCQUFpQixtQkFBbUIscUJBQXFCLHdCQUF3Qiw2QkFBNkIscUJBQXFCLHlCQUF5QixZQUFZLFVBQVUsZUFBZTtBQUMxdkI7QUFDQTtBQUNBIiwiZmlsZSI6IjY1Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmdW5jdGlvbihpKXtyZXR1cm4gaVsxXX0pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLl9fbnV4dC1lcnJvci1wYWdley1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZjdmOGZiO2JvdHRvbTowO2NvbG9yOiM0NzQ5NGU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjEwMCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7cGFkZGluZzoxcmVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOjB9Ll9fbnV4dC1lcnJvci1wYWdlIC5lcnJvcnttYXgtd2lkdGg6NDUwcHh9Ll9fbnV4dC1lcnJvci1wYWdlIC50aXRsZXtjb2xvcjojNDc0OTRlO2ZvbnQtc2l6ZToxLjVyZW07bWFyZ2luLWJvdHRvbTo4cHg7bWFyZ2luLXRvcDoxNXB4fS5fX251eHQtZXJyb3ItcGFnZSAuZGVzY3JpcHRpb257Y29sb3I6IzdmODI4YjtsaW5lLWhlaWdodDoyMXB4O21hcmdpbi1ib3R0b206MTBweH0uX19udXh0LWVycm9yLXBhZ2UgYXtjb2xvcjojN2Y4MjhiIWltcG9ydGFudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbjpub25lO3RleHQtZGVjb3JhdGlvbjpub25lfS5fX251eHQtZXJyb3ItcGFnZSAubG9nb3tib3R0b206MTJweDtsZWZ0OjEycHg7cG9zaXRpb246Zml4ZWR9XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xubW9kdWxlLmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///652\n')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.