You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

adminlte-field-collection.db18b61c.js 18KB

3 年之前
3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-field-collection"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js":
  3. /*!**************************************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js ***!
  5. \**************************************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
  10. /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  12. /* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
  13. /* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  14. /* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
  15. /* harmony import */ var jquery_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jquery-ui */ "./node_modules/jquery-ui-dist/jquery-ui.js");
  16. /* harmony import */ var jquery_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(jquery_ui__WEBPACK_IMPORTED_MODULE_3__);
  17. /* harmony import */ var _form_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./form.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss");
  18. $(document).ready(function () {
  19. initCollectionWidget();
  20. });
  21. function initCollectionWidget() {
  22. $('.field-collection[data-prototype]').each(function (i, collectionWidget) {
  23. setCollectionWidgetSortable($(collectionWidget));
  24. reindexKeyCollectionWidget($(collectionWidget));
  25. setCollectionWidgetAdd($(collectionWidget));
  26. setCollectionWidgetDelete($(collectionWidget));
  27. });
  28. }
  29. function setCollectionWidgetAdd($collectionWidget) {
  30. if ($collectionWidget.data('allow-add')) {
  31. $collectionWidget.find('.field-collection-add').on('click', function (e) {
  32. // grab the prototype template
  33. var newWidget = $collectionWidget.attr('data-prototype'); // replace the "__name__" used in the id and name of the prototype
  34. // with a number that's unique to your emails
  35. // end name attribute looks like name="contact[emails][2]"
  36. newWidget = newWidget.replace(/__name__/g, getNumItems($collectionWidget)); // create a new list element and add it to the list
  37. $collectionWidget.find('.form-widget-compound .field-collection-group').append(newWidget);
  38. $collectionWidget.find('.field-collection-item:last').find('.field-position').val(getNumItems($collectionWidget));
  39. reindexKeyCollectionWidget($collectionWidget);
  40. setCollectionWidgetDelete($collectionWidget);
  41. $collectionWidget.trigger('collection-add-item');
  42. $collectionWidget.data('num-items', $collectionWidget.data('num-items') + 1);
  43. $collectionWidget.find('.collection-empty').hide();
  44. });
  45. }
  46. }
  47. function setCollectionWidgetDelete($collectionWidget) {
  48. if ($collectionWidget.data('allow-delete')) {
  49. $collectionWidget.find('.field-collection-delete').off('click');
  50. $collectionWidget.find('.field-collection-delete').on('click', function () {
  51. $(this).parents('.form-group:first').remove();
  52. reindexKeyCollectionWidget($collectionWidget);
  53. if (getNumItems($collectionWidget) == 0) $collectionWidget.find('.collection-empty').show();
  54. });
  55. }
  56. }
  57. function getNumItems($collectionWidget) {
  58. if ($collectionWidget.data('reindex-key')) {
  59. return $collectionWidget.find('.field-collection-item').length;
  60. } else {
  61. return $collectionWidget.data('num-items');
  62. }
  63. }
  64. function reindexKeyCollectionWidget($collectionWidget) {
  65. if ($collectionWidget.data('reindex-key')) {
  66. $collectionWidget.find('.field-collection-item').each(function (i, item) {
  67. $(item).find('input,textarea').each(function (y, field) {
  68. var $field = $(field); //Chanegment ID
  69. var posId = SovTools.indexOfLastDigit($field.prop('id'));
  70. var idPrefix = $field.prop('id').substr(0, posId);
  71. var idSuffix = $field.prop('id').substr(posId + 1);
  72. $field.prop('id', idPrefix + i + idSuffix); //Chanegment Name
  73. var posName = SovTools.indexOfLastDigit($field.prop('name'));
  74. var namePrefix = $field.prop('name').substr(0, posName);
  75. var nameSuffix = $field.prop('name').substr(posName + 1);
  76. $field.prop('name', namePrefix + i + nameSuffix);
  77. });
  78. });
  79. }
  80. }
  81. function setCollectionWidgetSortable($collectionWidget) {
  82. if ($collectionWidget.data('sortable')) {
  83. $collectionWidget.find('.field-collection-group').sortable({
  84. "handle": '.lc-btn-sortable',
  85. cancel: ''
  86. });
  87. $collectionWidget.find('.field-collection-group').on("sortupdate", function (event, ui) {
  88. $collectionWidget.find('.field-collection-group>div').each(function (index, item) {
  89. $(item).find('.field-position').val(index);
  90. });
  91. });
  92. }
  93. }
  94. /***/ }),
  95. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss":
  96. /*!******************************************************************************************!*\
  97. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/form.scss ***!
  98. \******************************************************************************************/
  99. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  100. "use strict";
  101. __webpack_require__.r(__webpack_exports__);
  102. // extracted by mini-css-extract-plugin
  103. /***/ })
  104. },
  105. /******/ __webpack_require__ => { // webpackRuntimeModules
  106. /******/ "use strict";
  107. /******/
  108. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  109. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_modules_es_string_replace_js","vendors-node_modules_core-js_modules_es_array_find_js","vendors-node_modules_jquery_src_jquery_js","vendors-node_modules_jquery-ui-dist_jquery-ui_js"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/field/collection/app.collection.js")));
  110. /******/ var __webpack_exports__ = __webpack_require__.O();
  111. /******/ }
  112. ]);
  113. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9maWVsZC9jb2xsZWN0aW9uL2FwcC5jb2xsZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL2ZpZWxkL2NvbGxlY3Rpb24vZm9ybS5zY3NzIl0sIm5hbWVzIjpbIiQiLCJkb2N1bWVudCIsInJlYWR5IiwiaW5pdENvbGxlY3Rpb25XaWRnZXQiLCJlYWNoIiwiaSIsImNvbGxlY3Rpb25XaWRnZXQiLCJzZXRDb2xsZWN0aW9uV2lkZ2V0U29ydGFibGUiLCJyZWluZGV4S2V5Q29sbGVjdGlvbldpZGdldCIsInNldENvbGxlY3Rpb25XaWRnZXRBZGQiLCJzZXRDb2xsZWN0aW9uV2lkZ2V0RGVsZXRlIiwiJGNvbGxlY3Rpb25XaWRnZXQiLCJkYXRhIiwiZmluZCIsIm9uIiwiZSIsIm5ld1dpZGdldCIsImF0dHIiLCJyZXBsYWNlIiwiZ2V0TnVtSXRlbXMiLCJhcHBlbmQiLCJ2YWwiLCJ0cmlnZ2VyIiwiaGlkZSIsIm9mZiIsInBhcmVudHMiLCJyZW1vdmUiLCJzaG93IiwibGVuZ3RoIiwiaXRlbSIsInkiLCJmaWVsZCIsIiRmaWVsZCIsInBvc0lkIiwiU292VG9vbHMiLCJpbmRleE9mTGFzdERpZ2l0IiwicHJvcCIsImlkUHJlZml4Iiwic3Vic3RyIiwiaWRTdWZmaXgiLCJwb3NOYW1lIiwibmFtZVByZWZpeCIsIm5hbWVTdWZmaXgiLCJzb3J0YWJsZSIsImNhbmNlbCIsImV2ZW50IiwidWkiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFFQUEsQ0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFZO0FBQzFCQyxzQkFBb0I7QUFDdkIsQ0FGRDs7QUFJQSxTQUFTQSxvQkFBVCxH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TSxDQUFDSSxJQUFQLENBQVksTUFBWixFQUFvQkssVUFBVSxHQUFHcEMsQ0FBYixHQUFpQnFDLFVBQXJDO0FBQ0gsT0FiRDtBQWNILEtBZkQ7QUFnQkg7QUFDSjs7QUFFRCxTQUFTbkMsMkJBQVQsQ0FBcUNJLGlCQUFyQyxFQUF3RDtBQUNwRCxNQUFJQSxpQkFBaUIsQ0FBQ0MsSUFBbEIsQ0FBdUIsVUFBdkIsQ0FBSixFQUF3QztBQUNwQ0QscUJBQWlCLENBQUNFLElBQWxCLENBQXVCLHlCQUF2QixFQUFrRDhCLFFBQWxELENBQTJEO0FBQ3ZELGdCQUFXLGtCQUQ0QztBQUV2REMsWUFBTSxFQUFFO0FBRitDLEtBQTNEO0FBSUFqQyxxQkFBaUIsQ0FBQ0UsSUFBbEIsQ0FBdUIseUJBQXZCLEVBQWtEQyxFQUFsRCxDQUFxRCxZQUFyRCxFQUFtRSxVQUFVK0IsS0FBVixFQUFpQkMsRUFBakIsRUFBcUI7QUFDcEZuQyx1QkFBaUIsQ0FBQ0UsSUFBbEIsQ0FBdUIsNkJBQXZCLEVBQXNEVCxJQUF0RCxDQUEyRCxVQUFVMkMsS0FBVixFQUFpQmxCLElBQWpCLEVBQXVCO0FBQzlFN0IsU0FBQyxDQUFDNkIsSUFBRCxDQUFELENBQVFoQixJQUFSLENBQWEsaUJBQWIsRUFBZ0NRLEdBQWhDLENBQW9DMEIsS0FBcEM7QUFDSCxPQUZEO0FBR0gsS0FKRDtBQUtIO0FBQ0osQzs7Ozs7Ozs7Ozs7O0FDaEdEIiwiZmlsZSI6ImFkbWlubHRlLWZpZWxkLWNvbGxlY3Rpb24uZGIxOGI2MWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBcImpxdWVyeS11aVwiXG5pbXBvcnQgXCIuL2Zvcm0uc2Nzc1wiXG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICBpbml0Q29sbGVjdGlvbldpZGdldCgpO1xufSk7XG5cbmZ1bmN0aW9uIGluaXRDb2xsZWN0aW9uV2lkZ2V0KCkge1xuXG4gICAgJCgnLmZpZWxkLWNvbGxlY3Rpb25bZGF0YS1wcm90b3R5cGVdJykuZWFjaChmdW5jdGlvbiAoaSwgY29sbGVjdGlvbldpZGdldCkge1xuICAgICAgICBzZXRDb2xsZWN0aW9uV2lkZ2V0U29ydGFibGUoJChjb2xsZWN0aW9uV2lkZ2V0KSk7XG4gICAgICAgIHJlaW5kZXhLZXlDb2xsZWN0aW9uV2lkZ2V0KCQoY29sbGVjdGlvbldpZGdldCkpO1xuXG4gICAgICAgIHNldENvbGxlY3Rpb25XaWRnZXRBZGQoJChjb2xsZWN0aW9uV2lkZ2V0KSk7XG4gICAgICAgIHNldENvbGxlY3Rpb25XaWRnZXREZWxldGUoJChjb2xsZWN0aW9uV2lkZ2V0KSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldENvbGxlY3Rpb25XaWRnZXRBZGQoJGNvbGxlY3Rpb25XaWRnZXQpIHtcblxuICAgIGlmICgkY29sbGVjdGlvbldpZGdldC5kYXRhKCdhbGxvdy1hZGQnKSkge1xuICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1hZGQnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgLy8gZ3JhYiB0aGUgcHJvdG90eXBlIHRlbXBsYXRlXG4gICAgICAgICAgICB2YXIgbmV3V2lkZ2V0ID0gJGNvbGxlY3Rpb25XaWRnZXQuYXR0cignZGF0YS1wcm90b3R5cGUnKTtcbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIFwiX19uYW1lX19cIiB1c2VkIGluIHRoZSBpZCBhbmQgbmFtZSBvZiB0aGUgcHJvdG90eXBlXG4gICAgICAgICAgICAvLyB3aXRoIGEgbnVtYmVyIHRoYXQncyB1bmlxdWUgdG8geW91ciBlbWFpbHNcbiAgICAgICAgICAgIC8vIGVuZCBuYW1lIGF0dHJpYnV0ZSBsb29rcyBsaWtlIG5hbWU9XCJjb250YWN0W2VtYWlsc11bMl1cIlxuICAgICAgICAgICAgbmV3V2lkZ2V0ID0gbmV3V2lkZ2V0LnJlcGxhY2UoL19fbmFtZV9fL2csIGdldE51bUl0ZW1zKCRjb2xsZWN0aW9uV2lkZ2V0KSk7XG5cbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBsaXN0IGVsZW1lbnQgYW5kIGFkZCBpdCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZvcm0td2lkZ2V0LWNvbXBvdW5kIC5maWVsZC1jb2xsZWN0aW9uLWdyb3VwJykuYXBwZW5kKG5ld1dpZGdldCk7XG4gICAgICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1pdGVtOmxhc3QnKS5maW5kKCcuZmllbGQtcG9zaXRpb24nKS52YWwoZ2V0TnVtSXRlbXMoJGNvbGxlY3Rpb25XaWRnZXQpKTtcblxuICAgICAgICAgICAgcmVpbmRleEtleUNvbGxlY3Rpb25XaWRnZXQoJGNvbGxlY3Rpb25XaWRnZXQpO1xuICAgICAgICAgICAgc2V0Q29sbGVjdGlvbldpZGdldERlbGV0ZSgkY29sbGVjdGlvbldpZGdldCk7XG4gICAgICAgICAgICAkY29sbGVjdGlvbldpZGdldC50cmlnZ2VyKCdjb2xsZWN0aW9uLWFkZC1pdGVtJyk7XG5cbiAgICAgICAgICAgICRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ251bS1pdGVtcycsICRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ251bS1pdGVtcycpICsgMSk7XG4gICAgICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuY29sbGVjdGlvbi1lbXB0eScpLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXRDb2xsZWN0aW9uV2lkZ2V0RGVsZXRlKCRjb2xsZWN0aW9uV2lkZ2V0KSB7XG4gICAgaWYgKCRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ2FsbG93LWRlbGV0ZScpKSB7XG4gICAgICAgICRjb2xsZWN0aW9uV2lkZ2V0LmZpbmQoJy5maWVsZC1jb2xsZWN0aW9uLWRlbGV0ZScpLm9mZignY2xpY2snKTtcbiAgICAgICAgJGNvbGxlY3Rpb25XaWRnZXQuZmluZCgnLmZpZWxkLWNvbGxlY3Rpb24tZGVsZXRlJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuZm9ybS1ncm91cDpmaXJzdCcpLnJlbW92ZSgpO1xuICAgICAgICAgICAgcmVpbmRleEtleUNvbGxlY3Rpb25XaWRnZXQoJGNvbGxlY3Rpb25XaWRnZXQpO1xuICAgICAgICAgICAgaWYoZ2V0TnVtSXRlbXMoJGNvbGxlY3Rpb25XaWRnZXQpPT0wKSRjb2xsZWN0aW9uV2lkZ2V0LmZpbmQoJy5jb2xsZWN0aW9uLWVtcHR5Jykuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldE51bUl0ZW1zKCRjb2xsZWN0aW9uV2lkZ2V0KSB7XG4gICAgaWYgKCRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ3JlaW5kZXgta2V5JykpIHtcbiAgICAgICAgcmV0dXJuICRjb2xsZWN0aW9uV2lkZ2V0LmZpbmQoJy5maWVsZC1jb2xsZWN0aW9uLWl0ZW0nKS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICRjb2xsZWN0aW9uV2lkZ2V0LmRhdGEoJ251bS1pdGVtcycpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVpbmRleEtleUNvbGxlY3Rpb25XaWRnZXQoJGNvbGxlY3Rpb25XaWRnZXQpIHtcbiAgICBpZiAoJGNvbGxlY3Rpb25XaWRnZXQuZGF0YSgncmVpbmRleC1rZXknKSkge1xuICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1pdGVtJykuZWFjaChmdW5jdGlvbiAoaSwgaXRlbSkge1xuICAgICAgICAgICAgJChpdGVtKS5maW5kKCdpbnB1dCx0ZXh0YXJlYScpLmVhY2goZnVuY3Rpb24gKHksIGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgbGV0ICRmaWVsZCA9ICQoZmllbGQpO1xuICAgICAgICAgICAgICAgIC8vQ2hhbmVnbWVudCBJRFxuICAgICAgICAgICAgICAgIGxldCBwb3NJZCA9IFNvdlRvb2xzLmluZGV4T2ZMYXN0RGlnaXQoJGZpZWxkLnByb3AoJ2lkJykpO1xuICAgICAgICAgICAgICAgIGxldCBpZFByZWZpeCA9ICRmaWVsZC5wcm9wKCdpZCcpLnN1YnN0cigwLCBwb3NJZCk7XG4gICAgICAgICAgICAgICAgbGV0IGlkU3VmZml4ID0gJGZpZWxkLnByb3AoJ2lkJykuc3Vic3RyKHBvc0lkICsgMSk7XG4gICAgICAgICAgICAgICAgJGZpZWxkLnByb3AoJ2lkJywgaWRQcmVmaXggKyBpICsgaWRTdWZmaXgpO1xuXG4gICAgICAgICAgICAgICAgLy9DaGFuZWdtZW50IE5hbWVcbiAgICAgICAgICAgICAgICBsZXQgcG9zTmFtZSA9IFNvdlRvb2xzLmluZGV4T2ZMYXN0RGlnaXQoJGZpZWxkLnByb3AoJ25hbWUnKSk7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWVQcmVmaXggPSAkZmllbGQucHJvcCgnbmFtZScpLnN1YnN0cigwLCBwb3NOYW1lKTtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZVN1ZmZpeCA9ICRmaWVsZC5wcm9wKCduYW1lJykuc3Vic3RyKHBvc05hbWUgKyAxKTtcbiAgICAgICAgICAgICAgICAkZmllbGQucHJvcCgnbmFtZScsIG5hbWVQcmVmaXggKyBpICsgbmFtZVN1ZmZpeCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXRDb2xsZWN0aW9uV2lkZ2V0U29ydGFibGUoJGNvbGxlY3Rpb25XaWRnZXQpIHtcbiAgICBpZiAoJGNvbGxlY3Rpb25XaWRnZXQuZGF0YSgnc29ydGFibGUnKSkge1xuICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1ncm91cCcpLnNvcnRhYmxlKHtcbiAgICAgICAgICAgIFwiaGFuZGxlXCIgOiAnLmxjLWJ0bi1zb3J0YWJsZScsXG4gICAgICAgICAgICBjYW5jZWw6ICcnXG4gICAgICAgIH0pO1xuICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1ncm91cCcpLm9uKFwic29ydHVwZGF0ZVwiLCBmdW5jdGlvbiAoZXZlbnQsIHVpKSB7XG4gICAgICAgICAgICAkY29sbGVjdGlvbldpZGdldC5maW5kKCcuZmllbGQtY29sbGVjdGlvbi1ncm91cD5kaXYnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgICQoaXRlbSkuZmluZCgnLmZpZWxkLXBvc2l0aW9uJykudmFsKGluZGV4KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9