選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

376 行
37KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-common"],{
  2. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js":
  3. /*!*************************************************************************************!*\
  4. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js ***!
  5. \*************************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/src/jquery.js");
  10. /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! adminlte-js */ "./node_modules/admin-lte/dist/js/adminlte.min.js");
  12. /* harmony import */ var adminlte_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(adminlte_js__WEBPACK_IMPORTED_MODULE_1__);
  13. /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! adminlte-plugin/bootstrap/js/bootstrap.min.js */ "./node_modules/admin-lte/plugins/bootstrap/js/bootstrap.min.js");
  14. /* harmony import */ var adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_bootstrap_js_bootstrap_min_js__WEBPACK_IMPORTED_MODULE_2__);
  15. /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! adminlte-plugin/select2/js/select2.min.js */ "./node_modules/admin-lte/plugins/select2/js/select2.min.js");
  16. /* harmony import */ var adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_select2_min_js__WEBPACK_IMPORTED_MODULE_3__);
  17. /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! adminlte-plugin/select2/js/i18n/fr.js */ "./node_modules/admin-lte/plugins/select2/js/i18n/fr.js");
  18. /* harmony import */ var adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(adminlte_plugin_select2_js_i18n_fr_js__WEBPACK_IMPORTED_MODULE_4__);
  19. /* harmony import */ var adminlte_plugin_select2_css_select2_min_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! adminlte-plugin/select2/css/select2.min.css */ "./node_modules/admin-lte/plugins/select2/css/select2.min.css");
  20. /* harmony import */ var adminlte_plugin_select2_bootstrap4_theme_select2_bootstrap4_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! adminlte-plugin/select2-bootstrap4-theme/select2-bootstrap4.min.css */ "./node_modules/admin-lte/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css");
  21. /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! toastr/toastr.js */ "./node_modules/toastr/toastr.js");
  22. /* harmony import */ var toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7__);
  23. /* harmony import */ var toastr_toastr_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! toastr/toastr.scss */ "./node_modules/toastr/toastr.scss");
  24. /* harmony import */ var _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../tools/tools.js */ "../LaclicBundles/SovBundle/Resources/assets/tools/tools.js");
  25. /* harmony import */ var _js_notification_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./js/notification.js */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js");
  26. /* harmony import */ var _common_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./common.scss */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss");
  27. /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./common.js */ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js");
  28. /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_common_js__WEBPACK_IMPORTED_MODULE_12__);
  29. // JQuery
  30. __webpack_require__.g.$ = __webpack_require__.g.jQuery = $; // Adminlte
  31. // Bootstrap
  32. // Select2
  33. // Toastr
  34. __webpack_require__.g.toastr = (toastr_toastr_js__WEBPACK_IMPORTED_MODULE_7___default()); // Tools
  35. __webpack_require__.g.Tools = _tools_tools_js__WEBPACK_IMPORTED_MODULE_9__.Tools;
  36. __webpack_require__.g.Notification = _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification;
  37. _js_notification_js__WEBPACK_IMPORTED_MODULE_10__.Notification.init(); // Common
  38. /***/ }),
  39. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js":
  40. /*!*********************************************************************************!*\
  41. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.js ***!
  42. \*********************************************************************************/
  43. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  44. __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  45. /* Notifications */
  46. //Notification.init() ;
  47. /* Tooltip */
  48. $('[data-toggle="tooltip"]').tooltip();
  49. /* Select2 */
  50. if ($('.select2, select.form-control').length) {
  51. $('form .form-widget>select.form-control, .select2').each(function (i, elm) {
  52. if (!$(this).hasClass('disable-select2')) {
  53. setSelect2($(elm));
  54. }
  55. });
  56. $('form select.form-control').each(function (i, elm) {
  57. if (!$(this).hasClass('disable-select2')) {
  58. setSelect2($(elm));
  59. }
  60. });
  61. }
  62. function setSelect2($select) {
  63. if (typeof $select.data('select2-id') === 'undefined') {
  64. $select.data('init', 'set');
  65. var options = {
  66. width: "100%",
  67. theme: "bootstrap4",
  68. dropdownAutoWidth: false,
  69. allowClear: true,
  70. minimumResultsForSearch: 8
  71. };
  72. if ($select.data('allow-clear') == 'false') {
  73. options.allowClear = false;
  74. }
  75. if ($select.data('width')) {
  76. options.width = 'auto';
  77. }
  78. if ($select.find('option[value=""]')) {
  79. options.placeholder = $select.find('option[value=""]').html();
  80. }
  81. /*if($select.is(':required') == false) {
  82. options.allowclear = true
  83. }*/
  84. var myselect = $select.select2(options);
  85. myselect.on('select2:select', function (e) {
  86. var event = new Event('change');
  87. e.target.dispatchEvent(event);
  88. });
  89. myselect.on('select2:unselect', function (e) {
  90. var event = new Event('change');
  91. e.target.dispatchEvent(event);
  92. });
  93. return myselect;
  94. }
  95. }
  96. $('.action-delete').on('click', function (e) {
  97. e.preventDefault();
  98. var formAction = $(this).attr('formaction');
  99. $('#modal-delete').modal({
  100. backdrop: true,
  101. keyboard: true
  102. }).off('click', '#modal-delete-button').on('click', '#modal-delete-button', function () {
  103. var deleteForm = $('#delete-form');
  104. deleteForm.attr('action', formAction);
  105. deleteForm.submit();
  106. });
  107. });
  108. /***/ }),
  109. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js":
  110. /*!******************************************************************************************!*\
  111. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/js/notification.js ***!
  112. \******************************************************************************************/
  113. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  114. "use strict";
  115. __webpack_require__.r(__webpack_exports__);
  116. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  117. /* harmony export */ "Notification": () => (/* binding */ Notification)
  118. /* harmony export */ });
  119. /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
  120. /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);
  121. /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js");
  122. /* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_1__);
  123. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  124. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_2__);
  125. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
  126. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__);
  127. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  128. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  129. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  130. var Notification = /*#__PURE__*/function () {
  131. function Notification() {
  132. _classCallCheck(this, Notification);
  133. }
  134. _createClass(Notification, null, [{
  135. key: "init",
  136. value: function init() {
  137. toastr.options.timeOut = 3000;
  138. toastr.options.positionClass = 'toast-bottom-right';
  139. toastr.options.onHidden = function () {
  140. if ($('#toast-container .toast').length == 1) {
  141. $('#toast-close-all').remove();
  142. }
  143. };
  144. }
  145. }, {
  146. key: "set",
  147. value: function set(notifications) {
  148. var currentNotifications = new Array();
  149. for (var type in notifications) {
  150. for (var key in notifications[type]) {
  151. if (!currentNotifications.includes(notifications[type][key])) {
  152. currentNotifications.push(notifications[type][key]);
  153. self.add(type, notifications[type][key]);
  154. }
  155. }
  156. }
  157. }
  158. }, {
  159. key: "add",
  160. value: function add(type, text) {
  161. toastr[type](text);
  162. var $container = $('#toast-container');
  163. var selectorButtonCloseAll = '#toast-close-all';
  164. var countMessages = $container.find('.toast').length;
  165. if ($(selectorButtonCloseAll).length == 0 && countMessages > 2) {
  166. $container.prepend('<button id="toast-close-all"><i class="fa fa-times"></i></button>');
  167. }
  168. $(selectorButtonCloseAll).off('click').on('click', function () {
  169. toastr.remove();
  170. if (countMessages == 0) {
  171. $('#toast-close-all').remove();
  172. }
  173. });
  174. }
  175. }]);
  176. return Notification;
  177. }();
  178. /***/ }),
  179. /***/ "../LaclicBundles/SovBundle/Resources/assets/tools/tools.js":
  180. /*!******************************************************************!*\
  181. !*** ../LaclicBundles/SovBundle/Resources/assets/tools/tools.js ***!
  182. \******************************************************************/
  183. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  184. "use strict";
  185. __webpack_require__.r(__webpack_exports__);
  186. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  187. /* harmony export */ "Tools": () => (/* binding */ Tools)
  188. /* harmony export */ });
  189. /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
  190. /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);
  191. /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
  192. /* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
  193. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  194. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
  195. /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js");
  196. /* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__);
  197. /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
  198. /* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);
  199. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
  200. /* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__);
  201. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  202. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  203. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  204. var Tools = /*#__PURE__*/function () {
  205. function Tools() {
  206. _classCallCheck(this, Tools);
  207. }
  208. _createClass(Tools, null, [{
  209. key: "log",
  210. value: function log(value) {
  211. try {
  212. console.log(value);
  213. } catch (_unused) {}
  214. }
  215. }, {
  216. key: "arrayRemove",
  217. value: function arrayRemove(arr, value) {
  218. return arr.filter(function (ele) {
  219. return ele != value;
  220. });
  221. }
  222. }, {
  223. key: "toPlainText",
  224. value: function toPlainText(html) {
  225. var scratchDiv = document.createElement('div');
  226. scratchDiv.innerHTML = html;
  227. return scratchDiv.textContent;
  228. }
  229. }, {
  230. key: "getDateFormatted",
  231. value: function getDateFormatted(date, separator) {
  232. if (date) {
  233. var date = new Date(date);
  234. var _d = date.getDate(),
  235. d = _d > 9 ? _d : '0' + _d,
  236. _m = date.getMonth() + 1,
  237. m = _m > 9 ? _m : '0' + _m,
  238. formatted = d + separator + m + separator + date.getFullYear();
  239. return formatted;
  240. } else {
  241. return '';
  242. }
  243. }
  244. }, {
  245. key: "getUrlParameter",
  246. value: function getUrlParameter(sParam) {
  247. var sPageURL = window.location.search.substring(1),
  248. sURLVariables = sPageURL.split('&'),
  249. sParameterName,
  250. i;
  251. for (i = 0; i < sURLVariables.length; i++) {
  252. sParameterName = sURLVariables[i].split('=');
  253. if (sParameterName[0] === sParam) {
  254. return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
  255. }
  256. }
  257. }
  258. }, {
  259. key: "indexOfFirstDigit",
  260. value: function indexOfFirstDigit(input) {
  261. var i = 0;
  262. for (; input[i] < '0' || input[i] > '9'; i++) {
  263. ;
  264. }
  265. return i == input.length ? -1 : i;
  266. }
  267. }, {
  268. key: "indexOfLastDigit",
  269. value: function indexOfLastDigit(input) {
  270. var i = input.length - 1;
  271. for (; input[i] < '0' || input[i] > '9'; i--) {
  272. ;
  273. }
  274. return i == input.length ? -1 : i;
  275. }
  276. }]);
  277. return Tools;
  278. }();
  279. /***/ }),
  280. /***/ "../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss":
  281. /*!***********************************************************************************!*\
  282. !*** ../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/common.scss ***!
  283. \***********************************************************************************/
  284. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  285. "use strict";
  286. __webpack_require__.r(__webpack_exports__);
  287. // extracted by mini-css-extract-plugin
  288. /***/ })
  289. },
  290. /******/ __webpack_require__ => { // webpackRuntimeModules
  291. /******/ "use strict";
  292. /******/
  293. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  294. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_a-function_js-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_array_find_js","vendors-node_modules_core-js_internals_advance-string-index_js-node_modules_core-js_internals-bed4a0","vendors-node_modules_jquery_src_jquery_js","vendors-node_modules_admin-lte_dist_js_adminlte_min_js-node_modules_admin-lte_plugins_bootstr-9c1f64"], () => (__webpack_exec__("../LaclicBundles/SovBundle/Resources/assets/app/adminlte/common/app.common.js")));
  295. /******/ var __webpack_exports__ = __webpack_require__.O();
  296. /******/ }
  297. ]);
  298. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFjbGljQnVuZGxlcy9Tb3ZCdW5kbGUvUmVzb3VyY2VzL2Fzc2V0cy9hcHAvYWRtaW5sdGUvY29tbW9uL2FwcC5jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9qcy9ub3RpZmljYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvdG9vbHMvdG9vbHMuanMiLCJ3ZWJwYWNrOi8vLy4uL0xhY2xpY0J1bmRsZXMvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2NvbW1vbi9jb21tb24uc2NzcyJdLCJuYW1lcyI6WyJnbG9iYWwiLCIkIiwialF1ZXJ5IiwidG9hc3RyIiwiVG9vbHMiLCJOb3RpZmljYXRpb24iLCJ0b29sdGlwIiwibGVuZ3RoIiwiZWFjaCIsImkiLCJlbG0iLCJoYXNDbGFzcyIsInNldFNlbGVjdDIiLCIkc2VsZWN0IiwiZGF0YSIsIm9wdGlvbnMiLCJ3aWR0aCIsInRoZW1lIiwiZHJvcGRvd25BdXRvV2lkdGgiLCJhbGxvd0NsZWFyIiwibWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCJmaW5kIiwicGxhY2Vob2xkZXIiLCJodG1sIiwibXlzZWxlY3QiLCJzZWxlY3QyIiwib24iLCJlIiwiZXZlbnQiLCJFdmVudCIsInRhcmdldCIsImRpc3BhdGNoRXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImZvcm1BY3Rpb24iLCJhdHRyIiwibW9kYWwiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwib2ZmIiwiZGVsZXRlRm9ybSIsInN1Ym1pdCIsInRpbWVPdXQiLCJwb3NpdGlvbkNsYXNzIiwib25IaWRkZW4iLCJyZW1vdmUiLCJub3RpZmljYXRpb25zIiwiY3VycmVudE5vdGlmaWNhdGlvbnMiLCJBcnJheSIsInR5cGUiLCJrZXkiLCJpbmNsdWRlcyIsInB1c2giLCJzZWxmIiwiYWRkIiwidGV4dCIsIiRjb250YWluZXIiLCJzZWxlY3RvckJ1dHRvbkNsb3NlQWxsIiwiY291bnRNZXNzYWdlcyIsInByZXBlbmQiLCJ2YWx1ZSIsImNvbnNvbGUiLCJsb2ciLCJhcnIiLCJmaWx0ZXIiLCJlbGUiLCJzY3JhdGNoRGl2IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJkYXRlIiwic2VwYXJhdG9yIiwiRGF0ZSIsIl9kIiwiZ2V0RGF0ZSIsImQiLCJfbSIsImdldE1vbnRoIiwibSIsImZvcm1hdHRlZCIsImdldEZ1bGxZZWFyIiwic1BhcmFtIiwic1BhZ2VVUkwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0cmluZyIsInNVUkxWYXJpYWJsZXMiLCJzcGxpdCIsInNQYXJhbWV0ZXJOYW1lIiwidW5kZWZpbmVkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaW5wdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQUEscUJBQU0sQ0FBQ0MsQ0FBUCxHQUFXRCxxQkFBTSxDQUFDRSxNQUFQLEdBQWdCRCxDQUEzQixDLENBRUE7O0NBR0E7O0NBR0E7O0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0E7QUFDQTtBQUNBRCxxQkFBTSxDQUFDRyxNQUFQLEdBQWdCQSx5REFBaEIsQyxDQUVBOztBQUNBO0FBQ0FILHFCQUFNLENBQUNJLEtBQVAsR0FBZUEsa0RBQWY7QUFFQTtBQUNBSixxQkFBTSxDQUFDSyxZQUFQLEdBQXNCQSw4REFBdEI7QUFDQUEsbUVBQUEsRyxDQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7O0FBRUE7QUFDQUosQ0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkJLLE9BQTdCO0FBRUE7O0FBQ0EsSUFBSUwsQ0FBQyxDQUFDLCtCQUFELENBQUQsQ0FBbUNNLE1BQXZDLEVBQStDO0FBRTNDTixHQUFDLENBQUMsaURBQUQsQ0FBRCxDQUFxRE8sSUFBckQsQ0FBMEQsVUFBVUMsQ0FBVixFQUFhQyxHQUFiLEVBQWtCO0FBQ3hFLFFBQUksQ0FBQ1QsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRVSxRQUFSLENBQWlCLGlCQUFqQixDQUFMLEVBQTBDO0FBQ3RDQyxnQkFBVSxDQUFDWCxDQUFDLENBQUNTLEdBQUQsQ0FBRixDQUFWO0FBQ0g7QUFDSixHQUpEO0FBTUFULEdBQUMsQ0FBQywwQkFBRCxDQUFELENBQThCTyxJQUE5QixDQUFtQyxVQUFVQyxDQUFWLEVBQWFDLEdBQWIsRUFBa0I7QUFDakQsUUFBSSxDQUFDVCxDQUFDLENBQUMsSUFBRCxDQUFELENBQVFVLFFBQVIsQ0FBaUIsaUJBQWpCLENBQUwsRUFBMEM7QUFDdENDLGdCQUFVLENBQUNYLENBQUMsQ0FBQ1MsR0FBRCxDQUFGLENBQVY7QUFDSDtBQUNKLEdBSkQ7QUFLSDs7QUFFRCxTQUFTRSxVQUFULENBQW9CQyxPQUFwQixFQUE2QjtBQUN6QixNQUFJLE9BQU9BLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLFlBQWIsQ0FBUCxLQUFzQyxXQUExQyxFQUF1RDtBQUVuREQsV0FBTyxDQUFDQyxJQUFSLENBQWEsTUFBYixFQUFxQixLQUFyQjtBQUNBLFFBQUlDLE9BQU8sR0FBRztBQUNWQyxXQUFLLEVBQUUsTUFERztBQUVWQyxXQUFLLEVBQUUsWUFGRztBQUdWQyx1QkFBaUIsRUFBRSxLQUhUO0FBSVZDLGdCQUFVLEVBQUUsSUFKRjtBQUtWQyw2QkFBdUIsRUFBRTtBQUxmLEtBQWQ7O0FBUUEsUUFBSVAsT0FBTyxDQUFDQyxJQUFSLENBQWEsYUFBYixLQUErQixPQUFuQyxFQUE0QztBQUN4Q0MsYUFBTyxDQUFDSSxVQUFSLEdBQXFCLEtBQXJCO0FBQ0g7O0FBQ0QsUUFBSU4sT0FBTyxDQUFDQyxJQUFSLENBQWEsT0FBYixDQUFKLEVBQTJCO0FBQ3ZCQyxhQUFPLENBQUNDLEtBQVIsR0FBZ0IsTUFBaEI7QUFDSDs7QUFDRCxRQUFJSCxPQUFPLENBQUNRLElBQVIsQ0FBYSxrQkFBYixDQUFKLEVBQXNDO0FBQ2xDTixhQUFPLENBQUNPLFdBQVIsR0FBc0JULE9BQU8sQ0FBQ1EsSUFBUixDQUFhLGtCQUFiLEVBQWlDRSxJQUFqQyxFQUF0QjtBQUNIO0FBQ0Q7QUFDUjtBQUNBOzs7QUFDUSxRQUFJQyxRQUFRLEdBQUdYLE9BQU8sQ0FBQ1ksT0FBUixDQUFnQlYsT0FBaEIsQ0FBZjtBQUVBUyxZQUFRLENBQUNFLEVBQVQsQ0FBWSxnQkFBWixFQUE4QixVQUFVQyxDQUFWLEVBQWE7QUFDdkMsVUFBSUMsS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVSxRQUFWLENBQVo7QUFDQUYsT0FBQyxDQUFDRyxNQUFGLENBQVNDLGFBQVQsQ0FBdUJILEtBQXZCO0FBQ0gsS0FIRDtBQUlBSixZQUFRLENBQUNFLEVBQVQsQ0FBWSxrQkFBWixFQUFnQyxVQUFVQyxDQUFWLEVBQWE7QUFDekMsVUFBSUMsS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVSxRQUFWLENBQVo7QUFDQUYsT0FBQyxDQUFDRyxNQUFGLENBQVNDLGFBQVQsQ0FBdUJILEtBQXZCO0FBQ0gsS0FIRDtBQUtBLFdBQU9KLFFBQVA7QUFDSDtBQUNKOztBQUdEdkIsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J5QixFQUFwQixDQUF1QixPQUF2QixFQUFnQyxVQUFVQyxDQUFWLEVBQWE7QUFDekNBLEdBQUMsQ0FBQ0ssY0FBRjtBQUNBLE1BQU1DLFVBQVUsR0FBR2hDLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUWlDLElBQVIsQ0FBYSxZQUFiLENBQW5CO0FBRUFqQyxHQUFDLENBQUMsZUFBRCxDQUFELENBQW1Ca0MsS0FBbkIsQ0FBeUI7QUFBQ0MsWUFBUSxFQUFFLElBQVg7QUFBaUJDLFlBQVEsRUFBRTtBQUEzQixHQUF6QixFQUNLQyxHQURMLENBQ1MsT0FEVCxFQUNrQixzQkFEbEIsRUFFS1osRUFGTCxDQUVRLE9BRlIsRUFFaUIsc0JBRmpCLEVBRXlDLFlBQVk7QUFDN0MsUUFBSWEsVUFBVSxHQUFHdEMsQ0FBQyxDQUFDLGNBQUQsQ0FBbEI7QUFDQXNDLGNBQVUsQ0FBQ0wsSUFBWCxDQUFnQixRQUFoQixFQUEwQkQsVUFBMUI7QUFDQU0sY0FBVSxDQUFDQyxNQUFYO0FBQ0gsR0FOTDtBQU9ILENBWEQsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlETyxJQUFNbkMsWUFBYjtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsV0FFSSxnQkFBYztBQUNWRixZQUFNLENBQUNZLE9BQVAsQ0FBZTBCLE9BQWYsR0FBeUIsSUFBekI7QUFDQXRDLFlBQU0sQ0FBQ1ksT0FBUCxDQUFlMkIsYUFBZixHQUErQixvQkFBL0I7O0FBQ0F2QyxZQUFNLENBQUNZLE9BQVAsQ0FBZTRCLFFBQWYsR0FBMEIsWUFBWTtBQUNsQyxZQUFJMUMsQ0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkJNLE1BQTdCLElBQXVDLENBQTNDLEVBQThDO0FBQzFDTixXQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQjJDLE1BQXRCO0FBQ0g7QUFDSixPQUpEO0FBS0g7QUFWTDtBQUFBO0FBQUEsV0FZSSxhQUFXQyxhQUFYLEVBQTBCO0FBQ3RCLFVBQUlDLG9CQUFvQixHQUFHLElBQUlDLEtBQUosRUFBM0I7O0FBQ0EsV0FBSyxJQUFJQyxJQUFULElBQWlCSCxhQUFqQixFQUFnQztBQUM1QixhQUFLLElBQUlJLEdBQVQsSUFBZ0JKLGFBQWEsQ0FBQ0csSUFBRCxDQUE3QixFQUFxQztBQUNqQyxjQUFJLENBQUNGLG9CQUFvQixDQUFDSSxRQUFyQixDQUE4QkwsYUFBYSxDQUFDRyxJQUFELENBQWIsQ0FBb0JDLEdBQXBCLENBQTlCLENBQUwsRUFBOEQ7QUFDMURILGdDQUFvQixDQUFDSyxJQUFyQixDQUEwQk4sYUFBYSxDQUFDRyxJQUFELENBQWIsQ0FBb0JDLEdBQXBCLENBQTFCO0FBQ0FHLGdCQUFJLENBQUNDLEdBQUwsQ0FBU0wsSUFBVCxFQUFlSCxhQUFhLENBQUNHLElBQUQsQ0FBYixDQUFvQkMsR0FBcEIsQ0FBZjtBQUNIO0FBQ0o7QUFDSjtBQUNKO0FBdEJMO0FBQUE7QUFBQSxXQXdCSSxhQUFXRCxJQUFYLEVBQWlCTSxJQUFqQixFQUF1QjtBQUVuQm5ELFlBQU0sQ0FBQzZDLElBQUQsQ0FBTixDQUFhTSxJQUFiO0FBRUEsVUFBSUMsVUFBVSxHQUFHdEQsQ0FBQyxDQUFDLGtCQUFELENBQWxCO0FBQ0EsVUFBSXVELHNCQUFzQixHQUFHLGtCQUE3QjtBQUNBLFVBQUlDLGFBQWEsR0FBR0YsVUFBVSxDQUFDbEMsSUFBWCxDQUFnQixRQUFoQixFQUEwQmQsTUFBOUM7O0FBRUEsVUFBSU4sQ0FBQyxDQUFDdUQsc0JBQUQsQ0FBRCxDQUEwQmpELE1BQTFCLElBQW9DLENBQXBDLElBQXlDa0QsYUFBYSxHQUFHLENBQTdELEVBQWdFO0FBQzVERixrQkFBVSxDQUFDRyxPQUFYLENBQW1CLG1FQUFuQjtBQUNIOztBQUVEekQsT0FBQyxDQUFDdUQsc0JBQUQsQ0FBRCxDQUEwQmxCLEdBQTFCLENBQThCLE9BQTlCLEVBQXVDWixFQUF2QyxDQUEwQyxPQUExQyxFQUFtRCxZQUFZO0FBQzNEdkIsY0FBTSxDQUFDeUMsTUFBUDs7QUFDQSxZQUFJYSxhQUFhLElBQUksQ0FBckIsRUFBd0I7QUFDcEJ4RCxXQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQjJDLE1BQXRCO0FBQ0g7QUFDSixPQUxEO0FBTUg7QUExQ0w7O0FBQUE7QUFBQSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU8sSUFBTXhDLEtBQWI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBLFdBRVEsYUFBV3VELEtBQVgsRUFBa0I7QUFDVixVQUFJO0FBQ0lDLGVBQU8sQ0FBQ0MsR0FBUixDQUFZRixLQUFaO0FBQ1AsT0FGRCxDQUdBLGdCQUFNLENBQUU7QUFDZjtBQVBUO0FBQUE7QUFBQSxXQVNRLHFCQUFtQkcsR0FBbkIsRUFBd0JILEtBQXhCLEVBQStCO0FBQ3ZCLGFBQU9HLEdBQUcsQ0FBQ0MsTUFBSixDQUFXLFVBQVNDLEdBQVQsRUFBYTtBQUFFLGVBQU9BLEdBQUcsSUFBSUwsS0FBZDtBQUFzQixPQUFoRCxDQUFQO0FBQ1A7QUFYVDtBQUFBO0FBQUEsV0FhUSxxQkFBbUJwQyxJQUFuQixFQUF5QjtBQUNqQixVQUFJMEMsVUFBVSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBakI7QUFDQUYsZ0JBQVUsQ0FBQ0csU0FBWCxHQUF1QjdDLElBQXZCO0FBQ0EsYUFBTzBDLFVBQVUsQ0FBQ0ksV0FBbEI7QUFDUDtBQWpCVDtBQUFBO0FBQUEsV0FtQlEsMEJBQXdCQyxJQUF4QixFQUE4QkMsU0FBOUIsRUFBeUM7QUFDakMsVUFBR0QsSUFBSCxFQUFTO0FBQ0QsWUFBSUEsSUFBSSxHQUFHLElBQUlFLElBQUosQ0FBU0YsSUFBVCxDQUFYOztBQUNBLFlBQUlHLEVBQUUsR0FBR0gsSUFBSSxDQUFDSSxPQUFMLEVBQVQ7QUFBQSxZQUNJQyxDQUFDLEdBQUdGLEVBQUUsR0FBRyxDQUFMLEdBQVNBLEVBQVQsR0FBYyxNQUFNQSxFQUQ1QjtBQUFBLFlBRUlHLEVBQUUsR0FBR04sSUFBSSxDQUFDTyxRQUFMLEtBQWtCLENBRjNCO0FBQUEsWUFHSUMsQ0FBQyxHQUFHRixFQUFFLEdBQUcsQ0FBTCxHQUFTQSxFQUFULEdBQWMsTUFBTUEsRUFINUI7QUFBQSxZQUlJRyxTQUFTLEdBQUdKLENBQUMsR0FBR0osU0FBSixHQUFnQk8sQ0FBaEIsR0FBb0JQLFNBQXBCLEdBQWdDRCxJQUFJLENBQUNVLFdBQUwsRUFKaEQ7O0FBS0EsZUFBT0QsU0FBUDtBQUNQLE9BUkQsTUFTSztBQUNHLGVBQU8sRUFBUDtBQUNQO0FBQ1I7QUFoQ1Q7QUFBQTtBQUFBLFdBa0NRLHlCQUF1QkUsTUFBdkIsRUFBK0I7QUFDdkIsVUFBSUMsUUFBUSxHQUFHQyxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLE1BQWhCLENBQXVCQyxTQUF2QixDQUFpQyxDQUFqQyxDQUFmO0FBQUEsVUFDSUMsYUFBYSxHQUFHTCxRQUFRLENBQUNNLEtBQVQsQ0FBZSxHQUFmLENBRHBCO0FBQUEsVUFFSUMsY0FGSjtBQUFBLFVBR0loRixDQUhKOztBQUtBLFdBQUtBLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBRzhFLGFBQWEsQ0FBQ2hGLE1BQTlCLEVBQXNDRSxDQUFDLEVBQXZDLEVBQTJDO0FBQ25DZ0Ysc0JBQWMsR0FBR0YsYUFBYSxDQUFDOUUsQ0FBRCxDQUFiLENBQWlCK0UsS0FBakIsQ0FBdUIsR0FBdkIsQ0FBakI7O0FBRUEsWUFBSUMsY0FBYyxDQUFDLENBQUQsQ0FBZCxLQUFzQlIsTUFBMUIsRUFBa0M7QUFDMUIsaUJBQU9RLGNBQWMsQ0FBQyxDQUFELENBQWQsS0FBc0JDLFNBQXRCLEdBQWtDLElBQWxDLEdBQXlDQyxrQkFBa0IsQ0FBQ0YsY0FBYyxDQUFDLENBQUQsQ0FBZixDQUFsRTtBQUNQO0FBQ1I7QUFDUjtBQS9DVDtBQUFBO0FBQUEsV0FpRFEsMkJBQXlCRyxLQUF6QixFQUFnQztBQUN4QixVQUFJbkYsQ0FBQyxHQUFHLENBQVI7O0FBQ0EsYUFBT21GLEtBQUssQ0FBQ25GLENBQUQsQ0FBTCxHQUFXLEdBQVgsSUFBa0JtRixLQUFLLENBQUNuRixDQUFELENBQUwsR0FBVyxHQUFwQyxFQUF5Q0EsQ0FBQyxFQUExQztBQUE4QztBQUE5Qzs7QUFDQSxhQUFPQSxDQUFDLElBQUltRixLQUFLLENBQUNyRixNQUFYLEdBQW9CLENBQUMsQ0FBckIsR0FBeUJFLENBQWhDO0FBQ1A7QUFyRFQ7QUFBQTtBQUFBLFdBdURRLDBCQUF3Qm1GLEtBQXhCLEVBQStCO0FBQ3ZCLFVBQUluRixDQUFDLEdBQUdtRixLQUFLLENBQUNyRixNQUFOLEdBQWUsQ0FBdkI7O0FBQ0EsYUFBT3FGLEtBQUssQ0FBQ25GLENBQUQsQ0FBTCxHQUFXLEdBQVgsSUFBa0JtRixLQUFLLENBQUNuRixDQUFELENBQUwsR0FBVyxHQUFwQyxFQUF5Q0EsQ0FBQyxFQUExQztBQUE4QztBQUE5Qzs7QUFDQSxhQUFPQSxDQUFDLElBQUltRixLQUFLLENBQUNyRixNQUFYLEdBQW9CLENBQUMsQ0FBckIsR0FBeUJFLENBQWhDO0FBQ1A7QUEzRFQ7O0FBQUE7QUFBQSxJOzs7Ozs7Ozs7Ozs7QUNEQSIsImZpbGUiOiJhZG1pbmx0ZS1jb21tb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIEpRdWVyeVxuaW1wb3J0ICdqcXVlcnknO1xuZ2xvYmFsLiQgPSBnbG9iYWwualF1ZXJ5ID0gJDtcblxuLy8gQWRtaW5sdGVcbmltcG9ydCAnYWRtaW5sdGUtanMnIDtcblxuLy8gQm9vdHN0cmFwXG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9ib290c3RyYXAvanMvYm9vdHN0cmFwLm1pbi5qcyc7XG5cbi8vIFNlbGVjdDJcbmltcG9ydCAnYWRtaW5sdGUtcGx1Z2luL3NlbGVjdDIvanMvc2VsZWN0Mi5taW4uanMnO1xuaW1wb3J0ICdhZG1pbmx0ZS1wbHVnaW4vc2VsZWN0Mi9qcy9pMThuL2ZyLmpzJztcbmltcG9ydCAnYWRtaW5sdGUtcGx1Z2luL3NlbGVjdDIvY3NzL3NlbGVjdDIubWluLmNzcyc7XG5pbXBvcnQgJ2FkbWlubHRlLXBsdWdpbi9zZWxlY3QyLWJvb3RzdHJhcDQtdGhlbWUvc2VsZWN0Mi1ib290c3RyYXA0Lm1pbi5jc3MnO1xuXG4vLyBUb2FzdHJcbmltcG9ydCB0b2FzdHIgZnJvbSAndG9hc3RyL3RvYXN0ci5qcycgO1xuaW1wb3J0ICd0b2FzdHIvdG9hc3RyLnNjc3MnIDtcbmdsb2JhbC50b2FzdHIgPSB0b2FzdHIgO1xuXG4vLyBUb29sc1xuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICcuLi8uLi8uLi90b29scy90b29scy5qcyc7XG5nbG9iYWwuVG9vbHMgPSBUb29scztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9qcy9ub3RpZmljYXRpb24uanMnO1xuZ2xvYmFsLk5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbjtcbk5vdGlmaWNhdGlvbi5pbml0KCkgO1xuXG4vLyBDb21tb25cbmltcG9ydCAnLi9jb21tb24uc2Nzcyc7XG5pbXBvcnQgJy4vY29tbW9uLmpzJyA7XG5cblxuXG5cbiIsIlxuLyogTm90aWZpY2F0aW9ucyAqL1xuLy9Ob3RpZmljYXRpb24uaW5pdCgpIDtcblxuLyogVG9vbHRpcCAqL1xuJCgnW2RhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcblxuLyogU2VsZWN0MiAqL1xuaWYgKCQoJy5zZWxlY3QyLCBzZWxlY3QuZm9ybS1jb250cm9sJykubGVuZ3RoKSB7XG5cbiAgICAkKCdmb3JtIC5mb3JtLXdpZGdldD5zZWxlY3QuZm9ybS1jb250cm9sLCAuc2VsZWN0MicpLmVhY2goZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGUtc2VsZWN0MicpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3QyKCQoZWxtKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgICQoJ2Zvcm0gc2VsZWN0LmZvcm0tY29udHJvbCcpLmVhY2goZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGUtc2VsZWN0MicpKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3QyKCQoZWxtKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0U2VsZWN0Migkc2VsZWN0KSB7XG4gICAgaWYgKHR5cGVvZiAkc2VsZWN0LmRhdGEoJ3NlbGVjdDItaWQnKSA9PT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAkc2VsZWN0LmRhdGEoJ2luaXQnLCAnc2V0JylcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICB0aGVtZTogXCJib290c3RyYXA0XCIsXG4gICAgICAgICAgICBkcm9wZG93bkF1dG9XaWR0aDogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6IDhcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoJHNlbGVjdC5kYXRhKCdhbGxvdy1jbGVhcicpID09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dDbGVhciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkc2VsZWN0LmRhdGEoJ3dpZHRoJykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMud2lkdGggPSAnYXV0bydcbiAgICAgICAgfVxuICAgICAgICBpZiAoJHNlbGVjdC5maW5kKCdvcHRpb25bdmFsdWU9XCJcIl0nKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5wbGFjZWhvbGRlciA9ICRzZWxlY3QuZmluZCgnb3B0aW9uW3ZhbHVlPVwiXCJdJykuaHRtbCgpXG4gICAgICAgIH1cbiAgICAgICAgLyppZigkc2VsZWN0LmlzKCc6cmVxdWlyZWQnKSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5hbGxvd2NsZWFyID0gdHJ1ZVxuICAgICAgICB9Ki9cbiAgICAgICAgdmFyIG15c2VsZWN0ID0gJHNlbGVjdC5zZWxlY3QyKG9wdGlvbnMpO1xuXG4gICAgICAgIG15c2VsZWN0Lm9uKCdzZWxlY3QyOnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xuICAgICAgICAgICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBteXNlbGVjdC5vbignc2VsZWN0Mjp1bnNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScpO1xuICAgICAgICAgICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBteXNlbGVjdDtcbiAgICB9XG59XG5cblxuJCgnLmFjdGlvbi1kZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBmb3JtQWN0aW9uID0gJCh0aGlzKS5hdHRyKCdmb3JtYWN0aW9uJyk7XG5cbiAgICAkKCcjbW9kYWwtZGVsZXRlJykubW9kYWwoe2JhY2tkcm9wOiB0cnVlLCBrZXlib2FyZDogdHJ1ZX0pXG4gICAgICAgIC5vZmYoJ2NsaWNrJywgJyNtb2RhbC1kZWxldGUtYnV0dG9uJylcbiAgICAgICAgLm9uKCdjbGljaycsICcjbW9kYWwtZGVsZXRlLWJ1dHRvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBkZWxldGVGb3JtID0gJCgnI2RlbGV0ZS1mb3JtJyk7XG4gICAgICAgICAgICBkZWxldGVGb3JtLmF0dHIoJ2FjdGlvbicsIGZvcm1BY3Rpb24pO1xuICAgICAgICAgICAgZGVsZXRlRm9ybS5zdWJtaXQoKTtcbiAgICAgICAgfSk7XG59KTtcblxuIiwiXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uIHtcblxuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICB0b2FzdHIub3B0aW9ucy50aW1lT3V0ID0gMzAwMDtcbiAgICAgICAgdG9hc3RyLm9wdGlvbnMucG9zaXRpb25DbGFzcyA9ICd0b2FzdC1ib3R0b20tcmlnaHQnO1xuICAgICAgICB0b2FzdHIub3B0aW9ucy5vbkhpZGRlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICgkKCcjdG9hc3QtY29udGFpbmVyIC50b2FzdCcpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgJCgnI3RvYXN0LWNsb3NlLWFsbCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXQobm90aWZpY2F0aW9ucykge1xuICAgICAgICB2YXIgY3VycmVudE5vdGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBub3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbm90aWZpY2F0aW9uc1t0eXBlXSkge1xuICAgICAgICAgICAgICAgIGlmICghY3VycmVudE5vdGlmaWNhdGlvbnMuaW5jbHVkZXMobm90aWZpY2F0aW9uc1t0eXBlXVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9ucy5wdXNoKG5vdGlmaWNhdGlvbnNbdHlwZV1ba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKHR5cGUsIG5vdGlmaWNhdGlvbnNbdHlwZV1ba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGFkZCh0eXBlLCB0ZXh0KSB7XG5cbiAgICAgICAgdG9hc3RyW3R5cGVdKHRleHQpO1xuXG4gICAgICAgIGxldCAkY29udGFpbmVyID0gJCgnI3RvYXN0LWNvbnRhaW5lcicpIDtcbiAgICAgICAgbGV0IHNlbGVjdG9yQnV0dG9uQ2xvc2VBbGwgPSAnI3RvYXN0LWNsb3NlLWFsbCcgO1xuICAgICAgICBsZXQgY291bnRNZXNzYWdlcyA9ICRjb250YWluZXIuZmluZCgnLnRvYXN0JykubGVuZ3RoIDtcblxuICAgICAgICBpZiAoJChzZWxlY3RvckJ1dHRvbkNsb3NlQWxsKS5sZW5ndGggPT0gMCAmJiBjb3VudE1lc3NhZ2VzID4gMikge1xuICAgICAgICAgICAgJGNvbnRhaW5lci5wcmVwZW5kKCc8YnV0dG9uIGlkPVwidG9hc3QtY2xvc2UtYWxsXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoc2VsZWN0b3JCdXR0b25DbG9zZUFsbCkub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRvYXN0ci5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChjb3VudE1lc3NhZ2VzID09IDApIHtcbiAgICAgICAgICAgICAgICAkKCcjdG9hc3QtY2xvc2UtYWxsJykucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxufSIsIlxuZXhwb3J0IGNsYXNzIFRvb2xzIHtcblxuICAgICAgICBzdGF0aWMgbG9nKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKSA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHt9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0aWMgYXJyYXlSZW1vdmUoYXJyLCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uKGVsZSl7IHJldHVybiBlbGUgIT0gdmFsdWU7IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIHRvUGxhaW5UZXh0KGh0bWwpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2NyYXRjaERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIHNjcmF0Y2hEaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyYXRjaERpdi50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRpYyBnZXREYXRlRm9ybWF0dGVkKGRhdGUsIHNlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgIGlmKGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gX2QgPiA5ID8gX2QgOiAnMCcgKyBfZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbSA9IGRhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IF9tID4gOSA/IF9tIDogJzAnICsgX20sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gZCArIHNlcGFyYXRvciArIG0gKyBzZXBhcmF0b3IgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0aWMgZ2V0VXJsUGFyYW1ldGVyKHNQYXJhbSkge1xuICAgICAgICAgICAgICAgIHZhciBzUGFnZVVSTCA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLFxuICAgICAgICAgICAgICAgICAgICBzVVJMVmFyaWFibGVzID0gc1BhZ2VVUkwuc3BsaXQoJyYnKSxcbiAgICAgICAgICAgICAgICAgICAgc1BhcmFtZXRlck5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc1VSTFZhcmlhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc1BhcmFtZXRlck5hbWUgPSBzVVJMVmFyaWFibGVzW2ldLnNwbGl0KCc9Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzUGFyYW1ldGVyTmFtZVswXSA9PT0gc1BhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzUGFyYW1ldGVyTmFtZVsxXSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGRlY29kZVVSSUNvbXBvbmVudChzUGFyYW1ldGVyTmFtZVsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGluZGV4T2ZGaXJzdERpZ2l0KGlucHV0KSB7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoOyBpbnB1dFtpXSA8ICcwJyB8fCBpbnB1dFtpXSA+ICc5JzsgaSsrKSA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT0gaW5wdXQubGVuZ3RoID8gLTEgOiBpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGljIGluZGV4T2ZMYXN0RGlnaXQoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgZm9yICg7IGlucHV0W2ldIDwgJzAnIHx8IGlucHV0W2ldID4gJzknOyBpLS0pIDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSA9PSBpbnB1dC5sZW5ndGggPyAtMSA6IGk7XG4gICAgICAgIH1cbn1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=