vxe-table-plugin-export-xlsx-xhx 1.0.11 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -5,13 +5,15 @@
5
5
 
6
6
  ## introductions
7
7
 
8
- 基于 vxe-table-plugin-export-xlsx 1.3.4版本进行工程适应性修改
8
+ 警告: 基于vxe-table-plugin-export-xlsx 1.3.4 版本进行老工程适应性修改,请勿使用!
9
9
  注意: 隶属于旧项目使用, 新工程请参照 vxe-table-plugin-export-xlsx
10
10
 
11
11
  ## history
12
12
 
13
- 版本 1.0.9 对IE11进行适配
14
- 版本 1.0.2 不进行多余导出
13
+ 版本 1.0.12 增加导出时默认样式
14
+ 版本 1.0.11 完善单元文本cellType的支持自定义 string 或 number
15
+ 版本 1.0.9 修复IE11报错
16
+ 版本 1.0.2 修复未定义数据项导出
15
17
 
16
18
  ## Installing
17
19
  ```shell
@@ -85,6 +85,35 @@ function exportXLSX(params) {
85
85
  var sheet = _xlsx["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
86
86
  skipHeader: true
87
87
  });
88
+ Object.keys(sheet).forEach(function (key) {
89
+ // 非!开头的属性都是单元格
90
+ // if (!key.startsWith('!')) {
91
+ sheet[key].s = {
92
+ font: {
93
+ sz: '12'
94
+ },
95
+ alignment: {
96
+ horizontal: 'left',
97
+ vertical: 'center',
98
+ wrapText: true
99
+ },
100
+ border: {
101
+ top: {
102
+ style: 'thin'
103
+ },
104
+ right: {
105
+ style: 'thin'
106
+ },
107
+ bottom: {
108
+ style: 'thin'
109
+ },
110
+ left: {
111
+ style: 'thin'
112
+ }
113
+ }
114
+ };
115
+ // }
116
+ });
88
117
  // 转换数据
89
118
  _xlsx["default"].utils.book_append_sheet(book, sheet, sheetName);
90
119
  var wbout = _xlsx["default"].write(book, {
@@ -239,4 +268,4 @@ if (typeof window !== 'undefined' && window.VXETable) {
239
268
  }
240
269
  var _default = VXETablePluginExportXLSX;
241
270
  exports["default"] = _default;
242
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9TdHJpbmciLCJpc05hTiIsIk51bWJlciIsImxlbmd0aCIsImdldEZvb3RlckNlbGxWYWx1ZSIsIiR0YWJsZSIsIm9wdHMiLCJyb3dzIiwiJGdldENvbHVtbkluZGV4IiwidG9CdWZmZXIiLCJ3Ym91dCIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpbmRleCIsImNoYXJDb2RlQXQiLCJleHBvcnRYTFNYIiwicGFyYW1zIiwib3B0aW9ucyIsImNvbHVtbnMiLCJkYXRhcyIsInNoZWV0TmFtZSIsImlzSGVhZGVyIiwiaXNGb290ZXIiLCJvcmlnaW5hbCIsIm1lc3NhZ2UiLCJmb290ZXJGaWx0ZXJNZXRob2QiLCJjb2xIZWFkIiwiZm9vdExpc3QiLCJmb3JFYWNoIiwiaWQiLCJwcm9wZXJ0eSIsImdldFRpdGxlIiwicm93TGlzdCIsIm1hcCIsIml0ZW0iLCJyZXN0IiwiZ2V0VGFibGVEYXRhIiwiZm9vdGVyRGF0YSIsImZvb3RlcnMiLCJmaWx0ZXIiLCJwdXNoIiwiYm9vayIsIlhMU1giLCJ1dGlscyIsImJvb2tfbmV3Iiwic2hlZXQiLCJqc29uX3RvX3NoZWV0IiwiY29uY2F0Iiwic2tpcEhlYWRlciIsImJvb2tfYXBwZW5kX3NoZWV0Iiwid3JpdGUiLCJib29rVHlwZSIsImJvb2tTU1QiLCJ0eXBlIiwiYmxvYiIsIkJsb2IiLCJkb3dubG9hZEZpbGUiLCJtb2RhbCIsInQiLCJzdGF0dXMiLCJ3aW5kb3ciLCJmaWxlbmFtZSIsIm5hdmlnYXRvciIsIm1zU2F2ZUJsb2IiLCJsaW5rRWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRhcmdldCIsImRvd25sb2FkIiwiaHJlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXBsYWNlRG91YmxlUXVvdGF0aW9uIiwidmFsIiwicmVwbGFjZSIsInBhcnNlQ3N2IiwiY29udGVudCIsImxpc3QiLCJzcGxpdCIsImZpZWxkcyIsInJMaXN0Iiwic2xpY2UiLCJyIiwiY29sSW5kZXgiLCJjaGVja0ltcG9ydERhdGEiLCJ0YWJsZUZpZWxkcyIsImZpZWxkIiwiZXZlcnkiLCJpbmNsdWRlcyIsImltcG9ydFhMU1giLCJmaWxlIiwiX2ltcG9ydFJlc29sdmUiLCJmaWxlUmVhZGVyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImUiLCJ3b3JrYm9vayIsInJlYWQiLCJyZXN1bHQiLCJjc3ZEYXRhIiwic2hlZXRfdG9fY3N2IiwiU2hlZXRzIiwiU2hlZXQxIiwiY3JlYXRlRGF0YSIsInRoZW4iLCJkYXRhIiwibW9kZSIsImluc2VydEF0IiwicmVsb2FkRGF0YSIsInRlbXBsYXRlIiwicmVhZEFzQmluYXJ5U3RyaW5nIiwiaGFuZGxlSW1wb3J0RXZlbnQiLCJoYW5kbGVFeHBvcnRFdmVudCIsIlZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCIsImluc3RhbGwiLCJ4dGFibGUiLCJpbnRlcmNlcHRvciIsIk9iamVjdCIsImFzc2lnbiIsInR5cGVzIiwieGxzeCIsIm1peGluIiwiVlhFVGFibGUiLCJ1c2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBU0E7QUFBdUI7QUFWdkI7O0FBV0E7QUFFQSxJQUFJQSxTQUEwQjtBQUU5QixTQUFTQyxZQUFZLENBQUVDLE1BQW9CLEVBQUVDLFNBQWMsRUFBQTtFQUN6RCxJQUFJQSxTQUFTLEVBQUU7SUFDYixRQUFRRCxNQUFNLENBQUNFLFFBQVE7TUFDckIsS0FBSyxRQUFRO1FBQ1gsT0FBT0MsbUJBQU8sQ0FBQ0MsUUFBUSxDQUFDSCxTQUFTLENBQUM7TUFDcEMsS0FBSyxRQUFRO1FBQ1gsSUFBSSxDQUFDSSxLQUFLLENBQUNKLFNBQVMsQ0FBQyxFQUFFO1VB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QURvQkMsZUFFY0Esd0JBQXdCO0FBQUEiLCJmaWxlIjoiaW5kZXguY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IHtcclxuICBWWEVUYWJsZSxcclxuICBUYWJsZSxcclxuICBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcyxcclxuICBJbnRlcmNlcHRvckltcG9ydFBhcmFtcyxcclxuICBDb2x1bW5Db25maWcsXHJcbiAgRXhwb3J0T3B0b25zXHJcbn0gZnJvbSAndnhlLXRhYmxlL2xpYi92eGUtdGFibGUnXHJcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXHJcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmxldCBfdnhldGFibGU6IHR5cGVvZiBWWEVUYWJsZVxyXG5cclxuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsIChjb2x1bW46IENvbHVtbkNvbmZpZywgY2VsbFZhbHVlOiBhbnkpIHtcclxuICBpZiAoY2VsbFZhbHVlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIHJldHVybiBYRVV0aWxzLnRvU3RyaW5nKGNlbGxWYWx1ZSlcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZvb3RlckNlbGxWYWx1ZSAoJHRhYmxlOiBUYWJsZSwgb3B0czogRXhwb3J0T3B0b25zLCByb3dzOiBhbnlbXSwgY29sdW1uOiBDb2x1bW5Db25maWcpIHtcclxuICB2YXIgY2VsbFZhbHVlID0gWEVVdGlscy50b1N0cmluZyhyb3dzWyR0YWJsZS4kZ2V0Q29sdW1uSW5kZXgoY29sdW1uKV0pXHJcbiAgcmV0dXJuIGNlbGxWYWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0J1ZmZlciAod2JvdXQ6IGFueSkge1xyXG4gIGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIod2JvdXQubGVuZ3RoKVxyXG4gIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxyXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggIT09IHdib3V0Lmxlbmd0aDsgKytpbmRleCkgdmlld1tpbmRleF0gPSB3Ym91dC5jaGFyQ29kZUF0KGluZGV4KSAmIDB4RkZcclxuICByZXR1cm4gYnVmXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4cG9ydFhMU1ggKHBhcmFtczogSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMpIHtcclxuICBjb25zdCB7ICR0YWJsZSwgb3B0aW9ucywgY29sdW1ucywgZGF0YXMgfSA9IHBhcmFtc1xyXG4gIGNvbnN0IHsgc2hlZXROYW1lLCBpc0hlYWRlciwgaXNGb290ZXIsIG9yaWdpbmFsLCBtZXNzYWdlLCBmb290ZXJGaWx0ZXJNZXRob2QgfSA9IG9wdGlvbnNcclxuICBjb25zdCBjb2xIZWFkOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICBjb25zdCBmb290TGlzdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW11cclxuICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcclxuXHJcbiAgaWYgKGlzSGVhZGVyKSB7XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g5paw5aKe6YOo5YiGXHJcbiAgY29uc3Qgcm93TGlzdCA9IGRhdGFzLm1hcChpdGVtID0+IHtcclxuICAgIGNvbnN0IHJlc3Q6IGFueSA9IHt9XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHJlc3RcclxuICB9KVxyXG5cclxuICBpZiAoaXNGb290ZXIpIHtcclxuICAgIGNvbnN0IHsgZm9vdGVyRGF0YSB9ID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpXHJcbiAgICBjb25zdCBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGFcclxuICAgIGZvb3RlcnMuZm9yRWFjaCgocm93cykgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5pZF0gPSBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRpb25zLCByb3dzLCBjb2x1bW4pXHJcbiAgICAgIH0pXHJcbiAgICAgIGZvb3RMaXN0LnB1c2goaXRlbSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIGNvbnN0IGJvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KClcclxuICBjb25zdCBzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCgoaXNIZWFkZXIgPyBbY29sSGVhZF0gOiBbXSkuY29uY2F0KHJvd0xpc3QpLmNvbmNhdChmb290TGlzdCksIHsgc2tpcEhlYWRlcjogdHJ1ZSB9KVxyXG4gIC8vIOi9rOaNouaVsOaNrlxyXG4gIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQoYm9vaywgc2hlZXQsIHNoZWV0TmFtZSlcclxuICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeScgfSlcclxuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RvQnVmZmVyKHdib3V0KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfSlcclxuICAvLyDkv53lrZjlr7zlh7pcclxuICBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucylcclxuICBpZiAobWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5leHBTdWNjZXNzJyksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkb3dubG9hZEZpbGUgKGJsb2I6IEJsb2IsIG9wdGlvbnM6IEV4cG9ydE9wdG9ucykge1xyXG4gIGlmICh3aW5kb3cuQmxvYikge1xyXG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdHlwZSB9ID0gb3B0aW9uc1xyXG4gICAgaWYgKG5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XHJcbiAgICAgIG5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS4ke3R5cGV9YClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBsaW5rRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxyXG4gICAgICBsaW5rRWxlbS50YXJnZXQgPSAnX2JsYW5rJ1xyXG4gICAgICBsaW5rRWxlbS5kb3dubG9hZCA9IGAke2ZpbGVuYW1lfS4ke3R5cGV9YFxyXG4gICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmtFbGVtKVxyXG4gICAgICBsaW5rRWxlbS5jbGljaygpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pXHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5ub3RFeHAnKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24gKHZhbDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3N2IChjb2x1bW5zOiBDb2x1bW5Db25maWdbXSwgY29udGVudDogc3RyaW5nKSB7XHJcbiAgY29uc3QgbGlzdCA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXHJcbiAgY29uc3QgZmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29uc3Qgcm93czogYW55W10gPSBbXVxyXG4gIGlmIChsaXN0Lmxlbmd0aCkge1xyXG4gICAgY29uc3Qgckxpc3QgPSBsaXN0LnNsaWNlKDEpXHJcbiAgICBsaXN0WzBdLnNwbGl0KCcsJykubWFwKHJlcGxhY2VEb3VibGVRdW90YXRpb24pXHJcbiAgICByTGlzdC5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAgIGlmIChyKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgICAgci5zcGxpdCgnLCcpLmZvckVhY2goKHZhbCwgY29sSW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZHNbY29sSW5kZXhdKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJvd3MucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4geyBmaWVsZHMsIHJvd3MgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0ltcG9ydERhdGEgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBmaWVsZHM6IHN0cmluZ1tdLCByb3dzOiBhbnlbXSkge1xyXG4gIGxldCB0YWJsZUZpZWxkczogc3RyaW5nW10gPSBbXVxyXG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICBsZXQgZmllbGQgPSBjb2x1bW4ucHJvcGVydHlcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICB0YWJsZUZpZWxkcy5wdXNoKGZpZWxkKVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgcmV0dXJuIHRhYmxlRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKSlcclxufVxyXG5cclxuZnVuY3Rpb24gaW1wb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgY29sdW1ucywgb3B0aW9ucywgZmlsZSB9ID0gcGFyYW1zXHJcbiAgY29uc3QgJHRhYmxlOiBhbnkgPSBwYXJhbXMuJHRhYmxlXHJcbiAgY29uc3QgeyBfaW1wb3J0UmVzb2x2ZSB9ID0gJHRhYmxlXHJcbiAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcclxuICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHdvcmtib29rID0gWExTWC5yZWFkKGUudGFyZ2V0LnJlc3VsdCwgeyB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gICAgY29uc3QgY3N2RGF0YTogc3RyaW5nID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya2Jvb2suU2hlZXRzLlNoZWV0MSlcclxuICAgIGNvbnN0IHsgZmllbGRzLCByb3dzIH0gPSBwYXJzZUNzdihjb2x1bW5zLCBjc3ZEYXRhKVxyXG4gICAgY29uc3Qgc3RhdHVzID0gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cylcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgJHRhYmxlLmNyZWF0ZURhdGEocm93cylcclxuICAgICAgICAudGhlbigoZGF0YTogYW55W10pID0+IHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09ICdhcHBlbmQnKSB7XHJcbiAgICAgICAgICAgICR0YWJsZS5pbnNlcnRBdChkYXRhLCAtMSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICR0YWJsZS5yZWxvYWREYXRhKGRhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IFhFVXRpbHMudGVtcGxhdGUoX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5pbXBTdWNjZXNzJyksIFtyb3dzLmxlbmd0aF0pLCBzdGF0dXM6ICdzdWNjZXNzJyB9KVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSlcclxuICAgIH1cclxuICAgIGlmIChfaW1wb3J0UmVzb2x2ZSkge1xyXG4gICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpXHJcbiAgICAgICR0YWJsZS5faW1wb3J0UmVzb2x2ZSA9IG51bGxcclxuICAgIH1cclxuICB9XHJcbiAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSlcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlSW1wb3J0RXZlbnQgKHBhcmFtczogSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMpIHtcclxuICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XHJcbiAgICBpbXBvcnRYTFNYKHBhcmFtcylcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlRXhwb3J0RXZlbnQgKHBhcmFtczogSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMpIHtcclxuICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XHJcbiAgICBleHBvcnRYTFNYKHBhcmFtcylcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOWfuuS6jiB2eGUtdGFibGUg6KGo5qC855qE5aKe5by65o+S5Lu277yM5pSv5oyB5a+85Ye6IHhsc3gg5qC85byPXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYID0ge1xyXG4gIGluc3RhbGwgKHh0YWJsZTogdHlwZW9mIFZYRVRhYmxlKSB7XHJcbiAgICBjb25zdCB7IGludGVyY2VwdG9yIH0gPSB4dGFibGVcclxuICAgIF92eGV0YWJsZSA9IHh0YWJsZVxyXG4gICAgT2JqZWN0LmFzc2lnbih4dGFibGUudHlwZXMsIHsgeGxzeDogMSB9KVxyXG4gICAgaW50ZXJjZXB0b3IubWl4aW4oe1xyXG4gICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXHJcbiAgICAgICdldmVudC5leHBvcnQnOiBoYW5kbGVFeHBvcnRFdmVudFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcclxuICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYXHJcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgWEVVdGlscyBmcm9tICd4ZS11dGlscy9tZXRob2RzL3hlLXV0aWxzJztcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xubGV0IF92eGV0YWJsZTtcbmZ1bmN0aW9uIGdldENlbGxMYWJlbChjb2x1bW4sIGNlbGxWYWx1ZSkge1xuICAgIGlmIChjZWxsVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFhFVXRpbHMudG9TdHJpbmcoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0cywgcm93cywgY29sdW1uKSB7XG4gICAgdmFyIGNlbGxWYWx1ZSA9IFhFVXRpbHMudG9TdHJpbmcocm93c1skdGFibGUuJGdldENvbHVtbkluZGV4KGNvbHVtbildKTtcbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gdG9CdWZmZXIod2JvdXQpIHtcbiAgICBsZXQgYnVmID0gbmV3IEFycmF5QnVmZmVyKHdib3V0Lmxlbmd0aCk7XG4gICAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggIT09IHdib3V0Lmxlbmd0aDsgKytpbmRleClcbiAgICAgICAgdmlld1tpbmRleF0gPSB3Ym91dC5jaGFyQ29kZUF0KGluZGV4KSAmIDB4RkY7XG4gICAgcmV0dXJuIGJ1Zjtcbn1cbmZ1bmN0aW9uIGV4cG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyAkdGFibGUsIG9wdGlvbnMsIGNvbHVtbnMsIGRhdGFzIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgeyBzaGVldE5hbWUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjb2xIZWFkID0ge307XG4gICAgY29uc3QgZm9vdExpc3QgPSBbXTtcbiAgICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcbiAgICBpZiAoaXNIZWFkZXIpIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyDmlrDlop7pg6jliIZcbiAgICBjb25zdCByb3dMaXN0ID0gZGF0YXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCByZXN0ID0ge307XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfSk7XG4gICAgaWYgKGlzRm9vdGVyKSB7XG4gICAgICAgIGNvbnN0IHsgZm9vdGVyRGF0YSB9ID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpO1xuICAgICAgICBjb25zdCBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGE7XG4gICAgICAgIGZvb3RlcnMuZm9yRWFjaCgocm93cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHt9O1xuICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtW2NvbHVtbi5pZF0gPSBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRpb25zLCByb3dzLCBjb2x1bW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb290TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICBjb25zdCBzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCgoaXNIZWFkZXIgPyBbY29sSGVhZF0gOiBbXSkuY29uY2F0KHJvd0xpc3QpLmNvbmNhdChmb290TGlzdCksIHsgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcbiAgICAvLyDovazmjaLmlbDmja5cbiAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpO1xuICAgIGNvbnN0IHdib3V0ID0gWExTWC53cml0ZShib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RvQnVmZmVyKHdib3V0KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfSk7XG4gICAgLy8g5L+d5a2Y5a+85Ye6XG4gICAgZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpO1xuICAgIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUudGFibGUuZXhwU3VjY2VzcycpLCBzdGF0dXM6ICdzdWNjZXNzJyB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucykge1xuICAgIGlmICh3aW5kb3cuQmxvYikge1xuICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcbiAgICAgICAgICAgIG5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS4ke3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlua0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBsaW5rRWxlbS50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gO1xuICAgICAgICAgICAgbGlua0VsZW0uaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmtFbGVtKTtcbiAgICAgICAgICAgIGxpbmtFbGVtLmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmtFbGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCkge1xuICAgIHJldHVybiB2YWwucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1wiJC8sICcnKTtcbn1cbmZ1bmN0aW9uIHBhcnNlQ3N2KGNvbHVtbnMsIGNvbnRlbnQpIHtcbiAgICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgZmllbGRzID0gW107XG4gICAgY29uc3Qgcm93cyA9IFtdO1xuICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSk7XG4gICAgICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbik7XG4gICAgICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHt9O1xuICAgICAgICAgICAgICAgIHIuc3BsaXQoJywnKS5mb3JFYWNoKCh2YWwsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbY29sSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtW2ZpZWxkc1tjb2xJbmRleF1dID0gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZmllbGRzLCByb3dzIH07XG59XG5mdW5jdGlvbiBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKSB7XG4gICAgbGV0IHRhYmxlRmllbGRzID0gW107XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbGV0IGZpZWxkID0gY29sdW1uLnByb3BlcnR5O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhYmxlRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKSk7XG59XG5mdW5jdGlvbiBpbXBvcnRYTFNYKHBhcmFtcykge1xuICAgIGNvbnN0IHsgY29sdW1ucywgb3B0aW9ucywgZmlsZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0ICR0YWJsZSA9IHBhcmFtcy4kdGFibGU7XG4gICAgY29uc3QgeyBfaW1wb3J0UmVzb2x2ZSB9ID0gJHRhYmxlO1xuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKGUpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pO1xuICAgICAgICBjb25zdCBjc3ZEYXRhID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya2Jvb2suU2hlZXRzLlNoZWV0MSk7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCByb3dzIH0gPSBwYXJzZUNzdihjb2x1bW5zLCBjc3ZEYXRhKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cyk7XG4gICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICR0YWJsZS5jcmVhdGVEYXRhKHJvd3MpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYXBwZW5kJykge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUuaW5zZXJ0QXQoZGF0YSwgLTEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5pbXBGaWVsZHMnKSwgc3RhdHVzOiAnZXJyb3InIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfaW1wb3J0UmVzb2x2ZSkge1xuICAgICAgICAgICAgX2ltcG9ydFJlc29sdmUoc3RhdHVzKTtcbiAgICAgICAgICAgICR0YWJsZS5faW1wb3J0UmVzb2x2ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xufVxuZnVuY3Rpb24gaGFuZGxlSW1wb3J0RXZlbnQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xuICAgICAgICBpbXBvcnRYTFNYKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGV4cG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbi8qKlxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cbiAqL1xuZXhwb3J0IGNvbnN0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCA9IHtcbiAgICBpbnN0YWxsKHh0YWJsZSkge1xuICAgICAgICBjb25zdCB7IGludGVyY2VwdG9yIH0gPSB4dGFibGU7XG4gICAgICAgIF92eGV0YWJsZSA9IHh0YWJsZTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih4dGFibGUudHlwZXMsIHsgeGxzeDogMSB9KTtcbiAgICAgICAgaW50ZXJjZXB0b3IubWl4aW4oe1xuICAgICAgICAgICAgJ2V2ZW50LmltcG9ydCc6IGhhbmRsZUltcG9ydEV2ZW50LFxuICAgICAgICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZYRVRhYmxlKSB7XG4gICAgd2luZG93LlZYRVRhYmxlLnVzZShWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1gpO1xufVxuZXhwb3J0IGRlZmF1bHQgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYO1xuIl19
271
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9TdHJpbmciLCJpc05hTiIsIk51bWJlciIsImxlbmd0aCIsImdldEZvb3RlckNlbGxWYWx1ZSIsIiR0YWJsZSIsIm9wdHMiLCJyb3dzIiwiJGdldENvbHVtbkluZGV4IiwidG9CdWZmZXIiLCJ3Ym91dCIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpbmRleCIsImNoYXJDb2RlQXQiLCJleHBvcnRYTFNYIiwicGFyYW1zIiwib3B0aW9ucyIsImNvbHVtbnMiLCJkYXRhcyIsInNoZWV0TmFtZSIsImlzSGVhZGVyIiwiaXNGb290ZXIiLCJvcmlnaW5hbCIsIm1lc3NhZ2UiLCJmb290ZXJGaWx0ZXJNZXRob2QiLCJjb2xIZWFkIiwiZm9vdExpc3QiLCJmb3JFYWNoIiwiaWQiLCJwcm9wZXJ0eSIsImdldFRpdGxlIiwicm93TGlzdCIsIm1hcCIsIml0ZW0iLCJyZXN0IiwiZ2V0VGFibGVEYXRhIiwiZm9vdGVyRGF0YSIsImZvb3RlcnMiLCJmaWx0ZXIiLCJwdXNoIiwiYm9vayIsIlhMU1giLCJ1dGlscyIsImJvb2tfbmV3Iiwic2hlZXQiLCJqc29uX3RvX3NoZWV0IiwiY29uY2F0Iiwic2tpcEhlYWRlciIsIk9iamVjdCIsImtleXMiLCJrZXkiLCJzIiwiZm9udCIsInN6IiwiYWxpZ25tZW50IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwid3JhcFRleHQiLCJib3JkZXIiLCJ0b3AiLCJzdHlsZSIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImJvb2tfYXBwZW5kX3NoZWV0Iiwid3JpdGUiLCJib29rVHlwZSIsImJvb2tTU1QiLCJ0eXBlIiwiYmxvYiIsIkJsb2IiLCJkb3dubG9hZEZpbGUiLCJtb2RhbCIsInQiLCJzdGF0dXMiLCJ3aW5kb3ciLCJmaWxlbmFtZSIsIm5hdmlnYXRvciIsIm1zU2F2ZUJsb2IiLCJsaW5rRWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRhcmdldCIsImRvd25sb2FkIiwiaHJlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXBsYWNlRG91YmxlUXVvdGF0aW9uIiwidmFsIiwicmVwbGFjZSIsInBhcnNlQ3N2IiwiY29udGVudCIsImxpc3QiLCJzcGxpdCIsImZpZWxkcyIsInJMaXN0Iiwic2xpY2UiLCJyIiwiY29sSW5kZXgiLCJjaGVja0ltcG9ydERhdGEiLCJ0YWJsZUZpZWxkcyIsImZpZWxkIiwiZXZlcnkiLCJpbmNsdWRlcyIsImltcG9ydFhMU1giLCJmaWxlIiwiX2ltcG9ydFJlc29sdmUiLCJmaWxlUmVhZGVyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImUiLCJ3b3JrYm9vayIsInJlYWQiLCJyZXN1bHQiLCJjc3ZEYXRhIiwic2hlZXRfdG9fY3N2IiwiU2hlZXRzIiwiU2hlZXQxIiwiY3JlYXRlRGF0YSIsInRoZW4iLCJkYXRhIiwibW9kZSIsImluc2VydEF0IiwicmVsb2FkRGF0YSIsInRlbXBsYXRlIiwicmVhZEFzQmluYXJ5U3RyaW5nIiwiaGFuZGxlSW1wb3J0RXZlbnQiLCJoYW5kbGVFeHBvcnRFdmVudCIsIlZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCIsImluc3RhbGwiLCJ4dGFibGUiLCJpbnRlcmNlcHRvciIsImFzc2lnbiIsInR5cGVzIiwieGxzeCIsIm1peGluIiwiVlhFVGFibGUiLCJ1c2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBU0E7QUFBdUI7QUFWdkI7O0FBV0E7QUFFQSxJQUFJQSxTQUEwQjtBQUU5QixTQUFTQyxZQUFZLENBQUVDLE1BQW9CLEVBQUVDLFNBQWMsRUFBQTtFQUN6RCxJQUFJQSxTQUFTLEVBQUU7SUFDYixRQUFRRCxNQUFNLENBQUNFLFFB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TyxLQUFLO0VDbEJaO0FEb0JKO0FBRUEsU0FBU3NILGlCQUFpQixDQUFFdEgsTUFBK0IsRUFBQTtFQUN6RCxJQUFJQSxNQUFNLENBQUNDLE9BQU8sQ0FBQ29ELElBQUksS0FBSyxNQUFNLEVBQUU7SUFDbEN0RCxVQUFVLENBQUNDLE1BQU0sQ0FBQztJQUNsQixPQUFPLEtBQUs7RUNuQlo7QURxQko7QUFFQTtBQ3BCQTtBQUNBO0FEc0JPLElBQU11SCx3QkFBd0IsR0FBRztFQUN0Q0MsT0FBTyxtQkFBRUMsTUFBdUIsRUFBQTtJQUM5QixJQUFRQyxXQUFXLEdBQUtELE1BQU0sQ0FBdEJDLFdBQVc7SUFDbkJsSixTQUFTLEdBQUdpSixNQUFNO0lBQ2xCeEYsTUFBTSxDQUFDMEYsTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBQyxDQUFFLENBQUM7SUFDeENILFdBQVcsQ0FBQ0ksS0FBSyxDQUFDO01BQ2hCLGNBQWMsRUFBRVQsaUJBQWlCO01BQ2pDLGNBQWMsRUFBRUM7SUNwQmQsQ0RxQkgsQ0FBQztFQUNKO0FDcEJGLENEcUJDO0FBQUE7QUFFRCxJQUFJLE9BQU8xRCxNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUNtRSxRQUFRLEVBQUU7RUFDcERuRSxNQUFNLENBQUNtRSxRQUFRLENBQUNDLEdBQUcsQ0FBQ1Qsd0JBQXdCLENBQUM7QUNyQi9DO0FEc0JDLGVBRWNBLHdCQUF3QjtBQUFBIiwiZmlsZSI6ImluZGV4LmNvbW1vbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXHJcbmltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnXHJcbmltcG9ydCB7XHJcbiAgVlhFVGFibGUsXHJcbiAgVGFibGUsXHJcbiAgSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMsXHJcbiAgSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMsXHJcbiAgQ29sdW1uQ29uZmlnLFxyXG4gIEV4cG9ydE9wdG9uc1xyXG59IGZyb20gJ3Z4ZS10YWJsZS9saWIvdnhlLXRhYmxlJ1xyXG5pbXBvcnQgWExTWCBmcm9tICd4bHN4J1xyXG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXHJcblxyXG5sZXQgX3Z4ZXRhYmxlOiB0eXBlb2YgVlhFVGFibGVcclxuXHJcbmZ1bmN0aW9uIGdldENlbGxMYWJlbCAoY29sdW1uOiBDb2x1bW5Db25maWcsIGNlbGxWYWx1ZTogYW55KSB7XHJcbiAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gWEVVdGlscy50b1N0cmluZyhjZWxsVmFsdWUpXHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgaWYgKCFpc05hTihjZWxsVmFsdWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAoY2VsbFZhbHVlLmxlbmd0aCA8IDEyICYmICFpc05hTihjZWxsVmFsdWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGNlbGxWYWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGb290ZXJDZWxsVmFsdWUgKCR0YWJsZTogVGFibGUsIG9wdHM6IEV4cG9ydE9wdG9ucywgcm93czogYW55W10sIGNvbHVtbjogQ29sdW1uQ29uZmlnKSB7XHJcbiAgdmFyIGNlbGxWYWx1ZSA9IFhFVXRpbHMudG9TdHJpbmcocm93c1skdGFibGUuJGdldENvbHVtbkluZGV4KGNvbHVtbildKVxyXG4gIHJldHVybiBjZWxsVmFsdWVcclxufVxyXG5cclxuZnVuY3Rpb24gdG9CdWZmZXIgKHdib3V0OiBhbnkpIHtcclxuICBsZXQgYnVmID0gbmV3IEFycmF5QnVmZmVyKHdib3V0Lmxlbmd0aClcclxuICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4ICE9PSB3Ym91dC5sZW5ndGg7ICsraW5kZXgpIHZpZXdbaW5kZXhdID0gd2JvdXQuY2hhckNvZGVBdChpbmRleCkgJiAweEZGXHJcbiAgcmV0dXJuIGJ1ZlxyXG59XHJcblxyXG5mdW5jdGlvbiBleHBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9yRXhwb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyAkdGFibGUsIG9wdGlvbnMsIGNvbHVtbnMsIGRhdGFzIH0gPSBwYXJhbXNcclxuICBjb25zdCB7IHNoZWV0TmFtZSwgaXNIZWFkZXIsIGlzRm9vdGVyLCBvcmlnaW5hbCwgbWVzc2FnZSwgZm9vdGVyRmlsdGVyTWV0aG9kIH0gPSBvcHRpb25zXHJcbiAgY29uc3QgY29sSGVhZDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgY29uc3QgZm9vdExpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdXHJcbiAgLy8gY29uc3Qgcm93TGlzdCA9IGRhdGFzXHJcblxyXG4gIGlmIChpc0hlYWRlcikge1xyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOaWsOWinumDqOWIhlxyXG4gIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XHJcbiAgICBjb25zdCByZXN0OiBhbnkgPSB7fVxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKVxyXG4gICAgfSlcclxuICAgIHJldHVybiByZXN0XHJcbiAgfSlcclxuXHJcbiAgaWYgKGlzRm9vdGVyKSB7XHJcbiAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKVxyXG4gICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhXHJcbiAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcclxuICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKVxyXG4gICAgICB9KVxyXG4gICAgICBmb290TGlzdC5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpXHJcbiAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSlcclxuXHJcbiAgT2JqZWN0LmtleXMoc2hlZXQpLmZvckVhY2goa2V5ID0+IHtcclxuICAgIC8vIOmdniHlvIDlpLTnmoTlsZ7mgKfpg73mmK/ljZXlhYPmoLxcclxuICAgIC8vIGlmICgha2V5LnN0YXJ0c1dpdGgoJyEnKSkge1xyXG4gICAgc2hlZXRba2V5XS5zID0ge1xyXG4gICAgICBmb250OiB7XHJcbiAgICAgICAgc3o6ICcxMidcclxuICAgICAgfSxcclxuICAgICAgYWxpZ25tZW50OiB7XHJcbiAgICAgICAgaG9yaXpvbnRhbDogJ2xlZnQnLFxyXG4gICAgICAgIHZlcnRpY2FsOiAnY2VudGVyJyxcclxuICAgICAgICB3cmFwVGV4dDogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICBib3JkZXI6IHtcclxuICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIH1cclxuICB9KVxyXG5cclxuICAvLyDovazmjaLmlbDmja5cclxuICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpXHJcbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0b0J1ZmZlcih3Ym91dCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pXHJcbiAgLy8g5L+d5a2Y5a+85Ye6XHJcbiAgZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpXHJcbiAgaWYgKG1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUudGFibGUuZXhwU3VjY2VzcycpLCBzdGF0dXM6ICdzdWNjZXNzJyB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZG93bmxvYWRGaWxlIChibG9iOiBCbG9iLCBvcHRpb25zOiBFeHBvcnRPcHRvbnMpIHtcclxuICBpZiAod2luZG93LkJsb2IpIHtcclxuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHR5cGUgfSA9IG9wdGlvbnNcclxuICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xyXG4gICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBgJHtmaWxlbmFtZX0uJHt0eXBlfWApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgbGlua0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcclxuICAgICAgbGlua0VsZW0udGFyZ2V0ID0gJ19ibGFuaydcclxuICAgICAgbGlua0VsZW0uZG93bmxvYWQgPSBgJHtmaWxlbmFtZX0uJHt0eXBlfWBcclxuICAgICAgbGlua0VsZW0uaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rRWxlbSlcclxuICAgICAgbGlua0VsZW0uY2xpY2soKVxyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmtFbGVtKVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlRG91YmxlUXVvdGF0aW9uICh2YWw6IHN0cmluZykge1xyXG4gIHJldHVybiB2YWwucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1wiJC8sICcnKVxyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNzdiAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gIGNvbnN0IGxpc3QgPSBjb250ZW50LnNwbGl0KCdcXG4nKVxyXG4gIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBbXVxyXG4gIGNvbnN0IHJvd3M6IGFueVtdID0gW11cclxuICBpZiAobGlzdC5sZW5ndGgpIHtcclxuICAgIGNvbnN0IHJMaXN0ID0gbGlzdC5zbGljZSgxKVxyXG4gICAgbGlzdFswXS5zcGxpdCgnLCcpLm1hcChyZXBsYWNlRG91YmxlUXVvdGF0aW9uKVxyXG4gICAgckxpc3QuZm9yRWFjaCgocikgPT4ge1xyXG4gICAgICBpZiAocikge1xyXG4gICAgICAgIGNvbnN0IGl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gICAgICAgIHIuc3BsaXQoJywnKS5mb3JFYWNoKCh2YWwsIGNvbEluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGRzW2NvbEluZGV4XSkge1xyXG4gICAgICAgICAgICBpdGVtW2ZpZWxkc1tjb2xJbmRleF1dID0gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByb3dzLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIHsgZmllbGRzLCByb3dzIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tJbXBvcnREYXRhIChjb2x1bW5zOiBDb2x1bW5Db25maWdbXSwgZmllbGRzOiBzdHJpbmdbXSwgcm93czogYW55W10pIHtcclxuICBsZXQgdGFibGVGaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgbGV0IGZpZWxkID0gY29sdW1uLnByb3BlcnR5XHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgdGFibGVGaWVsZHMucHVzaChmaWVsZClcclxuICAgIH1cclxuICB9KVxyXG4gIHJldHVybiB0YWJsZUZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGltcG9ydFhMU1ggKHBhcmFtczogSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMpIHtcclxuICBjb25zdCB7IGNvbHVtbnMsIG9wdGlvbnMsIGZpbGUgfSA9IHBhcmFtc1xyXG4gIGNvbnN0ICR0YWJsZTogYW55ID0gcGFyYW1zLiR0YWJsZVxyXG4gIGNvbnN0IHsgX2ltcG9ydFJlc29sdmUgfSA9ICR0YWJsZVxyXG4gIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChlLnRhcmdldC5yZXN1bHQsIHsgdHlwZTogJ2JpbmFyeScgfSlcclxuICAgIGNvbnN0IGNzdkRhdGE6IHN0cmluZyA9IFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtib29rLlNoZWV0cy5TaGVldDEpXHJcbiAgICBjb25zdCB7IGZpZWxkcywgcm93cyB9ID0gcGFyc2VDc3YoY29sdW1ucywgY3N2RGF0YSlcclxuICAgIGNvbnN0IHN0YXR1cyA9IGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpXHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICR0YWJsZS5jcmVhdGVEYXRhKHJvd3MpXHJcbiAgICAgICAgLnRoZW4oKGRhdGE6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYXBwZW5kJykge1xyXG4gICAgICAgICAgICAkdGFibGUuaW5zZXJ0QXQoZGF0YSwgLTEpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkdGFibGUucmVsb2FkRGF0YShkYXRhKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBYRVV0aWxzLnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XHJcbiAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5pbXBGaWVsZHMnKSwgc3RhdHVzOiAnZXJyb3InIH0pXHJcbiAgICB9XHJcbiAgICBpZiAoX2ltcG9ydFJlc29sdmUpIHtcclxuICAgICAgX2ltcG9ydFJlc29sdmUoc3RhdHVzKVxyXG4gICAgICAkdGFibGUuX2ltcG9ydFJlc29sdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUltcG9ydEV2ZW50IChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xyXG4gICAgaW1wb3J0WExTWChwYXJhbXMpXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50IChwYXJhbXM6IEludGVyY2VwdG9yRXhwb3J0UGFyYW1zKSB7XHJcbiAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xyXG4gICAgZXhwb3J0WExTWChwYXJhbXMpXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCA9IHtcclxuICBpbnN0YWxsICh4dGFibGU6IHR5cGVvZiBWWEVUYWJsZSkge1xyXG4gICAgY29uc3QgeyBpbnRlcmNlcHRvciB9ID0geHRhYmxlXHJcbiAgICBfdnhldGFibGUgPSB4dGFibGVcclxuICAgIE9iamVjdC5hc3NpZ24oeHRhYmxlLnR5cGVzLCB7IHhsc3g6IDEgfSlcclxuICAgIGludGVyY2VwdG9yLm1peGluKHtcclxuICAgICAgJ2V2ZW50LmltcG9ydCc6IGhhbmRsZUltcG9ydEV2ZW50LFxyXG4gICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZYRVRhYmxlKSB7XHJcbiAgd2luZG93LlZYRVRhYmxlLnVzZShWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1gpXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWFxyXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscyc7XG5pbXBvcnQgWExTWCBmcm9tICd4bHN4Jztcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbmxldCBfdnhldGFibGU7XG5mdW5jdGlvbiBnZXRDZWxsTGFiZWwoY29sdW1uLCBjZWxsVmFsdWUpIHtcbiAgICBpZiAoY2VsbFZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAoY29sdW1uLmNlbGxUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIHJldHVybiBYRVV0aWxzLnRvU3RyaW5nKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oY2VsbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoY2VsbFZhbHVlLmxlbmd0aCA8IDEyICYmICFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEZvb3RlckNlbGxWYWx1ZSgkdGFibGUsIG9wdHMsIHJvd3MsIGNvbHVtbikge1xuICAgIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSk7XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIHRvQnVmZmVyKHdib3V0KSB7XG4gICAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpO1xuICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4ICE9PSB3Ym91dC5sZW5ndGg7ICsraW5kZXgpXG4gICAgICAgIHZpZXdbaW5kZXhdID0gd2JvdXQuY2hhckNvZGVBdChpbmRleCkgJiAweEZGO1xuICAgIHJldHVybiBidWY7XG59XG5mdW5jdGlvbiBleHBvcnRYTFNYKHBhcmFtcykge1xuICAgIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHsgc2hlZXROYW1lLCBpc0hlYWRlciwgaXNGb290ZXIsIG9yaWdpbmFsLCBtZXNzYWdlLCBmb290ZXJGaWx0ZXJNZXRob2QgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgY29sSGVhZCA9IHt9O1xuICAgIGNvbnN0IGZvb3RMaXN0ID0gW107XG4gICAgLy8gY29uc3Qgcm93TGlzdCA9IGRhdGFzXG4gICAgaWYgKGlzSGVhZGVyKSB7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8g5paw5aKe6YOo5YiGXG4gICAgY29uc3Qgcm93TGlzdCA9IGRhdGFzLm1hcChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgcmVzdCA9IHt9O1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgIH0pO1xuICAgIGlmIChpc0Zvb3Rlcikge1xuICAgICAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhO1xuICAgICAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9vdExpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGJvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSk7XG4gICAgT2JqZWN0LmtleXMoc2hlZXQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgLy8g6Z2eIeW8gOWktOeahOWxnuaAp+mDveaYr+WNleWFg+agvFxuICAgICAgICAvLyBpZiAoIWtleS5zdGFydHNXaXRoKCchJykpIHtcbiAgICAgICAgc2hlZXRba2V5XS5zID0ge1xuICAgICAgICAgICAgZm9udDoge1xuICAgICAgICAgICAgICAgIHN6OiAnMTInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWxpZ25tZW50OiB7XG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbDogJ2xlZnQnLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB3cmFwVGV4dDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvcmRlcjoge1xuICAgICAgICAgICAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgICAgICAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgICAgICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gfVxuICAgIH0pO1xuICAgIC8vIOi9rOaNouaVsOaNrlxuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQoYm9vaywgc2hlZXQsIHNoZWV0TmFtZSk7XG4gICAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknIH0pO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcbiAgICAvLyDkv53lrZjlr7zlh7pcbiAgICBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucyk7XG4gICAgaWYgKG1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5leHBTdWNjZXNzJyksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKSB7XG4gICAgaWYgKHdpbmRvdy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHsgZmlsZW5hbWUsIHR5cGUgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xuICAgICAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsaW5rRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICAgICAgbGlua0VsZW0uZG93bmxvYWQgPSBgJHtmaWxlbmFtZX0uJHt0eXBlfWA7XG4gICAgICAgICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICAgICAgbGlua0VsZW0uY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKSB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpO1xufVxuZnVuY3Rpb24gcGFyc2VDc3YoY29sdW1ucywgY29udGVudCkge1xuICAgIGNvbnN0IGxpc3QgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXTtcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJMaXN0ID0gbGlzdC5zbGljZSgxKTtcbiAgICAgICAgbGlzdFswXS5zcGxpdCgnLCcpLm1hcChyZXBsYWNlRG91YmxlUXVvdGF0aW9uKTtcbiAgICAgICAgckxpc3QuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge307XG4gICAgICAgICAgICAgICAgci5zcGxpdCgnLCcpLmZvckVhY2goKHZhbCwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4geyBmaWVsZHMsIHJvd3MgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpIHtcbiAgICBsZXQgdGFibGVGaWVsZHMgPSBbXTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBsZXQgZmllbGQgPSBjb2x1bW4ucHJvcGVydHk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgdGFibGVGaWVsZHMucHVzaChmaWVsZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbn1cbmZ1bmN0aW9uIGltcG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgJHRhYmxlID0gcGFyYW1zLiR0YWJsZTtcbiAgICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGU7XG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChlLnRhcmdldC5yZXN1bHQsIHsgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgICAgIGNvbnN0IGNzdkRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKTtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKTtcbiAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgJHRhYmxlLmNyZWF0ZURhdGEocm93cylcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09ICdhcHBlbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICR0YWJsZS5pbnNlcnRBdChkYXRhLCAtMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUucmVsb2FkRGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBYRVV0aWxzLnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XG4gICAgICAgICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG59XG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGltcG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgZXhwb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xuICovXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYID0ge1xuICAgIGluc3RhbGwoeHRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZTtcbiAgICAgICAgX3Z4ZXRhYmxlID0geHRhYmxlO1xuICAgICAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pO1xuICAgICAgICBpbnRlcmNlcHRvci5taXhpbih7XG4gICAgICAgICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXG4gICAgICAgICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcbiAgICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCk7XG59XG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1g7XG4iXX0=
package/dist/index.js CHANGED
@@ -98,6 +98,35 @@
98
98
  var sheet = _xlsx["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
99
99
  skipHeader: true
100
100
  });
101
+ Object.keys(sheet).forEach(function (key) {
102
+ // 非!开头的属性都是单元格
103
+ // if (!key.startsWith('!')) {
104
+ sheet[key].s = {
105
+ font: {
106
+ sz: '12'
107
+ },
108
+ alignment: {
109
+ horizontal: 'left',
110
+ vertical: 'center',
111
+ wrapText: true
112
+ },
113
+ border: {
114
+ top: {
115
+ style: 'thin'
116
+ },
117
+ right: {
118
+ style: 'thin'
119
+ },
120
+ bottom: {
121
+ style: 'thin'
122
+ },
123
+ left: {
124
+ style: 'thin'
125
+ }
126
+ }
127
+ };
128
+ // }
129
+ });
101
130
  // 转换数据
102
131
  _xlsx["default"].utils.book_append_sheet(book, sheet, sheetName);
103
132
  var wbout = _xlsx["default"].write(book, {
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx")):(t((t={exports:{}}).exports,e.XEUtils,e.XLSX),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,d,p){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var m;function n(e){var o=e.$table,t=e.options,r=e.columns,e=e.datas,n=t.sheetName,a=t.isHeader,i=t.isFooter,s=t.original,l=t.message,u=t.footerFilterMethod,c={},f=[],e=(a&&r.forEach(function(e){c[e.id]=d.default.toString(s?e.property:e.getTitle())}),e.map(function(t){var n={};return r.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return d.default.toString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),u=(i&&(i=o.getTableData().footerData,(u?i.filter(u):i).forEach(function(t){var n={};r.forEach(function(e){n[e.id]=d.default.toString(t[o.$getColumnIndex(e)])}),f.push(n)})),p.default.utils.book_new()),i=p.default.utils.json_to_sheet((a?[c]:[]).concat(e).concat(f),{skipHeader:!0}),a=(p.default.utils.book_append_sheet(u,i,n),p.default.write(u,{bookType:"xlsx",bookSST:!1,type:"binary"})),e=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(a)],{type:"application/octet-stream"}),i=t;window.Blob?(n=i.filename,i=i.type,navigator.msSaveBlob?navigator.msSaveBlob(e,"".concat(n,".").concat(i)):((u=document.createElement("a")).target="_blank",u.download="".concat(n,".").concat(i),u.href=URL.createObjectURL(e),document.body.appendChild(u),u.click(),document.body.removeChild(u))):console.error(m.t("vxe.error.notExp")),!1!==l&&m.modal.message({message:m.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,r,e=p.default.read(e.target.result,{type:"binary"}),e=p.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(a=e.slice(1),e[0].split(",").map(c),a.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=c(e))}),t.push(n))})),{fields:o,rows:t}),a=e.rows,e=(n=e.fields,r=[],i.forEach(function(e){e=e.property;e&&r.push(e)}),r.every(function(e){return n.includes(e)}));e?(l.createData(a).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&m.modal.message({message:d.default.template(m.t("vxe.table.impSuccess"),[a.length]),status:"success"})):!1!==s.message&&m.modal.message({message:m.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function r(e){if("xlsx"===e.options.type)return o(e),!1}function a(e){if("xlsx"===e.options.type)return n(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,d=t(d),p=t(p);var i={install:function(e){var t=e.interceptor;m=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":r,"event.export":a})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
1
+ !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx")):(t((t={exports:{}}).exports,e.XEUtils,e.XLSX),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,p,m){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var h;function n(e){var o=e.$table,t=e.options,r=e.columns,e=e.datas,n=t.sheetName,a=t.isHeader,i=t.isFooter,s=t.original,l=t.message,u=t.footerFilterMethod,c={},f=[],e=(a&&r.forEach(function(e){c[e.id]=p.default.toString(s?e.property:e.getTitle())}),e.map(function(t){var n={};return r.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return p.default.toString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),u=(i&&(i=o.getTableData().footerData,(u?i.filter(u):i).forEach(function(t){var n={};r.forEach(function(e){n[e.id]=p.default.toString(t[o.$getColumnIndex(e)])}),f.push(n)})),m.default.utils.book_new()),d=m.default.utils.json_to_sheet((a?[c]:[]).concat(e).concat(f),{skipHeader:!0}),i=(Object.keys(d).forEach(function(e){d[e].s={font:{sz:"12"},alignment:{horizontal:"left",vertical:"center",wrapText:!0},border:{top:{style:"thin"},right:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"}}}}),m.default.utils.book_append_sheet(u,d,n),m.default.write(u,{bookType:"xlsx",bookSST:!1,type:"binary"})),a=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(i)],{type:"application/octet-stream"}),e=t;window.Blob?(n=e.filename,e=e.type,navigator.msSaveBlob?navigator.msSaveBlob(a,"".concat(n,".").concat(e)):((u=document.createElement("a")).target="_blank",u.download="".concat(n,".").concat(e),u.href=URL.createObjectURL(a),document.body.appendChild(u),u.click(),document.body.removeChild(u))):console.error(h.t("vxe.error.notExp")),!1!==l&&h.modal.message({message:h.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,r,e=m.default.read(e.target.result,{type:"binary"}),e=m.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(a=e.slice(1),e[0].split(",").map(c),a.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=c(e))}),t.push(n))})),{fields:o,rows:t}),a=e.rows,e=(n=e.fields,r=[],i.forEach(function(e){e=e.property;e&&r.push(e)}),r.every(function(e){return n.includes(e)}));e?(l.createData(a).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&h.modal.message({message:p.default.template(h.t("vxe.table.impSuccess"),[a.length]),status:"success"})):!1!==s.message&&h.modal.message({message:h.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function r(e){if("xlsx"===e.options.type)return o(e),!1}function a(e){if("xlsx"===e.options.type)return n(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,p=t(p),m=t(m);var i={install:function(e){var t=e.interceptor;h=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":r,"event.export":a})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
package/index.ts CHANGED
@@ -80,6 +80,29 @@ function exportXLSX (params: InterceptorExportParams) {
80
80
  }
81
81
  const book = XLSX.utils.book_new()
82
82
  const sheet = XLSX.utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), { skipHeader: true })
83
+
84
+ Object.keys(sheet).forEach(key => {
85
+ // 非!开头的属性都是单元格
86
+ // if (!key.startsWith('!')) {
87
+ sheet[key].s = {
88
+ font: {
89
+ sz: '12'
90
+ },
91
+ alignment: {
92
+ horizontal: 'left',
93
+ vertical: 'center',
94
+ wrapText: true
95
+ },
96
+ border: {
97
+ top: { style: 'thin' },
98
+ right: { style: 'thin' },
99
+ bottom: { style: 'thin' },
100
+ left: { style: 'thin' }
101
+ }
102
+ }
103
+ // }
104
+ })
105
+
83
106
  // 转换数据
84
107
  XLSX.utils.book_append_sheet(book, sheet, sheetName)
85
108
  const wbout = XLSX.write(book, { bookType: 'xlsx', bookSST: false, type: 'binary' })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table-plugin-export-xlsx-xhx",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "基于 vxe-table 表格的增强插件,支持导出 xlsx 格式",
5
5
  "scripts": {
6
6
  "lib": "gulp build"