Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

478 lines
41KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-sort"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/app.sort.js":
  3. /*!********************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/app.sort.js ***!
  5. \********************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var jquery_ui_sortable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery-ui-sortable */ "./node_modules/jquery-ui-sortable/jquery-ui.min.js");
  10. /* harmony import */ var jquery_ui_sortable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery_ui_sortable__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sort.js */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.js");
  12. /* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_sort_js__WEBPACK_IMPORTED_MODULE_1__);
  13. /* harmony import */ var _sort_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sort.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.scss");
  14. /***/ }),
  15. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.js":
  16. /*!****************************************************************************!*\
  17. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.js ***!
  18. \****************************************************************************/
  19. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  20. __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  21. __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  22. __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  23. jQuery(document).ready(function () {
  24. initSovSortableList();
  25. });
  26. function initSovSortableList() {
  27. if ($('.sov-sortable').length > 0) {
  28. $('.sov-sortable tbody').sortable({
  29. placeholder: "ui-state-highlight"
  30. });
  31. $('.sov-sortable tbody').on("sortupdate", function (event, ui) {
  32. prototype = $('#form_entities').data('prototype');
  33. $('.sov-sortable tr.sov-draggable').each(function (index, li) {
  34. // instead be a number based on how many items we have
  35. var newForm = prototype.replace(/__name__/g, index); // Replace '__name__' in the prototype's HTML to
  36. $(li).find('div:last-child').remove();
  37. $(li).find('td:first').append('<div class="hidden">' + newForm + '</div>');
  38. $(li).find('#form_entities_' + index + '_id').val($(li).data('id'));
  39. /* if ($('.sov-sortable').data('parent-position') !== '') {
  40. //Ajout d'un 0 initial pour les nuémros <10
  41. indexAsString = index.toString().padStart(2, '0');
  42. val = $('.sov-sortable').data('parent-position') + '.' + indexAsString
  43. } else {*/
  44. val = index; //}
  45. $(li).find('#form_entities_' + index + '_position').val(val);
  46. });
  47. });
  48. }
  49. }
  50. /***/ }),
  51. /***/ "./node_modules/core-js/internals/a-function.js":
  52. /*!******************************************************!*\
  53. !*** ./node_modules/core-js/internals/a-function.js ***!
  54. \******************************************************/
  55. /***/ ((module) => {
  56. module.exports = function (it) {
  57. if (typeof it != 'function') {
  58. throw TypeError(String(it) + ' is not a function');
  59. } return it;
  60. };
  61. /***/ }),
  62. /***/ "./node_modules/core-js/internals/add-to-unscopables.js":
  63. /*!**************************************************************!*\
  64. !*** ./node_modules/core-js/internals/add-to-unscopables.js ***!
  65. \**************************************************************/
  66. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  67. var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
  68. var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
  69. var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
  70. var UNSCOPABLES = wellKnownSymbol('unscopables');
  71. var ArrayPrototype = Array.prototype;
  72. // Array.prototype[@@unscopables]
  73. // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
  74. if (ArrayPrototype[UNSCOPABLES] == undefined) {
  75. definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
  76. configurable: true,
  77. value: create(null)
  78. });
  79. }
  80. // add a key to Array.prototype[@@unscopables]
  81. module.exports = function (key) {
  82. ArrayPrototype[UNSCOPABLES][key] = true;
  83. };
  84. /***/ }),
  85. /***/ "./node_modules/core-js/internals/array-iteration.js":
  86. /*!***********************************************************!*\
  87. !*** ./node_modules/core-js/internals/array-iteration.js ***!
  88. \***********************************************************/
  89. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  90. var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js");
  91. var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
  92. var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
  93. var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
  94. var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js");
  95. var push = [].push;
  96. // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation
  97. var createMethod = function (TYPE) {
  98. var IS_MAP = TYPE == 1;
  99. var IS_FILTER = TYPE == 2;
  100. var IS_SOME = TYPE == 3;
  101. var IS_EVERY = TYPE == 4;
  102. var IS_FIND_INDEX = TYPE == 6;
  103. var IS_FILTER_OUT = TYPE == 7;
  104. var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  105. return function ($this, callbackfn, that, specificCreate) {
  106. var O = toObject($this);
  107. var self = IndexedObject(O);
  108. var boundFunction = bind(callbackfn, that, 3);
  109. var length = toLength(self.length);
  110. var index = 0;
  111. var create = specificCreate || arraySpeciesCreate;
  112. var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;
  113. var value, result;
  114. for (;length > index; index++) if (NO_HOLES || index in self) {
  115. value = self[index];
  116. result = boundFunction(value, index, O);
  117. if (TYPE) {
  118. if (IS_MAP) target[index] = result; // map
  119. else if (result) switch (TYPE) {
  120. case 3: return true; // some
  121. case 5: return value; // find
  122. case 6: return index; // findIndex
  123. case 2: push.call(target, value); // filter
  124. } else switch (TYPE) {
  125. case 4: return false; // every
  126. case 7: push.call(target, value); // filterOut
  127. }
  128. }
  129. }
  130. return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
  131. };
  132. };
  133. module.exports = {
  134. // `Array.prototype.forEach` method
  135. // https://tc39.es/ecma262/#sec-array.prototype.foreach
  136. forEach: createMethod(0),
  137. // `Array.prototype.map` method
  138. // https://tc39.es/ecma262/#sec-array.prototype.map
  139. map: createMethod(1),
  140. // `Array.prototype.filter` method
  141. // https://tc39.es/ecma262/#sec-array.prototype.filter
  142. filter: createMethod(2),
  143. // `Array.prototype.some` method
  144. // https://tc39.es/ecma262/#sec-array.prototype.some
  145. some: createMethod(3),
  146. // `Array.prototype.every` method
  147. // https://tc39.es/ecma262/#sec-array.prototype.every
  148. every: createMethod(4),
  149. // `Array.prototype.find` method
  150. // https://tc39.es/ecma262/#sec-array.prototype.find
  151. find: createMethod(5),
  152. // `Array.prototype.findIndex` method
  153. // https://tc39.es/ecma262/#sec-array.prototype.findIndex
  154. findIndex: createMethod(6),
  155. // `Array.prototype.filterOut` method
  156. // https://github.com/tc39/proposal-array-filtering
  157. filterOut: createMethod(7)
  158. };
  159. /***/ }),
  160. /***/ "./node_modules/core-js/internals/array-species-create.js":
  161. /*!****************************************************************!*\
  162. !*** ./node_modules/core-js/internals/array-species-create.js ***!
  163. \****************************************************************/
  164. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  165. var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
  166. var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js");
  167. var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
  168. var SPECIES = wellKnownSymbol('species');
  169. // `ArraySpeciesCreate` abstract operation
  170. // https://tc39.es/ecma262/#sec-arrayspeciescreate
  171. module.exports = function (originalArray, length) {
  172. var C;
  173. if (isArray(originalArray)) {
  174. C = originalArray.constructor;
  175. // cross-realm fallback
  176. if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
  177. else if (isObject(C)) {
  178. C = C[SPECIES];
  179. if (C === null) C = undefined;
  180. }
  181. } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
  182. };
  183. /***/ }),
  184. /***/ "./node_modules/core-js/internals/function-bind-context.js":
  185. /*!*****************************************************************!*\
  186. !*** ./node_modules/core-js/internals/function-bind-context.js ***!
  187. \*****************************************************************/
  188. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  189. var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");
  190. // optional / simple context binding
  191. module.exports = function (fn, that, length) {
  192. aFunction(fn);
  193. if (that === undefined) return fn;
  194. switch (length) {
  195. case 0: return function () {
  196. return fn.call(that);
  197. };
  198. case 1: return function (a) {
  199. return fn.call(that, a);
  200. };
  201. case 2: return function (a, b) {
  202. return fn.call(that, a, b);
  203. };
  204. case 3: return function (a, b, c) {
  205. return fn.call(that, a, b, c);
  206. };
  207. }
  208. return function (/* ...args */) {
  209. return fn.apply(that, arguments);
  210. };
  211. };
  212. /***/ }),
  213. /***/ "./node_modules/core-js/internals/html.js":
  214. /*!************************************************!*\
  215. !*** ./node_modules/core-js/internals/html.js ***!
  216. \************************************************/
  217. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  218. var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
  219. module.exports = getBuiltIn('document', 'documentElement');
  220. /***/ }),
  221. /***/ "./node_modules/core-js/internals/is-array.js":
  222. /*!****************************************************!*\
  223. !*** ./node_modules/core-js/internals/is-array.js ***!
  224. \****************************************************/
  225. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  226. var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
  227. // `IsArray` abstract operation
  228. // https://tc39.es/ecma262/#sec-isarray
  229. // eslint-disable-next-line es/no-array-isarray -- safe
  230. module.exports = Array.isArray || function isArray(arg) {
  231. return classof(arg) == 'Array';
  232. };
  233. /***/ }),
  234. /***/ "./node_modules/core-js/internals/object-create.js":
  235. /*!*********************************************************!*\
  236. !*** ./node_modules/core-js/internals/object-create.js ***!
  237. \*********************************************************/
  238. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  239. var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
  240. var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
  241. var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
  242. var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
  243. var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
  244. var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
  245. var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
  246. var GT = '>';
  247. var LT = '<';
  248. var PROTOTYPE = 'prototype';
  249. var SCRIPT = 'script';
  250. var IE_PROTO = sharedKey('IE_PROTO');
  251. var EmptyConstructor = function () { /* empty */ };
  252. var scriptTag = function (content) {
  253. return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
  254. };
  255. // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
  256. var NullProtoObjectViaActiveX = function (activeXDocument) {
  257. activeXDocument.write(scriptTag(''));
  258. activeXDocument.close();
  259. var temp = activeXDocument.parentWindow.Object;
  260. activeXDocument = null; // avoid memory leak
  261. return temp;
  262. };
  263. // Create object with fake `null` prototype: use iframe Object with cleared prototype
  264. var NullProtoObjectViaIFrame = function () {
  265. // Thrash, waste and sodomy: IE GC bug
  266. var iframe = documentCreateElement('iframe');
  267. var JS = 'java' + SCRIPT + ':';
  268. var iframeDocument;
  269. iframe.style.display = 'none';
  270. html.appendChild(iframe);
  271. // https://github.com/zloirock/core-js/issues/475
  272. iframe.src = String(JS);
  273. iframeDocument = iframe.contentWindow.document;
  274. iframeDocument.open();
  275. iframeDocument.write(scriptTag('document.F=Object'));
  276. iframeDocument.close();
  277. return iframeDocument.F;
  278. };
  279. // Check for document.domain and active x support
  280. // No need to use active x approach when document.domain is not set
  281. // see https://github.com/es-shims/es5-shim/issues/150
  282. // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
  283. // avoid IE GC bug
  284. var activeXDocument;
  285. var NullProtoObject = function () {
  286. try {
  287. /* global ActiveXObject -- old IE */
  288. activeXDocument = document.domain && new ActiveXObject('htmlfile');
  289. } catch (error) { /* ignore */ }
  290. NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
  291. var length = enumBugKeys.length;
  292. while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
  293. return NullProtoObject();
  294. };
  295. hiddenKeys[IE_PROTO] = true;
  296. // `Object.create` method
  297. // https://tc39.es/ecma262/#sec-object.create
  298. module.exports = Object.create || function create(O, Properties) {
  299. var result;
  300. if (O !== null) {
  301. EmptyConstructor[PROTOTYPE] = anObject(O);
  302. result = new EmptyConstructor();
  303. EmptyConstructor[PROTOTYPE] = null;
  304. // add "__proto__" for Object.getPrototypeOf polyfill
  305. result[IE_PROTO] = O;
  306. } else result = NullProtoObject();
  307. return Properties === undefined ? result : defineProperties(result, Properties);
  308. };
  309. /***/ }),
  310. /***/ "./node_modules/core-js/internals/object-define-properties.js":
  311. /*!********************************************************************!*\
  312. !*** ./node_modules/core-js/internals/object-define-properties.js ***!
  313. \********************************************************************/
  314. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  315. var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
  316. var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
  317. var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
  318. var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
  319. // `Object.defineProperties` method
  320. // https://tc39.es/ecma262/#sec-object.defineproperties
  321. // eslint-disable-next-line es/no-object-defineproperties -- safe
  322. module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
  323. anObject(O);
  324. var keys = objectKeys(Properties);
  325. var length = keys.length;
  326. var index = 0;
  327. var key;
  328. while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
  329. return O;
  330. };
  331. /***/ }),
  332. /***/ "./node_modules/core-js/internals/object-keys.js":
  333. /*!*******************************************************!*\
  334. !*** ./node_modules/core-js/internals/object-keys.js ***!
  335. \*******************************************************/
  336. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  337. var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
  338. var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
  339. // `Object.keys` method
  340. // https://tc39.es/ecma262/#sec-object.keys
  341. // eslint-disable-next-line es/no-object-keys -- safe
  342. module.exports = Object.keys || function keys(O) {
  343. return internalObjectKeys(O, enumBugKeys);
  344. };
  345. /***/ }),
  346. /***/ "./node_modules/core-js/modules/es.array.find.js":
  347. /*!*******************************************************!*\
  348. !*** ./node_modules/core-js/modules/es.array.find.js ***!
  349. \*******************************************************/
  350. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  351. "use strict";
  352. var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
  353. var $find = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find;
  354. var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
  355. var FIND = 'find';
  356. var SKIPS_HOLES = true;
  357. // Shouldn't skip holes
  358. if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
  359. // `Array.prototype.find` method
  360. // https://tc39.es/ecma262/#sec-array.prototype.find
  361. $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
  362. find: function find(callbackfn /* , that = undefined */) {
  363. return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  364. }
  365. });
  366. // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
  367. addToUnscopables(FIND);
  368. /***/ }),
  369. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.scss":
  370. /*!******************************************************************************!*\
  371. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/sort.scss ***!
  372. \******************************************************************************/
  373. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  374. "use strict";
  375. __webpack_require__.r(__webpack_exports__);
  376. // extracted by mini-css-extract-plugin
  377. /***/ })
  378. },
  379. /******/ __webpack_require__ => { // webpackRuntimeModules
  380. /******/ "use strict";
  381. /******/
  382. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  383. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js","vendors-node_modules_jquery_src_jquery_js","vendors-node_modules_core-js_modules_es_string_replace_js","vendors-node_modules_jquery-ui-sortable_jquery-ui_min_js"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/sort/app.sort.js")));
  384. /******/ var __webpack_exports__ = __webpack_require__.O();
  385. /******/ }
  386. ]);
  387. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9zb3J0L2FwcC5zb3J0LmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL3NvcnQvc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyIsIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9zb3J0L3NvcnQuc2NzcyJdLCJuYW1lcyI6WyJqUXVlcnkiLCJkb2N1bWVudCIsInJlYWR5IiwiaW5pdFNvdlNvcnRhYmxlTGlzdCIsIiQiLCJsZW5ndGgiLCJzb3J0YWJsZSIsInBsYWNlaG9sZGVyIiwib24iLCJldmVudCIsInVpIiwicHJvdG90eXBlIiwiZGF0YSIsImVhY2giLCJpbmRleCIsImxpIiwibmV3Rm9ybSIsInJlcGxhY2UiLCJmaW5kIiwicmVtb3ZlIiwiYXBwZW5kIiwidmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZBQSxNQUFNLENBQUNDLFFBQUQsQ0FBTixDQUFpQkMsS0FBakIsQ0FBdUIsWUFBWTtBQUMvQkMscUJBQW1CO0FBQ3RCLENBRkQ7O0FBSUEsU0FBU0EsbUJBQVQsR0FBK0I7QUFFM0IsTUFBSUMsQ0FBQyxDQUFDLGVBQUQsQ0FBRCxDQUFtQkMsTUFBbkIsR0FBNEIsQ0FBaEMsRUFBbUM7QUFDL0JELEtBQUMsQ0FBQyxxQkFBRCxDQUFELENBQXlCRSxRQUF6QixDQUFrQztBQUM5QkMsaUJBQVcsRUFBRTtBQURpQixLQUFsQztBQUlBSCxLQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QkksRUFBekIsQ0FBNEIsWUFBNUIsRUFBMEMsVUFBVUMsS0FBVixFQUFpQkMsRUFBakIsRUFBcUI7QUFFM0RDLGVBQVMsR0FBR1AsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0JRLElBQXBCLENBQXlCLFdBQXpCLENBQVo7QUFFQVIsT0FBQyxDQUFDLGdDQUFELENBQUQsQ0FBb0NTLElBQXBDLENBQXlDLFVBQVVDLEtBQVYsRUFBaUJDLEVBQWpCLEVBQXFCO0FBRTFEO0FBQ0EsWUFBSUMsT0FBTyxHQUFHTCxTQUFTLENBQUNNLE9BQVYsQ0FBa0IsV0FBbEIsRUFBK0JILEtBQS9CLENBQWQsQ0FIMEQsQ0FLMUQ7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O0FBRWhFO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMscUJBQXFCLEVBQUU7O0FBRW5FO0FBQ0E7QUFDQSxHQUFHLG9EQUFvRDtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNwQkEiLCJmaWxlIjoiYWRtaW5sdGUtc29ydC4zZDkwMTBmMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICdqcXVlcnktdWktc29ydGFibGUnXG5pbXBvcnQgJy4vc29ydC5qcydcbmltcG9ydCAnLi9zb3J0LnNjc3MnXG4iLCJqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICBpbml0U292U29ydGFibGVMaXN0KCk7XG59KTtcblxuZnVuY3Rpb24gaW5pdFNvdlNvcnRhYmxlTGlzdCgpIHtcblxuICAgIGlmICgkKCcuc292LXNvcnRhYmxlJykubGVuZ3RoID4gMCkge1xuICAgICAgICAkKCcuc292LXNvcnRhYmxlIHRib2R5Jykuc29ydGFibGUoe1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwidWktc3RhdGUtaGlnaGxpZ2h0XCJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLnNvdi1zb3J0YWJsZSB0Ym9keScpLm9uKFwic29ydHVwZGF0ZVwiLCBmdW5jdGlvbiAoZXZlbnQsIHVpKSB7XG5cbiAgICAgICAgICAgIHByb3RvdHlwZSA9ICQoJyNmb3JtX2VudGl0aWVzJykuZGF0YSgncHJvdG90eXBlJyk7XG5cbiAgICAgICAgICAgICQoJy5zb3Ytc29ydGFibGUgdHIuc292LWRyYWdnYWJsZScpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBsaSkge1xuXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBiZSBhIG51bWJlciBiYXNlZCBvbiBob3cgbWFueSBpdGVtcyB3ZSBoYXZlXG4gICAgICAgICAgICAgICAgdmFyIG5ld0Zvcm0gPSBwcm90b3R5cGUucmVwbGFjZSgvX19uYW1lX18vZywgaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVwbGFjZSAnX19uYW1lX18nIGluIHRoZSBwcm90b3R5cGUncyBIVE1MIHRvXG4gICAgICAgICAgICAgICAgJChsaSkuZmluZCgnZGl2Omxhc3QtY2hpbGQnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAkKGxpKS5maW5kKCd0ZDpmaXJzdCcpLmFwcGVuZCgnPGRpdiBjbGFzcz1cImhpZGRlblwiPicrbmV3Rm9ybSsnPC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgJChsaSkuZmluZCgnI2Zvcm1fZW50aXRpZXNfJyArIGluZGV4ICsgJ19pZCcpLnZhbCgkKGxpKS5kYXRhKCdpZCcpKTtcbiAgICAgICAgICAgICAgLyogIGlmICgkKCcuc292LXNvcnRhYmxlJykuZGF0YSgncGFyZW50LXBvc2l0aW9uJykgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQWpvdXQgZCd1biAwIGluaXRpYWwgcG91ciBsZXMgbnXDqW1yb3MgPDEwXG4gICAgICAgICAgICAgICAgICAgIGluZGV4QXNTdHJpbmcgPSBpbmRleC50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9ICQoJy5zb3Ytc29ydGFibGUnKS5kYXRhKCdwYXJlbnQtcG9zaXRpb24nKSArICcuJyArIGluZGV4QXNTdHJpbmdcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyovXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIC8vfVxuICAgICAgICAgICAgICAgICQobGkpLmZpbmQoJyNmb3JtX2VudGl0aWVzXycgKyBpbmRleCArICdfcG9zaXRpb24nKS52YWwodmFsKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxudmFyIFVOU0NPUEFCTEVTID0gd2VsbEtub3duU3ltYm9sKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSB7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiBjcmVhdGUobnVsbClcbiAgfSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyT3V0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIElTX0ZJTFRFUl9PVVQgPSBUWVBFID09IDc7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiB8fCBJU19GSUxURVJfT1VUID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSB0YXJnZXRbaW5kZXhdID0gcmVzdWx0OyAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbHVlOyAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAvLyBldmVyeVxuICAgICAgICAgIGNhc2UgNzogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJPdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuICBtYXA6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiAgZXZlcnk6IGNyZWF0ZU1ldGhvZCg0KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlck91dGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuICBmaWx0ZXJPdXQ6IGNyZWF0ZU1ldGhvZCg3KVxufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBBcnJheVNwZWNpZXNDcmVhdGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheXNwZWNpZXNjcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBuZXcgKEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQykobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCk7XG4gICAgfTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjbGFzc29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgLS0gb2xkIElFICovXG4gICAgYWN0aXZlWERvY3VtZW50ID0gZG9jdW1lbnQuZG9tYWluICYmIG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBpZ25vcmUgKi8gfVxuICBOdWxsUHJvdG9PYmplY3QgPSBhY3RpdmVYRG9jdW1lbnQgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgOiBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUoKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgTnVsbFByb3RvT2JqZWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBOdWxsUHJvdG9PYmplY3QoKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHlDb25zdHJ1Y3RvcigpO1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gTnVsbFByb3RvT2JqZWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkZWZpbmVQcm9wZXJ0aWVzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydGllcyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogU0tJUFNfSE9MRVMgfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoRklORCk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9