vxe-table-plugin-export-xlsx-xhx 1.0.14 → 1.0.16

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## history
12
12
 
13
- 版本 1.0.13 增加导出时默认样式
13
+ 版本 1.0.16 增加导出时默认表格样式
14
14
  版本 1.0.11 完善单元文本cellType的支持自定义 string 或 number
15
15
  版本 1.0.9 修复IE11报错
16
16
  版本 1.0.2 修复未定义数据项导出
@@ -93,30 +93,56 @@ function exportXLSX(params) {
93
93
  Object.keys(sheet).forEach(function (key) {
94
94
  // 非!开头的属性都是单元格
95
95
  if (!key.startsWith('!')) {
96
- sheet[key].s = {
97
- font: {
98
- sz: '12'
99
- },
100
- alignment: {
101
- horizontal: 'left',
102
- vertical: 'center',
103
- wrapText: true
104
- },
105
- border: {
106
- top: {
107
- style: 'thin'
96
+ if (key.replace(/[^\d]/g, '') === '1') {
97
+ sheet[key].s = {
98
+ font: {
99
+ sz: '10',
100
+ bold: true
108
101
  },
109
- right: {
110
- style: 'thin'
102
+ fill: {
103
+ bgColor: {
104
+ rgb: 'F2F2F2'
105
+ }
111
106
  },
112
- bottom: {
113
- style: 'thin'
107
+ border: {
108
+ top: {
109
+ style: 'thin'
110
+ },
111
+ right: {
112
+ style: 'thin'
113
+ },
114
+ bottom: {
115
+ style: 'thin'
116
+ },
117
+ left: {
118
+ style: 'thin'
119
+ }
120
+ }
121
+ };
122
+ } else {
123
+ sheet[key].s = {
124
+ font: {
125
+ sz: '10'
126
+ },
127
+ alignment: {
128
+ wrapText: true
114
129
  },
115
- left: {
116
- style: 'thin'
130
+ border: {
131
+ top: {
132
+ style: 'thin'
133
+ },
134
+ right: {
135
+ style: 'thin'
136
+ },
137
+ bottom: {
138
+ style: 'thin'
139
+ },
140
+ left: {
141
+ style: 'thin'
142
+ }
117
143
  }
118
- }
119
- };
144
+ };
145
+ }
120
146
  }
121
147
  });
122
148
  // 转换数据
@@ -273,4 +299,4 @@ if (typeof window !== 'undefined' && window.VXETable) {
273
299
  }
274
300
  var _default = VXETablePluginExportXLSX;
275
301
  exports["default"] = _default;
276
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9TdHJpbmciLCJpc05hTiIsIk51bWJlciIsImxlbmd0aCIsImdldEZvb3RlckNlbGxWYWx1ZSIsIiR0YWJsZSIsIm9wdHMiLCJyb3dzIiwiJGdldENvbHVtbkluZGV4IiwidG9CdWZmZXIiLCJ3Ym91dCIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpbmRleCIsImNoYXJDb2RlQXQiLCJleHBvcnRYTFNYIiwicGFyYW1zIiwib3B0aW9ucyIsImNvbHVtbnMiLCJkYXRhcyIsInNoZWV0TmFtZSIsImlzSGVhZGVyIiwiaXNGb290ZXIiLCJvcmlnaW5hbCIsIm1lc3NhZ2UiLCJmb290ZXJGaWx0ZXJNZXRob2QiLCJjb2xIZWFkIiwiZm9vdExpc3QiLCJmb3JFYWNoIiwiaWQiLCJwcm9wZXJ0eSIsImdldFRpdGxlIiwicm93TGlzdCIsIm1hcCIsIml0ZW0iLCJyZXN0IiwiZ2V0VGFibGVEYXRhIiwiZm9vdGVyRGF0YSIsImZvb3RlcnMiLCJmaWx0ZXIiLCJwdXNoIiwiYm9vayIsIlhMU1giLCJ1dGlscyIsImJvb2tfbmV3Iiwic2hlZXQiLCJqc29uX3RvX3NoZWV0IiwiY29uY2F0Iiwic2tpcEhlYWRlciIsIk9iamVjdCIsImtleXMiLCJrZXkiLCJzdGFydHNXaXRoIiwicyIsImZvbnQiLCJzeiIsImFsaWdubWVudCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIndyYXBUZXh0IiwiYm9yZGVyIiwidG9wIiwic3R5bGUiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJib29rX2FwcGVuZF9zaGVldCIsIndyaXRlIiwiYm9va1R5cGUiLCJib29rU1NUIiwidHlwZSIsImJsb2IiLCJCbG9iIiwiZG93bmxvYWRGaWxlIiwibW9kYWwiLCJ0Iiwic3RhdHVzIiwid2luZG93IiwiZmlsZW5hbWUiLCJuYXZpZ2F0b3IiLCJtc1NhdmVCbG9iIiwibGlua0VsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0YXJnZXQiLCJkb3dubG9hZCIsImhyZWYiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwiY29uc29sZSIsImVycm9yIiwicmVwbGFjZURvdWJsZVF1b3RhdGlvbiIsInZhbCIsInJlcGxhY2UiLCJwYXJzZUNzdiIsImNvbnRlbnQiLCJsaXN0Iiwic3BsaXQiLCJmaWVsZHMiLCJyTGlzdCIsInNsaWNlIiwiciIsImNvbEluZGV4IiwiY2hlY2tJbXBvcnREYXRhIiwidGFibGVGaWVsZHMiLCJmaWVsZCIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJpbXBvcnRYTFNYIiwiZmlsZSIsIl9pbXBvcnRSZXNvbHZlIiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJlIiwid29ya2Jvb2siLCJyZWFkIiwicmVzdWx0IiwiY3N2RGF0YSIsInNoZWV0X3RvX2NzdiIsIlNoZWV0cyIsIlNoZWV0MSIsImNyZWF0ZURhdGEiLCJ0aGVuIiwiZGF0YSIsIm1vZGUiLCJpbnNlcnRBdCIsInJlbG9hZERhdGEiLCJ0ZW1wbGF0ZSIsInJlYWRBc0JpbmFyeVN0cmluZyIsImhhbmRsZUltcG9ydEV2ZW50IiwiaGFuZGxlRXhwb3J0RXZlbnQiLCJWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1giLCJpbnN0YWxsIiwieHRhYmxlIiwiaW50ZXJjZXB0b3IiLCJhc3NpZ24iLCJ0eXBlcyIsInhsc3giLCJtaXhpbiIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7QUFVQTtBQUFxQztBQUFBO0FBQUE7QUFYckM7O0FBVUE7O0FBRUE7QUFFQSxJQUFJQSxTQUEwQjtBQUU5QixTQUFTQyxZQUFZLENBQUVDLE1BQW9CLEVBQUVDLFNBQWMsRUFBQTtFQUN6RCxJQUFJQSxTQUFT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LE9BQU8sQ0FBQ3FELElBQUksS0FBSyxNQUFNLEVBQUU7SUFDbEMwQyxVQUFVLENBQUNoRyxNQUFNLENBQUM7SUFDbEIsT0FBTyxLQUFLO0VDbEJaO0FEb0JKO0FBRUEsU0FBU3VILGlCQUFpQixDQUFFdkgsTUFBK0IsRUFBQTtFQUN6RCxJQUFJQSxNQUFNLENBQUNDLE9BQU8sQ0FBQ3FELElBQUksS0FBSyxNQUFNLEVBQUU7SUFDbEN2RCxVQUFVLENBQUNDLE1BQU0sQ0FBQztJQUNsQixPQUFPLEtBQUs7RUNuQlo7QURxQko7QUFFQTtBQ3BCQTtBQUNBO0FEc0JPLElBQU13SCx3QkFBd0IsR0FBRztFQUN0Q0MsT0FBTyxtQkFBRUMsTUFBdUIsRUFBQTtJQUM5QixJQUFRQyxXQUFXLEdBQUtELE1BQU0sQ0FBdEJDLFdBQVc7SUFDbkJuSixTQUFTLEdBQUdrSixNQUFNO0lBQ2xCekYsTUFBTSxDQUFDMkYsTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBQyxDQUFFLENBQUM7SUFDeENILFdBQVcsQ0FBQ0ksS0FBSyxDQUFDO01BQ2hCLGNBQWMsRUFBRVQsaUJBQWlCO01BQ2pDLGNBQWMsRUFBRUM7SUNwQmQsQ0RxQkgsQ0FBQztFQUNKO0FDcEJGLENEcUJDO0FBQUE7QUFFRCxJQUFJLE9BQU8xRCxNQUFNLEtBQUssV0FBVyxJQUFJQSxNQUFNLENBQUNtRSxRQUFRLEVBQUU7RUFDcERuRSxNQUFNLENBQUNtRSxRQUFRLENBQUNDLEdBQUcsQ0FBQ1Qsd0JBQXdCLENBQUM7QUNyQi9DO0FEc0JDLGVBRWNBLHdCQUF3QjtBQUFBIiwiZmlsZSI6ImluZGV4LmNvbW1vbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXHJcbmltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnXHJcbmltcG9ydCB7XHJcbiAgVlhFVGFibGUsXHJcbiAgVGFibGUsXHJcbiAgSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMsXHJcbiAgSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMsXHJcbiAgQ29sdW1uQ29uZmlnLFxyXG4gIEV4cG9ydE9wdG9uc1xyXG59IGZyb20gJ3Z4ZS10YWJsZS9saWIvdnhlLXRhYmxlJ1xyXG4vLyBpbXBvcnQgWExTWCBmcm9tICd4bHN4J1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gtanMtc3R5bGUnXHJcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmxldCBfdnhldGFibGU6IHR5cGVvZiBWWEVUYWJsZVxyXG5cclxuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsIChjb2x1bW46IENvbHVtbkNvbmZpZywgY2VsbFZhbHVlOiBhbnkpIHtcclxuICBpZiAoY2VsbFZhbHVlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIHJldHVybiBYRVV0aWxzLnRvU3RyaW5nKGNlbGxWYWx1ZSlcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZvb3RlckNlbGxWYWx1ZSAoJHRhYmxlOiBUYWJsZSwgb3B0czogRXhwb3J0T3B0b25zLCByb3dzOiBhbnlbXSwgY29sdW1uOiBDb2x1bW5Db25maWcpIHtcclxuICB2YXIgY2VsbFZhbHVlID0gWEVVdGlscy50b1N0cmluZyhyb3dzWyR0YWJsZS4kZ2V0Q29sdW1uSW5kZXgoY29sdW1uKV0pXHJcbiAgcmV0dXJuIGNlbGxWYWx1ZVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0J1ZmZlciAod2JvdXQ6IGFueSkge1xyXG4gIGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIod2JvdXQubGVuZ3RoKVxyXG4gIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxyXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggIT09IHdib3V0Lmxlbmd0aDsgKytpbmRleCkgdmlld1tpbmRleF0gPSB3Ym91dC5jaGFyQ29kZUF0KGluZGV4KSAmIDB4RkZcclxuICByZXR1cm4gYnVmXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4cG9ydFhMU1ggKHBhcmFtczogSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMpIHtcclxuICBjb25zdCB7ICR0YWJsZSwgb3B0aW9ucywgY29sdW1ucywgZGF0YXMgfSA9IHBhcmFtc1xyXG4gIGNvbnN0IHsgc2hlZXROYW1lLCBpc0hlYWRlciwgaXNGb290ZXIsIG9yaWdpbmFsLCBtZXNzYWdlLCBmb290ZXJGaWx0ZXJNZXRob2QgfSA9IG9wdGlvbnNcclxuICBjb25zdCBjb2xIZWFkOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICBjb25zdCBmb290TGlzdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW11cclxuICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcclxuXHJcbiAgaWYgKGlzSGVhZGVyKSB7XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8g5paw5aKe6YOo5YiGXHJcbiAgY29uc3Qgcm93TGlzdCA9IGRhdGFzLm1hcChpdGVtID0+IHtcclxuICAgIGNvbnN0IHJlc3Q6IGFueSA9IHt9XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHJlc3RcclxuICB9KVxyXG5cclxuICBpZiAoaXNGb290ZXIpIHtcclxuICAgIGNvbnN0IHsgZm9vdGVyRGF0YSB9ID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpXHJcbiAgICBjb25zdCBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGFcclxuICAgIGZvb3RlcnMuZm9yRWFjaCgocm93cykgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5pZF0gPSBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRpb25zLCByb3dzLCBjb2x1bW4pXHJcbiAgICAgIH0pXHJcbiAgICAgIGZvb3RMaXN0LnB1c2goaXRlbSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIGNvbnN0IGJvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KClcclxuICBjb25zdCBzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCgoaXNIZWFkZXIgPyBbY29sSGVhZF0gOiBbXSkuY29uY2F0KHJvd0xpc3QpLmNvbmNhdChmb290TGlzdCksIHsgc2tpcEhlYWRlcjogdHJ1ZSB9KVxyXG5cclxuICBPYmplY3Qua2V5cyhzaGVldCkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgLy8g6Z2eIeW8gOWktOeahOWxnuaAp+mDveaYr+WNleWFg+agvFxyXG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnIScpKSB7XHJcbiAgICAgIHNoZWV0W2tleV0ucyA9IHtcclxuICAgICAgICBmb250OiB7XHJcbiAgICAgICAgICBzejogJzEyJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWxpZ25tZW50OiB7XHJcbiAgICAgICAgICBob3Jpem9udGFsOiAnbGVmdCcsXHJcbiAgICAgICAgICB2ZXJ0aWNhbDogJ2NlbnRlcicsXHJcbiAgICAgICAgICB3cmFwVGV4dDogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYm9yZGVyOiB7XHJcbiAgICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgLy8g6L2s5o2i5pWw5o2uXHJcbiAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChib29rLCBzaGVldCwgc2hlZXROYW1lKVxyXG4gIGNvbnN0IHdib3V0ID0gWExTWC53cml0ZShib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KVxyXG4gIC8vIOS/neWtmOWvvOWHulxyXG4gIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKVxyXG4gIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvd25sb2FkRmlsZSAoYmxvYjogQmxvYiwgb3B0aW9uczogRXhwb3J0T3B0b25zKSB7XHJcbiAgaWYgKHdpbmRvdy5CbG9iKSB7XHJcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zXHJcbiAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcclxuICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gXHJcbiAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pXHJcbiAgICAgIGxpbmtFbGVtLmNsaWNrKClcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbiAodmFsOiBzdHJpbmcpIHtcclxuICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJylcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc3YgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJylcclxuICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb25zdCByb3dzOiBhbnlbXSA9IFtdXHJcbiAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSlcclxuICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbilcclxuICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcclxuICAgICAgaWYgKHIpIHtcclxuICAgICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcm93cy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB7IGZpZWxkcywgcm93cyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YSAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGZpZWxkczogc3RyaW5nW10sIHJvd3M6IGFueVtdKSB7XHJcbiAgbGV0IHRhYmxlRmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpXHJcbiAgICB9XHJcbiAgfSlcclxuICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbXBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXNcclxuICBjb25zdCAkdGFibGU6IGFueSA9IHBhcmFtcy4kdGFibGVcclxuICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGVcclxuICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxyXG4gIGZpbGVSZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgICBjb25zdCBjc3ZEYXRhOiBzdHJpbmcgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKVxyXG4gICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpXHJcbiAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxyXG4gICAgICAgIC50aGVuKChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcclxuICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KVxyXG4gICAgfVxyXG4gICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XHJcbiAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cylcclxuICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGltcG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGV4cG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cclxuICovXHJcbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XHJcbiAgaW5zdGFsbCAoeHRhYmxlOiB0eXBlb2YgVlhFVGFibGUpIHtcclxuICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZVxyXG4gICAgX3Z4ZXRhYmxlID0geHRhYmxlXHJcbiAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pXHJcbiAgICBpbnRlcmNlcHRvci5taXhpbih7XHJcbiAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcclxuICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xyXG4gIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1hcclxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnO1xuLy8gaW1wb3J0IFhMU1ggZnJvbSAneGxzeCdcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeC1qcy1zdHlsZSc7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5sZXQgX3Z4ZXRhYmxlO1xuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgY2VsbFZhbHVlKSB7XG4gICAgaWYgKGNlbGxWYWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWEVVdGlscy50b1N0cmluZyhjZWxsVmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZS5sZW5ndGggPCAxMiAmJiAhaXNOYU4oY2VsbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZWxsVmFsdWU7XG59XG5mdW5jdGlvbiBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRzLCByb3dzLCBjb2x1bW4pIHtcbiAgICB2YXIgY2VsbFZhbHVlID0gWEVVdGlscy50b1N0cmluZyhyb3dzWyR0YWJsZS4kZ2V0Q29sdW1uSW5kZXgoY29sdW1uKV0pO1xuICAgIHJldHVybiBjZWxsVmFsdWU7XG59XG5mdW5jdGlvbiB0b0J1ZmZlcih3Ym91dCkge1xuICAgIGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIod2JvdXQubGVuZ3RoKTtcbiAgICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KVxuICAgICAgICB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRjtcbiAgICByZXR1cm4gYnVmO1xufVxuZnVuY3Rpb24gZXhwb3J0WExTWChwYXJhbXMpIHtcbiAgICBjb25zdCB7ICR0YWJsZSwgb3B0aW9ucywgY29sdW1ucywgZGF0YXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCB7IHNoZWV0TmFtZSwgaXNIZWFkZXIsIGlzRm9vdGVyLCBvcmlnaW5hbCwgbWVzc2FnZSwgZm9vdGVyRmlsdGVyTWV0aG9kIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGNvbEhlYWQgPSB7fTtcbiAgICBjb25zdCBmb290TGlzdCA9IFtdO1xuICAgIC8vIGNvbnN0IHJvd0xpc3QgPSBkYXRhc1xuICAgIGlmIChpc0hlYWRlcikge1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIOaWsOWinumDqOWIhlxuICAgIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3QgPSB7fTtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIHJlc3RbY29sdW1uLmlkXSA9IGdldENlbGxMYWJlbChjb2x1bW4sIGl0ZW1bY29sdW1uLmlkXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdDtcbiAgICB9KTtcbiAgICBpZiAoaXNGb290ZXIpIHtcbiAgICAgICAgY29uc3QgeyBmb290ZXJEYXRhIH0gPSAkdGFibGUuZ2V0VGFibGVEYXRhKCk7XG4gICAgICAgIGNvbnN0IGZvb3RlcnMgPSBmb290ZXJGaWx0ZXJNZXRob2QgPyBmb290ZXJEYXRhLmZpbHRlcihmb290ZXJGaWx0ZXJNZXRob2QpIDogZm9vdGVyRGF0YTtcbiAgICAgICAgZm9vdGVycy5mb3JFYWNoKChyb3dzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0ge307XG4gICAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW1bY29sdW1uLmlkXSA9IGdldEZvb3RlckNlbGxWYWx1ZSgkdGFibGUsIG9wdGlvbnMsIHJvd3MsIGNvbHVtbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvb3RMaXN0LnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHNoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KChpc0hlYWRlciA/IFtjb2xIZWFkXSA6IFtdKS5jb25jYXQocm93TGlzdCkuY29uY2F0KGZvb3RMaXN0KSwgeyBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIE9iamVjdC5rZXlzKHNoZWV0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIC8vIOmdniHlvIDlpLTnmoTlsZ7mgKfpg73mmK/ljZXlhYPmoLxcbiAgICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnIScpKSB7XG4gICAgICAgICAgICBzaGVldFtrZXldLnMgPSB7XG4gICAgICAgICAgICAgICAgZm9udDoge1xuICAgICAgICAgICAgICAgICAgICBzejogJzEyJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB3cmFwVGV4dDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9yZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8g6L2s5o2i5pWw5o2uXG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChib29rLCBzaGVldCwgc2hlZXROYW1lKTtcbiAgICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0b0J1ZmZlcih3Ym91dCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xuICAgIC8vIOS/neWtmOWvvOWHulxuICAgIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKTtcbiAgICBpZiAobWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpIHtcbiAgICBpZiAod2luZG93LkJsb2IpIHtcbiAgICAgICAgY29uc3QgeyBmaWxlbmFtZSwgdHlwZSB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKG5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBgJHtmaWxlbmFtZX0uJHt0eXBlfWApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgbGlua0VsZW0udGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICAgICAgICBsaW5rRWxlbS5kb3dubG9hZCA9IGAke2ZpbGVuYW1lfS4ke3R5cGV9YDtcbiAgICAgICAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rRWxlbSk7XG4gICAgICAgICAgICBsaW5rRWxlbS5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5ub3RFeHAnKSk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpIHtcbiAgICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJyk7XG59XG5mdW5jdGlvbiBwYXJzZUNzdihjb2x1bW5zLCBjb250ZW50KSB7XG4gICAgY29uc3QgbGlzdCA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgckxpc3QgPSBsaXN0LnNsaWNlKDEpO1xuICAgICAgICBsaXN0WzBdLnNwbGl0KCcsJykubWFwKHJlcGxhY2VEb3VibGVRdW90YXRpb24pO1xuICAgICAgICByTGlzdC5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7fTtcbiAgICAgICAgICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2NvbEluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJvd3MucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGZpZWxkcywgcm93cyB9O1xufVxuZnVuY3Rpb24gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cykge1xuICAgIGxldCB0YWJsZUZpZWxkcyA9IFtdO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICB0YWJsZUZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0YWJsZUZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpO1xufVxuZnVuY3Rpb24gaW1wb3J0WExTWChwYXJhbXMpIHtcbiAgICBjb25zdCB7IGNvbHVtbnMsIG9wdGlvbnMsIGZpbGUgfSA9IHBhcmFtcztcbiAgICBjb25zdCAkdGFibGUgPSBwYXJhbXMuJHRhYmxlO1xuICAgIGNvbnN0IHsgX2ltcG9ydFJlc29sdmUgfSA9ICR0YWJsZTtcbiAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmtib29rID0gWExTWC5yZWFkKGUudGFyZ2V0LnJlc3VsdCwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3QgY3N2RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtib29rLlNoZWV0cy5TaGVldDEpO1xuICAgICAgICBjb25zdCB7IGZpZWxkcywgcm93cyB9ID0gcGFyc2VDc3YoY29sdW1ucywgY3N2RGF0YSk7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpO1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICR0YWJsZS5yZWxvYWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IFhFVXRpbHMudGVtcGxhdGUoX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5pbXBTdWNjZXNzJyksIFtyb3dzLmxlbmd0aF0pLCBzdGF0dXM6ICdzdWNjZXNzJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX2ltcG9ydFJlc29sdmUpIHtcbiAgICAgICAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cyk7XG4gICAgICAgICAgICAkdGFibGUuX2ltcG9ydFJlc29sdmUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUltcG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgaW1wb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXhwb3J0RXZlbnQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xuICAgICAgICBleHBvcnRYTFNYKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4vKipcbiAqIOWfuuS6jiB2eGUtdGFibGUg6KGo5qC855qE5aKe5by65o+S5Lu277yM5pSv5oyB5a+85Ye6IHhsc3gg5qC85byPXG4gKi9cbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XG4gICAgaW5zdGFsbCh4dGFibGUpIHtcbiAgICAgICAgY29uc3QgeyBpbnRlcmNlcHRvciB9ID0geHRhYmxlO1xuICAgICAgICBfdnhldGFibGUgPSB4dGFibGU7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oeHRhYmxlLnR5cGVzLCB7IHhsc3g6IDEgfSk7XG4gICAgICAgIGludGVyY2VwdG9yLm1peGluKHtcbiAgICAgICAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcbiAgICAgICAgICAgICdldmVudC5leHBvcnQnOiBoYW5kbGVFeHBvcnRFdmVudFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xuICAgIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWDtcbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9TdHJpbmciLCJpc05hTiIsIk51bWJlciIsImxlbmd0aCIsImdldEZvb3RlckNlbGxWYWx1ZSIsIiR0YWJsZSIsIm9wdHMiLCJyb3dzIiwiJGdldENvbHVtbkluZGV4IiwidG9CdWZmZXIiLCJ3Ym91dCIsImJ1ZiIsIkFycmF5QnVmZmVyIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJpbmRleCIsImNoYXJDb2RlQXQiLCJleHBvcnRYTFNYIiwicGFyYW1zIiwib3B0aW9ucyIsImNvbHVtbnMiLCJkYXRhcyIsInNoZWV0TmFtZSIsImlzSGVhZGVyIiwiaXNGb290ZXIiLCJvcmlnaW5hbCIsIm1lc3NhZ2UiLCJmb290ZXJGaWx0ZXJNZXRob2QiLCJjb2xIZWFkIiwiZm9vdExpc3QiLCJmb3JFYWNoIiwiaWQiLCJwcm9wZXJ0eSIsImdldFRpdGxlIiwicm93TGlzdCIsIm1hcCIsIml0ZW0iLCJyZXN0IiwiZ2V0VGFibGVEYXRhIiwiZm9vdGVyRGF0YSIsImZvb3RlcnMiLCJmaWx0ZXIiLCJwdXNoIiwiYm9vayIsIlhMU1giLCJ1dGlscyIsImJvb2tfbmV3Iiwic2hlZXQiLCJqc29uX3RvX3NoZWV0IiwiY29uY2F0Iiwic2tpcEhlYWRlciIsIk9iamVjdCIsImtleXMiLCJrZXkiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsInMiLCJmb250Iiwic3oiLCJib2xkIiwiZmlsbCIsImJnQ29sb3IiLCJyZ2IiLCJib3JkZXIiLCJ0b3AiLCJzdHlsZSIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImFsaWdubWVudCIsIndyYXBUZXh0IiwiYm9va19hcHBlbmRfc2hlZXQiLCJ3cml0ZSIsImJvb2tUeXBlIiwiYm9va1NTVCIsInR5cGUiLCJibG9iIiwiQmxvYiIsImRvd25sb2FkRmlsZSIsIm1vZGFsIiwidCIsInN0YXR1cyIsIndpbmRvdyIsImZpbGVuYW1lIiwibmF2aWdhdG9yIiwibXNTYXZlQmxvYiIsImxpbmtFbGVtIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGFyZ2V0IiwiZG93bmxvYWQiLCJocmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsImNvbnNvbGUiLCJlcnJvciIsInJlcGxhY2VEb3VibGVRdW90YXRpb24iLCJ2YWwiLCJwYXJzZUNzdiIsImNvbnRlbnQiLCJsaXN0Iiwic3BsaXQiLCJmaWVsZHMiLCJyTGlzdCIsInNsaWNlIiwiciIsImNvbEluZGV4IiwiY2hlY2tJbXBvcnREYXRhIiwidGFibGVGaWVsZHMiLCJmaWVsZCIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJpbXBvcnRYTFNYIiwiZmlsZSIsIl9pbXBvcnRSZXNvbHZlIiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJlIiwid29ya2Jvb2siLCJyZWFkIiwicmVzdWx0IiwiY3N2RGF0YSIsInNoZWV0X3RvX2NzdiIsIlNoZWV0cyIsIlNoZWV0MSIsImNyZWF0ZURhdGEiLCJ0aGVuIiwiZGF0YSIsIm1vZGUiLCJpbnNlcnRBdCIsInJlbG9hZERhdGEiLCJ0ZW1wbGF0ZSIsInJlYWRBc0JpbmFyeVN0cmluZyIsImhhbmRsZUltcG9ydEV2ZW50IiwiaGFuZGxlRXhwb3J0RXZlbnQiLCJWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1giLCJpbnN0YWxsIiwieHRhYmxlIiwiaW50ZXJjZXB0b3IiLCJhc3NpZ24iLCJ0eXBlcyIsInhsc3giLCJtaXhpbiIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7QUFVQTtBQUFxQztBQUFBO0FBQUE7QUFYckM7O0FBVUE7O0FBRUE7QUFFQSxJQUFJQSxTQUEwQjtBQUU5QixTQUFTQyxZQUFZLENBQUVDLE1BQW9CLEVBQUVDLFNBQWMsRUFBQTtFQUN6RCxJQUFJ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LENBQUM7TUFDaEIsY0FBYyxFQUFFVCxpQkFBaUI7TUFDakMsY0FBYyxFQUFFQztJQ25CZCxDRG9CSCxDQUFDO0VBQ0o7QUNuQkYsQ0RvQkM7QUFBQTtBQUVELElBQUksT0FBT3pELE1BQU0sS0FBSyxXQUFXLElBQUlBLE1BQU0sQ0FBQ2tFLFFBQVEsRUFBRTtFQUNwRGxFLE1BQU0sQ0FBQ2tFLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDVCx3QkFBd0IsQ0FBQztBQ3BCL0M7QURxQkMsZUFFY0Esd0JBQXdCO0FBQUEiLCJmaWxlIjoiaW5kZXguY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IHtcclxuICBWWEVUYWJsZSxcclxuICBUYWJsZSxcclxuICBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcyxcclxuICBJbnRlcmNlcHRvckltcG9ydFBhcmFtcyxcclxuICBDb2x1bW5Db25maWcsXHJcbiAgRXhwb3J0T3B0b25zXHJcbn0gZnJvbSAndnhlLXRhYmxlL2xpYi92eGUtdGFibGUnXHJcbi8vIGltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeC1qcy1zdHlsZSdcclxuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xyXG5cclxubGV0IF92eGV0YWJsZTogdHlwZW9mIFZYRVRhYmxlXHJcblxyXG5mdW5jdGlvbiBnZXRDZWxsTGFiZWwgKGNvbHVtbjogQ29sdW1uQ29uZmlnLCBjZWxsVmFsdWU6IGFueSkge1xyXG4gIGlmIChjZWxsVmFsdWUpIHtcclxuICAgIHN3aXRjaCAoY29sdW1uLmNlbGxUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgICAgcmV0dXJuIFhFVXRpbHMudG9TdHJpbmcoY2VsbFZhbHVlKVxyXG4gICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgIGlmICghaXNOYU4oY2VsbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKGNlbGxWYWx1ZS5sZW5ndGggPCAxMiAmJiAhaXNOYU4oY2VsbFZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjZWxsVmFsdWVcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlICgkdGFibGU6IFRhYmxlLCBvcHRzOiBFeHBvcnRPcHRvbnMsIHJvd3M6IGFueVtdLCBjb2x1bW46IENvbHVtbkNvbmZpZykge1xyXG4gIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSlcclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvQnVmZmVyICh3Ym91dDogYW55KSB7XHJcbiAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpXHJcbiAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KSB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRlxyXG4gIHJldHVybiBidWZcclxufVxyXG5cclxuZnVuY3Rpb24gZXhwb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zXHJcbiAgY29uc3QgeyBzaGVldE5hbWUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9uc1xyXG4gIGNvbnN0IGNvbEhlYWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gIGNvbnN0IGZvb3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXVxyXG4gIC8vIGNvbnN0IHJvd0xpc3QgPSBkYXRhc1xyXG5cclxuICBpZiAoaXNIZWFkZXIpIHtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyDmlrDlop7pg6jliIZcclxuICBjb25zdCByb3dMaXN0ID0gZGF0YXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgY29uc3QgcmVzdDogYW55ID0ge31cclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIHJlc3RbY29sdW1uLmlkXSA9IGdldENlbGxMYWJlbChjb2x1bW4sIGl0ZW1bY29sdW1uLmlkXSlcclxuICAgIH0pXHJcbiAgICByZXR1cm4gcmVzdFxyXG4gIH0pXHJcblxyXG4gIGlmIChpc0Zvb3Rlcikge1xyXG4gICAgY29uc3QgeyBmb290ZXJEYXRhIH0gPSAkdGFibGUuZ2V0VGFibGVEYXRhKClcclxuICAgIGNvbnN0IGZvb3RlcnMgPSBmb290ZXJGaWx0ZXJNZXRob2QgPyBmb290ZXJEYXRhLmZpbHRlcihmb290ZXJGaWx0ZXJNZXRob2QpIDogZm9vdGVyRGF0YVxyXG4gICAgZm9vdGVycy5mb3JFYWNoKChyb3dzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmlkXSA9IGdldEZvb3RlckNlbGxWYWx1ZSgkdGFibGUsIG9wdGlvbnMsIHJvd3MsIGNvbHVtbilcclxuICAgICAgfSlcclxuICAgICAgZm9vdExpc3QucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICB9XHJcbiAgY29uc3QgYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKVxyXG4gIGNvbnN0IHNoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KChpc0hlYWRlciA/IFtjb2xIZWFkXSA6IFtdKS5jb25jYXQocm93TGlzdCkuY29uY2F0KGZvb3RMaXN0KSwgeyBza2lwSGVhZGVyOiB0cnVlIH0pXHJcblxyXG4gIE9iamVjdC5rZXlzKHNoZWV0KS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAvLyDpnZ4h5byA5aS055qE5bGe5oCn6YO95piv5Y2V5YWD5qC8XHJcbiAgICBpZiAoIWtleS5zdGFydHNXaXRoKCchJykpIHtcclxuICAgICAgaWYgKGtleS5yZXBsYWNlKC9bXlxcZF0vZywgJycpID09PSAnMScpIHtcclxuICAgICAgICBzaGVldFtrZXldLnMgPSB7XHJcbiAgICAgICAgICBmb250OiB7XHJcbiAgICAgICAgICAgIHN6OiAnMTAnLFxyXG4gICAgICAgICAgICBib2xkOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgICBiZ0NvbG9yOiB7IHJnYjogJ0YyRjJGMicgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgICAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNoZWV0W2tleV0ucyA9IHtcclxuICAgICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgICAgc3o6ICcxMCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhbGlnbm1lbnQ6IHtcclxuICAgICAgICAgICAgd3JhcFRleHQ6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib3JkZXI6IHtcclxuICAgICAgICAgICAgdG9wOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIC8vIOi9rOaNouaVsOaNrlxyXG4gIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQoYm9vaywgc2hlZXQsIHNoZWV0TmFtZSlcclxuICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeScgfSlcclxuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RvQnVmZmVyKHdib3V0KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgfSlcclxuICAvLyDkv53lrZjlr7zlh7pcclxuICBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucylcclxuICBpZiAobWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5leHBTdWNjZXNzJyksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkb3dubG9hZEZpbGUgKGJsb2I6IEJsb2IsIG9wdGlvbnM6IEV4cG9ydE9wdG9ucykge1xyXG4gIGlmICh3aW5kb3cuQmxvYikge1xyXG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdHlwZSB9ID0gb3B0aW9uc1xyXG4gICAgaWYgKG5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XHJcbiAgICAgIG5hdmlnYXRvci5tc1NhdmVCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS4ke3R5cGV9YClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBsaW5rRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxyXG4gICAgICBsaW5rRWxlbS50YXJnZXQgPSAnX2JsYW5rJ1xyXG4gICAgICBsaW5rRWxlbS5kb3dubG9hZCA9IGAke2ZpbGVuYW1lfS4ke3R5cGV9YFxyXG4gICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmtFbGVtKVxyXG4gICAgICBsaW5rRWxlbS5jbGljaygpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pXHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5ub3RFeHAnKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24gKHZhbDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3N2IChjb2x1bW5zOiBDb2x1bW5Db25maWdbXSwgY29udGVudDogc3RyaW5nKSB7XHJcbiAgY29uc3QgbGlzdCA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXHJcbiAgY29uc3QgZmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29uc3Qgcm93czogYW55W10gPSBbXVxyXG4gIGlmIChsaXN0Lmxlbmd0aCkge1xyXG4gICAgY29uc3Qgckxpc3QgPSBsaXN0LnNsaWNlKDEpXHJcbiAgICBsaXN0WzBdLnNwbGl0KCcsJykubWFwKHJlcGxhY2VEb3VibGVRdW90YXRpb24pXHJcbiAgICByTGlzdC5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAgIGlmIChyKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgICAgci5zcGxpdCgnLCcpLmZvckVhY2goKHZhbCwgY29sSW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZHNbY29sSW5kZXhdKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJvd3MucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4geyBmaWVsZHMsIHJvd3MgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0ltcG9ydERhdGEgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBmaWVsZHM6IHN0cmluZ1tdLCByb3dzOiBhbnlbXSkge1xyXG4gIGxldCB0YWJsZUZpZWxkczogc3RyaW5nW10gPSBbXVxyXG4gIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICBsZXQgZmllbGQgPSBjb2x1bW4ucHJvcGVydHlcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICB0YWJsZUZpZWxkcy5wdXNoKGZpZWxkKVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgcmV0dXJuIHRhYmxlRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKSlcclxufVxyXG5cclxuZnVuY3Rpb24gaW1wb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgY29sdW1ucywgb3B0aW9ucywgZmlsZSB9ID0gcGFyYW1zXHJcbiAgY29uc3QgJHRhYmxlOiBhbnkgPSBwYXJhbXMuJHRhYmxlXHJcbiAgY29uc3QgeyBfaW1wb3J0UmVzb2x2ZSB9ID0gJHRhYmxlXHJcbiAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcclxuICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHdvcmtib29rID0gWExTWC5yZWFkKGUudGFyZ2V0LnJlc3VsdCwgeyB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gICAgY29uc3QgY3N2RGF0YTogc3RyaW5nID0gWExTWC51dGlscy5zaGVldF90b19jc3Yod29ya2Jvb2suU2hlZXRzLlNoZWV0MSlcclxuICAgIGNvbnN0IHsgZmllbGRzLCByb3dzIH0gPSBwYXJzZUNzdihjb2x1bW5zLCBjc3ZEYXRhKVxyXG4gICAgY29uc3Qgc3RhdHVzID0gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cylcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgJHRhYmxlLmNyZWF0ZURhdGEocm93cylcclxuICAgICAgICAudGhlbigoZGF0YTogYW55W10pID0+IHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09ICdhcHBlbmQnKSB7XHJcbiAgICAgICAgICAgICR0YWJsZS5pbnNlcnRBdChkYXRhLCAtMSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICR0YWJsZS5yZWxvYWREYXRhKGRhdGEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IFhFVXRpbHMudGVtcGxhdGUoX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5pbXBTdWNjZXNzJyksIFtyb3dzLmxlbmd0aF0pLCBzdGF0dXM6ICdzdWNjZXNzJyB9KVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcclxuICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSlcclxuICAgIH1cclxuICAgIGlmIChfaW1wb3J0UmVzb2x2ZSkge1xyXG4gICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpXHJcbiAgICAgICR0YWJsZS5faW1wb3J0UmVzb2x2ZSA9IG51bGxcclxuICAgIH1cclxuICB9XHJcbiAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSlcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlSW1wb3J0RXZlbnQgKHBhcmFtczogSW50ZXJjZXB0b3JJbXBvcnRQYXJhbXMpIHtcclxuICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XHJcbiAgICBpbXBvcnRYTFNYKHBhcmFtcylcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlRXhwb3J0RXZlbnQgKHBhcmFtczogSW50ZXJjZXB0b3JFeHBvcnRQYXJhbXMpIHtcclxuICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XHJcbiAgICBleHBvcnRYTFNYKHBhcmFtcylcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOWfuuS6jiB2eGUtdGFibGUg6KGo5qC855qE5aKe5by65o+S5Lu277yM5pSv5oyB5a+85Ye6IHhsc3gg5qC85byPXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYID0ge1xyXG4gIGluc3RhbGwgKHh0YWJsZTogdHlwZW9mIFZYRVRhYmxlKSB7XHJcbiAgICBjb25zdCB7IGludGVyY2VwdG9yIH0gPSB4dGFibGVcclxuICAgIF92eGV0YWJsZSA9IHh0YWJsZVxyXG4gICAgT2JqZWN0LmFzc2lnbih4dGFibGUudHlwZXMsIHsgeGxzeDogMSB9KVxyXG4gICAgaW50ZXJjZXB0b3IubWl4aW4oe1xyXG4gICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXHJcbiAgICAgICdldmVudC5leHBvcnQnOiBoYW5kbGVFeHBvcnRFdmVudFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcclxuICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYXHJcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgWEVVdGlscyBmcm9tICd4ZS11dGlscy9tZXRob2RzL3hlLXV0aWxzJztcbi8vIGltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gtanMtc3R5bGUnO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xubGV0IF92eGV0YWJsZTtcbmZ1bmN0aW9uIGdldENlbGxMYWJlbChjb2x1bW4sIGNlbGxWYWx1ZSkge1xuICAgIGlmIChjZWxsVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFhFVXRpbHMudG9TdHJpbmcoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0cywgcm93cywgY29sdW1uKSB7XG4gICAgdmFyIGNlbGxWYWx1ZSA9IFhFVXRpbHMudG9TdHJpbmcocm93c1skdGFibGUuJGdldENvbHVtbkluZGV4KGNvbHVtbildKTtcbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gdG9CdWZmZXIod2JvdXQpIHtcbiAgICBsZXQgYnVmID0gbmV3IEFycmF5QnVmZmVyKHdib3V0Lmxlbmd0aCk7XG4gICAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggIT09IHdib3V0Lmxlbmd0aDsgKytpbmRleClcbiAgICAgICAgdmlld1tpbmRleF0gPSB3Ym91dC5jaGFyQ29kZUF0KGluZGV4KSAmIDB4RkY7XG4gICAgcmV0dXJuIGJ1Zjtcbn1cbmZ1bmN0aW9uIGV4cG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyAkdGFibGUsIG9wdGlvbnMsIGNvbHVtbnMsIGRhdGFzIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgeyBzaGVldE5hbWUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjb2xIZWFkID0ge307XG4gICAgY29uc3QgZm9vdExpc3QgPSBbXTtcbiAgICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcbiAgICBpZiAoaXNIZWFkZXIpIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyDmlrDlop7pg6jliIZcbiAgICBjb25zdCByb3dMaXN0ID0gZGF0YXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCByZXN0ID0ge307XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfSk7XG4gICAgaWYgKGlzRm9vdGVyKSB7XG4gICAgICAgIGNvbnN0IHsgZm9vdGVyRGF0YSB9ID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpO1xuICAgICAgICBjb25zdCBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGE7XG4gICAgICAgIGZvb3RlcnMuZm9yRWFjaCgocm93cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHt9O1xuICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtW2NvbHVtbi5pZF0gPSBnZXRGb290ZXJDZWxsVmFsdWUoJHRhYmxlLCBvcHRpb25zLCByb3dzLCBjb2x1bW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb290TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICBjb25zdCBzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCgoaXNIZWFkZXIgPyBbY29sSGVhZF0gOiBbXSkuY29uY2F0KHJvd0xpc3QpLmNvbmNhdChmb290TGlzdCksIHsgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcbiAgICBPYmplY3Qua2V5cyhzaGVldCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAvLyDpnZ4h5byA5aS055qE5bGe5oCn6YO95piv5Y2V5YWD5qC8XG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoJyEnKSkge1xuICAgICAgICAgICAgaWYgKGtleS5yZXBsYWNlKC9bXlxcZF0vZywgJycpID09PSAnMScpIHtcbiAgICAgICAgICAgICAgICBzaGVldFtrZXldLnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN6OiAnMTAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZ0NvbG9yOiB7IHJnYjogJ0YyRjJGMicgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaGVldFtrZXldLnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN6OiAnMTAnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFRleHQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8g6L2s5o2i5pWw5o2uXG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChib29rLCBzaGVldCwgc2hlZXROYW1lKTtcbiAgICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0b0J1ZmZlcih3Ym91dCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xuICAgIC8vIOS/neWtmOWvvOWHulxuICAgIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKTtcbiAgICBpZiAobWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpIHtcbiAgICBpZiAod2luZG93LkJsb2IpIHtcbiAgICAgICAgY29uc3QgeyBmaWxlbmFtZSwgdHlwZSB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKG5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBgJHtmaWxlbmFtZX0uJHt0eXBlfWApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgbGlua0VsZW0udGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICAgICAgICBsaW5rRWxlbS5kb3dubG9hZCA9IGAke2ZpbGVuYW1lfS4ke3R5cGV9YDtcbiAgICAgICAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rRWxlbSk7XG4gICAgICAgICAgICBsaW5rRWxlbS5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoX3Z4ZXRhYmxlLnQoJ3Z4ZS5lcnJvci5ub3RFeHAnKSk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbih2YWwpIHtcbiAgICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJyk7XG59XG5mdW5jdGlvbiBwYXJzZUNzdihjb2x1bW5zLCBjb250ZW50KSB7XG4gICAgY29uc3QgbGlzdCA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgckxpc3QgPSBsaXN0LnNsaWNlKDEpO1xuICAgICAgICBsaXN0WzBdLnNwbGl0KCcsJykubWFwKHJlcGxhY2VEb3VibGVRdW90YXRpb24pO1xuICAgICAgICByTGlzdC5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7fTtcbiAgICAgICAgICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2NvbEluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJvd3MucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGZpZWxkcywgcm93cyB9O1xufVxuZnVuY3Rpb24gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cykge1xuICAgIGxldCB0YWJsZUZpZWxkcyA9IFtdO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICB0YWJsZUZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0YWJsZUZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkcy5pbmNsdWRlcyhmaWVsZCkpO1xufVxuZnVuY3Rpb24gaW1wb3J0WExTWChwYXJhbXMpIHtcbiAgICBjb25zdCB7IGNvbHVtbnMsIG9wdGlvbnMsIGZpbGUgfSA9IHBhcmFtcztcbiAgICBjb25zdCAkdGFibGUgPSBwYXJhbXMuJHRhYmxlO1xuICAgIGNvbnN0IHsgX2ltcG9ydFJlc29sdmUgfSA9ICR0YWJsZTtcbiAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmtib29rID0gWExTWC5yZWFkKGUudGFyZ2V0LnJlc3VsdCwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3QgY3N2RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtib29rLlNoZWV0cy5TaGVldDEpO1xuICAgICAgICBjb25zdCB7IGZpZWxkcywgcm93cyB9ID0gcGFyc2VDc3YoY29sdW1ucywgY3N2RGF0YSk7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpO1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICR0YWJsZS5yZWxvYWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IFhFVXRpbHMudGVtcGxhdGUoX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5pbXBTdWNjZXNzJyksIFtyb3dzLmxlbmd0aF0pLCBzdGF0dXM6ICdzdWNjZXNzJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX2ltcG9ydFJlc29sdmUpIHtcbiAgICAgICAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cyk7XG4gICAgICAgICAgICAkdGFibGUuX2ltcG9ydFJlc29sdmUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUltcG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgaW1wb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXhwb3J0RXZlbnQocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcy5vcHRpb25zLnR5cGUgPT09ICd4bHN4Jykge1xuICAgICAgICBleHBvcnRYTFNYKHBhcmFtcyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4vKipcbiAqIOWfuuS6jiB2eGUtdGFibGUg6KGo5qC855qE5aKe5by65o+S5Lu277yM5pSv5oyB5a+85Ye6IHhsc3gg5qC85byPXG4gKi9cbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XG4gICAgaW5zdGFsbCh4dGFibGUpIHtcbiAgICAgICAgY29uc3QgeyBpbnRlcmNlcHRvciB9ID0geHRhYmxlO1xuICAgICAgICBfdnhldGFibGUgPSB4dGFibGU7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oeHRhYmxlLnR5cGVzLCB7IHhsc3g6IDEgfSk7XG4gICAgICAgIGludGVyY2VwdG9yLm1peGluKHtcbiAgICAgICAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcbiAgICAgICAgICAgICdldmVudC5leHBvcnQnOiBoYW5kbGVFeHBvcnRFdmVudFxuICAgICAgICB9KTtcbiAgICB9XG59O1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xuICAgIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKTtcbn1cbmV4cG9ydCBkZWZhdWx0IFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWDtcbiJdfQ==
package/dist/index.js CHANGED
@@ -106,30 +106,56 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
106
106
  Object.keys(sheet).forEach(function (key) {
107
107
  // 非!开头的属性都是单元格
108
108
  if (!key.startsWith('!')) {
109
- sheet[key].s = {
110
- font: {
111
- sz: '12'
112
- },
113
- alignment: {
114
- horizontal: 'left',
115
- vertical: 'center',
116
- wrapText: true
117
- },
118
- border: {
119
- top: {
120
- style: 'thin'
109
+ if (key.replace(/[^\d]/g, '') === '1') {
110
+ sheet[key].s = {
111
+ font: {
112
+ sz: '10',
113
+ bold: true
121
114
  },
122
- right: {
123
- style: 'thin'
115
+ fill: {
116
+ bgColor: {
117
+ rgb: 'F2F2F2'
118
+ }
124
119
  },
125
- bottom: {
126
- style: 'thin'
120
+ border: {
121
+ top: {
122
+ style: 'thin'
123
+ },
124
+ right: {
125
+ style: 'thin'
126
+ },
127
+ bottom: {
128
+ style: 'thin'
129
+ },
130
+ left: {
131
+ style: 'thin'
132
+ }
133
+ }
134
+ };
135
+ } else {
136
+ sheet[key].s = {
137
+ font: {
138
+ sz: '10'
139
+ },
140
+ alignment: {
141
+ wrapText: true
127
142
  },
128
- left: {
129
- style: 'thin'
143
+ border: {
144
+ top: {
145
+ style: 'thin'
146
+ },
147
+ right: {
148
+ style: 'thin'
149
+ },
150
+ bottom: {
151
+ style: 'thin'
152
+ },
153
+ left: {
154
+ style: 'thin'
155
+ }
130
156
  }
131
- }
132
- };
157
+ };
158
+ }
133
159
  }
134
160
  });
135
161
  // 转换数据
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx-js-style"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx-js-style")):(t((t={exports:{}}).exports,e.XEUtils,e.xlsxJsStyle),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,d,y){"use strict";var b;function a(e){var t,n;return"function"!=typeof WeakMap?null:(t=new WeakMap,n=new WeakMap,(a=function(e){return e?n:t})(e))}function t(e){var o=e.$table,t=e.options,r=e.columns,e=e.datas,n=t.sheetName,i=t.isHeader,a=t.isFooter,s=t.original,l=t.message,u=t.footerFilterMethod,c={},f=[],e=(i&&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=(a&&(a=o.getTableData().footerData,(u?a.filter(u):a).forEach(function(t){var n={};r.forEach(function(e){n[e.id]=d.default.toString(t[o.$getColumnIndex(e)])}),f.push(n)})),y.utils.book_new()),p=y.utils.json_to_sheet((i?[c]:[]).concat(e).concat(f),{skipHeader:!0}),a=(Object.keys(p).forEach(function(e){e.startsWith("!")||(p[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"}}})}),y.utils.book_append_sheet(u,p,n),y.write(u,{bookType:"xlsx",bookSST:!1,type:"binary"})),i=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"}),e=t;window.Blob?(n=e.filename,e=e.type,navigator.msSaveBlob?navigator.msSaveBlob(i,"".concat(n,".").concat(e)):((u=document.createElement("a")).target="_blank",u.download="".concat(n,".").concat(e),u.href=URL.createObjectURL(i),document.body.appendChild(u),u.click(),document.body.removeChild(u))):console.error(b.t("vxe.error.notExp")),!1!==l&&b.modal.message({message:b.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function n(e){var a=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=y.read(e.target.result,{type:"binary"}),e=y.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(i=e.slice(1),e[0].split(",").map(c),i.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}),i=e.rows,e=(n=e.fields,r=[],a.forEach(function(e){e=e.property;e&&r.push(e)}),r.every(function(e){return n.includes(e)}));e?(l.createData(i).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&b.modal.message({message:d.default.template(b.t("vxe.table.impSuccess"),[i.length]),status:"success"})):!1!==s.message&&b.modal.message({message:b.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function o(e){if("xlsx"===e.options.type)return n(e),!1}function r(e){if("xlsx"===e.options.type)return t(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,d=(i=d)&&i.__esModule?i:{default:i},y=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};t=a(t);if(t&&t.has(e))return t.get(e);var n,o={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(n in e){var i;"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&((i=r?Object.getOwnPropertyDescriptor(e,n):null)&&(i.get||i.set)?Object.defineProperty(o,n,i):o[n]=e[n])}o.default=e,t&&t.set(e,o);return o}(y);var i={install:function(e){var t=e.interceptor;b=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":o,"event.export":r})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
1
+ function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx-js-style"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx-js-style")):(t((t={exports:{}}).exports,e.XEUtils,e.xlsxJsStyle),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,d,y){"use strict";var b;function s(e){var t,o;return"function"!=typeof WeakMap?null:(t=new WeakMap,o=new WeakMap,(s=function(e){return e?o:t})(e))}function t(e){var n=e.$table,t=e.options,r=e.columns,e=e.datas,o=t.sheetName,i=t.isHeader,s=t.isFooter,a=t.original,l=t.message,u=t.footerFilterMethod,f={},c=[],e=(i&&r.forEach(function(e){f[e.id]=d.default.toString(a?e.property:e.getTitle())}),e.map(function(t){var o={};return r.forEach(function(e){o[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])}),o})),u=(s&&(s=n.getTableData().footerData,(u?s.filter(u):s).forEach(function(t){var o={};r.forEach(function(e){o[e.id]=d.default.toString(t[n.$getColumnIndex(e)])}),c.push(o)})),y.utils.book_new()),p=y.utils.json_to_sheet((i?[f]:[]).concat(e).concat(c),{skipHeader:!0}),s=(Object.keys(p).forEach(function(e){e.startsWith("!")||("1"===e.replace(/[^\d]/g,"")?p[e].s={font:{sz:"10",bold:!0},fill:{bgColor:{rgb:"F2F2F2"}},border:{top:{style:"thin"},right:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"}}}:p[e].s={font:{sz:"10"},alignment:{wrapText:!0},border:{top:{style:"thin"},right:{style:"thin"},bottom:{style:"thin"},left:{style:"thin"}}})}),y.utils.book_append_sheet(u,p,o),y.write(u,{bookType:"xlsx",bookSST:!1,type:"binary"})),i=new Blob([function(e){for(var t=new ArrayBuffer(e.length),o=new Uint8Array(t),n=0;n!==e.length;++n)o[n]=255&e.charCodeAt(n);return t}(s)],{type:"application/octet-stream"}),e=t;window.Blob?(o=e.filename,e=e.type,navigator.msSaveBlob?navigator.msSaveBlob(i,"".concat(o,".").concat(e)):((u=document.createElement("a")).target="_blank",u.download="".concat(o,".").concat(e),u.href=URL.createObjectURL(i),document.body.appendChild(u),u.click(),document.body.removeChild(u))):console.error(b.t("vxe.error.notExp")),!1!==l&&b.modal.message({message:b.t("vxe.table.expSuccess"),status:"success"})}function f(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var s=e.columns,a=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var n,t,o,r,e=y.read(e.target.result,{type:"binary"}),e=y.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),n=[],t=[],e.length&&(i=e.slice(1),e[0].split(",").map(f),i.forEach(function(e){var o;e&&(o={},e.split(",").forEach(function(e,t){n[t]&&(o[n[t]]=f(e))}),t.push(o))})),{fields:n,rows:t}),i=e.rows,e=(o=e.fields,r=[],s.forEach(function(e){e=e.property;e&&r.push(e)}),r.every(function(e){return o.includes(e)}));e?(l.createData(i).then(function(e){"append"===a.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==a.message&&b.modal.message({message:d.default.template(b.t("vxe.table.impSuccess"),[i.length]),status:"success"})):!1!==a.message&&b.modal.message({message:b.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function n(e){if("xlsx"===e.options.type)return o(e),!1}function r(e){if("xlsx"===e.options.type)return t(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,d=(i=d)&&i.__esModule?i:{default:i},y=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};t=s(t);if(t&&t.has(e))return t.get(e);var o,n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(o in e){var i;"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&((i=r?Object.getOwnPropertyDescriptor(e,o):null)&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o])}n.default=e,t&&t.set(e,n);return n}(y);var i={install:function(e){var t=e.interceptor;b=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":n,"event.export":r})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
package/index.ts CHANGED
@@ -85,20 +85,36 @@ function exportXLSX (params: InterceptorExportParams) {
85
85
  Object.keys(sheet).forEach(key => {
86
86
  // 非!开头的属性都是单元格
87
87
  if (!key.startsWith('!')) {
88
- sheet[key].s = {
89
- font: {
90
- sz: '12'
91
- },
92
- alignment: {
93
- horizontal: 'left',
94
- vertical: 'center',
95
- wrapText: true
96
- },
97
- border: {
98
- top: { style: 'thin' },
99
- right: { style: 'thin' },
100
- bottom: { style: 'thin' },
101
- left: { style: 'thin' }
88
+ if (key.replace(/[^\d]/g, '') === '1') {
89
+ sheet[key].s = {
90
+ font: {
91
+ sz: '10',
92
+ bold: true
93
+ },
94
+ fill: {
95
+ bgColor: { rgb: 'F2F2F2' }
96
+ },
97
+ border: {
98
+ top: { style: 'thin' },
99
+ right: { style: 'thin' },
100
+ bottom: { style: 'thin' },
101
+ left: { style: 'thin' }
102
+ }
103
+ }
104
+ } else {
105
+ sheet[key].s = {
106
+ font: {
107
+ sz: '10'
108
+ },
109
+ alignment: {
110
+ wrapText: true
111
+ },
112
+ border: {
113
+ top: { style: 'thin' },
114
+ right: { style: 'thin' },
115
+ bottom: { style: 'thin' },
116
+ left: { style: 'thin' }
117
+ }
102
118
  }
103
119
  }
104
120
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table-plugin-export-xlsx-xhx",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "基于 vxe-table 表格的增强插件,支持导出 xlsx 格式",
5
5
  "scripts": {
6
6
  "lib": "gulp build"