2021-07-18 01:04:13 +02:00

4135 lines
320 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/build/";
/******/
/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // add entry module to deferred list
/******/ deferredModules.push(["./app/js/index.js","vendors~app"]);
/******/ // run deferred modules when ready
/******/ return checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ({
/***/ "./app/js/App.vue":
/*!************************!*\
!*** ./app/js/App.vue ***!
\************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=template&id=f3d8e912& */ "./app/js/App.vue?vue&type=template&id=f3d8e912&");
/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ "./app/js/App.vue?vue&type=script&lang=js&");
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__["render"],
_App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/App.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/App.vue?vue&type=script&lang=js&":
/*!*************************************************!*\
!*** ./app/js/App.vue?vue&type=script&lang=js& ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib??ref--0-0!../../node_modules/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/App.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/App.vue?vue&type=template&id=f3d8e912&":
/*!*******************************************************!*\
!*** ./app/js/App.vue?vue&type=template&id=f3d8e912& ***!
\*******************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib??vue-loader-options!./App.vue?vue&type=template&id=f3d8e912& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/App.vue?vue&type=template&id=f3d8e912&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_template_id_f3d8e912___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/ArticleCard.vue":
/*!*******************************************!*\
!*** ./app/js/components/ArticleCard.vue ***!
\*******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ArticleCard.vue?vue&type=template&id=23c6b8f2& */ "./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2&");
/* harmony import */ var _ArticleCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ArticleCard.vue?vue&type=script&lang=js& */ "./app/js/components/ArticleCard.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_ArticleCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__["render"],
_ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/ArticleCard.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/ArticleCard.vue?vue&type=script&lang=js&":
/*!********************************************************************!*\
!*** ./app/js/components/ArticleCard.vue?vue&type=script&lang=js& ***!
\********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticleCard.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleCard.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleCard_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2&":
/*!**************************************************************************!*\
!*** ./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2& ***!
\**************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticleCard.vue?vue&type=template&id=23c6b8f2& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleCard_vue_vue_type_template_id_23c6b8f2___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/ArticleVariant.vue":
/*!**********************************************!*\
!*** ./app/js/components/ArticleVariant.vue ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ArticleVariant.vue?vue&type=template&id=31aa8b44& */ "./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44&");
/* harmony import */ var _ArticleVariant_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ArticleVariant.vue?vue&type=script&lang=js& */ "./app/js/components/ArticleVariant.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_ArticleVariant_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__["render"],
_ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/ArticleVariant.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/ArticleVariant.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
!*** ./app/js/components/ArticleVariant.vue?vue&type=script&lang=js& ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleVariant_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticleVariant.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleVariant.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleVariant_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44&":
/*!*****************************************************************************!*\
!*** ./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44& ***!
\*****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticleVariant.vue?vue&type=template&id=31aa8b44& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticleVariant_vue_vue_type_template_id_31aa8b44___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/ArticlesView.vue":
/*!********************************************!*\
!*** ./app/js/components/ArticlesView.vue ***!
\********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ArticlesView.vue?vue&type=template&id=55207271& */ "./app/js/components/ArticlesView.vue?vue&type=template&id=55207271&");
/* harmony import */ var _ArticlesView_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ArticlesView.vue?vue&type=script&lang=js& */ "./app/js/components/ArticlesView.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_ArticlesView_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__["render"],
_ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/ArticlesView.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/ArticlesView.vue?vue&type=script&lang=js&":
/*!*********************************************************************!*\
!*** ./app/js/components/ArticlesView.vue?vue&type=script&lang=js& ***!
\*********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticlesView_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticlesView.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticlesView.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticlesView_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/ArticlesView.vue?vue&type=template&id=55207271&":
/*!***************************************************************************!*\
!*** ./app/js/components/ArticlesView.vue?vue&type=template&id=55207271& ***!
\***************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./ArticlesView.vue?vue&type=template&id=55207271& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticlesView.vue?vue&type=template&id=55207271&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ArticlesView_vue_vue_type_template_id_55207271___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/Calculator.vue":
/*!******************************************!*\
!*** ./app/js/components/Calculator.vue ***!
\******************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Calculator.vue?vue&type=template&id=e899a69e& */ "./app/js/components/Calculator.vue?vue&type=template&id=e899a69e&");
/* harmony import */ var _Calculator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Calculator.vue?vue&type=script&lang=js& */ "./app/js/components/Calculator.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_Calculator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__["render"],
_Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/Calculator.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/Calculator.vue?vue&type=script&lang=js&":
/*!*******************************************************************!*\
!*** ./app/js/components/Calculator.vue?vue&type=script&lang=js& ***!
\*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Calculator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./Calculator.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/Calculator.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Calculator_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/Calculator.vue?vue&type=template&id=e899a69e&":
/*!*************************************************************************!*\
!*** ./app/js/components/Calculator.vue?vue&type=template&id=e899a69e& ***!
\*************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Calculator.vue?vue&type=template&id=e899a69e& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/Calculator.vue?vue&type=template&id=e899a69e&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Calculator_vue_vue_type_template_id_e899a69e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/InventoryItem.css":
/*!*********************************************!*\
!*** ./app/js/components/InventoryItem.css ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./app/js/components/InventoryItem.vue":
/*!*********************************************!*\
!*** ./app/js/components/InventoryItem.vue ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InventoryItem.vue?vue&type=template&id=1b5be230& */ "./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230&");
/* harmony import */ var _InventoryItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InventoryItem.vue?vue&type=script&lang=js& */ "./app/js/components/InventoryItem.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_InventoryItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__["render"],
_InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/InventoryItem.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/InventoryItem.vue?vue&type=script&lang=js&":
/*!**********************************************************************!*\
!*** ./app/js/components/InventoryItem.vue?vue&type=script&lang=js& ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./InventoryItem.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryItem.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230&":
/*!****************************************************************************!*\
!*** ./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230& ***!
\****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./InventoryItem.vue?vue&type=template&id=1b5be230& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryItem_vue_vue_type_template_id_1b5be230___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/InventoryTable.css":
/*!**********************************************!*\
!*** ./app/js/components/InventoryTable.css ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./app/js/components/InventoryTable.vue":
/*!**********************************************!*\
!*** ./app/js/components/InventoryTable.vue ***!
\**********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InventoryTable.vue?vue&type=template&id=5bd9a201& */ "./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201&");
/* harmony import */ var _InventoryTable_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InventoryTable.vue?vue&type=script&lang=js& */ "./app/js/components/InventoryTable.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_InventoryTable_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__["render"],
_InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/InventoryTable.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/InventoryTable.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
!*** ./app/js/components/InventoryTable.vue?vue&type=script&lang=js& ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryTable_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./InventoryTable.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryTable.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryTable_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201&":
/*!*****************************************************************************!*\
!*** ./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201& ***!
\*****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./InventoryTable.vue?vue&type=template&id=5bd9a201& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_InventoryTable_vue_vue_type_template_id_5bd9a201___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/MaterializeSelect.vue":
/*!*************************************************!*\
!*** ./app/js/components/MaterializeSelect.vue ***!
\*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MaterializeSelect.vue?vue&type=template&id=28d5004a& */ "./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a&");
/* harmony import */ var _MaterializeSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./MaterializeSelect.vue?vue&type=script&lang=js& */ "./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_MaterializeSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__["render"],
_MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/MaterializeSelect.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js&":
/*!**************************************************************************!*\
!*** ./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js& ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MaterializeSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./MaterializeSelect.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_MaterializeSelect_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a&":
/*!********************************************************************************!*\
!*** ./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a& ***!
\********************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./MaterializeSelect.vue?vue&type=template&id=28d5004a& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_MaterializeSelect_vue_vue_type_template_id_28d5004a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/NavigationBar.vue":
/*!*********************************************!*\
!*** ./app/js/components/NavigationBar.vue ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavigationBar.vue?vue&type=template&id=4d965e00& */ "./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00&");
/* harmony import */ var _NavigationBar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavigationBar.vue?vue&type=script&lang=js& */ "./app/js/components/NavigationBar.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_NavigationBar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__["render"],
_NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/NavigationBar.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/NavigationBar.vue?vue&type=script&lang=js&":
/*!**********************************************************************!*\
!*** ./app/js/components/NavigationBar.vue?vue&type=script&lang=js& ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NavigationBar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./NavigationBar.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/NavigationBar.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NavigationBar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00&":
/*!****************************************************************************!*\
!*** ./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00& ***!
\****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./NavigationBar.vue?vue&type=template&id=4d965e00& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_NavigationBar_vue_vue_type_template_id_4d965e00___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/components/TweenedNumber.css":
/*!*********************************************!*\
!*** ./app/js/components/TweenedNumber.css ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./app/js/components/TweenedNumber.vue":
/*!*********************************************!*\
!*** ./app/js/components/TweenedNumber.vue ***!
\*********************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TweenedNumber.vue?vue&type=template&id=2f547c58& */ "./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58&");
/* harmony import */ var _TweenedNumber_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TweenedNumber.vue?vue&type=script&lang=js& */ "./app/js/components/TweenedNumber.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_TweenedNumber_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__["render"],
_TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "app/js/components/TweenedNumber.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./app/js/components/TweenedNumber.vue?vue&type=script&lang=js&":
/*!**********************************************************************!*\
!*** ./app/js/components/TweenedNumber.vue?vue&type=script&lang=js& ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TweenedNumber_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./TweenedNumber.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/TweenedNumber.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TweenedNumber_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58&":
/*!****************************************************************************!*\
!*** ./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58& ***!
\****************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./TweenedNumber.vue?vue&type=template&id=2f547c58& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_TweenedNumber_vue_vue_type_template_id_2f547c58___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }),
/***/ "./app/js/index.js":
/*!*************************!*\
!*** ./app/js/index.js ***!
\*************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App */ "./app/js/App.vue");
/* harmony import */ var materialize_css_dist_css_materialize_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! materialize-css/dist/css/materialize.min.css */ "./node_modules/materialize-css/dist/css/materialize.min.css");
/* harmony import */ var materialize_css_dist_css_materialize_min_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(materialize_css_dist_css_materialize_min_css__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var materialize_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! materialize-css */ "./node_modules/materialize-css/dist/js/materialize.js");
/* harmony import */ var materialize_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(materialize_css__WEBPACK_IMPORTED_MODULE_4__);
vue__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.$http = axios__WEBPACK_IMPORTED_MODULE_3___default.a;
vue__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.$M = materialize_css__WEBPACK_IMPORTED_MODULE_4___default.a;
new vue__WEBPACK_IMPORTED_MODULE_0__["default"]({
delimiters: ["${", "}"],
components: {
App: _App__WEBPACK_IMPORTED_MODULE_1__["default"]
},
template: "<App/>"
}).$mount("#app");
/***/ }),
/***/ "./app/js/model/article.js":
/*!*********************************!*\
!*** ./app/js/model/article.js ***!
\*********************************/
/*! exports provided: Article, thawArticle */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Article", function() { return Article; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "thawArticle", function() { return thawArticle; });
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);
var Article =
/*#__PURE__*/
function () {
function Article() {
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Article);
this.id = 0;
this.name = "";
this.short = "";
this.dimension = 0;
this.group = 0;
this.content = {
size: 0,
price: 0
};
this.portion = {
size: 0,
price: 0,
type: 0
};
}
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Article, [{
key: "Name",
get: function get() {
return this.name;
},
set: function set(value) {
this.name = value;
}
}, {
key: "Short",
get: function get() {
return this.short;
},
set: function set(value) {
this.short = value;
}
}, {
key: "ContentSize",
get: function get() {
return this.content.size;
},
set: function set(value) {
this.content.size = value;
}
}, {
key: "Dimension",
get: function get() {
return this.dimension;
},
set: function set(value) {
this.dimension = value;
}
}, {
key: "PortionSize",
get: function get() {
return this.portion.size;
},
set: function set(value) {
this.portion.size = value;
}
}, {
key: "PortionType",
get: function get() {
return this.portion.type;
},
set: function set(value) {
this.portion.type = value;
}
}, {
key: "PortionPrice",
get: function get() {
return this.portion.price;
},
set: function set(value) {
this.portion.price = value;
}
}, {
key: "Group",
get: function get() {
return this.group;
},
set: function set(value) {
this.group = value;
}
}, {
key: "ContentPrice",
get: function get() {
return this.Portions * this.portion.price;
}
}, {
key: "Portions",
get: function get() {
return this.content.size / (this.portion.size || 1);
}
}]);
return Article;
}();
Article.thaw = function (json) {
var article = new Article();
article.id = json.id;
article.Name = json.name;
article.Short = json.short;
article.Dimension = json.content_dimension;
article.ContentSize = json.content_size;
article.PortionPrice = json.portion_price;
article.PortionSize = json.portion_size;
article.PortionType = json.portion_dimension;
article.Group = json.group_id;
article.variants = json.variants;
return article;
};
var thawArticle = Article.thaw;
/***/ }),
/***/ "./app/js/model/inventory_article.js":
/*!*******************************************!*\
!*** ./app/js/model/inventory_article.js ***!
\*******************************************/
/*! exports provided: InventoryArticle, thawInventoryArticle */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InventoryArticle", function() { return InventoryArticle; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "thawInventoryArticle", function() { return thawInventoryArticle; });
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);
var InventoryArticle =
/*#__PURE__*/
function () {
function InventoryArticle(article) {
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, InventoryArticle);
this.article = article;
this.end = 0;
this.start = 0;
this.fetched = 0;
this.lost = 0;
}
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(InventoryArticle, [{
key: "reset",
value: function reset() {
this.start = 0;
this.fetched = 0;
this.end = 0;
this.lost = 0;
}
}, {
key: "StartPortions",
get: function get() {
var countFull = Math.floor(this.start);
var fullPortions = countFull * this.article.Portions;
var rest = this.start - countFull;
var restPortions = rest / this.article.PortionSize;
return fullPortions + restPortions;
}
}, {
key: "FetchedPortions",
get: function get() {
var countFull = Math.floor(this.fetched);
var fullPortions = countFull * this.article.Portions;
var rest = this.fetched - countFull;
var restPortions = rest / this.article.PortionSize;
return fullPortions + restPortions;
}
}, {
key: "EndPortions",
get: function get() {
var countFull = Math.floor(this.end);
var fullPortions = countFull * this.article.Portions;
var rest = this.end - countFull;
var restPortions = rest / this.article.PortionSize;
return fullPortions + restPortions;
}
}, {
key: "LostPortions",
get: function get() {
var countFull = Math.floor(this.lost);
var fullPortions = countFull * this.article.Portions;
var rest = this.lost - countFull;
var restPortions = rest / this.article.PortionSize;
return fullPortions + restPortions;
}
}, {
key: "Sold",
get: function get() {
var adds = this.StartPortions + this.FetchedPortions;
var subs = this.EndPortions + this.LostPortions;
return adds - subs;
}
}, {
key: "Sale",
get: function get() {
return this.Sold * this.article.PortionPrice;
}
}, {
key: "StepSize",
get: function get() {
var singlePack = this.article.Portions == 1;
return singlePack ? 1 : 0.05;
}
}, {
key: "PortionPrecision",
get: function get() {
var singlePack = this.article.Portions == 1;
return singlePack ? 0 : 2;
}
}]);
return InventoryArticle;
}();
InventoryArticle.thaw = function (json) {
this.name = json.name;
this.start = json.start;
this.fetched = json.fetched;
this.end = json.end;
this.lost = json.lost;
};
var thawInventoryArticle = InventoryArticle.thaw;
/***/ }),
/***/ "./app/js/model/variant.js":
/*!*********************************!*\
!*** ./app/js/model/variant.js ***!
\*********************************/
/*! exports provided: Variant, thawVariant */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Variant", function() { return Variant; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "thawVariant", function() { return thawVariant; });
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js");
/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);
var Variant =
/*#__PURE__*/
function () {
function Variant() {
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Variant);
this.id = 0;
this.name = "";
this.article_id = 0;
this.price = 0;
}
_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Variant, [{
key: "Name",
get: function get() {
return this.name;
},
set: function set(value) {
this.name = value;
}
}, {
key: "ArticleId",
get: function get() {
return this.article_id;
},
set: function set(value) {
this.article_id = value;
}
}, {
key: "Price",
get: function get() {
return this.price;
},
set: function set(value) {
this.price = value;
}
}]);
return Variant;
}();
Variant.thaw = function (json) {
var variant = new Variant();
variant.id = json.id;
variant.Name = json.name;
variant.ArticleId = json.article_id;
variant.Price = json.price;
return variant;
};
var thawVariant = Variant.thaw;
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/App.vue?vue&type=script&lang=js&":
/*!*********************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/App.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.for-each */ "./node_modules/core-js/modules/es.array.for-each.js");
/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _components_Calculator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Calculator */ "./app/js/components/Calculator.vue");
/* harmony import */ var _components_InventoryTable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/InventoryTable */ "./app/js/components/InventoryTable.vue");
/* harmony import */ var _components_ArticlesView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/ArticlesView */ "./app/js/components/ArticlesView.vue");
/* harmony import */ var _components_NavigationBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/NavigationBar */ "./app/js/components/NavigationBar.vue");
/* harmony import */ var _model_article__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./model/article */ "./app/js/model/article.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "App",
components: {
InventoryTable: _components_InventoryTable__WEBPACK_IMPORTED_MODULE_3__["default"],
NavigationBar: _components_NavigationBar__WEBPACK_IMPORTED_MODULE_5__["default"],
Calculator: _components_Calculator__WEBPACK_IMPORTED_MODULE_2__["default"],
ArticlesView: _components_ArticlesView__WEBPACK_IMPORTED_MODULE_4__["default"]
},
data: function data() {
return {
articles: [],
dimensions: [],
groups: [],
bon: [],
caretPosition: 0,
fab: null,
view: "article",
location: 'fairwertbar'
};
},
computed: {
primaryColor: function primaryColor() {
switch (this.view) {
case "inventory":
return "teal";
case "calc":
return "orange";
case "article":
return "blue";
default:
return "red";
}
},
ready: function ready() {
return this.dimensions.length && this.groups.length;
}
},
created: function created() {
this.loadDimensions();
this.loadGroups();
this.loadArticles();
},
mounted: function mounted() {
var fab = this.$refs.fab;
this.fab = this.$M.FloatingActionButton.init(fab, {});
},
methods: {
changeView: function changeView(tabId) {
this.view = tabId;
},
addArticle: function addArticle() {
this.articles.push(new _model_article__WEBPACK_IMPORTED_MODULE_6__["Article"]());
},
loadDimensions: function loadDimensions() {
var _this = this;
var app = this;
this.$http.get("api/dimension").then(function (response) {
return response.data;
}).then(function (json) {
if (json != null) {
json.forEach(function (element) {
app.dimensions.push(element);
});
}
}).then(function () {
_this.$M.toast({
html: "Dimensionen wurden geladen."
});
});
},
loadGroups: function loadGroups() {
var _this2 = this;
var app = this;
this.$http.get("api/group").then(function (response) {
return response.data;
}).then(function (json) {
if (json != null) {
json.forEach(function (element) {
app.groups.push(element);
});
}
}).then(function () {
_this2.$M.toast({
html: "Artikelgruppen wurden geladen."
});
});
},
loadArticles: function loadArticles() {
var _this3 = this;
var app = this;
this.$http.get("api/artikel").then(function (response) {
return response.data;
}).then(function (json) {
if (json != null) {
json.forEach(function (element) {
app.articles.push(Object(_model_article__WEBPACK_IMPORTED_MODULE_6__["thawArticle"])(element));
});
}
}).then(function () {
_this3.$M.toast({
html: "Artikel wurden geladen."
});
_this3.$M.updateTextFields();
});
},
exportInventur: function exportInventur() {}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleCard.vue?vue&type=script&lang=js&":
/*!****************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticleCard.vue?vue&type=script&lang=js& ***!
\****************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.for-each */ "./node_modules/core-js/modules/es.array.for-each.js");
/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _model_article__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../model/article */ "./app/js/model/article.js");
/* harmony import */ var _MaterializeSelect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./MaterializeSelect */ "./app/js/components/MaterializeSelect.vue");
/* harmony import */ var _TweenedNumber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TweenedNumber */ "./app/js/components/TweenedNumber.vue");
/* harmony import */ var _ArticleVariant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ArticleVariant */ "./app/js/components/ArticleVariant.vue");
/* harmony import */ var _model_variant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../model/variant */ "./app/js/model/variant.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "Article",
components: {
MaterializeSelect: _MaterializeSelect__WEBPACK_IMPORTED_MODULE_3__["default"],
TweenedNumber: _TweenedNumber__WEBPACK_IMPORTED_MODULE_4__["default"],
ArticleVariant: _ArticleVariant__WEBPACK_IMPORTED_MODULE_5__["default"]
},
props: {
a: {
type: Object,
default: function _default() {
return new _model_article__WEBPACK_IMPORTED_MODULE_2__["Article"]();
}
},
dimensions: {
type: Array,
default: function _default() {
return [];
}
},
groups: {
type: Array,
default: function _default() {
return [];
}
},
identifier: {
type: String
}
},
data: function data() {
return {
changed: false,
article: null,
original: null,
variants: [],
tabs: null
};
},
computed: {},
watch: {
article: {
handler: function handler(newValue, oldVal) {
this.changed = JSON.stringify(newValue) != this.original;
},
deep: true
}
},
created: function created() {
this.article = this.a;
this.original = JSON.stringify(this.a);
this.loadVariants(this.article);
},
mounted: function mounted() {
var tabs = this.$el.getElementsByClassName("tabs")[0];
M.Tabs.init(tabs, {});
this.tabs = M.Tabs.getInstance(tabs);
this.$M.updateTextFields();
},
methods: {
storeArticle: function storeArticle(article) {
var _this = this;
this.$http.post("/api/artikel" + (article.id > 0 ? '/' + article.id : ''), JSON.stringify(article), {
headers: {
'Content-Type': 'application/json'
}
}).then(function (response) {
_this.$M.toast({
html: response.data + " Artikel aktualisiert."
});
_this.article = Object(_model_article__WEBPACK_IMPORTED_MODULE_2__["thawArticle"])(response.data);
}).catch(function (error) {
_this.$M.toast({
html: response
});
});
},
deleteArticle: function deleteArticle(article) {
var _this2 = this;
this.$http.delete("/api/artikel/" + article.id).then(function (response) {
_this2.$emit('delete-article', article);
_this2.$M.toast({
html: response.data + " Artikel gelöscht."
});
}).catch(function (error) {
_this2.$M.toast({
html: response
});
});
},
addVariant: function addVariant(article) {
var variant = new _model_variant__WEBPACK_IMPORTED_MODULE_6__["Variant"]();
variant.ArticleId = article.id;
this.variants.push(variant);
},
loadVariants: function loadVariants(article) {
var _this3 = this;
this.$http.get("/api/artikel/" + article.id + '/varianten').then(function (response) {
return response.data;
}).then(function (json) {
if (json != null) {
json.forEach(function (element) {
_this3.variants.push(Object(_model_variant__WEBPACK_IMPORTED_MODULE_6__["thawVariant"])(element));
});
}
}).then(function () {
_this3.$M.updateTextFields();
}).catch(function (error) {
_this3.$M.toast({
html: error
});
});
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleVariant.vue?vue&type=script&lang=js&":
/*!*******************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticleVariant.vue?vue&type=script&lang=js& ***!
\*******************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _model_article__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../model/article */ "./app/js/model/article.js");
/* harmony import */ var _model_variant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../model/variant */ "./app/js/model/variant.js");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: 'Variant',
props: {
variant: {
type: Object,
default: function _default() {
return new _model_variant__WEBPACK_IMPORTED_MODULE_1__["Variant"]();
}
},
article: {
type: Object,
default: function _default() {
return new _model_article__WEBPACK_IMPORTED_MODULE_0__["Article"]();
}
},
identifier: {
type: String
}
},
methods: {
storeVariant: function storeVariant(variant) {
var _this = this;
variant.ArticleId = this.article.id;
this.$http.post("/api/varianten" + (variant.id > 0 ? '/' + variant.id : ''), JSON.stringify(variant), {
headers: {
'Content-Type': 'application/json'
}
}).then(function (response) {
_this.$M.toast({
html: response.data + " Variante aktualisiert."
});
_this.variant = Object(_model_variant__WEBPACK_IMPORTED_MODULE_1__["thawVariant"])(response.data);
}).catch(function (error) {
_this.$M.toast({
html: error
});
});
},
deleteVariant: function deleteVariant(variant) {
var _this2 = this;
this.$http.delete("/api/varianten/" + variant.id).then(function (response) {
_this2.$emit('delete-variant', variant);
_this2.$M.toast({
html: response.data + " Varianten gelöscht."
});
}).catch(function (error) {
_this2.$M.toast({
html: response
});
});
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticlesView.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticlesView.vue?vue&type=script&lang=js& ***!
\*****************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.index-of */ "./node_modules/core-js/modules/es.array.index-of.js");
/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.splice */ "./node_modules/core-js/modules/es.array.splice.js");
/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _ArticleCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ArticleCard */ "./app/js/components/ArticleCard.vue");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "ArticlesView",
components: {
ArticleCard: _ArticleCard__WEBPACK_IMPORTED_MODULE_2__["default"]
},
props: {
articles: {
type: Array,
default: function _default() {
return [];
}
},
groups: {
type: Array,
default: function _default() {
return [];
}
},
dimensions: {
type: Array,
default: function _default() {
return [];
}
}
},
data: function data() {
return {};
},
computed: {},
mounted: function mounted() {},
methods: {
removeFromList: function removeFromList(article) {
this.articles.splice(this.articles.indexOf(article), 1);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/Calculator.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/Calculator.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map */ "./node_modules/core-js/modules/es.array.map.js");
/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.reduce */ "./node_modules/core-js/modules/es.array.reduce.js");
/* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _TweenedNumber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TweenedNumber */ "./app/js/components/TweenedNumber.vue");
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "Calculator",
components: {
TweenedNumber: _TweenedNumber__WEBPACK_IMPORTED_MODULE_3__["default"]
},
props: {
articles: {
type: Array,
default: function _default() {
return [];
}
}
},
data: function data() {
return {
items: []
};
},
computed: {
totalSum: function totalSum() {
return this.items.reduce(function (total, item) {
return total + item.sum;
}, 0);
},
totalCount: function totalCount() {
return this.items.reduce(function (total, item) {
return total + item.count;
}, 0);
}
},
mounted: function mounted() {
this.resetBon();
},
methods: {
resetBon: function resetBon() {
this.items = this.articles.map(function (a) {
return {
count: 0,
name: a.name,
short: a.short,
price: a.portion.price,
sum: 0
};
});
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryItem.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/InventoryItem.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find */ "./node_modules/core-js/modules/es.array.find.js");
/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.number.constructor */ "./node_modules/core-js/modules/es.number.constructor.js");
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_number_to_fixed__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed */ "./node_modules/core-js/modules/es.number.to-fixed.js");
/* harmony import */ var core_js_modules_es_number_to_fixed__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js");
/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.match */ "./node_modules/core-js/modules/es.string.match.js");
/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace */ "./node_modules/core-js/modules/es.string.replace.js");
/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _TweenedNumber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TweenedNumber */ "./app/js/components/TweenedNumber.vue");
/* harmony import */ var _InventoryItem_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./InventoryItem.css */ "./app/js/components/InventoryItem.css");
/* harmony import */ var _InventoryItem_css__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_InventoryItem_css__WEBPACK_IMPORTED_MODULE_7__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "InventoryItem",
components: {
TweenedNumber: _TweenedNumber__WEBPACK_IMPORTED_MODULE_6__["default"]
},
props: {
item: {
type: Object,
default: function _default() {
return {};
}
},
total: {
type: Number,
default: 0
},
dimensions: {
type: Array,
default: function _default() {
return [];
}
}
},
data: function data() {
return {
tweenedSold: 0,
tweenedSale: 0,
classObject: {
active: null
}
};
},
computed: {
SoldAnimated: function SoldAnimated() {
return this.tweenedSold.toFixed(this.item.PortionPrecision);
},
SaleAnimated: function SaleAnimated() {
return this.tweenedSale.toFixed(2);
},
Dimension: function Dimension() {
var _this = this;
return this.dimensions.find(function (element) {
return element.id == _this.item.article.PortionType;
});
}
},
watch: {},
methods: {
setCaretPosition: function setCaretPosition(el) {
if (el != null) {
var range = document.createRange();
var sel = window.getSelection();
range.setStart(el.firstChild, el.innerText.length);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
el.focus();
}
},
restrictInput: function restrictInput(prop, event) {
var x = event.key;
console.log(prop + " inserting " + x);
if (x === "Enter") {
event.target.blur();
}
if (isNaN(x) && x != ',') {
event.preventDefault();
}
},
onFocus: function onFocus(property, event) {
this.classObject.active = property;
var range = document.createRange();
var sel = window.getSelection();
range.selectNodeContents(event.target);
sel.removeAllRanges();
sel.addRange(range);
},
onBlur: function onBlur(property, event) {
this.classObject.active = null;
var value = event.target.innerText;
value = value.replace(',', '.');
console.log(property + " left value: " + value);
if (!isNaN(value)) {
this.item[property] = Number(value);
}
},
onInput: function onInput(property, event) {
if (event.inputType == "insertText") {
var regex = /\d+\.?\d{0,2}/;
if (event.data.match(regex)) {
var value = event.target.innerText;
this.item[property] = Number(value);
}
}
this.setCaretPosition(event.target);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryTable.vue?vue&type=script&lang=js&":
/*!*******************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/InventoryTable.vue?vue&type=script&lang=js& ***!
\*******************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map */ "./node_modules/core-js/modules/es.array.map.js");
/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.reduce */ "./node_modules/core-js/modules/es.array.reduce.js");
/* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.date.to-string */ "./node_modules/core-js/modules/es.date.to-string.js");
/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.to-string */ "./node_modules/core-js/modules/es.object.to-string.js");
/* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string */ "./node_modules/core-js/modules/es.regexp.to-string.js");
/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _InventoryItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./InventoryItem */ "./app/js/components/InventoryItem.vue");
/* harmony import */ var _TweenedNumber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TweenedNumber */ "./app/js/components/TweenedNumber.vue");
/* harmony import */ var _model_inventory_article__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../model/inventory_article */ "./app/js/model/inventory_article.js");
/* harmony import */ var _InventoryTable_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./InventoryTable.css */ "./app/js/components/InventoryTable.css");
/* harmony import */ var _InventoryTable_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_InventoryTable_css__WEBPACK_IMPORTED_MODULE_9__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "InventoryTable",
components: {
InventoryItem: _InventoryItem__WEBPACK_IMPORTED_MODULE_6__["default"],
TweenedNumber: _TweenedNumber__WEBPACK_IMPORTED_MODULE_7__["default"]
},
props: {
articles: {
type: Array,
default: function _default() {
return [];
}
},
groups: {
type: Array,
default: function _default() {
return [];
}
},
dimensions: {
type: Array,
default: function _default() {
return [];
}
}
},
data: function data() {
return {
inventory: []
};
},
computed: {
meta: function meta() {
return {
datum: new Date().toString()
};
},
sales: function sales() {
var total_sales = this.inventory.reduce(function (total, item) {
return total + item.Sale;
}, 0);
return total_sales;
},
sold: function sold() {
var total_sold = this.inventory.reduce(function (total, item) {
return total + item.Sold;
}, 0);
return total_sold;
}
},
mounted: function mounted() {
this.$on('reset-inventur', this.resetInventory);
this.$on('export-inventur', this.exportInventory);
this.resetInventory();
},
methods: {
resetInventory: function resetInventory() {
this.inventory = this.articles.map(function (item) {
return new _model_inventory_article__WEBPACK_IMPORTED_MODULE_8__["InventoryArticle"](item);
});
},
getInventurBlob: function getInventurBlob() {
var inventur = this.inventory.map(function (T) {
return {
name: T.article.name,
preis: T.article.portion.price,
beginn: T.start,
zugang: T.fetched,
ende: T.end,
verlust: T.lost,
verkauft: T.Sold,
umsatz: T.Sale
};
});
var data = JSON.stringify({
meta: this.meta,
data: inventur
});
var blob = new Blob([data], {
type: 'text/json'
});
return blob;
},
exportInventory: function exportInventory() {
var _this = this;
var formData = new FormData();
formData.append('file', this.getInventurBlob(), 'inventur.json');
this.$http.post("/api/inventur", formData, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(function (response) {
_this.$M.toast({
html: response.body
});
});
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js&":
/*!**********************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/MaterializeSelect.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor */ "./node_modules/core-js/modules/es.number.constructor.js");
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0__);
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "MaterializeSelect",
props: {
value: {
type: [Number, String],
default: ""
}
},
/**
* @description Component local variables
* @return {Object} data
* @return {undefined|FormSelect} data.instance
*/
data: function data() {
return {
instance: undefined
};
},
watch: {
value: function value() {
var _this = this;
this.instance.destroy();
this.$nextTick(function () {
return _this.instance = _this.initializeSelect();
});
}
},
mounted: function mounted() {
this.instance = this.initializeSelect();
this.$el.addEventListener("change", this.changeHandler);
},
destroyed: function destroyed() {
this.$el.removeEventListener("change", this.changeHandler);
},
methods: {
/**
* @description Initialize a new Materialize select component
* @param {Object} options
* @return {FormSelect}
* @see https://materializecss.com/select.html#options
*/
initializeSelect: function initializeSelect() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return M.FormSelect.init(this.$el, options);
},
/**
* @description Send the proper input event to the parents components
* @param {Event} event
* @param {HTMLSelectElement} target
* @see https://developer.mozilla.org/fr/docs/Web/API/Event/target
*/
changeHandler: function changeHandler(_ref) {
var target = _ref.target;
this.$emit("input", target.value);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/NavigationBar.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/NavigationBar.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var materialize_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! materialize-css */ "./node_modules/materialize-css/dist/js/materialize.js");
/* harmony import */ var materialize_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(materialize_css__WEBPACK_IMPORTED_MODULE_0__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
props: {
primaryColor: {
type: String,
default: "red"
}
},
data: function data() {
return {
tabs: []
};
},
mounted: function mounted() {
var tabs = document.getElementsByClassName("tabs")[0];
materialize_css__WEBPACK_IMPORTED_MODULE_0___default.a.Tabs.init(tabs, {});
this.tabs = materialize_css__WEBPACK_IMPORTED_MODULE_0___default.a.Tabs.getInstance(tabs);
},
methods: {
changeTab: function changeTab(tabId, event) {
this.view = tabId;
this.tabs._handleTabClick(event);
this.tabs.updateTabIndicator();
this.$emit("changed-tab", this.view);
}
}
});
/***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/TweenedNumber.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/TweenedNumber.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.number.constructor */ "./node_modules/core-js/modules/es.number.constructor.js");
/* harmony import */ var core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_constructor__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js");
/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.split */ "./node_modules/core-js/modules/es.string.split.js");
/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var gsap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gsap */ "./node_modules/gsap/index.js");
/* harmony import */ var _TweenedNumber_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TweenedNumber.css */ "./app/js/components/TweenedNumber.css");
/* harmony import */ var _TweenedNumber_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_TweenedNumber_css__WEBPACK_IMPORTED_MODULE_4__);
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
name: "TweenedNumber",
props: {
wert: {
type: Number,
default: 0
},
einheit: {
type: String,
default: ""
},
precision: {
type: Number,
default: 0
}
},
data: function data() {
return {
tweenedValue: this.wert
};
},
computed: {
valueAnimated: function valueAnimated() {
return this.tweenedValue.toLocaleString("de-DE", {
maximumFractionDigits: 2,
minimumFractionDigits: this.precision
});
},
intAnimated: function intAnimated() {
return this.valueAnimated.split(',')[0];
},
deciAnimated: function deciAnimated() {
return this.valueAnimated.split(',')[1];
}
},
watch: {
wert: {
handler: function handler(newValue) {
gsap__WEBPACK_IMPORTED_MODULE_3__["default"].to(this.$data, 0.5, {
tweenedValue: newValue
});
},
deep: true
}
}
});
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/App.vue?vue&type=template&id=f3d8e912&":
/*!*************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/App.vue?vue&type=template&id=f3d8e912& ***!
\*************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
[
_c("NavigationBar", {
attrs: { "primary-color": _vm.primaryColor },
on: { "changed-tab": _vm.changeView }
}),
_vm._v(" "),
_c(
"div",
{ staticClass: "container" },
[
!_vm.ready
? _c(
"div",
{
staticClass: "valign-wrapper",
staticStyle: { height: "90vh" }
},
[_vm._m(0)]
)
: _vm._e(),
_vm._v(" "),
_c("transition", { attrs: { name: "fade" } }, [
_vm.ready && _vm.view == "inventory"
? _c(
"div",
{ staticClass: "col s12", attrs: { id: "inventory" } },
[
_c("InventoryTable", {
ref: "inventory",
attrs: {
articles: _vm.articles,
groups: _vm.groups,
dimensions: _vm.dimensions
}
})
],
1
)
: _vm._e(),
_vm._v(" "),
_vm.ready && _vm.view == "calc"
? _c(
"div",
{ staticClass: "col s12", attrs: { id: "calc" } },
[_c("Calculator", { attrs: { articles: _vm.articles } })],
1
)
: _vm._e(),
_vm._v(" "),
_vm.ready && _vm.view == "article"
? _c(
"div",
{ staticClass: "col s12", attrs: { id: "article" } },
[
_c("ArticlesView", {
attrs: {
articles: _vm.articles,
groups: _vm.groups,
dimensions: _vm.dimensions
}
})
],
1
)
: _vm._e()
])
],
1
),
_vm._v(" "),
_c("div", { ref: "fab", staticClass: "fixed-action-btn" }, [
_c(
"a",
{ staticClass: "btn-floating btn-large", class: _vm.primaryColor },
[
_c("i", { staticClass: "large material-icons" }, [
_vm._v("more_vert")
])
]
),
_vm._v(" "),
_c("ul", [
_c(
"li",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.view == "article",
expression: "view == 'article'"
}
]
},
[
_c(
"a",
{
staticClass: "btn-floating tooltipped",
attrs: {
href: "#",
"data-position": "left",
"data-tooltip": "Artikel hinzufügen"
},
on: { click: _vm.addArticle }
},
[_c("i", { staticClass: "material-icons" }, [_vm._v("add")])]
)
]
),
_vm._v(" "),
_c(
"li",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.view == "inventory",
expression: "view == 'inventory'"
}
]
},
[
_c(
"a",
{
staticClass: "btn-floating tooltipped",
attrs: {
href: "#",
"data-position": "left",
"data-tooltip": "Inventur zurücksetzen"
},
on: {
click: function($event) {
return _vm.$refs.inventory.$emit("reset-inventur")
}
}
},
[
_c("i", { staticClass: "material-icons" }, [
_vm._v("clear_all")
])
]
)
]
),
_vm._v(" "),
_c(
"li",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.view == "inventory",
expression: "view == 'inventory'"
}
]
},
[
_c(
"a",
{
staticClass: "btn-floating tooltipped",
attrs: {
href: "#",
"data-position": "left",
"data-tooltip": "Inventur exportieren"
},
on: {
click: function($event) {
return _vm.$refs.inventory.$emit("export-inventur")
}
}
},
[_c("i", { staticClass: "material-icons" }, [_vm._v("save")])]
)
]
)
])
])
],
1
)
}
var staticRenderFns = [
function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "progress" }, [
_c("div", { staticClass: "indeterminate" })
])
}
]
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2&":
/*!********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticleCard.vue?vue&type=template&id=23c6b8f2& ***!
\********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "card" }, [
_c("div", { staticClass: "card-content" }, [
_c("span", { staticClass: "card-title" }, [
_vm._v("\n " + _vm._s(_vm.article.name) + "\n ")
])
]),
_vm._v(" "),
_c("div", { staticClass: "card-tabs" }, [
_c("ul", { staticClass: "tabs tabs-fixed-width" }, [
_c("li", { staticClass: "tab" }, [
_c(
"a",
{
staticClass: "active",
attrs: { href: "#" + _vm.identifier + "_info" }
},
[_vm._v("Info")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "tab" }, [
_c("a", { attrs: { href: "#" + _vm.identifier + "_variants" } }, [
_vm._v("Varianten")
])
])
])
]),
_vm._v(" "),
_c("div", { staticClass: "card-content" }, [
_c(
"div",
{ staticClass: "row", attrs: { id: _vm.identifier + "_info" } },
[
_c("div", { staticClass: "input-field inline col s8" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.article.name,
expression: "article.name"
}
],
staticClass: "validate",
attrs: {
id: "a_name_" + _vm.article.id,
placeholder: "Artikelname"
},
domProps: { value: _vm.article.name },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(_vm.article, "name", $event.target.value)
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "active",
attrs: { for: "a_name_" + _vm.article.id }
},
[_vm._v("Name")]
)
]),
_vm._v(" "),
_c("div", { staticClass: "input-field inline col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.article.short,
expression: "article.short"
}
],
staticClass: "validate",
attrs: {
id: "a_short_" + _vm.article.id,
placeholder: "Kurzname"
},
domProps: { value: _vm.article.short },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(_vm.article, "short", $event.target.value)
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "active",
attrs: { for: "a_short_" + _vm.article.id }
},
[_vm._v("Kürzel")]
)
]),
_vm._v(" "),
_c(
"div",
{ staticClass: "input-field col s4" },
[
_c(
"materialize-select",
{
attrs: {
id: "a_group_" + _vm.article.id,
value: _vm.article.group,
placeholder: "Artikelgruppe"
},
model: {
value: _vm.article.group,
callback: function($$v) {
_vm.$set(_vm.article, "group", _vm._n($$v))
},
expression: "article.group"
}
},
_vm._l(_vm.groups, function(group) {
return _c(
"option",
{ key: group.id, domProps: { value: group.id } },
[
_vm._v(
"\n " + _vm._s(group.name) + "\n "
)
]
)
}),
0
),
_vm._v(" "),
_c("label", { attrs: { for: "a_group_" + _vm.article.id } }, [
_vm._v("Artikelgruppe")
])
],
1
),
_vm._v(" "),
_c("div", { staticClass: "input-field col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model.number",
value: _vm.article.content.size,
expression: "article.content.size",
modifiers: { number: true }
}
],
staticClass: "validate",
attrs: {
id: "a_csize_" + _vm.article.id,
placeholder: "Gesamtinhalt",
type: "number",
step: "0.01"
},
domProps: { value: _vm.article.content.size },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.article.content,
"size",
_vm._n($event.target.value)
)
},
blur: function($event) {
return _vm.$forceUpdate()
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "active",
attrs: { for: "a_csize_" + _vm.article.id }
},
[_vm._v("Gesamtinhalt")]
)
]),
_vm._v(" "),
_c(
"div",
{ staticClass: "input-field col s4" },
[
_c(
"materialize-select",
{
attrs: {
id: "a_dim_" + _vm.article.id,
value: _vm.article.dimension,
placeholder: "Dimension"
},
model: {
value: _vm.article.dimension,
callback: function($$v) {
_vm.$set(_vm.article, "dimension", _vm._n($$v))
},
expression: "article.dimension"
}
},
_vm._l(_vm.dimensions, function(dim) {
return _c(
"option",
{ key: dim.id, domProps: { value: dim.id } },
[
_vm._v(
"\n " + _vm._s(dim.name) + "\n "
)
]
)
}),
0
),
_vm._v(" "),
_c("label", { attrs: { for: "a_dim_" + _vm.article.id } }, [
_vm._v("Dimension")
])
],
1
),
_vm._v(" "),
_c("div", { staticClass: "input-field col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model.number",
value: _vm.article.portion.size,
expression: "article.portion.size",
modifiers: { number: true }
}
],
staticClass: "validate",
attrs: {
id: "a_psize_" + _vm.article.id,
placeholder: "Gesamtinhalt",
type: "number",
step: "0.01",
max: "5"
},
domProps: { value: _vm.article.portion.size },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.article.portion,
"size",
_vm._n($event.target.value)
)
},
blur: function($event) {
return _vm.$forceUpdate()
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "active",
attrs: { for: "a_psize_" + _vm.article.id }
},
[_vm._v("Portionsinhalt")]
)
]),
_vm._v(" "),
_c(
"div",
{ staticClass: "input-field col s4" },
[
_c(
"MaterializeSelect",
{
attrs: {
id: "a_ptype_" + _vm.article.id,
value: _vm.article.portion.type,
placeholder: "Art"
},
model: {
value: _vm.article.portion.type,
callback: function($$v) {
_vm.$set(_vm.article.portion, "type", _vm._n($$v))
},
expression: "article.portion.type"
}
},
_vm._l(_vm.dimensions, function(dim) {
return _c(
"option",
{ key: dim.id, domProps: { value: dim.id } },
[
_vm._v(
"\n " + _vm._s(dim.name) + "\n "
)
]
)
}),
0
),
_vm._v(" "),
_c("label", { attrs: { for: "a_ptype_" + _vm.article.id } }, [
_vm._v("Portionsbezeichnung")
])
],
1
),
_vm._v(" "),
_c("div", { staticClass: "input-field col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model.number",
value: _vm.article.portion.price,
expression: "article.portion.price",
modifiers: { number: true }
}
],
staticClass: "validate",
attrs: {
id: "a_pprice_" + _vm.article.id,
placeholder: "Preis",
type: "number",
step: "0.01"
},
domProps: { value: _vm.article.portion.price },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.article.portion,
"price",
_vm._n($event.target.value)
)
},
blur: function($event) {
return _vm.$forceUpdate()
}
}
}),
_vm._v(" "),
_c(
"label",
{
staticClass: "active",
attrs: { for: "a_pprice_" + _vm.article.id }
},
[_vm._v("Portionspreis in €")]
)
]),
_vm._v(" "),
_c("div", { staticClass: "col s12 right" }, [
_c(
"span",
{ staticClass: "right" },
[
_vm._v("Gesamtpreis\n "),
_c("TweenedNumber", {
attrs: {
wert: _vm.article.ContentPrice,
einheit: "€",
precision: 2
}
})
],
1
)
])
]
),
_vm._v(" "),
_c(
"div",
{ staticClass: "row", attrs: { id: _vm.identifier + "_variants" } },
[
_c(
"div",
{ staticClass: "col s12" },
[
_vm._l(_vm.variants, function(variant, index) {
return _c("ArticleVariant", {
key: "article_" + _vm.article.id + "_variant_" + index,
attrs: {
identifier:
"article_" + _vm.article.id + "_variant_" + index,
variant: variant,
article: _vm.article
}
})
}),
_vm._v(" "),
_c(
"a",
{
attrs: { href: "#" },
on: {
click: function($event) {
return _vm.addVariant(_vm.article)
}
}
},
[_vm._v("Variante hinzufügen")]
)
],
2
)
]
)
]),
_vm._v(" "),
_c("div", { staticClass: "card-action" }, [
_c(
"a",
{
attrs: { href: "#" },
on: {
click: function($event) {
return _vm.deleteArticle(_vm.article)
}
}
},
[_vm._v("Artikel löschen")]
),
_vm._v(" "),
_vm.changed
? _c(
"a",
{
attrs: { href: "#" },
on: {
click: function($event) {
return _vm.storeArticle(_vm.article)
}
}
},
[_vm._v("Artikel speichern")]
)
: _vm._e()
])
])
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44&":
/*!***********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticleVariant.vue?vue&type=template&id=31aa8b44& ***!
\***********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "row" }, [
_c("div", { staticClass: "input-field col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.variant.name,
expression: "variant.name"
}
],
staticClass: "validate",
attrs: {
id: _vm.identifier + "_name",
placeholder: "Variantenbezeichnung",
type: "text"
},
domProps: { value: _vm.variant.name },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(_vm.variant, "name", $event.target.value)
}
}
}),
_vm._v(" "),
_c(
"label",
{ staticClass: "active", attrs: { for: _vm.identifier + "_name" } },
[_vm._v("Variantenbezeichnung")]
)
]),
_vm._v(" "),
_c("div", { staticClass: "input-field col s4" }, [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model.number",
value: _vm.variant.price,
expression: "variant.price",
modifiers: { number: true }
}
],
staticClass: "validate",
attrs: {
id: _vm.identifier + "_price",
placeholder: "Preis",
type: "number",
step: "0.01"
},
domProps: { value: _vm.variant.price },
on: {
input: function($event) {
if ($event.target.composing) {
return
}
_vm.$set(_vm.variant, "price", _vm._n($event.target.value))
},
blur: function($event) {
return _vm.$forceUpdate()
}
}
}),
_vm._v(" "),
_c(
"label",
{ staticClass: "active", attrs: { for: _vm.identifier + "_price" } },
[_vm._v("Preis")]
)
]),
_vm._v(" "),
_c("div", { staticClass: "input-field col s2" }, [
_c("input", {
staticClass: "validate",
attrs: { disabled: "" },
domProps: { value: _vm.article.PortionPrice + _vm.variant.Price }
})
]),
_vm._v(" "),
_c("div", { staticClass: "input-field col s2" }, [
_c(
"a",
{
attrs: { href: "#" },
on: {
click: function($event) {
return _vm.storeVariant(_vm.variant)
}
}
},
[_vm._v("Variante speichern")]
)
])
])
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/ArticlesView.vue?vue&type=template&id=55207271&":
/*!*********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/ArticlesView.vue?vue&type=template&id=55207271& ***!
\*********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
_vm._l(_vm.articles, function(a, index) {
return _c("ArticleCard", {
key: "article_" + index,
attrs: {
identifier: "article_" + index,
a: a,
dimensions: _vm.dimensions,
groups: _vm.groups
},
on: {
"delete-article": function($event) {
return _vm.removeFromList(a)
}
}
})
}),
1
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/Calculator.vue?vue&type=template&id=e899a69e&":
/*!*******************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/Calculator.vue?vue&type=template&id=e899a69e& ***!
\*******************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { staticClass: "row pin-top" }, [
_c(
"div",
{ staticClass: "col s12 m4 card darken-4 grey grey-text text-lighten-2" },
[
_c("table", { staticClass: "card-content" }, [
_c(
"tbody",
{ staticStyle: { "max-height": "300px" } },
_vm._l(_vm.items, function(item) {
return _c(
"tr",
{
directives: [
{
name: "show",
rawName: "v-show",
value: item.count > 0,
expression: "item.count > 0"
}
],
key: "bon_" + item.short
},
[
_c("td", { staticClass: "right-align" }, [
_vm._v(
"\n " + _vm._s(item.count) + " ×\n "
)
]),
_vm._v(" "),
_c("td", [_vm._v(_vm._s(item.name))]),
_vm._v(" "),
_c(
"td",
{ staticClass: "right-align" },
[
_c("TweenedNumber", {
attrs: { wert: item.sum, einheit: "€", precision: 2 }
})
],
1
)
]
)
}),
0
),
_vm._v(" "),
_c("tfoot", [
_c("tr", { staticClass: "white-text" }, [
_c(
"th",
{ staticClass: "right-align" },
[_c("TweenedNumber", { attrs: { wert: _vm.totalCount } })],
1
),
_vm._v(" "),
_c("th", [_vm._v("\n Artikel\n ")]),
_vm._v(" "),
_c(
"th",
{ staticClass: "right-align" },
[
_c("TweenedNumber", {
attrs: { wert: _vm.totalSum, einheit: "€", precision: 2 }
})
],
1
)
])
])
])
]
),
_vm._v(" "),
_c("div", { staticClass: "col s12 m8" }, [
_c(
"div",
{ staticClass: "row" },
_vm._l(_vm.items, function(a) {
return _c(
"div",
{ key: "bon_btn_" + a.short, staticClass: "col s3" },
[
_c(
"button",
{
staticClass:
"waves-effect waves-light btn-large btn-flat col s12",
on: {
click: function($event) {
a.count++
a.sum += a.price
}
}
},
[_vm._v("\n " + _vm._s(a.short) + "\n ")]
)
]
)
}),
0
),
_vm._v(" "),
_c("div", { staticClass: "row" }, [
_c("div", { staticClass: "col s3" }, [
_c(
"button",
{
staticClass: "waves-effect waves-light btn-large orange col s12",
on: { click: _vm.resetBon }
},
[_vm._v("\n Reset\n ")]
)
])
])
])
])
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230&":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/InventoryItem.vue?vue&type=template&id=1b5be230& ***!
\**********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"tr",
{
staticClass: "inventory-item",
class: {
"teal lighten-5": _vm.item.Sale > 0,
"orange darken-2 white-text": _vm.item.Sold % 1 != 0,
"red darken-2 white-text": _vm.item.Sale < 0
},
staticStyle: { border: "0" }
},
[
_c("th", { staticClass: "right-align" }, [
_vm._v("\n " + _vm._s(_vm.item.article.name) + "\n ")
]),
_vm._v(" "),
_vm._l(["start", "fetched", "end", "lost"], function(prop) {
return _c(
"td",
{
key: _vm.item.article.short + "_" + prop,
staticClass: "border-bottom center-align",
class: { active: _vm.classObject.active == prop },
attrs: { contenteditable: "" },
on: {
keypress: function($event) {
return _vm.restrictInput(prop, $event)
},
focus: function($event) {
return _vm.onFocus(prop, $event)
},
blur: function($event) {
return _vm.onBlur(prop, $event)
}
}
},
[_vm._v("\n " + _vm._s(_vm.item[prop]) + "\n ")]
)
}),
_vm._v(" "),
_c(
"td",
{ staticClass: "right-align border-bottom border-diagram" },
[
_c("TweenedNumber", {
style: {
"border-image":
"linear-gradient(to right , rgba(0,150,136,.01) 0%, rgba(0,150,136,.3) " +
(_vm.item.Sold * 100) / _vm.total +
"%, transparent " +
(_vm.item.Sold * 100) / _vm.total +
"%,transparent 100%) 1"
},
attrs: {
wert: _vm.item.Sold,
einheit: _vm.Dimension.short,
precision: _vm.item.PortionPrecision
}
})
],
1
),
_vm._v(" "),
_c(
"td",
{ staticClass: "right-align border-bottom" },
[
_c("TweenedNumber", {
attrs: { wert: _vm.item.Sale, einheit: "€", precision: 2 }
})
],
1
)
],
2
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201&":
/*!***********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/InventoryTable.vue?vue&type=template&id=5bd9a201& ***!
\***********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("table", { staticClass: "table condensed highlight" }, [
_vm._m(0),
_vm._v(" "),
_c(
"tbody",
_vm._l(_vm.inventory, function(item, index) {
return _c("InventoryItem", {
key: "item-" + index,
attrs: { dimensions: _vm.dimensions, item: item, total: _vm.sold }
})
}),
1
),
_vm._v(" "),
_c("tfoot", [
_c("tr", [
_c("th", { staticClass: "right-align", attrs: { colspan: "6" } }, [
_vm._v("\n Gesamtsumme:\n ")
]),
_vm._v(" "),
_c(
"td",
{ staticClass: "right-align" },
[
_c("TweenedNumber", {
attrs: { wert: _vm.sales, precision: 2, einheit: "€" }
})
],
1
)
])
])
])
}
var staticRenderFns = [
function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("thead", [
_c("tr", [
_c("th", { staticClass: "right-align" }, [
_vm._v("\n Artikel\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "center-align" }, [
_vm._v("\n Beginn\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "center-align" }, [
_vm._v("\n Zugang\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "center-align" }, [
_vm._v("\n Ende\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "center-align" }, [
_vm._v("\n Verlust\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "right-align" }, [
_vm._v("\n Verkauft\n ")
]),
_vm._v(" "),
_c("th", { staticClass: "right-align" }, [
_vm._v("\n Summe\n ")
])
])
])
}
]
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a&":
/*!**************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/MaterializeSelect.vue?vue&type=template&id=28d5004a& ***!
\**************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"select",
{ domProps: { value: _vm.value } },
[
_c("option", { attrs: { value: "", disabled: "", selected: "" } }, [
_vm._v("\n Bitte wählen\n ")
]),
_vm._v(" "),
_vm._t("default")
],
2
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00&":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/NavigationBar.vue?vue&type=template&id=4d965e00& ***!
\**********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("nav", { staticClass: "nav-extended", class: _vm.primaryColor }, [
_c("div", { staticClass: "nav-wrapper container" }),
_vm._v(" "),
_c("div", { staticClass: "nav-content container" }, [
_c("ul", { staticClass: "tabs tabs-transparent" }, [
_c("li", { staticClass: "tab" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.stopPropagation()
$event.preventDefault()
return _vm.changeTab("inventory", $event)
}
}
},
[_vm._v("Inventur")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "tab" }, [
_c(
"a",
{
staticClass: "active",
attrs: { TweenedNumber: "" },
on: {
click: function($event) {
$event.stopPropagation()
$event.preventDefault()
return _vm.changeTab("article", $event)
}
}
},
[_vm._v("Artikelliste")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "tab" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.stopPropagation()
$event.preventDefault()
return _vm.changeTab("calc", $event)
}
}
},
[_vm._v("Rechner")]
)
])
])
])
])
}
var staticRenderFns = []
render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58&":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./app/js/components/TweenedNumber.vue?vue&type=template&id=2f547c58& ***!
\**********************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("span", { staticClass: "tweened" }, [
_vm._v("\n " + _vm._s(_vm.intAnimated) + "\n "),
_vm.precision > 0
? _c("span", [_vm._v("\n ," + _vm._s(_vm.deciAnimated) + "\n ")])
: _vm._e(),
_vm._v("\n " + _vm._s(_vm.einheit) + "\n")
])
}
var staticRenderFns = []
render._withStripped = true
/***/ })
/******/ });
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL0FwcC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL0FwcC52dWU/OWMyZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvQXBwLnZ1ZT8xMWU1Iiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0FydGljbGVDYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9BcnRpY2xlQ2FyZC52dWU/NmM1YyIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9BcnRpY2xlQ2FyZC52dWU/NGFjZiIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9BcnRpY2xlVmFyaWFudC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvQXJ0aWNsZVZhcmlhbnQudnVlPzNhMTQiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvQXJ0aWNsZVZhcmlhbnQudnVlPzcxZTYiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvQXJ0aWNsZXNWaWV3LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9BcnRpY2xlc1ZpZXcudnVlPzViMmIiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvQXJ0aWNsZXNWaWV3LnZ1ZT8wYzAyIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0NhbGN1bGF0b3IudnVlIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0NhbGN1bGF0b3IudnVlPzQ1ZjkiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvQ2FsY3VsYXRvci52dWU/NTdkMiIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlJdGVtLmNzcyIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlJdGVtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlJdGVtLnZ1ZT8wYjQ2Iiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0ludmVudG9yeUl0ZW0udnVlP2FmZjUiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvSW52ZW50b3J5VGFibGUuY3NzIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0ludmVudG9yeVRhYmxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlUYWJsZS52dWU/ZWM1NCIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlUYWJsZS52dWU/OGIyNSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9NYXRlcmlhbGl6ZVNlbGVjdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTWF0ZXJpYWxpemVTZWxlY3QudnVlPzkzZTIiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTWF0ZXJpYWxpemVTZWxlY3QudnVlPzgzYTIiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTmF2aWdhdGlvbkJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTmF2aWdhdGlvbkJhci52dWU/YmE3YSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9OYXZpZ2F0aW9uQmFyLnZ1ZT82MWRlIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL1R3ZWVuZWROdW1iZXIuY3NzIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL1R3ZWVuZWROdW1iZXIudnVlIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL1R3ZWVuZWROdW1iZXIudnVlP2Y5YjMiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvVHdlZW5lZE51bWJlci52dWU/ZWNkZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL21vZGVsL2FydGljbGUuanMiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL21vZGVsL2ludmVudG9yeV9hcnRpY2xlLmpzIiwid2VicGFjazovLy8uL2FwcC9qcy9tb2RlbC92YXJpYW50LmpzIiwid2VicGFjazovLy9hcHAvanMvQXBwLnZ1ZSIsIndlYnBhY2s6Ly8vYXBwL2pzL2NvbXBvbmVudHMvQXJ0aWNsZUNhcmQudnVlIiwid2VicGFjazovLy9hcHAvanMvY29tcG9uZW50cy9BcnRpY2xlVmFyaWFudC52dWUiLCJ3ZWJwYWNrOi8vL2FwcC9qcy9jb21wb25lbnRzL0FydGljbGVzVmlldy52dWUiLCJ3ZWJwYWNrOi8vL2FwcC9qcy9jb21wb25lbnRzL0NhbGN1bGF0b3IudnVlIiwid2VicGFjazovLy9hcHAvanMvY29tcG9uZW50cy9JbnZlbnRvcnlJdGVtLnZ1ZSIsIndlYnBhY2s6Ly8vYXBwL2pzL2NvbXBvbmVudHMvSW52ZW50b3J5VGFibGUudnVlIiwid2VicGFjazovLy9hcHAvanMvY29tcG9uZW50cy9NYXRlcmlhbGl6ZVNlbGVjdC52dWUiLCJ3ZWJwYWNrOi8vL2FwcC9qcy9jb21wb25lbnRzL05hdmlnYXRpb25CYXIudnVlIiwid2VicGFjazovLy9hcHAvanMvY29tcG9uZW50cy9Ud2VlbmVkTnVtYmVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvQXBwLnZ1ZT8wMjRkIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0FydGljbGVDYXJkLnZ1ZT8yYjIzIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0FydGljbGVWYXJpYW50LnZ1ZT9lNTQxIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0FydGljbGVzVmlldy52dWU/OWMyMSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9DYWxjdWxhdG9yLnZ1ZT81MjNhIiwid2VicGFjazovLy8uL2FwcC9qcy9jb21wb25lbnRzL0ludmVudG9yeUl0ZW0udnVlPzVkY2EiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvSW52ZW50b3J5VGFibGUudnVlP2JjNDkiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTWF0ZXJpYWxpemVTZWxlY3QudnVlP2QzZjAiLCJ3ZWJwYWNrOi8vLy4vYXBwL2pzL2NvbXBvbmVudHMvTmF2aWdhdGlvbkJhci52dWU/NjlkYSIsIndlYnBhY2s6Ly8vLi9hcHAvanMvY29tcG9uZW50cy9Ud2VlbmVkTnVtYmVyLnZ1ZT9lOWRkIl0sIm5hbWVzIjpbIlZ1ZSIsInByb3RvdHlwZSIsIiRodHRwIiwiQXhpb3MiLCIkTSIsIk0iLCJkZWxpbWl0ZXJzIiwiY29tcG9uZW50cyIsIkFwcCIsInRlbXBsYXRlIiwiJG1vdW50IiwiQXJ0aWNsZSIsImlkIiwibmFtZSIsInNob3J0IiwiZGltZW5zaW9uIiwiZ3JvdXAiLCJjb250ZW50Iiwic2l6ZSIsInByaWNlIiwicG9ydGlvbiIsInR5cGUiLCJ2YWx1ZSIsIlBvcnRpb25zIiwidGhhdyIsImpzb24iLCJhcnRpY2xlIiwiTmFtZSIsIlNob3J0IiwiRGltZW5zaW9uIiwiY29udGVudF9kaW1lbnNpb24iLCJDb250ZW50U2l6ZSIsImNvbnRlbnRfc2l6ZSIsIlBvcnRpb25QcmljZSIsInBvcnRpb25fcHJpY2UiLCJQb3J0aW9uU2l6ZSIsInBvcnRpb25fc2l6ZSIsIlBvcnRpb25UeXBlIiwicG9ydGlvbl9kaW1lbnNpb24iLCJHcm91cCIsImdyb3VwX2lkIiwidmFyaWFudHMiLCJ0aGF3QXJ0aWNsZSIsIkludmVudG9yeUFydGljbGUiLCJlbmQiLCJzdGFydCIsImZldGNoZWQiLCJsb3N0IiwiY291bnRGdWxsIiwiTWF0aCIsImZsb29yIiwiZnVsbFBvcnRpb25zIiwicmVzdCIsInJlc3RQb3J0aW9ucyIsImFkZHMiLCJTdGFydFBvcnRpb25zIiwiRmV0Y2hlZFBvcnRpb25zIiwic3VicyIsIkVuZFBvcnRpb25zIiwiTG9zdFBvcnRpb25zIiwiU29sZCIsInNpbmdsZVBhY2siLCJ0aGF3SW52ZW50b3J5QXJ0aWNsZSIsIlZhcmlhbnQiLCJhcnRpY2xlX2lkIiwidmFyaWFudCIsIkFydGljbGVJZCIsIlByaWNlIiwidGhhd1ZhcmlhbnQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLFFBQVEsb0JBQW9CO1FBQzVCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsaUJBQWlCLDRCQUE0QjtRQUM3QztRQUNBO1FBQ0Esa0JBQWtCLDJCQUEyQjtRQUM3QztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7UUFFQTtRQUNBO1FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImFwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0ZnVuY3Rpb24gd2VicGFja0pzb25wQ2FsbGJhY2soZGF0YSkge1xuIFx0XHR2YXIgY2h1bmtJZHMgPSBkYXRhWzBdO1xuIFx0XHR2YXIgbW9yZU1vZHVsZXMgPSBkYXRhWzFdO1xuIFx0XHR2YXIgZXhlY3V0ZU1vZHVsZXMgPSBkYXRhWzJdO1xuXG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVzb2x2ZXMgPSBbXTtcbiBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbiBcdFx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkgJiYgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSk7XG4gXHRcdFx0fVxuIFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IDA7XG4gXHRcdH1cbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRpZihwYXJlbnRKc29ucEZ1bmN0aW9uKSBwYXJlbnRKc29ucEZ1bmN0aW9uKGRhdGEpO1xuXG4gXHRcdHdoaWxlKHJlc29sdmVzLmxlbmd0aCkge1xuIFx0XHRcdHJlc29sdmVzLnNoaWZ0KCkoKTtcbiBcdFx0fVxuXG4gXHRcdC8vIGFkZCBlbnRyeSBtb2R1bGVzIGZyb20gbG9hZGVkIGNodW5rIHRvIGRlZmVycmVkIGxpc3RcbiBcdFx0ZGVmZXJyZWRNb2R1bGVzLnB1c2guYXBwbHkoZGVmZXJyZWRNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyB8fCBbXSk7XG5cbiBcdFx0Ly8gcnVuIGRlZmVycmVkIG1vZHVsZXMgd2hlbiBhbGwgY2h1bmtzIHJlYWR5XG4gXHRcdHJldHVybiBjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIFx0fTtcbiBcdGZ1bmN0aW9uIGNoZWNrRGVmZXJyZWRNb2R1bGVzKCkge1xuIFx0XHR2YXIgcmVzdWx0O1xuIFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0dmFyIGRlZmVycmVkTW9kdWxlID0gZGVmZXJyZWRNb2R1bGVzW2ldO1xuIFx0XHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuIFx0XHRcdGZvcih2YXIgaiA9IDE7IGogPCBkZWZlcnJlZE1vZHVsZS5sZW5ndGg7IGorKykge1xuIFx0XHRcdFx0dmFyIGRlcElkID0gZGVmZXJyZWRNb2R1bGVbal07XG4gXHRcdFx0XHRpZihpbnN0YWxsZWRDaHVua3NbZGVwSWRdICE9PSAwKSBmdWxmaWxsZWQgPSBmYWxzZTtcbiBcdFx0XHR9XG4gXHRcdFx0aWYoZnVsZmlsbGVkKSB7XG4gXHRcdFx0XHRkZWZlcnJlZE1vZHVsZXMuc3BsaWNlKGktLSwgMSk7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGRlZmVycmVkTW9kdWxlWzBdKTtcbiBcdFx0XHR9XG4gXHRcdH1cblxuIFx0XHRyZXR1cm4gcmVzdWx0O1xuIFx0fVxuXG4gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0Ly8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4gXHQvLyBQcm9taXNlID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0XCJhcHBcIjogMFxuIFx0fTtcblxuIFx0dmFyIGRlZmVycmVkTW9kdWxlcyA9IFtdO1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9idWlsZC9cIjtcblxuIFx0dmFyIGpzb25wQXJyYXkgPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0gfHwgW107XG4gXHR2YXIgb2xkSnNvbnBGdW5jdGlvbiA9IGpzb25wQXJyYXkucHVzaC5iaW5kKGpzb25wQXJyYXkpO1xuIFx0anNvbnBBcnJheS5wdXNoID0gd2VicGFja0pzb25wQ2FsbGJhY2s7XG4gXHRqc29ucEFycmF5ID0ganNvbnBBcnJheS5zbGljZSgpO1xuIFx0Zm9yKHZhciBpID0gMDsgaSA8IGpzb25wQXJyYXkubGVuZ3RoOyBpKyspIHdlYnBhY2tKc29ucENhbGxiYWNrKGpzb25wQXJyYXlbaV0pO1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24gPSBvbGRKc29ucEZ1bmN0aW9uO1xuXG5cbiBcdC8vIGFkZCBlbnRyeSBtb2R1bGUgdG8gZGVmZXJyZWQgbGlzdFxuIFx0ZGVmZXJyZWRNb2R1bGVzLnB1c2goW1wiLi9hcHAvanMvaW5kZXguanNcIixcInZlbmRvcnN+YXBwXCJdKTtcbiBcdC8vIHJ1biBkZWZlcnJlZCBtb2R1bGVzIHdoZW4gcmVhZHlcbiBcdHJldHVybiBjaGVja0RlZmVycmVkTW9kdWxlcygpO1xuIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWYzZDhlOTEyJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi92YXIvd3d3L2h0bWwvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnZjNkOGU5MTInKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnZjNkOGU5MTInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnZjNkOGU5MTInLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FwcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjNkOGU5MTImXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignZjNkOGU5MTInLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9BcHAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mM2Q4ZTkxMiZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXJ0aWNsZUNhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzYzZiOGYyJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FydGljbGVDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXJ0aWNsZUNhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvdmFyL3d3dy9odG1sL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzIzYzZiOGYyJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzIzYzZiOGYyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzIzYzZiOGYyJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BcnRpY2xlQ2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjNjNmI4ZjImXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMjNjNmI4ZjInLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9jb21wb25lbnRzL0FydGljbGVDYXJkLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXJ0aWNsZUNhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FydGljbGVDYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcnRpY2xlQ2FyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjNjNmI4ZjImXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0FydGljbGVWYXJpYW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMWFhOGI0NCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcnRpY2xlVmFyaWFudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FydGljbGVWYXJpYW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3Zhci93d3cvaHRtbC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCczMWFhOGI0NCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCczMWFhOGI0NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCczMWFhOGI0NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQXJ0aWNsZVZhcmlhbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMxYWE4YjQ0JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzMxYWE4YjQ0Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhcHAvanMvY29tcG9uZW50cy9BcnRpY2xlVmFyaWFudC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FydGljbGVWYXJpYW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcnRpY2xlVmFyaWFudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXJ0aWNsZVZhcmlhbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMxYWE4YjQ0JlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BcnRpY2xlc1ZpZXcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MjA3MjcxJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FydGljbGVzVmlldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FydGljbGVzVmlldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi92YXIvd3d3L2h0bWwvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNTUyMDcyNzEnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNTUyMDcyNzEnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNTUyMDcyNzEnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FydGljbGVzVmlldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTUyMDcyNzEmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNTUyMDcyNzEnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9jb21wb25lbnRzL0FydGljbGVzVmlldy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FydGljbGVzVmlldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXJ0aWNsZXNWaWV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcnRpY2xlc1ZpZXcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MjA3MjcxJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9DYWxjdWxhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lODk5YTY5ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DYWxjdWxhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ2FsY3VsYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi92YXIvd3d3L2h0bWwvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnZTg5OWE2OWUnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnZTg5OWE2OWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnZTg5OWE2OWUnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NhbGN1bGF0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU4OTlhNjllJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2U4OTlhNjllJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhcHAvanMvY29tcG9uZW50cy9DYWxjdWxhdG9yLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2FsY3VsYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2FsY3VsYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ2FsY3VsYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTg5OWE2OWUmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0ludmVudG9yeUl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFiNWJlMjMwJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0ludmVudG9yeUl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9JbnZlbnRvcnlJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3Zhci93d3cvaHRtbC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxYjViZTIzMCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxYjViZTIzMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxYjViZTIzMCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW52ZW50b3J5SXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWI1YmUyMzAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMWI1YmUyMzAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9jb21wb25lbnRzL0ludmVudG9yeUl0ZW0udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnZlbnRvcnlJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnZlbnRvcnlJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnZlbnRvcnlJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjViZTIzMCZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vSW52ZW50b3J5VGFibGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViZDlhMjAxJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0ludmVudG9yeVRhYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW52ZW50b3J5VGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCIvdmFyL3d3dy9odG1sL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzViZDlhMjAxJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzViZDlhMjAxJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzViZDlhMjAxJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbnZlbnRvcnlUYWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJkOWEyMDEmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNWJkOWEyMDEnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9jb21wb25lbnRzL0ludmVudG9yeVRhYmxlLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vSW52ZW50b3J5VGFibGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ludmVudG9yeVRhYmxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9JbnZlbnRvcnlUYWJsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJkOWEyMDEmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL01hdGVyaWFsaXplU2VsZWN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOGQ1MDA0YSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NYXRlcmlhbGl6ZVNlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL01hdGVyaWFsaXplU2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3Zhci93d3cvaHRtbC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyOGQ1MDA0YScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyOGQ1MDA0YScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyOGQ1MDA0YScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTWF0ZXJpYWxpemVTZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4ZDUwMDRhJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzI4ZDUwMDRhJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhcHAvanMvY29tcG9uZW50cy9NYXRlcmlhbGl6ZVNlbGVjdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTAtMCEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01hdGVyaWFsaXplU2VsZWN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NYXRlcmlhbGl6ZVNlbGVjdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWF0ZXJpYWxpemVTZWxlY3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4ZDUwMDRhJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9OYXZpZ2F0aW9uQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZDk2NWUwMCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OYXZpZ2F0aW9uQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmF2aWdhdGlvbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi92YXIvd3d3L2h0bWwvbm9kZV9tb2R1bGVzL3Z1ZS1ob3QtcmVsb2FkLWFwaS9kaXN0L2luZGV4LmpzXCIpXG4gIGFwaS5pbnN0YWxsKHJlcXVpcmUoJ3Z1ZScpKVxuICBpZiAoYXBpLmNvbXBhdGlibGUpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gICAgaWYgKCFhcGkuaXNSZWNvcmRlZCgnNGQ5NjVlMDAnKSkge1xuICAgICAgYXBpLmNyZWF0ZVJlY29yZCgnNGQ5NjVlMDAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbG9hZCgnNGQ5NjVlMDAnLCBjb21wb25lbnQub3B0aW9ucylcbiAgICB9XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05hdmlnYXRpb25CYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkOTY1ZTAwJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzRkOTY1ZTAwJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhcHAvanMvY29tcG9uZW50cy9OYXZpZ2F0aW9uQmFyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmF2aWdhdGlvbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMC0wIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmF2aWdhdGlvbkJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTmF2aWdhdGlvbkJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQ5NjVlMDAmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1R3ZWVuZWROdW1iZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJmNTQ3YzU4JlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1R3ZWVuZWROdW1iZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Ud2VlbmVkTnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3Zhci93d3cvaHRtbC9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcyZjU0N2M1OCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcyZjU0N2M1OCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcyZjU0N2M1OCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHdlZW5lZE51bWJlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmY1NDdjNTgmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMmY1NDdjNTgnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImFwcC9qcy9jb21wb25lbnRzL1R3ZWVuZWROdW1iZXIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ud2VlbmVkTnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS0wLTAhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ud2VlbmVkTnVtYmVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ud2VlbmVkTnVtYmVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZjU0N2M1OCZcIiIsImltcG9ydCBWdWUgZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IEFwcCBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCAnbWF0ZXJpYWxpemUtY3NzL2Rpc3QvY3NzL21hdGVyaWFsaXplLm1pbi5jc3MnO1xuaW1wb3J0IEF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBNIGZyb20gJ21hdGVyaWFsaXplLWNzcyc7XG5cblZ1ZS5wcm90b3R5cGUuJGh0dHAgPSBBeGlvcztcblZ1ZS5wcm90b3R5cGUuJE0gPSBNO1xuXG5uZXcgVnVlKHtcbiAgZGVsaW1pdGVyczogW1wiJHtcIiwgXCJ9XCJdLFxuICBjb21wb25lbnRzOiB7XG4gICAgQXBwXG4gIH0sXG4gIHRlbXBsYXRlOiBcIjxBcHAvPlwiXG59KS4kbW91bnQoXCIjYXBwXCIpOyIsImV4cG9ydCBjbGFzcyBBcnRpY2xle1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gMDtcbiAgICB0aGlzLm5hbWUgPSBcIlwiO1xuICAgIHRoaXMuc2hvcnQgPSBcIlwiO1xuICAgIHRoaXMuZGltZW5zaW9uID0gMDtcbiAgICB0aGlzLmdyb3VwID0gMDtcbiAgICB0aGlzLmNvbnRlbnQgPSB7XG4gICAgICBzaXplIDogMCxcbiAgICAgIHByaWNlOiAwXG4gICAgfTtcbiAgICB0aGlzLnBvcnRpb24gPSB7XG4gICAgICBzaXplIDogMCxcbiAgICAgIHByaWNlIDogMCxcbiAgICAgIHR5cGUgOiAwXG4gICAgfTtcbiAgfVxuICBnZXQgTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG4gIHNldCBOYW1lKHZhbHVlKSB7XG4gICAgdGhpcy5uYW1lID0gdmFsdWU7XG4gIH1cbiAgZ2V0IFNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLnNob3J0O1xuICB9XG4gIHNldCBTaG9ydCh2YWx1ZSkge1xuICAgIHRoaXMuc2hvcnQgPSB2YWx1ZTtcbiAgfVxuICBnZXQgQ29udGVudFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudC5zaXplO1xuICB9XG4gIHNldCBDb250ZW50U2l6ZSh2YWx1ZSkge1xuICAgIHRoaXMuY29udGVudC5zaXplID0gdmFsdWU7XG4gIH1cbiAgZ2V0IERpbWVuc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kaW1lbnNpb247XG4gIH1cbiAgc2V0IERpbWVuc2lvbih2YWx1ZSkge1xuICAgIHRoaXMuZGltZW5zaW9uID0gdmFsdWU7XG4gIH1cbiAgZ2V0IFBvcnRpb25TaXplKCkge1xuICAgIHJldHVybiB0aGlzLnBvcnRpb24uc2l6ZTtcbiAgfVxuICBzZXQgUG9ydGlvblNpemUodmFsdWUpIHtcbiAgICB0aGlzLnBvcnRpb24uc2l6ZSA9IHZhbHVlO1xuICB9XG4gIGdldCBQb3J0aW9uVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wb3J0aW9uLnR5cGU7XG4gIH1cbiAgc2V0IFBvcnRpb25UeXBlKHZhbHVlKSB7XG4gICAgdGhpcy5wb3J0aW9uLnR5cGUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgUG9ydGlvblByaWNlKCkge1xuICAgIHJldHVybiB0aGlzLnBvcnRpb24ucHJpY2U7XG4gIH1cbiAgc2V0IFBvcnRpb25QcmljZSh2YWx1ZSkge1xuICAgIHRoaXMucG9ydGlvbi5wcmljZSA9IHZhbHVlO1xuICB9XG4gIGdldCBHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cDtcbiAgfVxuICBzZXQgR3JvdXAodmFsdWUpIHtcbiAgICB0aGlzLmdyb3VwID0gdmFsdWU7XG4gIH1cbiAgZ2V0IENvbnRlbnRQcmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5Qb3J0aW9ucyAqIHRoaXMucG9ydGlvbi5wcmljZTtcbiAgfVxuICBnZXQgUG9ydGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudC5zaXplIC8gKHRoaXMucG9ydGlvbi5zaXplIHx8IDEpO1xuICB9XG59XG5cbkFydGljbGUudGhhdyA9IGZ1bmN0aW9uIChqc29uKSB7XG4gIHZhciBhcnRpY2xlID0gbmV3IEFydGljbGUoKTtcbiAgYXJ0aWNsZS5pZCA9IGpzb24uaWQ7XG4gIGFydGljbGUuTmFtZSA9IGpzb24ubmFtZTtcbiAgYXJ0aWNsZS5TaG9ydCA9IGpzb24uc2hvcnQ7XG4gIGFydGljbGUuRGltZW5zaW9uID0ganNvbi5jb250ZW50X2RpbWVuc2lvbjtcbiAgYXJ0aWNsZS5Db250ZW50U2l6ZSA9IGpzb24uY29udGVudF9zaXplO1xuICBhcnRpY2xlLlBvcnRpb25QcmljZSA9IGpzb24ucG9ydGlvbl9wcmljZTtcbiAgYXJ0aWNsZS5Qb3J0aW9uU2l6ZSA9IGpzb24ucG9ydGlvbl9zaXplO1xuICBhcnRpY2xlLlBvcnRpb25UeXBlID0ganNvbi5wb3J0aW9uX2RpbWVuc2lvbjtcbiAgYXJ0aWNsZS5Hcm91cCA9IGpzb24uZ3JvdXBfaWQ7XG4gIGFydGljbGUudmFyaWFudHMgPSBqc29uLnZhcmlhbnRzO1xuXG4gIHJldHVybiBhcnRpY2xlO1xufTtcblxuZXhwb3J0IGNvbnN0IHRoYXdBcnRpY2xlID0gQXJ0aWNsZS50aGF3O1xuIiwiZXhwb3J0IGNsYXNzIEludmVudG9yeUFydGljbGUge1xuICBjb25zdHJ1Y3RvcihhcnRpY2xlKSB7XG4gICAgdGhpcy5hcnRpY2xlID0gYXJ0aWNsZTtcbiAgICB0aGlzLmVuZCA9IDA7XG4gICAgdGhpcy5zdGFydCA9IDA7XG4gICAgdGhpcy5mZXRjaGVkID0gMDtcbiAgICB0aGlzLmxvc3QgPSAwO1xuICB9XG4gIGdldCBTdGFydFBvcnRpb25zKCkge1xuICAgIHZhciBjb3VudEZ1bGwgPSBNYXRoLmZsb29yKHRoaXMuc3RhcnQpO1xuICAgIHZhciBmdWxsUG9ydGlvbnMgPSBjb3VudEZ1bGwgKiB0aGlzLmFydGljbGUuUG9ydGlvbnM7XG4gICAgdmFyIHJlc3QgPSB0aGlzLnN0YXJ0IC0gY291bnRGdWxsO1xuICAgIHZhciByZXN0UG9ydGlvbnMgPSByZXN0IC8gdGhpcy5hcnRpY2xlLlBvcnRpb25TaXplO1xuXG4gICAgcmV0dXJuIGZ1bGxQb3J0aW9ucyArIHJlc3RQb3J0aW9ucztcbiAgfVxuICBnZXQgRmV0Y2hlZFBvcnRpb25zKCkge1xuICAgIHZhciBjb3VudEZ1bGwgPSBNYXRoLmZsb29yKHRoaXMuZmV0Y2hlZCk7XG4gICAgdmFyIGZ1bGxQb3J0aW9ucyA9IGNvdW50RnVsbCAqIHRoaXMuYXJ0aWNsZS5Qb3J0aW9ucztcbiAgICB2YXIgcmVzdCA9IHRoaXMuZmV0Y2hlZCAtIGNvdW50RnVsbDtcbiAgICB2YXIgcmVzdFBvcnRpb25zID0gcmVzdCAvIHRoaXMuYXJ0aWNsZS5Qb3J0aW9uU2l6ZTtcblxuICAgIHJldHVybiBmdWxsUG9ydGlvbnMgKyByZXN0UG9ydGlvbnM7XG4gIH1cbiAgZ2V0IEVuZFBvcnRpb25zKCkge1xuICAgIHZhciBjb3VudEZ1bGwgPSBNYXRoLmZsb29yKHRoaXMuZW5kKTtcbiAgICB2YXIgZnVsbFBvcnRpb25zID0gY291bnRGdWxsICogdGhpcy5hcnRpY2xlLlBvcnRpb25zO1xuICAgIHZhciByZXN0ID0gdGhpcy5lbmQgLSBjb3VudEZ1bGw7XG4gICAgdmFyIHJlc3RQb3J0aW9ucyA9IHJlc3QgLyB0aGlzLmFydGljbGUuUG9ydGlvblNpemU7XG5cbiAgICByZXR1cm4gZnVsbFBvcnRpb25zICsgcmVzdFBvcnRpb25zO1xuICB9XG4gIGdldCBMb3N0UG9ydGlvbnMoKSB7XG4gICAgdmFyIGNvdW50RnVsbCA9IE1hdGguZmxvb3IodGhpcy5sb3N0KTtcbiAgICB2YXIgZnVsbFBvcnRpb25zID0gY291bnRGdWxsICogdGhpcy5hcnRpY2xlLlBvcnRpb25zO1xuICAgIHZhciByZXN0ID0gdGhpcy5sb3N0IC0gY291bnRGdWxsO1xuICAgIHZhciByZXN0UG9ydGlvbnMgPSByZXN0IC8gdGhpcy5hcnRpY2xlLlBvcnRpb25TaXplO1xuXG4gICAgcmV0dXJuIGZ1bGxQb3J0aW9ucyArIHJlc3RQb3J0aW9ucztcbiAgfVxuICBnZXQgU29sZCgpIHtcbiAgICB2YXIgYWRkcyA9IHRoaXMuU3RhcnRQb3J0aW9ucyArIHRoaXMuRmV0Y2hlZFBvcnRpb25zO1xuICAgIHZhciBzdWJzID0gdGhpcy5FbmRQb3J0aW9ucyArIHRoaXMuTG9zdFBvcnRpb25zO1xuICAgIHJldHVybiBhZGRzIC0gc3VicztcbiAgfVxuICBnZXQgU2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5Tb2xkICogdGhpcy5hcnRpY2xlLlBvcnRpb25QcmljZTtcbiAgfVxuICBnZXQgU3RlcFNpemUoKSB7XG4gICAgdmFyIHNpbmdsZVBhY2sgPSB0aGlzLmFydGljbGUuUG9ydGlvbnMgPT0gMTtcbiAgICByZXR1cm4gc2luZ2xlUGFjayA/IDEgOiAwLjA1O1xuICB9XG4gIGdldCBQb3J0aW9uUHJlY2lzaW9uKCkge1xuICAgIHZhciBzaW5nbGVQYWNrID0gdGhpcy5hcnRpY2xlLlBvcnRpb25zID09IDE7XG4gICAgcmV0dXJuIHNpbmdsZVBhY2sgPyAwIDogMjtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICB0aGlzLmZldGNoZWQgPSAwO1xuICAgIHRoaXMuZW5kID0gMDtcbiAgICB0aGlzLmxvc3QgPSAwO1xuICB9XG59XG5cbkludmVudG9yeUFydGljbGUudGhhdyA9IGZ1bmN0aW9uIChqc29uKSB7XG4gIHRoaXMubmFtZSA9IGpzb24ubmFtZTtcbiAgdGhpcy5zdGFydCA9IGpzb24uc3RhcnQ7XG4gIHRoaXMuZmV0Y2hlZCA9IGpzb24uZmV0Y2hlZDtcbiAgdGhpcy5lbmQgPSBqc29uLmVuZDtcbiAgdGhpcy5sb3N0ID0ganNvbi5sb3N0O1xufTtcbmV4cG9ydCBjb25zdCB0aGF3SW52ZW50b3J5QXJ0aWNsZSA9IEludmVudG9yeUFydGljbGUudGhhdzsiLCJleHBvcnQgY2xhc3MgVmFyaWFudHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pZCA9IDA7XG4gICAgdGhpcy5uYW1lID0gXCJcIjtcbiAgICB0aGlzLmFydGljbGVfaWQgPSAwO1xuICAgIHRoaXMucHJpY2UgPSAwO1xuICB9XG4gIGdldCBOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cbiAgc2V0IE5hbWUodmFsdWUpIHtcbiAgICB0aGlzLm5hbWUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgQXJ0aWNsZUlkKCkge1xuICAgIHJldHVybiB0aGlzLmFydGljbGVfaWQ7XG4gIH1cbiAgc2V0IEFydGljbGVJZCh2YWx1ZSkge1xuICAgIHRoaXMuYXJ0aWNsZV9pZCA9IHZhbHVlO1xuICB9XG4gIGdldCBQcmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmljZTtcbiAgfVxuICBzZXQgUHJpY2UodmFsdWUpIHtcbiAgICB0aGlzLnByaWNlID0gdmFsdWU7XG4gIH1cbn1cblxuVmFyaWFudC50aGF3ID0gZnVuY3Rpb24gKGpzb24pIHtcbiAgdmFyIHZhcmlhbnQgPSBuZXcgVmFyaWFudCgpO1xuICB2YXJpYW50LmlkID0ganNvbi5pZDtcbiAgdmFyaWFudC5OYW1lID0ganNvbi5uYW1lO1xuICB2YXJpYW50LkFydGljbGVJZCA9IGpzb24uYXJ0aWNsZV9pZDtcbiAgdmFyaWFudC5QcmljZSA9IGpzb24ucHJpY2U7XG5cbiAgcmV0dXJuIHZhcmlhbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgdGhhd1ZhcmlhbnQgPSBWYXJpYW50LnRoYXc7XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPE5hdmlnYXRpb25CYXJcbiAgICAgIDpwcmltYXJ5LWNvbG9yPVwicHJpbWFyeUNvbG9yXCJcbiAgICAgIEBjaGFuZ2VkLXRhYj1cImNoYW5nZVZpZXdcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICB2LWlmPVwiIXJlYWR5XCJcbiAgICAgICAgY2xhc3M9XCJ2YWxpZ24td3JhcHBlclwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA5MHZoXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRyYW5zaXRpb24gbmFtZT1cImZhZGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJyZWFkeSAmJiB2aWV3ID09ICdpbnZlbnRvcnknXCJcbiAgICAgICAgICBpZD1cImludmVudG9yeVwiXG4gICAgICAgICAgY2xhc3M9XCJjb2wgczEyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxJbnZlbnRvcnlUYWJsZVxuICAgICAgICAgICAgcmVmPVwiaW52ZW50b3J5XCJcbiAgICAgICAgICAgIDphcnRpY2xlcz1cImFydGljbGVzXCJcbiAgICAgICAgICAgIDpncm91cHM9XCJncm91cHNcIlxuICAgICAgICAgICAgOmRpbWVuc2lvbnM9XCJkaW1lbnNpb25zXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJyZWFkeSAmJiB2aWV3ID09ICdjYWxjJ1wiXG4gICAgICAgICAgaWQ9XCJjYWxjXCJcbiAgICAgICAgICBjbGFzcz1cImNvbCBzMTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENhbGN1bGF0b3IgOmFydGljbGVzPVwiYXJ0aWNsZXNcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtaWY9XCJyZWFkeSAmJiB2aWV3ID09ICdhcnRpY2xlJ1wiXG4gICAgICAgICAgaWQ9XCJhcnRpY2xlXCJcbiAgICAgICAgICBjbGFzcz1cImNvbCBzMTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPEFydGljbGVzVmlld1xuICAgICAgICAgICAgOmFydGljbGVzPVwiYXJ0aWNsZXNcIlxuICAgICAgICAgICAgOmdyb3Vwcz1cImdyb3Vwc1wiXG4gICAgICAgICAgICA6ZGltZW5zaW9ucz1cImRpbWVuc2lvbnNcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90cmFuc2l0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIHJlZj1cImZhYlwiXG4gICAgICBjbGFzcz1cImZpeGVkLWFjdGlvbi1idG5cIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiYnRuLWZsb2F0aW5nIGJ0bi1sYXJnZVwiXG4gICAgICAgIDpjbGFzcz1cInByaW1hcnlDb2xvclwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwibGFyZ2UgbWF0ZXJpYWwtaWNvbnNcIj5tb3JlX3ZlcnQ8L2k+XG4gICAgICA8L2E+XG4gICAgICA8dWw+XG4gICAgICAgIDxsaSB2LXNob3c9XCJ2aWV3ID09ICdhcnRpY2xlJ1wiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1mbG9hdGluZyB0b29sdGlwcGVkXCJcbiAgICAgICAgICAgIGRhdGEtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgIGRhdGEtdG9vbHRpcD1cIkFydGlrZWwgaGluenVmw7xnZW5cIlxuICAgICAgICAgICAgQGNsaWNrPVwiYWRkQXJ0aWNsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmFkZDwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSB2LXNob3c9XCJ2aWV3ID09ICdpbnZlbnRvcnknXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWZsb2F0aW5nIHRvb2x0aXBwZWRcIlxuICAgICAgICAgICAgZGF0YS1wb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgZGF0YS10b29sdGlwPVwiSW52ZW50dXIgenVyw7xja3NldHplblwiXG4gICAgICAgICAgICBAY2xpY2s9XCIkcmVmcy5pbnZlbnRvcnkuJGVtaXQoJ3Jlc2V0LWludmVudHVyJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbGVhcl9hbGw8L2k+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgdi1zaG93PVwidmlldyA9PSAnaW52ZW50b3J5J1wiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1mbG9hdGluZyB0b29sdGlwcGVkXCJcbiAgICAgICAgICAgIGRhdGEtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgIGRhdGEtdG9vbHRpcD1cIkludmVudHVyIGV4cG9ydGllcmVuXCJcbiAgICAgICAgICAgIEBjbGljaz1cIiRyZWZzLmludmVudG9yeS4kZW1pdCgnZXhwb3J0LWludmVudHVyJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5zYXZlPC9pPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBDYWxjdWxhdG9yIGZyb20gJy4vY29tcG9uZW50cy9DYWxjdWxhdG9yJztcbmltcG9ydCBJbnZlbnRvcnlUYWJsZSBmcm9tICcuL2NvbXBvbmVudHMvSW52ZW50b3J5VGFibGUnO1xuaW1wb3J0IEFydGljbGVzVmlldyBmcm9tICcuL2NvbXBvbmVudHMvQXJ0aWNsZXNWaWV3JztcbmltcG9ydCBOYXZpZ2F0aW9uQmFyIGZyb20gJy4vY29tcG9uZW50cy9OYXZpZ2F0aW9uQmFyJztcbmltcG9ydCB7QXJ0aWNsZSwgdGhhd0FydGljbGV9IGZyb20gJy4vbW9kZWwvYXJ0aWNsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJBcHBcIixcbiAgY29tcG9uZW50czogeyBJbnZlbnRvcnlUYWJsZSwgTmF2aWdhdGlvbkJhciwgQ2FsY3VsYXRvciwgQXJ0aWNsZXNWaWV3IH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFydGljbGVzOiBbXSxcbiAgICAgIGRpbWVuc2lvbnM6IFtdLFxuICAgICAgZ3JvdXBzOiBbXSxcbiAgICAgIGJvbjogW10sXG4gICAgICBjYXJldFBvc2l0aW9uOiAwLFxuICAgICAgZmFiOiBudWxsLFxuICAgICAgdmlldzogXCJhcnRpY2xlXCIsXG4gICAgICBsb2NhdGlvbjogJ2ZhaXJ3ZXJ0YmFyJ1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgcHJpbWFyeUNvbG9yKCkge1xuICAgICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcbiAgICAgIGNhc2UgXCJpbnZlbnRvcnlcIjpcbiAgICAgICAgcmV0dXJuIFwidGVhbFwiO1xuICAgICAgY2FzZSBcImNhbGNcIjpcbiAgICAgICAgcmV0dXJuIFwib3JhbmdlXCI7XG4gICAgICBjYXNlIFwiYXJ0aWNsZVwiOlxuICAgICAgICByZXR1cm4gXCJibHVlXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJyZWRcIjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlYWR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGltZW5zaW9ucy5sZW5ndGggJiYgdGhpcy5ncm91cHMubGVuZ3RoO1xuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5sb2FkRGltZW5zaW9ucygpO1xuICAgIHRoaXMubG9hZEdyb3VwcygpO1xuICAgIHRoaXMubG9hZEFydGljbGVzKCk7XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdmFyIGZhYiA9IHRoaXMuJHJlZnMuZmFiO1xuICAgIHRoaXMuZmFiID0gdGhpcy4kTS5GbG9hdGluZ0FjdGlvbkJ1dHRvbi5pbml0KGZhYiwge30pO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2hhbmdlVmlldyh0YWJJZCkge1xuICAgICAgdGhpcy52aWV3ID0gdGFiSWQ7XG4gICAgfSxcbiAgICBhZGRBcnRpY2xlOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuYXJ0aWNsZXMucHVzaChuZXcgQXJ0aWNsZSgpKTtcbiAgICB9LFxuICAgIGxvYWREaW1lbnNpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhcHAgPSB0aGlzO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZ2V0KFwiYXBpL2RpbWVuc2lvblwiKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGpzb24gPT4ge1xuICAgICAgICAgIGlmIChqc29uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGpzb24uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgYXBwLmRpbWVuc2lvbnMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuJE0udG9hc3QoeyBodG1sOiBcIkRpbWVuc2lvbmVuIHd1cmRlbiBnZWxhZGVuLlwiIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGxvYWRHcm91cHM6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFwcCA9IHRoaXM7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5nZXQoXCJhcGkvZ3JvdXBcIilcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbihqc29uID0+IHtcbiAgICAgICAgICBpZiAoanNvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBqc29uLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGFwcC5ncm91cHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuJE0udG9hc3QoeyBodG1sOiBcIkFydGlrZWxncnVwcGVuIHd1cmRlbiBnZWxhZGVuLlwiIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGxvYWRBcnRpY2xlczogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYXBwID0gdGhpcztcbiAgICAgIHRoaXMuJGh0dHBcbiAgICAgICAgLmdldChcImFwaS9hcnRpa2VsXCIpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oanNvbiA9PiB7XG4gICAgICAgICAgaWYgKGpzb24gIT0gbnVsbCkge1xuICAgICAgICAgICAganNvbi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICBhcHAuYXJ0aWNsZXMucHVzaCh0aGF3QXJ0aWNsZShlbGVtZW50KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogXCJBcnRpa2VsIHd1cmRlbiBnZWxhZGVuLlwiIH0pO1xuICAgICAgICAgIHRoaXMuJE0udXBkYXRlVGV4dEZpZWxkcygpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGV4cG9ydEludmVudHVyKCkge1xuXG4gICAgfVxuICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbjwvc3R5bGU+XG5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgICAge3sgYXJ0aWNsZS5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtdGFic1wiPlxuICAgICAgPHVsIGNsYXNzPVwidGFicyB0YWJzLWZpeGVkLXdpZHRoXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cInRhYlwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICA6aHJlZj1cIicjJyArIGlkZW50aWZpZXIgKyAnX2luZm8nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgICAgICA+SW5mbzwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwidGFiXCI+XG4gICAgICAgICAgPGEgOmhyZWY9XCInIycgKyBpZGVudGlmaWVyICsgJ192YXJpYW50cydcIj5WYXJpYW50ZW48L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgPGRpdlxuICAgICAgICA6aWQ9XCJpZGVudGlmaWVyICsgJ19pbmZvJ1wiXG4gICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIGlubGluZSBjb2wgczhcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDppZD1cIidhX25hbWVfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cImFydGljbGUubmFtZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFydGlrZWxuYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIDpmb3I9XCInYV9uYW1lXycgKyBhcnRpY2xlLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgICAgICA+TmFtZTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgaW5saW5lIGNvbCBzNFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmlkPVwiJ2Ffc2hvcnRfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cImFydGljbGUuc2hvcnRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJLdXJ6bmFtZVwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Zm9yPVwiJ2Ffc2hvcnRfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmVcIlxuICAgICAgICAgID5Lw7xyemVsPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBjb2wgczRcIj5cbiAgICAgICAgICA8bWF0ZXJpYWxpemUtc2VsZWN0XG4gICAgICAgICAgICA6aWQ9XCInYV9ncm91cF8nICsgYXJ0aWNsZS5pZFwiXG4gICAgICAgICAgICB2LW1vZGVsLm51bWJlcj1cImFydGljbGUuZ3JvdXBcIlxuICAgICAgICAgICAgOnZhbHVlPVwiYXJ0aWNsZS5ncm91cFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFydGlrZWxncnVwcGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgdi1mb3I9XCJncm91cCBpbiBncm91cHNcIlxuICAgICAgICAgICAgICA6a2V5PVwiZ3JvdXAuaWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCJncm91cC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGdyb3VwLm5hbWUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvbWF0ZXJpYWxpemUtc2VsZWN0PlxuICAgICAgICAgIDxsYWJlbCA6Zm9yPVwiJ2FfZ3JvdXBfJyArIGFydGljbGUuaWRcIj5BcnRpa2VsZ3J1cHBlPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBjb2wgczRcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDppZD1cIidhX2NzaXplXycgKyBhcnRpY2xlLmlkXCJcbiAgICAgICAgICAgIHYtbW9kZWwubnVtYmVyPVwiYXJ0aWNsZS5jb250ZW50LnNpemVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJHZXNhbXRpbmhhbHRcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRlXCJcbiAgICAgICAgICAgIHN0ZXA9XCIwLjAxXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Zm9yPVwiJ2FfY3NpemVfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmVcIlxuICAgICAgICAgID5HZXNhbXRpbmhhbHQ8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIGNvbCBzNFwiPlxuICAgICAgICAgIDxtYXRlcmlhbGl6ZS1zZWxlY3RcbiAgICAgICAgICAgIDppZD1cIidhX2RpbV8nICsgYXJ0aWNsZS5pZFwiXG4gICAgICAgICAgICB2LW1vZGVsLm51bWJlcj1cImFydGljbGUuZGltZW5zaW9uXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cImFydGljbGUuZGltZW5zaW9uXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGltZW5zaW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIHYtZm9yPVwiZGltIGluIGRpbWVuc2lvbnNcIlxuICAgICAgICAgICAgICA6a2V5PVwiZGltLmlkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiZGltLmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZGltLm5hbWUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvbWF0ZXJpYWxpemUtc2VsZWN0PlxuICAgICAgICAgIDxsYWJlbCA6Zm9yPVwiJ2FfZGltXycgKyBhcnRpY2xlLmlkXCI+RGltZW5zaW9uPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIGNvbCBzNFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmlkPVwiJ2FfcHNpemVfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgdi1tb2RlbC5udW1iZXI9XCJhcnRpY2xlLnBvcnRpb24uc2l6ZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkdlc2FtdGluaGFsdFwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGVcIlxuICAgICAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgICAgICAgbWF4PVwiNVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmZvcj1cIidhX3BzaXplXycgKyBhcnRpY2xlLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgICAgICA+UG9ydGlvbnNpbmhhbHQ8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIGNvbCBzNFwiPlxuICAgICAgICAgIDxNYXRlcmlhbGl6ZVNlbGVjdFxuICAgICAgICAgICAgOmlkPVwiJ2FfcHR5cGVfJyArIGFydGljbGUuaWRcIlxuICAgICAgICAgICAgdi1tb2RlbC5udW1iZXI9XCJhcnRpY2xlLnBvcnRpb24udHlwZVwiXG4gICAgICAgICAgICA6dmFsdWU9XCJhcnRpY2xlLnBvcnRpb24udHlwZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFydFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICB2LWZvcj1cImRpbSBpbiBkaW1lbnNpb25zXCJcbiAgICAgICAgICAgICAgOmtleT1cImRpbS5pZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cImRpbS5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGRpbS5uYW1lIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L01hdGVyaWFsaXplU2VsZWN0PlxuICAgICAgICAgIDxsYWJlbCA6Zm9yPVwiJ2FfcHR5cGVfJyArIGFydGljbGUuaWRcIj5Qb3J0aW9uc2JlemVpY2hudW5nPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBjb2wgczRcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDppZD1cIidhX3BwcmljZV8nICsgYXJ0aWNsZS5pZFwiXG4gICAgICAgICAgICB2LW1vZGVsLm51bWJlcj1cImFydGljbGUucG9ydGlvbi5wcmljZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlByZWlzXCJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWxpZGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmZvcj1cIidhX3BwcmljZV8nICsgYXJ0aWNsZS5pZFwiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGl2ZVwiXG4gICAgICAgICAgPlBvcnRpb25zcHJlaXMgaW4g4oKsPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBzMTIgcmlnaHRcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJyaWdodFwiXG4gICAgICAgICAgPkdlc2FtdHByZWlzXG4gICAgICAgICAgICA8VHdlZW5lZE51bWJlclxuICAgICAgICAgICAgICA6d2VydD1cImFydGljbGUuQ29udGVudFByaWNlXCJcbiAgICAgICAgICAgICAgOmVpbmhlaXQ9XCIn4oKsJ1wiXG4gICAgICAgICAgICAgIDpwcmVjaXNpb249XCIyXCJcbiAgICAgICAgICAgIC8+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICA6aWQ9XCJpZGVudGlmaWVyICsgJ192YXJpYW50cydcIlxuICAgICAgICBjbGFzcz1cInJvd1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgczEyXCI+XG4gICAgICAgICAgPEFydGljbGVWYXJpYW50XG4gICAgICAgICAgICB2LWZvcj1cIih2YXJpYW50LCBpbmRleCkgaW4gdmFyaWFudHNcIlxuICAgICAgICAgICAgOmtleT1cIidhcnRpY2xlXycgKyBhcnRpY2xlLmlkICsgJ192YXJpYW50XycgKyBpbmRleFwiXG4gICAgICAgICAgICA6aWRlbnRpZmllcj1cIidhcnRpY2xlXycgKyBhcnRpY2xlLmlkICsgJ192YXJpYW50XycgKyBpbmRleFwiXG4gICAgICAgICAgICA6dmFyaWFudD1cInZhcmlhbnRcIlxuICAgICAgICAgICAgOmFydGljbGU9XCJhcnRpY2xlXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgIEBjbGljaz1cImFkZFZhcmlhbnQoYXJ0aWNsZSlcIlxuICAgICAgICAgID5WYXJpYW50ZSBoaW56dWbDvGdlbjwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1hY3Rpb25cIj5cbiAgICAgIDxhXG4gICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgQGNsaWNrPVwiZGVsZXRlQXJ0aWNsZShhcnRpY2xlKVwiXG4gICAgICA+QXJ0aWtlbCBsw7ZzY2hlbjwvYT5cbiAgICAgIDxhXG4gICAgICAgIHYtaWY9XCJjaGFuZ2VkXCJcbiAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICBAY2xpY2s9XCJzdG9yZUFydGljbGUoYXJ0aWNsZSlcIlxuICAgICAgPkFydGlrZWwgc3BlaWNoZXJuPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBBcnRpY2xlLCB0aGF3QXJ0aWNsZSB9IGZyb20gJy4uL21vZGVsL2FydGljbGUnO1xuaW1wb3J0IE1hdGVyaWFsaXplU2VsZWN0IGZyb20gXCIuL01hdGVyaWFsaXplU2VsZWN0XCI7XG5pbXBvcnQgVHdlZW5lZE51bWJlciBmcm9tIFwiLi9Ud2VlbmVkTnVtYmVyXCI7XG5pbXBvcnQgQXJ0aWNsZVZhcmlhbnQgZnJvbSBcIi4vQXJ0aWNsZVZhcmlhbnRcIjtcbmltcG9ydCB7IHRoYXdWYXJpYW50LCBWYXJpYW50IH0gZnJvbSAnLi4vbW9kZWwvdmFyaWFudCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJBcnRpY2xlXCIsXG4gIGNvbXBvbmVudHM6IHtNYXRlcmlhbGl6ZVNlbGVjdCwgVHdlZW5lZE51bWJlciwgQXJ0aWNsZVZhcmlhbnR9LFxuICBwcm9wczoge1xuICAgIGE6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7IHJldHVybiBuZXcgQXJ0aWNsZSgpOyB9XG4gICAgfSxcbiAgICBkaW1lbnNpb25zOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQoKSB7IHJldHVybiBbXTsgfVxuICAgIH0sXG4gICAgZ3JvdXBzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQoKSB7IHJldHVybiBbXTsgfVxuICAgIH0sXG4gICAgaWRlbnRpZmllcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH1cbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hhbmdlZDogZmFsc2UsXG4gICAgICBhcnRpY2xlOiBudWxsLFxuICAgICAgb3JpZ2luYWw6IG51bGwsXG4gICAgICB2YXJpYW50czogW10sXG4gICAgICB0YWJzOiBudWxsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuXG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgYXJ0aWNsZToge1xuICAgICAgaGFuZGxlcihuZXdWYWx1ZSwgb2xkVmFsKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZCA9IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSAhPSB0aGlzLm9yaWdpbmFsO1xuICAgICAgfSxcbiAgICAgIGRlZXA6IHRydWVcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5hcnRpY2xlID0gdGhpcy5hO1xuICAgIHRoaXMub3JpZ2luYWwgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmEpO1xuICAgIHRoaXMubG9hZFZhcmlhbnRzKHRoaXMuYXJ0aWNsZSk7XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdmFyIHRhYnMgPSB0aGlzLiRlbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFic1wiKVswXTtcbiAgICBNLlRhYnMuaW5pdCh0YWJzLCB7fSk7XG4gICAgdGhpcy50YWJzID0gTS5UYWJzLmdldEluc3RhbmNlKHRhYnMpO1xuICAgIHRoaXMuJE0udXBkYXRlVGV4dEZpZWxkcygpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc3RvcmVBcnRpY2xlOiBmdW5jdGlvbihhcnRpY2xlKSB7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KFxuICAgICAgICAgIFwiL2FwaS9hcnRpa2VsXCIgKyAoYXJ0aWNsZS5pZCA+IDAgPyAnLycgKyBhcnRpY2xlLmlkIDogJycpLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFydGljbGUpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy4kTS50b2FzdCh7IGh0bWw6IHJlc3BvbnNlLmRhdGEgKyBcIiBBcnRpa2VsIGFrdHVhbGlzaWVydC5cIiB9KTtcbiAgICAgICAgICB0aGlzLmFydGljbGUgPSB0aGF3QXJ0aWNsZShyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogcmVzcG9uc2UgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlQXJ0aWNsZTogZnVuY3Rpb24oYXJ0aWNsZSkge1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZGVsZXRlKFxuICAgICAgICAgIFwiL2FwaS9hcnRpa2VsL1wiICsgYXJ0aWNsZS5pZCxcbiAgICAgICAgKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy4kZW1pdCgnZGVsZXRlLWFydGljbGUnLCBhcnRpY2xlKTtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogcmVzcG9uc2UuZGF0YSArIFwiIEFydGlrZWwgZ2Vsw7ZzY2h0LlwiIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuJE0udG9hc3QoeyBodG1sOiByZXNwb25zZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBhZGRWYXJpYW50KGFydGljbGUpIHtcbiAgICAgIHZhciB2YXJpYW50ID0gbmV3IFZhcmlhbnQoKTtcbiAgICAgIHZhcmlhbnQuQXJ0aWNsZUlkID0gYXJ0aWNsZS5pZDtcbiAgICAgIHRoaXMudmFyaWFudHMucHVzaCh2YXJpYW50KTtcbiAgICB9LFxuICAgIGxvYWRWYXJpYW50czogZnVuY3Rpb24oYXJ0aWNsZSkge1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZ2V0KFxuICAgICAgICAgIFwiL2FwaS9hcnRpa2VsL1wiICsgYXJ0aWNsZS5pZCArICcvdmFyaWFudGVuJyxcbiAgICAgICAgKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGpzb24gPT4ge1xuICAgICAgICAgIGlmIChqc29uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGpzb24uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy52YXJpYW50cy5wdXNoKHRoYXdWYXJpYW50KGVsZW1lbnQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuJE0udXBkYXRlVGV4dEZpZWxkcygpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuJE0udG9hc3QoeyBodG1sOiBlcnJvciB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICB9XG59O1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgY29sIHM0XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmlkPVwiaWRlbnRpZmllciArICdfbmFtZSdcIlxuICAgICAgICB2LW1vZGVsPVwidmFyaWFudC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJWYXJpYW50ZW5iZXplaWNobnVuZ1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJ2YWxpZGF0ZVwiXG4gICAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgOmZvcj1cImlkZW50aWZpZXIgKyAnX25hbWUnXCJcbiAgICAgICAgY2xhc3M9XCJhY3RpdmVcIlxuICAgICAgPlZhcmlhbnRlbmJlemVpY2hudW5nPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgY29sIHM0XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmlkPVwiaWRlbnRpZmllciArICdfcHJpY2UnXCJcbiAgICAgICAgdi1tb2RlbC5udW1iZXI9XCJ2YXJpYW50LnByaWNlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJQcmVpc1wiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBjbGFzcz1cInZhbGlkYXRlXCJcbiAgICAgICAgc3RlcD1cIjAuMDFcIlxuICAgICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpmb3I9XCJpZGVudGlmaWVyICsgJ19wcmljZSdcIlxuICAgICAgICBjbGFzcz1cImFjdGl2ZVwiXG4gICAgICA+UHJlaXM8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBjb2wgczJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6dmFsdWU9XCJhcnRpY2xlLlBvcnRpb25QcmljZSArIHZhcmlhbnQuUHJpY2VcIlxuICAgICAgICBjbGFzcz1cInZhbGlkYXRlXCJcbiAgICAgICAgZGlzYWJsZWRcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgY29sIHMyXCI+XG4gICAgICA8YVxuICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgIEBjbGljaz1cInN0b3JlVmFyaWFudCh2YXJpYW50KVwiXG4gICAgICA+VmFyaWFudGUgc3BlaWNoZXJuPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSAnLi4vbW9kZWwvYXJ0aWNsZSc7XG5pbXBvcnQgeyB0aGF3VmFyaWFudCwgVmFyaWFudCB9IGZyb20gJy4uL21vZGVsL3ZhcmlhbnQnXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdWYXJpYW50JyxcbiAgcHJvcHM6IHtcbiAgICB2YXJpYW50OiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkgeyByZXR1cm4gbmV3IFZhcmlhbnQoKTsgfVxuICAgIH0sXG4gICAgYXJ0aWNsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHsgcmV0dXJuIG5ldyBBcnRpY2xlKCk7IH1cbiAgICB9LFxuICAgIGlkZW50aWZpZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHN0b3JlVmFyaWFudDogZnVuY3Rpb24odmFyaWFudCkge1xuICAgICAgdmFyaWFudC5BcnRpY2xlSWQgPSB0aGlzLmFydGljbGUuaWQ7XG4gICAgICB0aGlzLiRodHRwXG4gICAgICAgIC5wb3N0KFxuICAgICAgICAgIFwiL2FwaS92YXJpYW50ZW5cIiArICh2YXJpYW50LmlkID4gMCA/ICcvJyArIHZhcmlhbnQuaWQgOiAnJyksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFyaWFudCksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogcmVzcG9uc2UuZGF0YSArIFwiIFZhcmlhbnRlIGFrdHVhbGlzaWVydC5cIiB9KTtcbiAgICAgICAgICB0aGlzLnZhcmlhbnQgPSB0aGF3VmFyaWFudChyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogZXJyb3IgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVmFyaWFudDogZnVuY3Rpb24odmFyaWFudCkge1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAuZGVsZXRlKFxuICAgICAgICAgIFwiL2FwaS92YXJpYW50ZW4vXCIgKyB2YXJpYW50LmlkLFxuICAgICAgICApXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLiRlbWl0KCdkZWxldGUtdmFyaWFudCcsIHZhcmlhbnQpO1xuICAgICAgICAgIHRoaXMuJE0udG9hc3QoeyBodG1sOiByZXNwb25zZS5kYXRhICsgXCIgVmFyaWFudGVuIGdlbMO2c2NodC5cIiB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLiRNLnRvYXN0KHsgaHRtbDogcmVzcG9uc2UgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG4gIH1cbn1cbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxBcnRpY2xlQ2FyZFxuICAgICAgdi1mb3I9XCIoYSwgaW5kZXgpIGluIGFydGljbGVzXCJcbiAgICAgIDprZXk9XCInYXJ0aWNsZV8nICsgaW5kZXhcIlxuICAgICAgOmlkZW50aWZpZXI9XCInYXJ0aWNsZV8nICsgaW5kZXhcIlxuICAgICAgOmE9XCJhXCJcbiAgICAgIDpkaW1lbnNpb25zPVwiZGltZW5zaW9uc1wiXG4gICAgICA6Z3JvdXBzPVwiZ3JvdXBzXCJcbiAgICAgIEBkZWxldGUtYXJ0aWNsZT1cInJlbW92ZUZyb21MaXN0KGEpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgQXJ0aWNsZUNhcmQgZnJvbSBcIi4vQXJ0aWNsZUNhcmRcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIkFydGljbGVzVmlld1wiLFxuICBjb21wb25lbnRzOiB7QXJ0aWNsZUNhcmR9LFxuICBwcm9wczoge1xuICAgIGFydGljbGVzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQoKSB7IHJldHVybiBbXTsgfVxuICAgIH0sXG4gICAgZ3JvdXBzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQoKSB7IHJldHVybiBbXTsgfVxuICAgIH0sXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0KCkgeyByZXR1cm4gW107IH1cbiAgICB9XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcblxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcblxuICB9LFxuICBtb3VudGVkKCkge1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgcmVtb3ZlRnJvbUxpc3QoYXJ0aWNsZSkge1xuICAgICAgdGhpcy5hcnRpY2xlcy5zcGxpY2UodGhpcy5hcnRpY2xlcy5pbmRleE9mKGFydGljbGUpLDEpO1xuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicm93IHBpbi10b3BcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sIHMxMiBtNCBjYXJkIGRhcmtlbi00IGdyZXkgZ3JleS10ZXh0IHRleHQtbGlnaHRlbi0yXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgPHRib2R5IHN0eWxlPVwibWF4LWhlaWdodDozMDBweFwiPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgdi1mb3I9XCJpdGVtIGluIGl0ZW1zXCJcbiAgICAgICAgICAgIHYtc2hvdz1cIml0ZW0uY291bnQgPiAwXCJcbiAgICAgICAgICAgIDprZXk9XCInYm9uXycraXRlbS5zaG9ydFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicmlnaHQtYWxpZ25cIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5jb3VudCB9fSAmdGltZXM7XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IGl0ZW0ubmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJyaWdodC1hbGlnblwiPlxuICAgICAgICAgICAgICA8VHdlZW5lZE51bWJlclxuICAgICAgICAgICAgICAgIDp3ZXJ0PVwiaXRlbS5zdW1cIlxuICAgICAgICAgICAgICAgIDplaW5oZWl0PVwiJ+KCrCdcIlxuICAgICAgICAgICAgICAgIDpwcmVjaXNpb249XCIyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPHRmb290PlxuICAgICAgICAgIDx0ciBjbGFzcz1cIndoaXRlLXRleHRcIj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cInJpZ2h0LWFsaWduXCI+XG4gICAgICAgICAgICAgIDxUd2VlbmVkTnVtYmVyXG4gICAgICAgICAgICAgICAgOndlcnQ9XCJ0b3RhbENvdW50XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgIEFydGlrZWxcbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJyaWdodC1hbGlnblwiPlxuICAgICAgICAgICAgICA8VHdlZW5lZE51bWJlclxuICAgICAgICAgICAgICAgIDp3ZXJ0PVwidG90YWxTdW1cIlxuICAgICAgICAgICAgICAgIDplaW5oZWl0PVwiJ+KCrCdcIlxuICAgICAgICAgICAgICAgIDpwcmVjaXNpb249XCIyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Zm9vdD5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbCBzMTIgbThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHYtZm9yPVwiYSBpbiBpdGVtc1wiXG4gICAgICAgICAgOmtleT1cIidib25fYnRuXycrYS5zaG9ydFwiXG4gICAgICAgICAgY2xhc3M9XCJjb2wgczNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJ3YXZlcy1lZmZlY3Qgd2F2ZXMtbGlnaHQgYnRuLWxhcmdlIGJ0bi1mbGF0IGNvbCBzMTJcIlxuICAgICAgICAgICAgQGNsaWNrPVwiYS5jb3VudCsrO2Euc3VtKz1hLnByaWNlO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYS5zaG9ydCB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHMzXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJ3YXZlcy1lZmZlY3Qgd2F2ZXMtbGlnaHQgYnRuLWxhcmdlIG9yYW5nZSBjb2wgczEyXCJcbiAgICAgICAgICAgIEBjbGljaz1cInJlc2V0Qm9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBSZXNldFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVHdlZW5lZE51bWJlciBmcm9tICcuL1R3ZWVuZWROdW1iZXInO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6IFwiQ2FsY3VsYXRvclwiLFxuICBjb21wb25lbnRzOiB7IFR3ZWVuZWROdW1iZXIgfSxcbiAgcHJvcHM6IHtcbiAgICBhcnRpY2xlczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0KCkgeyByZXR1cm4gW107IH1cbiAgICB9XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBbXVxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0b3RhbFN1bSgpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRvdGFsICsgaXRlbS5zdW07XG4gICAgICB9LCAwKTtcbiAgICB9LFxuICAgIHRvdGFsQ291bnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHRvdGFsLCBpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB0b3RhbCArIGl0ZW0uY291bnQ7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5yZXNldEJvbigpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgcmVzZXRCb24oKSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5hcnRpY2xlcy5tYXAoYSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICAgIHNob3J0OiBhLnNob3J0LFxuICAgICAgICAgIHByaWNlOiBhLnBvcnRpb24ucHJpY2UsXG4gICAgICAgICAgc3VtOiAwLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8dHJcbiAgICBzdHlsZT1cImJvcmRlcjogMDtcIlxuICAgIGNsYXNzPVwiaW52ZW50b3J5LWl0ZW1cIlxuICAgIDpjbGFzcz1cIntcbiAgICAgICd0ZWFsIGxpZ2h0ZW4tNScgOiBpdGVtLlNhbGUgPiAwLFxuICAgICAgJ29yYW5nZSBkYXJrZW4tMiB3aGl0ZS10ZXh0JyA6IGl0ZW0uU29sZCAlMSAhPTAsXG4gICAgICAncmVkIGRhcmtlbi0yIHdoaXRlLXRleHQnIDogaXRlbS5TYWxlIDwgMCxcbiAgICB9XCJcbiAgPlxuICAgIDx0aFxuICAgICAgY2xhc3M9XCJyaWdodC1hbGlnblwiXG4gICAgPlxuICAgICAge3sgaXRlbS5hcnRpY2xlLm5hbWUgfX1cbiAgICA8L3RoPlxuXG4gICAgPHRkXG4gICAgICB2LWZvcj1cInByb3AgaW4gWydzdGFydCcsJ2ZldGNoZWQnLCdlbmQnLCdsb3N0J11cIlxuICAgICAgOmtleT1cIml0ZW0uYXJ0aWNsZS5zaG9ydCsnXycrcHJvcFwiXG4gICAgICBjbGFzcz1cImJvcmRlci1ib3R0b20gY2VudGVyLWFsaWduXCJcbiAgICAgIDpjbGFzcz1cInthY3RpdmU6Y2xhc3NPYmplY3QuYWN0aXZlID09IHByb3B9XCJcbiAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgQGtleXByZXNzPVwicmVzdHJpY3RJbnB1dChwcm9wLCAkZXZlbnQpXCJcbiAgICAgIEBmb2N1cz1cIm9uRm9jdXMocHJvcCwgJGV2ZW50KVwiXG4gICAgICBAYmx1cj1cIm9uQmx1cihwcm9wLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBpdGVtW3Byb3BdIH19XG4gICAgPC90ZD5cblxuICAgIDx0ZFxuICAgICAgY2xhc3M9XCJyaWdodC1hbGlnbiBib3JkZXItYm90dG9tIGJvcmRlci1kaWFncmFtXCJcbiAgICA+XG4gICAgICA8VHdlZW5lZE51bWJlclxuICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgJ2JvcmRlci1pbWFnZSc6ICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQgLCByZ2JhKDAsMTUwLDEzNiwuMDEpIDAlLCByZ2JhKDAsMTUwLDEzNiwuMykgJ1xuICAgICAgICAgICAgKyBpdGVtLlNvbGQqMTAwL3RvdGFsXG4gICAgICAgICAgICArICclLCB0cmFuc3BhcmVudCAnXG4gICAgICAgICAgICArIGl0ZW0uU29sZCoxMDAvdG90YWxcbiAgICAgICAgICAgICsnJSx0cmFuc3BhcmVudCAxMDAlKSAxJ1xuICAgICAgICB9XCJcbiAgICAgICAgOndlcnQ9XCJpdGVtLlNvbGRcIlxuICAgICAgICA6ZWluaGVpdD1cIkRpbWVuc2lvbi5zaG9ydFwiXG4gICAgICAgIDpwcmVjaXNpb249XCJpdGVtLlBvcnRpb25QcmVjaXNpb25cIlxuICAgICAgLz5cbiAgICA8L3RkPlxuICAgIDx0ZFxuICAgICAgY2xhc3M9XCJyaWdodC1hbGlnbiBib3JkZXItYm90dG9tXCJcbiAgICA+XG4gICAgICA8VHdlZW5lZE51bWJlclxuICAgICAgICA6d2VydD1cIml0ZW0uU2FsZVwiXG4gICAgICAgIDplaW5oZWl0PVwiJ+KCrCdcIlxuICAgICAgICA6cHJlY2lzaW9uPVwiMlwiXG4gICAgICAvPlxuICAgIDwvdGQ+XG4gIDwvdHI+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IFR3ZWVuZWROdW1iZXIgZnJvbSAnLi9Ud2VlbmVkTnVtYmVyJztcbmltcG9ydCAnLi9JbnZlbnRvcnlJdGVtLmNzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTpcIkludmVudG9yeUl0ZW1cIixcbiAgY29tcG9uZW50czoge1xuICAgIFR3ZWVuZWROdW1iZXIsXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgaXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgICB9XG4gICAgfSxcbiAgICB0b3RhbDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0d2VlbmVkU29sZDogMCxcbiAgICAgIHR3ZWVuZWRTYWxlOiAwLFxuICAgICAgY2xhc3NPYmplY3Q6IHthY3RpdmUgOiBudWxsfVxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBTb2xkQW5pbWF0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy50d2VlbmVkU29sZC50b0ZpeGVkKHRoaXMuaXRlbS5Qb3J0aW9uUHJlY2lzaW9uKTtcbiAgICB9LFxuICAgIFNhbGVBbmltYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnR3ZWVuZWRTYWxlLnRvRml4ZWQoMik7XG4gICAgfSxcbiAgICBEaW1lbnNpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaW1lbnNpb25zLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmlkID09IHRoaXMuaXRlbS5hcnRpY2xlLlBvcnRpb25UeXBlKVxuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcblxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2V0Q2FyZXRQb3NpdGlvbihlbCl7XG4gICAgICBpZiAoZWwgIT0gbnVsbCkge1xuICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICByYW5nZS5zZXRTdGFydChlbC5maXJzdENoaWxkLCBlbC5pbm5lclRleHQubGVuZ3RoKTtcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc3RyaWN0SW5wdXQocHJvcCwgZXZlbnQpe1xuICAgICAgdmFyIHggPSBldmVudC5rZXk7XG4gICAgICBjb25zb2xlLmxvZyhwcm9wICsgXCIgaW5zZXJ0aW5nIFwiICsgeClcbiAgICAgIGlmICh4ID09PSBcIkVudGVyXCIgKSB7XG4gICAgICAgIGV2ZW50LnRhcmdldC5ibHVyKCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNOYU4oeCkgJiYgeCAhPSAnLCcpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRm9jdXMocHJvcGVydHksIGV2ZW50KXtcbiAgICAgIHRoaXMuY2xhc3NPYmplY3QuYWN0aXZlID0gcHJvcGVydHk7XG4gICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhldmVudC50YXJnZXQpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgICB9LFxuICAgIG9uQmx1cihwcm9wZXJ0eSwgZXZlbnQpIHtcbiAgICAgIHRoaXMuY2xhc3NPYmplY3QuYWN0aXZlID0gbnVsbDtcbiAgICAgIHZhciB2YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lclRleHQ7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJywnLCAnLicpXG4gICAgICBjb25zb2xlLmxvZyhwcm9wZXJ0eSArIFwiIGxlZnQgdmFsdWU6IFwiICsgdmFsdWUpO1xuICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5pdGVtW3Byb3BlcnR5XSA9IE51bWJlcih2YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbklucHV0KHByb3BlcnR5LCBldmVudCl7XG4gICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0VGV4dFwiKSB7XG4gICAgICAgIHZhciByZWdleCA9IC9cXGQrXFwuP1xcZHswLDJ9LztcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEubWF0Y2gocmVnZXgpKXtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0O1xuICAgICAgICAgIHRoaXMuaXRlbVtwcm9wZXJ0eV0gPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnNldENhcmV0UG9zaXRpb24oZXZlbnQudGFyZ2V0KTtcbiAgICB9LFxuICB9XG5cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDx0YWJsZSBjbGFzcz1cInRhYmxlIGNvbmRlbnNlZCBoaWdobGlnaHRcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBjbGFzcz1cInJpZ2h0LWFsaWduXCI+XG4gICAgICAgICAgQXJ0aWtlbFxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJjZW50ZXItYWxpZ25cIj5cbiAgICAgICAgICBCZWdpbm5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwiY2VudGVyLWFsaWduXCI+XG4gICAgICAgICAgWnVnYW5nXG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cImNlbnRlci1hbGlnblwiPlxuICAgICAgICAgIEVuZGVcbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwiY2VudGVyLWFsaWduXCI+XG4gICAgICAgICAgVmVybHVzdFxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJyaWdodC1hbGlnblwiPlxuICAgICAgICAgIFZlcmthdWZ0XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cInJpZ2h0LWFsaWduXCI+XG4gICAgICAgICAgU3VtbWVcbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8SW52ZW50b3J5SXRlbVxuICAgICAgICB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBpbnZlbnRvcnlcIlxuICAgICAgICA6a2V5PVwiJ2l0ZW0tJytpbmRleFwiXG4gICAgICAgIDpkaW1lbnNpb25zPVwiZGltZW5zaW9uc1wiXG4gICAgICAgIDppdGVtPVwiaXRlbVwiXG4gICAgICAgIDp0b3RhbD1cInNvbGRcIlxuICAgICAgLz5cbiAgICA8L3Rib2R5PlxuICAgIDx0Zm9vdD5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoXG4gICAgICAgICAgY29sc3Bhbj1cIjZcIlxuICAgICAgICAgIGNsYXNzPVwicmlnaHQtYWxpZ25cIlxuICAgICAgICA+XG4gICAgICAgICAgR2VzYW10c3VtbWU6XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cInJpZ2h0LWFsaWduXCI+XG4gICAgICAgICAgPFR3ZWVuZWROdW1iZXJcbiAgICAgICAgICAgIDp3ZXJ0PVwic2FsZXNcIlxuICAgICAgICAgICAgOnByZWNpc2lvbj1cIjJcIlxuICAgICAgICAgICAgOmVpbmhlaXQ9XCIn4oKsJ1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgPC90YWJsZT5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgSW52ZW50b3J5SXRlbSBmcm9tIFwiLi9JbnZlbnRvcnlJdGVtXCI7XG5pbXBvcnQgVHdlZW5lZE51bWJlciBmcm9tIFwiLi9Ud2VlbmVkTnVtYmVyXCI7XG5pbXBvcnQgeyBJbnZlbnRvcnlBcnRpY2xlIH0gZnJvbSAnLi4vbW9kZWwvaW52ZW50b3J5X2FydGljbGUnO1xuaW1wb3J0ICcuL0ludmVudG9yeVRhYmxlLmNzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJJbnZlbnRvcnlUYWJsZVwiLFxuICBjb21wb25lbnRzOiB7IEludmVudG9yeUl0ZW0sIFR3ZWVuZWROdW1iZXIgfSxcbiAgcHJvcHM6IHtcbiAgICBhcnRpY2xlczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBncm91cHM6IHtcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZlbnRvcnk6IFtdXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBtZXRhKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0dW06IG5ldyBEYXRlKCkudG9TdHJpbmcoKSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHNhbGVzKCkge1xuICAgICAgdmFyIHRvdGFsX3NhbGVzID0gdGhpcy5pbnZlbnRvcnkucmVkdWNlKGZ1bmN0aW9uKHRvdGFsLCBpdGVtKSB7XG4gICAgICAgIHJldHVybiB0b3RhbCArIGl0ZW0uU2FsZTtcbiAgICAgIH0sIDApO1xuICAgICAgcmV0dXJuIHRvdGFsX3NhbGVzO1xuICAgIH0sXG4gICAgc29sZCgpIHtcbiAgICAgIHZhciB0b3RhbF9zb2xkID0gdGhpcy5pbnZlbnRvcnkucmVkdWNlKCh0b3RhbCwgaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gdG90YWwgKyBpdGVtLlNvbGQ7XG4gICAgICB9LDApO1xuICAgICAgcmV0dXJuIHRvdGFsX3NvbGQ7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuJG9uKCdyZXNldC1pbnZlbnR1cicsIHRoaXMucmVzZXRJbnZlbnRvcnkpO1xuICAgIHRoaXMuJG9uKCdleHBvcnQtaW52ZW50dXInLCB0aGlzLmV4cG9ydEludmVudG9yeSk7XG5cbiAgICB0aGlzLnJlc2V0SW52ZW50b3J5KCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZXNldEludmVudG9yeSgpIHtcbiAgICAgIHRoaXMuaW52ZW50b3J5ID0gdGhpcy5hcnRpY2xlcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgSW52ZW50b3J5QXJ0aWNsZShpdGVtKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0SW52ZW50dXJCbG9iKCkge1xuICAgICAgbGV0IGludmVudHVyID0gdGhpcy5pbnZlbnRvcnkubWFwKFQgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IFQuYXJ0aWNsZS5uYW1lLFxuICAgICAgICAgIHByZWlzOiBULmFydGljbGUucG9ydGlvbi5wcmljZSxcbiAgICAgICAgICBiZWdpbm46IFQuc3RhcnQsXG4gICAgICAgICAgenVnYW5nOiBULmZldGNoZWQsXG4gICAgICAgICAgZW5kZTogVC5lbmQsXG4gICAgICAgICAgdmVybHVzdDogVC5sb3N0LFxuICAgICAgICAgIHZlcmthdWZ0OiBULlNvbGQsXG4gICAgICAgICAgdW1zYXR6OiBULlNhbGVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbWV0YTogdGhpcy5tZXRhLFxuICAgICAgICBkYXRhOiBpbnZlbnR1clxuICAgICAgfSk7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLHt0eXBlOiAndGV4dC9qc29uJyB9KTtcbiAgICAgIHJldHVybiBibG9iO1xuICAgIH0sXG4gICAgZXhwb3J0SW52ZW50b3J5KCkge1xuICAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCB0aGlzLmdldEludmVudHVyQmxvYigpLCAnaW52ZW50dXIuanNvbicpO1xuICAgICAgdGhpcy4kaHR0cFxuICAgICAgICAucG9zdChcbiAgICAgICAgICBcIi9hcGkvaW52ZW50dXJcIixcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy4kTS50b2FzdCh7IGh0bWw6IHJlc3BvbnNlLmJvZHkgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c2VsZWN0IDp2YWx1ZT1cInZhbHVlXCI+XG4gICAgPG9wdGlvblxuICAgICAgdmFsdWU9XCJcIlxuICAgICAgZGlzYWJsZWRcbiAgICAgIHNlbGVjdGVkXG4gICAgPlxuICAgICAgQml0dGUgd8OkaGxlblxuICAgIDwvb3B0aW9uPlxuICAgIDxzbG90IC8+XG4gIDwvc2VsZWN0PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogXCJNYXRlcmlhbGl6ZVNlbGVjdFwiLFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogXCJcIixcbiAgICB9LFxuICB9LFxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGxvY2FsIHZhcmlhYmxlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHJldHVybiB7dW5kZWZpbmVkfEZvcm1TZWxlY3R9IGRhdGEuaW5zdGFuY2VcbiAgICovXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluc3RhbmNlOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSxcblxuICB3YXRjaDoge1xuICAgIHZhbHVlKCkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5kZXN0cm95KCk7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+ICh0aGlzLmluc3RhbmNlID0gdGhpcy5pbml0aWFsaXplU2VsZWN0KCkpKTtcbiAgICB9LFxuICB9LFxuXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuaW5pdGlhbGl6ZVNlbGVjdCgpO1xuXG4gICAgdGhpcy4kZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzLmNoYW5nZUhhbmRsZXIpO1xuICB9LFxuXG4gIGRlc3Ryb3llZCgpIHtcbiAgICB0aGlzLiRlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMuY2hhbmdlSGFuZGxlcik7XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIGEgbmV3IE1hdGVyaWFsaXplIHNlbGVjdCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge0Zvcm1TZWxlY3R9XG4gICAgICogQHNlZSBodHRwczovL21hdGVyaWFsaXplY3NzLmNvbS9zZWxlY3QuaHRtbCNvcHRpb25zXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZVNlbGVjdChvcHRpb25zID0ge30pIHtcbiAgICAgIHJldHVybiBNLkZvcm1TZWxlY3QuaW5pdCh0aGlzLiRlbCwgb3B0aW9ucyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW5kIHRoZSBwcm9wZXIgaW5wdXQgZXZlbnQgdG8gdGhlIHBhcmVudHMgY29tcG9uZW50c1xuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAgICogQHBhcmFtIHtIVE1MU2VsZWN0RWxlbWVudH0gdGFyZ2V0XG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9BUEkvRXZlbnQvdGFyZ2V0XG4gICAgICovXG4gICAgY2hhbmdlSGFuZGxlcih7IHRhcmdldCB9KSB7XG4gICAgICB0aGlzLiRlbWl0KFwiaW5wdXRcIiwgdGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8bmF2XG4gICAgY2xhc3M9XCJuYXYtZXh0ZW5kZWRcIlxuICAgIDpjbGFzcz1cInByaW1hcnlDb2xvclwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibmF2LXdyYXBwZXIgY29udGFpbmVyXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwibmF2LWNvbnRlbnQgY29udGFpbmVyXCI+XG4gICAgICA8dWwgY2xhc3M9XCJ0YWJzIHRhYnMtdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwidGFiXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIEBjbGljay5zdG9wLnByZXZlbnQ9XCJjaGFuZ2VUYWIoJ2ludmVudG9yeScsICRldmVudClcIlxuICAgICAgICAgID5JbnZlbnR1cjwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwidGFiXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgICAgICAgIFR3ZWVuZWROdW1iZXJcbiAgICAgICAgICAgIEBjbGljay5zdG9wLnByZXZlbnQ9XCJjaGFuZ2VUYWIoJ2FydGljbGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+QXJ0aWtlbGxpc3RlPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJ0YWJcIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgQGNsaWNrLnN0b3AucHJldmVudD1cImNoYW5nZVRhYignY2FsYycsICRldmVudClcIlxuICAgICAgICAgID5SZWNobmVyPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9uYXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE0gZnJvbSAnbWF0ZXJpYWxpemUtY3NzJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIHByaW1hcnlDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJyZWRcIlxuICAgIH1cbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFiczogW11cbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdmFyIHRhYnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFic1wiKVswXTtcbiAgICBNLlRhYnMuaW5pdCh0YWJzLCB7fSk7XG4gICAgdGhpcy50YWJzID0gTS5UYWJzLmdldEluc3RhbmNlKHRhYnMpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2hhbmdlVGFiKHRhYklkLCBldmVudCkge1xuICAgICAgdGhpcy52aWV3ID0gdGFiSWQ7XG4gICAgICB0aGlzLnRhYnMuX2hhbmRsZVRhYkNsaWNrKGV2ZW50KTtcbiAgICAgIHRoaXMudGFicy51cGRhdGVUYWJJbmRpY2F0b3IoKTtcbiAgICAgIHRoaXMuJGVtaXQoXCJjaGFuZ2VkLXRhYlwiLCB0aGlzLnZpZXcpO1xuICAgIH0sXG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzcGFuIGNsYXNzPVwidHdlZW5lZFwiPlxuICAgIHt7IGludEFuaW1hdGVkIH19XG4gICAgPHNwYW4gdi1pZj1cInByZWNpc2lvbj4wXCI+XG4gICAgICAse3sgZGVjaUFuaW1hdGVkIH19XG4gICAgPC9zcGFuPlxuICAgIHt7IGVpbmhlaXQgfX1cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBnc2FwIGZyb20gJ2dzYXAnO1xuaW1wb3J0ICcuL1R3ZWVuZWROdW1iZXIuY3NzJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBcIlR3ZWVuZWROdW1iZXJcIixcbiAgcHJvcHM6IHtcbiAgICB3ZXJ0OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBlaW5oZWl0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiXG4gICAgfSxcbiAgICBwcmVjaXNpb246IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG4gIGRhdGEoKXtcbiAgICByZXR1cm4ge1xuICAgICAgdHdlZW5lZFZhbHVlOiB0aGlzLndlcnQsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHZhbHVlQW5pbWF0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy50d2VlbmVkVmFsdWUudG9Mb2NhbGVTdHJpbmcoXG4gICAgICAgIFwiZGUtREVcIixcbiAgICAgICAge1xuICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMucHJlY2lzaW9uXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSxcbiAgICBpbnRBbmltYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlQW5pbWF0ZWQuc3BsaXQoJywnKVswXTtcbiAgICB9LFxuICAgIGRlY2lBbmltYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlQW5pbWF0ZWQuc3BsaXQoJywnKVsxXTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgd2VydDoge1xuICAgICAgaGFuZGxlcihuZXdWYWx1ZSkge1xuICAgICAgICBnc2FwLnRvKHRoaXMuJGRhdGEsIDAuNSwge3R3ZWVuZWRWYWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgICB9LFxuICAgICAgZGVlcDogdHJ1ZVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG4iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgW1xuICAgICAgX2MoXCJOYXZpZ2F0aW9uQmFyXCIsIHtcbiAgICAgICAgYXR0cnM6IHsgXCJwcmltYXJ5LWNvbG9yXCI6IF92bS5wcmltYXJ5Q29sb3IgfSxcbiAgICAgICAgb246IHsgXCJjaGFuZ2VkLXRhYlwiOiBfdm0uY2hhbmdlVmlldyB9XG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjb250YWluZXJcIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgIV92bS5yZWFkeVxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZhbGlnbi13cmFwcGVyXCIsXG4gICAgICAgICAgICAgICAgICBzdGF0aWNTdHlsZTogeyBoZWlnaHQ6IFwiOTB2aFwiIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX20oMCldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcInRyYW5zaXRpb25cIiwgeyBhdHRyczogeyBuYW1lOiBcImZhZGVcIiB9IH0sIFtcbiAgICAgICAgICAgIF92bS5yZWFkeSAmJiBfdm0udmlldyA9PSBcImludmVudG9yeVwiXG4gICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJjb2wgczEyXCIsIGF0dHJzOiB7IGlkOiBcImludmVudG9yeVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJJbnZlbnRvcnlUYWJsZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVmOiBcImludmVudG9yeVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlczogX3ZtLmFydGljbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBfdm0uZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogX3ZtLmRpbWVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfdm0ucmVhZHkgJiYgX3ZtLnZpZXcgPT0gXCJjYWxjXCJcbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbCBzMTJcIiwgYXR0cnM6IHsgaWQ6IFwiY2FsY1wiIH0gfSxcbiAgICAgICAgICAgICAgICAgIFtfYyhcIkNhbGN1bGF0b3JcIiwgeyBhdHRyczogeyBhcnRpY2xlczogX3ZtLmFydGljbGVzIH0gfSldLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfdm0ucmVhZHkgJiYgX3ZtLnZpZXcgPT0gXCJhcnRpY2xlXCJcbiAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbCBzMTJcIiwgYXR0cnM6IHsgaWQ6IFwiYXJ0aWNsZVwiIH0gfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJBcnRpY2xlc1ZpZXdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnRpY2xlczogX3ZtLmFydGljbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBfdm0uZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uczogX3ZtLmRpbWVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyByZWY6IFwiZmFiXCIsIHN0YXRpY0NsYXNzOiBcImZpeGVkLWFjdGlvbi1idG5cIiB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiYnRuLWZsb2F0aW5nIGJ0bi1sYXJnZVwiLCBjbGFzczogX3ZtLnByaW1hcnlDb2xvciB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcImxhcmdlIG1hdGVyaWFsLWljb25zXCIgfSwgW1xuICAgICAgICAgICAgICBfdm0uX3YoXCJtb3JlX3ZlcnRcIilcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInVsXCIsIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udmlldyA9PSBcImFydGljbGVcIixcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwidmlldyA9PSAnYXJ0aWNsZSdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnRuLWZsb2F0aW5nIHRvb2x0aXBwZWRcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IFwiI1wiLFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtcG9zaXRpb25cIjogXCJsZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZGF0YS10b29sdGlwXCI6IFwiQXJ0aWtlbCBoaW56dWbDvGdlblwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5hZGRBcnRpY2xlIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfYyhcImlcIiwgeyBzdGF0aWNDbGFzczogXCJtYXRlcmlhbC1pY29uc1wiIH0sIFtfdm0uX3YoXCJhZGRcIildKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwibGlcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udmlldyA9PSBcImludmVudG9yeVwiLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aWV3ID09ICdpbnZlbnRvcnknXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ0bi1mbG9hdGluZyB0b29sdGlwcGVkXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBcIiNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXBvc2l0aW9uXCI6IFwibGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtdG9vbHRpcFwiOiBcIkludmVudHVyIHp1csO8Y2tzZXR6ZW5cIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRyZWZzLmludmVudG9yeS4kZW1pdChcInJlc2V0LWludmVudHVyXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcIm1hdGVyaWFsLWljb25zXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJjbGVhcl9hbGxcIilcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJsaVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS52aWV3ID09IFwiaW52ZW50b3J5XCIsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInZpZXcgPT0gJ2ludmVudG9yeSdcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnRuLWZsb2F0aW5nIHRvb2x0aXBwZWRcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IFwiI1wiLFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtcG9zaXRpb25cIjogXCJsZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZGF0YS10b29sdGlwXCI6IFwiSW52ZW50dXIgZXhwb3J0aWVyZW5cIlxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRyZWZzLmludmVudG9yeS4kZW1pdChcImV4cG9ydC1pbnZlbnR1clwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX2MoXCJpXCIsIHsgc3RhdGljQ2xhc3M6IFwibWF0ZXJpYWwtaWNvbnNcIiB9LCBbX3ZtLl92KFwic2F2ZVwiKV0pXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtcbiAgZnVuY3Rpb24oKSB7XG4gICAgdmFyIF92bSA9IHRoaXNcbiAgICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJwcm9ncmVzc1wiIH0sIFtcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiaW5kZXRlcm1pbmF0ZVwiIH0pXG4gICAgXSlcbiAgfVxuXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY2FyZFwiIH0sIFtcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtY29udGVudFwiIH0sIFtcbiAgICAgIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtdGl0bGVcIiB9LCBbXG4gICAgICAgIF92bS5fdihcIlxcbiAgICAgIFwiICsgX3ZtLl9zKF92bS5hcnRpY2xlLm5hbWUpICsgXCJcXG4gICAgXCIpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLXRhYnNcIiB9LCBbXG4gICAgICBfYyhcInVsXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFicyB0YWJzLWZpeGVkLXdpZHRoXCIgfSwgW1xuICAgICAgICBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFiXCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLFxuICAgICAgICAgICAgICBhdHRyczogeyBocmVmOiBcIiNcIiArIF92bS5pZGVudGlmaWVyICsgXCJfaW5mb1wiIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl92KFwiSW5mb1wiKV1cbiAgICAgICAgICApXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFiXCIgfSwgW1xuICAgICAgICAgIF9jKFwiYVwiLCB7IGF0dHJzOiB7IGhyZWY6IFwiI1wiICsgX3ZtLmlkZW50aWZpZXIgKyBcIl92YXJpYW50c1wiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl92KFwiVmFyaWFudGVuXCIpXG4gICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXSksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtY29udGVudFwiIH0sIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJvd1wiLCBhdHRyczogeyBpZDogX3ZtLmlkZW50aWZpZXIgKyBcIl9pbmZvXCIgfSB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpbnB1dC1maWVsZCBpbmxpbmUgY29sIHM4XCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uYXJ0aWNsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJhcnRpY2xlLm5hbWVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidmFsaWRhdGVcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJhX25hbWVfXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJBcnRpa2VsbmFtZVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0uYXJ0aWNsZS5uYW1lIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmFydGljbGUsIFwibmFtZVwiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwibGFiZWxcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGZvcjogXCJhX25hbWVfXCIgKyBfdm0uYXJ0aWNsZS5pZCB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJOYW1lXCIpXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpbnB1dC1maWVsZCBpbmxpbmUgY29sIHM0XCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uYXJ0aWNsZS5zaG9ydCxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiYXJ0aWNsZS5zaG9ydFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcImFfc2hvcnRfXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJLdXJ6bmFtZVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0uYXJ0aWNsZS5zaG9ydCB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5hcnRpY2xlLCBcInNob3J0XCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aXZlXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgZm9yOiBcImFfc2hvcnRfXCIgKyBfdm0uYXJ0aWNsZS5pZCB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJLw7xyemVsXCIpXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJpbnB1dC1maWVsZCBjb2wgczRcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcIm1hdGVyaWFsaXplLXNlbGVjdFwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFfZ3JvdXBfXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5hcnRpY2xlLmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJBcnRpa2VsZ3J1cHBlXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFydGljbGUuZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0uYXJ0aWNsZSwgXCJncm91cFwiLCBfdm0uX24oJCR2KSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJhcnRpY2xlLmdyb3VwXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZ3JvdXBzLCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICB7IGtleTogZ3JvdXAuaWQsIGRvbVByb3BzOiB7IHZhbHVlOiBncm91cC5pZCB9IH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgIFwiICsgX3ZtLl9zKGdyb3VwLm5hbWUpICsgXCJcXG4gICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwibGFiZWxcIiwgeyBhdHRyczogeyBmb3I6IFwiYV9ncm91cF9cIiArIF92bS5hcnRpY2xlLmlkIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcIkFydGlrZWxncnVwcGVcIilcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiaW5wdXQtZmllbGQgY29sIHM0XCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWwubnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFydGljbGUuY29udGVudC5zaXplLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJhcnRpY2xlLmNvbnRlbnQuc2l6ZVwiLFxuICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7IG51bWJlcjogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ2YWxpZGF0ZVwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcImFfY3NpemVfXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJHZXNhbXRpbmhhbHRcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIHN0ZXA6IFwiMC4wMVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0uYXJ0aWNsZS5jb250ZW50LnNpemUgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmFydGljbGUuY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgXCJzaXplXCIsXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbigkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRmb3JjZVVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYWN0aXZlXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgZm9yOiBcImFfY3NpemVfXCIgKyBfdm0uYXJ0aWNsZS5pZCB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJHZXNhbXRpbmhhbHRcIildXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImlucHV0LWZpZWxkIGNvbCBzNFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwibWF0ZXJpYWxpemUtc2VsZWN0XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYV9kaW1fXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5hcnRpY2xlLmRpbWVuc2lvbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiRGltZW5zaW9uXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFydGljbGUuZGltZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLmFydGljbGUsIFwiZGltZW5zaW9uXCIsIF92bS5fbigkJHYpKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFydGljbGUuZGltZW5zaW9uXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZGltZW5zaW9ucywgZnVuY3Rpb24oZGltKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHsga2V5OiBkaW0uaWQsIGRvbVByb3BzOiB7IHZhbHVlOiBkaW0uaWQgfSB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICBcIiArIF92bS5fcyhkaW0ubmFtZSkgKyBcIlxcbiAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJsYWJlbFwiLCB7IGF0dHJzOiB7IGZvcjogXCJhX2RpbV9cIiArIF92bS5hcnRpY2xlLmlkIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcIkRpbWVuc2lvblwiKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpbnB1dC1maWVsZCBjb2wgczRcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbC5udW1iZXJcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uYXJ0aWNsZS5wb3J0aW9uLnNpemUsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImFydGljbGUucG9ydGlvbi5zaXplXCIsXG4gICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHsgbnVtYmVyOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiYV9wc2l6ZV9cIiArIF92bS5hcnRpY2xlLmlkLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIkdlc2FtdGluaGFsdFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgc3RlcDogXCIwLjAxXCIsXG4gICAgICAgICAgICAgICAgbWF4OiBcIjVcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLmFydGljbGUucG9ydGlvbi5zaXplIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoXG4gICAgICAgICAgICAgICAgICAgIF92bS5hcnRpY2xlLnBvcnRpb24sXG4gICAgICAgICAgICAgICAgICAgIFwic2l6ZVwiLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX24oJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kZm9yY2VVcGRhdGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwibGFiZWxcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGZvcjogXCJhX3BzaXplX1wiICsgX3ZtLmFydGljbGUuaWQgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbX3ZtLl92KFwiUG9ydGlvbnNpbmhhbHRcIildXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImlucHV0LWZpZWxkIGNvbCBzNFwiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiTWF0ZXJpYWxpemVTZWxlY3RcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhX3B0eXBlX1wiICsgX3ZtLmFydGljbGUuaWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uYXJ0aWNsZS5wb3J0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIkFydFwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5hcnRpY2xlLnBvcnRpb24udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5hcnRpY2xlLnBvcnRpb24sIFwidHlwZVwiLCBfdm0uX24oJCR2KSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJhcnRpY2xlLnBvcnRpb24udHlwZVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLmRpbWVuc2lvbnMsIGZ1bmN0aW9uKGRpbSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICB7IGtleTogZGltLmlkLCBkb21Qcm9wczogeyB2YWx1ZTogZGltLmlkIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgXCIgKyBfdm0uX3MoZGltLm5hbWUpICsgXCJcXG4gICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwibGFiZWxcIiwgeyBhdHRyczogeyBmb3I6IFwiYV9wdHlwZV9cIiArIF92bS5hcnRpY2xlLmlkIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcIlBvcnRpb25zYmV6ZWljaG51bmdcIilcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiaW5wdXQtZmllbGQgY29sIHM0XCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWwubnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmFydGljbGUucG9ydGlvbi5wcmljZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiYXJ0aWNsZS5wb3J0aW9uLnByaWNlXCIsXG4gICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHsgbnVtYmVyOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInZhbGlkYXRlXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiYV9wcHJpY2VfXCIgKyBfdm0uYXJ0aWNsZS5pZCxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJQcmVpc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgc3RlcDogXCIwLjAxXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5hcnRpY2xlLnBvcnRpb24ucHJpY2UgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmFydGljbGUucG9ydGlvbixcbiAgICAgICAgICAgICAgICAgICAgXCJwcmljZVwiLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX24oJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kZm9yY2VVcGRhdGUoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwibGFiZWxcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGZvcjogXCJhX3BwcmljZV9cIiArIF92bS5hcnRpY2xlLmlkIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW192bS5fdihcIlBvcnRpb25zcHJlaXMgaW4g4oKsXCIpXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjb2wgczEyIHJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0XCIgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF92bS5fdihcIkdlc2FtdHByZWlzXFxuICAgICAgICAgIFwiKSxcbiAgICAgICAgICAgICAgICBfYyhcIlR3ZWVuZWROdW1iZXJcIiwge1xuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2VydDogX3ZtLmFydGljbGUuQ29udGVudFByaWNlLFxuICAgICAgICAgICAgICAgICAgICBlaW5oZWl0OiBcIuKCrFwiLFxuICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJyb3dcIiwgYXR0cnM6IHsgaWQ6IF92bS5pZGVudGlmaWVyICsgXCJfdmFyaWFudHNcIiB9IH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImNvbCBzMTJcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uX2woX3ZtLnZhcmlhbnRzLCBmdW5jdGlvbih2YXJpYW50LCBpbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfYyhcIkFydGljbGVWYXJpYW50XCIsIHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJhcnRpY2xlX1wiICsgX3ZtLmFydGljbGUuaWQgKyBcIl92YXJpYW50X1wiICsgaW5kZXgsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOlxuICAgICAgICAgICAgICAgICAgICAgIFwiYXJ0aWNsZV9cIiArIF92bS5hcnRpY2xlLmlkICsgXCJfdmFyaWFudF9cIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50OiB2YXJpYW50LFxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBfdm0uYXJ0aWNsZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhdHRyczogeyBocmVmOiBcIiNcIiB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uYWRkVmFyaWFudChfdm0uYXJ0aWNsZSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihcIlZhcmlhbnRlIGhpbnp1ZsO8Z2VuXCIpXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMlxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF0pLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLWFjdGlvblwiIH0sIFtcbiAgICAgIF9jKFxuICAgICAgICBcImFcIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7IGhyZWY6IFwiI1wiIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS5kZWxldGVBcnRpY2xlKF92bS5hcnRpY2xlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW192bS5fdihcIkFydGlrZWwgbMO2c2NoZW5cIildXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5jaGFuZ2VkXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHsgaHJlZjogXCIjXCIgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnN0b3JlQXJ0aWNsZShfdm0uYXJ0aWNsZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl92KFwiQXJ0aWtlbCBzcGVpY2hlcm5cIildXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwicm93XCIgfSwgW1xuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiaW5wdXQtZmllbGQgY29sIHM0XCIgfSwgW1xuICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgIHZhbHVlOiBfdm0udmFyaWFudC5uYW1lLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2YXJpYW50Lm5hbWVcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc3RhdGljQ2xhc3M6IFwidmFsaWRhdGVcIixcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBpZDogX3ZtLmlkZW50aWZpZXIgKyBcIl9uYW1lXCIsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwiVmFyaWFudGVuYmV6ZWljaG51bmdcIixcbiAgICAgICAgICB0eXBlOiBcInRleHRcIlxuICAgICAgICB9LFxuICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLnZhcmlhbnQubmFtZSB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF92bS4kc2V0KF92bS52YXJpYW50LCBcIm5hbWVcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImxhYmVsXCIsXG4gICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiYWN0aXZlXCIsIGF0dHJzOiB7IGZvcjogX3ZtLmlkZW50aWZpZXIgKyBcIl9uYW1lXCIgfSB9LFxuICAgICAgICBbX3ZtLl92KFwiVmFyaWFudGVuYmV6ZWljaG51bmdcIildXG4gICAgICApXG4gICAgXSksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImlucHV0LWZpZWxkIGNvbCBzNFwiIH0sIFtcbiAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsLm51bWJlclwiLFxuICAgICAgICAgICAgdmFsdWU6IF92bS52YXJpYW50LnByaWNlLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2YXJpYW50LnByaWNlXCIsXG4gICAgICAgICAgICBtb2RpZmllcnM6IHsgbnVtYmVyOiB0cnVlIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHN0YXRpY0NsYXNzOiBcInZhbGlkYXRlXCIsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaWQ6IF92bS5pZGVudGlmaWVyICsgXCJfcHJpY2VcIixcbiAgICAgICAgICBwbGFjZWhvbGRlcjogXCJQcmVpc1wiLFxuICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgc3RlcDogXCIwLjAxXCJcbiAgICAgICAgfSxcbiAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS52YXJpYW50LnByaWNlIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLnZhcmlhbnQsIFwicHJpY2VcIiwgX3ZtLl9uKCRldmVudC50YXJnZXQudmFsdWUpKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmx1cjogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gX3ZtLiRmb3JjZVVwZGF0ZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLCBhdHRyczogeyBmb3I6IF92bS5pZGVudGlmaWVyICsgXCJfcHJpY2VcIiB9IH0sXG4gICAgICAgIFtfdm0uX3YoXCJQcmVpc1wiKV1cbiAgICAgIClcbiAgICBdKSxcbiAgICBfdm0uX3YoXCIgXCIpLFxuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiaW5wdXQtZmllbGQgY29sIHMyXCIgfSwgW1xuICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcInZhbGlkYXRlXCIsXG4gICAgICAgIGF0dHJzOiB7IGRpc2FibGVkOiBcIlwiIH0sXG4gICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0uYXJ0aWNsZS5Qb3J0aW9uUHJpY2UgKyBfdm0udmFyaWFudC5QcmljZSB9XG4gICAgICB9KVxuICAgIF0pLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpbnB1dC1maWVsZCBjb2wgczJcIiB9LCBbXG4gICAgICBfYyhcbiAgICAgICAgXCJhXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyczogeyBocmVmOiBcIiNcIiB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdm0uc3RvcmVWYXJpYW50KF92bS52YXJpYW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW192bS5fdihcIlZhcmlhbnRlIHNwZWljaGVyblwiKV1cbiAgICAgIClcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBfdm0uX2woX3ZtLmFydGljbGVzLCBmdW5jdGlvbihhLCBpbmRleCkge1xuICAgICAgcmV0dXJuIF9jKFwiQXJ0aWNsZUNhcmRcIiwge1xuICAgICAgICBrZXk6IFwiYXJ0aWNsZV9cIiArIGluZGV4LFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkZW50aWZpZXI6IFwiYXJ0aWNsZV9cIiArIGluZGV4LFxuICAgICAgICAgIGE6IGEsXG4gICAgICAgICAgZGltZW5zaW9uczogX3ZtLmRpbWVuc2lvbnMsXG4gICAgICAgICAgZ3JvdXBzOiBfdm0uZ3JvdXBzXG4gICAgICAgIH0sXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgXCJkZWxldGUtYXJ0aWNsZVwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBfdm0ucmVtb3ZlRnJvbUxpc3QoYSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSksXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvdyBwaW4tdG9wXCIgfSwgW1xuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29sIHMxMiBtNCBjYXJkIGRhcmtlbi00IGdyZXkgZ3JleS10ZXh0IHRleHQtbGlnaHRlbi0yXCIgfSxcbiAgICAgIFtcbiAgICAgICAgX2MoXCJ0YWJsZVwiLCB7IHN0YXRpY0NsYXNzOiBcImNhcmQtY29udGVudFwiIH0sIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwidGJvZHlcIixcbiAgICAgICAgICAgIHsgc3RhdGljU3R5bGU6IHsgXCJtYXgtaGVpZ2h0XCI6IFwiMzAwcHhcIiB9IH0sXG4gICAgICAgICAgICBfdm0uX2woX3ZtLml0ZW1zLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICBcInRyXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5jb3VudCA+IDAsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJpdGVtLmNvdW50ID4gMFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBrZXk6IFwiYm9uX1wiICsgaXRlbS5zaG9ydFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ0ZFwiLCB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICBcIiArIF92bS5fcyhpdGVtLmNvdW50KSArIFwiIMOXXFxuICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFwidGRcIiwgW192bS5fdihfdm0uX3MoaXRlbS5uYW1lKSldKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFwiVHdlZW5lZE51bWJlclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB3ZXJ0OiBpdGVtLnN1bSwgZWluaGVpdDogXCLigqxcIiwgcHJlY2lzaW9uOiAyIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJ0Zm9vdFwiLCBbXG4gICAgICAgICAgICBfYyhcInRyXCIsIHsgc3RhdGljQ2xhc3M6IFwid2hpdGUtdGV4dFwiIH0sIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJ0aFwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicmlnaHQtYWxpZ25cIiB9LFxuICAgICAgICAgICAgICAgIFtfYyhcIlR3ZWVuZWROdW1iZXJcIiwgeyBhdHRyczogeyB3ZXJ0OiBfdm0udG90YWxDb3VudCB9IH0pXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwidGhcIiwgW192bS5fdihcIlxcbiAgICAgICAgICAgIEFydGlrZWxcXG4gICAgICAgICAgXCIpXSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwidGhcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduXCIgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcIlR3ZWVuZWROdW1iZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB3ZXJ0OiBfdm0udG90YWxTdW0sIGVpbmhlaXQ6IFwi4oKsXCIsIHByZWNpc2lvbjogMiB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgICBdXG4gICAgKSxcbiAgICBfdm0uX3YoXCIgXCIpLFxuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29sIHMxMiBtOFwiIH0sIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJvd1wiIH0sXG4gICAgICAgIF92bS5fbChfdm0uaXRlbXMsIGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBrZXk6IFwiYm9uX2J0bl9cIiArIGEuc2hvcnQsIHN0YXRpY0NsYXNzOiBcImNvbCBzM1wiIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgIFwid2F2ZXMtZWZmZWN0IHdhdmVzLWxpZ2h0IGJ0bi1sYXJnZSBidG4tZmxhdCBjb2wgczEyXCIsXG4gICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgYS5jb3VudCsrXG4gICAgICAgICAgICAgICAgICAgICAgYS5zdW0gKz0gYS5wcmljZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KFwiXFxuICAgICAgICAgIFwiICsgX3ZtLl9zKGEuc2hvcnQpICsgXCJcXG4gICAgICAgIFwiKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXVxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIDBcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJyb3dcIiB9LCBbXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29sIHMzXCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwid2F2ZXMtZWZmZWN0IHdhdmVzLWxpZ2h0IGJ0bi1sYXJnZSBvcmFuZ2UgY29sIHMxMlwiLFxuICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnJlc2V0Qm9uIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl92KFwiXFxuICAgICAgICAgIFJlc2V0XFxuICAgICAgICBcIildXG4gICAgICAgICAgKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJ0clwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcImludmVudG9yeS1pdGVtXCIsXG4gICAgICBjbGFzczoge1xuICAgICAgICBcInRlYWwgbGlnaHRlbi01XCI6IF92bS5pdGVtLlNhbGUgPiAwLFxuICAgICAgICBcIm9yYW5nZSBkYXJrZW4tMiB3aGl0ZS10ZXh0XCI6IF92bS5pdGVtLlNvbGQgJSAxICE9IDAsXG4gICAgICAgIFwicmVkIGRhcmtlbi0yIHdoaXRlLXRleHRcIjogX3ZtLml0ZW0uU2FsZSA8IDBcbiAgICAgIH0sXG4gICAgICBzdGF0aWNTdHlsZTogeyBib3JkZXI6IFwiMFwiIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJyaWdodC1hbGlnblwiIH0sIFtcbiAgICAgICAgX3ZtLl92KFwiXFxuICAgIFwiICsgX3ZtLl9zKF92bS5pdGVtLmFydGljbGUubmFtZSkgKyBcIlxcbiAgXCIpXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX2woW1wic3RhcnRcIiwgXCJmZXRjaGVkXCIsIFwiZW5kXCIsIFwibG9zdFwiXSwgZnVuY3Rpb24ocHJvcCkge1xuICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogX3ZtLml0ZW0uYXJ0aWNsZS5zaG9ydCArIFwiX1wiICsgcHJvcCxcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJvcmRlci1ib3R0b20gY2VudGVyLWFsaWduXCIsXG4gICAgICAgICAgICBjbGFzczogeyBhY3RpdmU6IF92bS5jbGFzc09iamVjdC5hY3RpdmUgPT0gcHJvcCB9LFxuICAgICAgICAgICAgYXR0cnM6IHsgY29udGVudGVkaXRhYmxlOiBcIlwiIH0sXG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBrZXlwcmVzczogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF92bS5yZXN0cmljdElucHV0KHByb3AsICRldmVudClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdm0ub25Gb2N1cyhwcm9wLCAkZXZlbnQpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdm0ub25CbHVyKHByb3AsICRldmVudClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW192bS5fdihcIlxcbiAgICBcIiArIF92bS5fcyhfdm0uaXRlbVtwcm9wXSkgKyBcIlxcbiAgXCIpXVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJ0ZFwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduIGJvcmRlci1ib3R0b20gYm9yZGVyLWRpYWdyYW1cIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJUd2VlbmVkTnVtYmVyXCIsIHtcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIFwiYm9yZGVyLWltYWdlXCI6XG4gICAgICAgICAgICAgICAgXCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQgLCByZ2JhKDAsMTUwLDEzNiwuMDEpIDAlLCByZ2JhKDAsMTUwLDEzNiwuMykgXCIgK1xuICAgICAgICAgICAgICAgIChfdm0uaXRlbS5Tb2xkICogMTAwKSAvIF92bS50b3RhbCArXG4gICAgICAgICAgICAgICAgXCIlLCB0cmFuc3BhcmVudCBcIiArXG4gICAgICAgICAgICAgICAgKF92bS5pdGVtLlNvbGQgKiAxMDApIC8gX3ZtLnRvdGFsICtcbiAgICAgICAgICAgICAgICBcIiUsdHJhbnNwYXJlbnQgMTAwJSkgMVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgd2VydDogX3ZtLml0ZW0uU29sZCxcbiAgICAgICAgICAgICAgZWluaGVpdDogX3ZtLkRpbWVuc2lvbi5zaG9ydCxcbiAgICAgICAgICAgICAgcHJlY2lzaW9uOiBfdm0uaXRlbS5Qb3J0aW9uUHJlY2lzaW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJ0ZFwiLFxuICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduIGJvcmRlci1ib3R0b21cIiB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJUd2VlbmVkTnVtYmVyXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHdlcnQ6IF92bS5pdGVtLlNhbGUsIGVpbmhlaXQ6IFwi4oKsXCIsIHByZWNpc2lvbjogMiB9XG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcInRhYmxlXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFibGUgY29uZGVuc2VkIGhpZ2hsaWdodFwiIH0sIFtcbiAgICBfdm0uX20oMCksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcbiAgICAgIFwidGJvZHlcIixcbiAgICAgIF92bS5fbChfdm0uaW52ZW50b3J5LCBmdW5jdGlvbihpdGVtLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gX2MoXCJJbnZlbnRvcnlJdGVtXCIsIHtcbiAgICAgICAgICBrZXk6IFwiaXRlbS1cIiArIGluZGV4LFxuICAgICAgICAgIGF0dHJzOiB7IGRpbWVuc2lvbnM6IF92bS5kaW1lbnNpb25zLCBpdGVtOiBpdGVtLCB0b3RhbDogX3ZtLnNvbGQgfVxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICAxXG4gICAgKSxcbiAgICBfdm0uX3YoXCIgXCIpLFxuICAgIF9jKFwidGZvb3RcIiwgW1xuICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJyaWdodC1hbGlnblwiLCBhdHRyczogeyBjb2xzcGFuOiBcIjZcIiB9IH0sIFtcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIEdlc2FtdHN1bW1lOlxcbiAgICAgIFwiKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicmlnaHQtYWxpZ25cIiB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiVHdlZW5lZE51bWJlclwiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7IHdlcnQ6IF92bS5zYWxlcywgcHJlY2lzaW9uOiAyLCBlaW5oZWl0OiBcIuKCrFwiIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXG4gIGZ1bmN0aW9uKCkge1xuICAgIHZhciBfdm0gPSB0aGlzXG4gICAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gICAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gICAgcmV0dXJuIF9jKFwidGhlYWRcIiwgW1xuICAgICAgX2MoXCJ0clwiLCBbXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJyaWdodC1hbGlnblwiIH0sIFtcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIEFydGlrZWxcXG4gICAgICBcIilcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJjZW50ZXItYWxpZ25cIiB9LCBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICBCZWdpbm5cXG4gICAgICBcIilcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJjZW50ZXItYWxpZ25cIiB9LCBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICBadWdhbmdcXG4gICAgICBcIilcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJjZW50ZXItYWxpZ25cIiB9LCBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICBFbmRlXFxuICAgICAgXCIpXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgc3RhdGljQ2xhc3M6IFwiY2VudGVyLWFsaWduXCIgfSwgW1xuICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgVmVybHVzdFxcbiAgICAgIFwiKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IHN0YXRpY0NsYXNzOiBcInJpZ2h0LWFsaWduXCIgfSwgW1xuICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgVmVya2F1ZnRcXG4gICAgICBcIilcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBzdGF0aWNDbGFzczogXCJyaWdodC1hbGlnblwiIH0sIFtcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgIFN1bW1lXFxuICAgICAgXCIpXG4gICAgICAgIF0pXG4gICAgICBdKVxuICAgIF0pXG4gIH1cbl1cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcInNlbGVjdFwiLFxuICAgIHsgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS52YWx1ZSB9IH0sXG4gICAgW1xuICAgICAgX2MoXCJvcHRpb25cIiwgeyBhdHRyczogeyB2YWx1ZTogXCJcIiwgZGlzYWJsZWQ6IFwiXCIsIHNlbGVjdGVkOiBcIlwiIH0gfSwgW1xuICAgICAgICBfdm0uX3YoXCJcXG4gICAgQml0dGUgd8OkaGxlblxcbiAgXCIpXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX3QoXCJkZWZhdWx0XCIpXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwibmF2XCIsIHsgc3RhdGljQ2xhc3M6IFwibmF2LWV4dGVuZGVkXCIsIGNsYXNzOiBfdm0ucHJpbWFyeUNvbG9yIH0sIFtcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hdi13cmFwcGVyIGNvbnRhaW5lclwiIH0pLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYXYtY29udGVudCBjb250YWluZXJcIiB9LCBbXG4gICAgICBfYyhcInVsXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFicyB0YWJzLXRyYW5zcGFyZW50XCIgfSwgW1xuICAgICAgICBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFiXCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5jaGFuZ2VUYWIoXCJpbnZlbnRvcnlcIiwgJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtfdm0uX3YoXCJJbnZlbnR1clwiKV1cbiAgICAgICAgICApXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImxpXCIsIHsgc3RhdGljQ2xhc3M6IFwidGFiXCIgfSwgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImFjdGl2ZVwiLFxuICAgICAgICAgICAgICBhdHRyczogeyBUd2VlbmVkTnVtYmVyOiBcIlwiIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5jaGFuZ2VUYWIoXCJhcnRpY2xlXCIsICRldmVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbX3ZtLl92KFwiQXJ0aWtlbGxpc3RlXCIpXVxuICAgICAgICAgIClcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwibGlcIiwgeyBzdGF0aWNDbGFzczogXCJ0YWJcIiB9LCBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmNoYW5nZVRhYihcImNhbGNcIiwgJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtfdm0uX3YoXCJSZWNobmVyXCIpXVxuICAgICAgICAgIClcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFwic3BhblwiLCB7IHN0YXRpY0NsYXNzOiBcInR3ZWVuZWRcIiB9LCBbXG4gICAgX3ZtLl92KFwiXFxuICBcIiArIF92bS5fcyhfdm0uaW50QW5pbWF0ZWQpICsgXCJcXG4gIFwiKSxcbiAgICBfdm0ucHJlY2lzaW9uID4gMFxuICAgICAgPyBfYyhcInNwYW5cIiwgW192bS5fdihcIlxcbiAgICAsXCIgKyBfdm0uX3MoX3ZtLmRlY2lBbmltYXRlZCkgKyBcIlxcbiAgXCIpXSlcbiAgICAgIDogX3ZtLl9lKCksXG4gICAgX3ZtLl92KFwiXFxuICBcIiArIF92bS5fcyhfdm0uZWluaGVpdCkgKyBcIlxcblwiKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=