nsc-react-component 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,40 +1,6 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
2
 
3
- import "antd/es/table/style/css";
4
- import _Table from "antd/es/table";
5
- import "antd/es/popover/style/css";
6
- import _Popover from "antd/es/popover";
7
- import "antd/es/tooltip/style/css";
8
- import _Tooltip from "antd/es/tooltip";
9
- import "antd/es/checkbox/style/css";
10
- import _Checkbox from "antd/es/checkbox";
11
- var _excluded = ["listeners"];
12
-
13
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
14
-
15
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
-
17
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
-
19
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20
-
21
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
-
23
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
24
-
25
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
-
27
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
28
-
29
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
30
-
31
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
32
-
33
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
34
-
35
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
36
-
37
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ var _excluded = ["resizeColumn"];
38
4
 
39
5
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
40
6
 
@@ -70,19 +36,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
70
36
  * @LastEditors: rxzhu
71
37
  * @LastEditTime: 2021-03-23 10:30:42
72
38
  */
73
- import { AppstoreOutlined } from "@ant-design/icons";
74
- import { isEmptyObj } from "@bj-nsc/functions";
75
- import Store, { PageStore } from "@bj-nsc/msn";
76
- import { utils } from "@bj-nsc/msn/lib/utils";
77
39
  import * as React from "react";
78
- import { DndProvider } from "react-dnd";
79
- import BodyRow, { DndContextType, IBodyRowProps } from "../common/BodyRow";
80
- import treeUtils from "../treeUtils";
81
- import styles from "./index.less";
82
- var BodyRowComponent = BodyRow.BodyRowComponent,
83
- HTML5Backend = BodyRow.HTML5Backend;
84
- import withZhLocale from "../common/withZhLocale";
85
- import { NoData } from "..";
40
+ import { DndContextType, IBodyRowProps } from "../common/BodyRow";
41
+ import NormalTable from "./NormalTabl";
42
+ import ResizeTable from "./ResizeColumn";
86
43
  export { DndContextType, IBodyRowProps };
87
44
 
88
45
  var NSCTable = /*#__PURE__*/function (_React$Component) {
@@ -90,442 +47,24 @@ var NSCTable = /*#__PURE__*/function (_React$Component) {
90
47
 
91
48
  var _super = _createSuper(NSCTable);
92
49
 
93
- function NSCTable(props) {
94
- var _this2;
95
-
50
+ function NSCTable() {
96
51
  _classCallCheck(this, NSCTable);
97
52
 
98
- _this2 = _super.call(this, props);
99
-
100
- _defineProperty(_assertThisInitialized(_this2), "store", {});
101
-
102
- _defineProperty(_assertThisInitialized(_this2), "thIconRef", /*#__PURE__*/React.createRef());
103
-
104
- _defineProperty(_assertThisInitialized(_this2), "state", {
105
- dataSource: [],
106
- columns: [],
107
- loading: false,
108
- pagination: {},
109
- activeIndex: -1,
110
- //搜索文本
111
- searchText: null,
112
- fieldOption: null,
113
- searchColor: null
114
- });
115
-
116
- _defineProperty(_assertThisInitialized(_this2), "listeners", {
117
- onBeforeLoad: null,
118
- load: null
119
- });
120
-
121
- _defineProperty(_assertThisInitialized(_this2), "moveRow", function (dragIndex, hoverIndex, drag, target) {
122
- var _this = _assertThisInitialized(_this2);
123
-
124
- var dragNode = drag.record;
125
- var targetNode = target.record;
126
- dragNode.moveArray(dragNode, targetNode);
127
- var ids = dragNode.parentNode.getChildNodeIds();
128
- var params = {
129
- id: dragNode.id,
130
- parentId: dragNode.attribute.parentId,
131
- ids: ids
132
- };
133
-
134
- if (_this2.props.moveRow) {
135
- _this2.props.moveRow(params);
136
- } else {
137
- _this2.store.reload();
138
- } // request("http://demo.javasvn.com/api/admin/menus/drag", {
139
- // method: "PATCH",
140
- // data: params,
141
- // callback: function (data) {
142
- // this.store.reload();
143
- // },
144
- // });
145
-
146
- });
147
-
148
- if (props.store instanceof Store) {
149
- _this2.store = props.store;
150
- } else {
151
- var _ref = props.store || {},
152
- _ref$listeners = _ref.listeners,
153
- listenersProps = _ref$listeners === void 0 ? {} : _ref$listeners,
154
- restStore = _objectWithoutProperties(_ref, _excluded);
155
-
156
- var storeProps = _objectSpread(_objectSpread({
157
- model: "model",
158
- component: _assertThisInitialized(_this2),
159
- listeners: {
160
- onBeforeLoad: function onBeforeLoad(store, options) {
161
- _this2.setState({
162
- loading: true
163
- });
164
-
165
- utils.callback(listenersProps.onBeforeLoad, _assertThisInitialized(_this2), [store, options]);
166
- },
167
- dataChanged: function dataChanged(data, modelData, store) {
168
- var paging = !(_this2.props.pagination === false);
169
-
170
- if (paging && !_this2.props.dataSource) {
171
- _this2.setState({
172
- dataSource: modelData,
173
- pagination: store.getPagination(),
174
- loading: false,
175
- activeIndex: -1
176
- });
177
- } else {
178
- _this2.setState({
179
- dataSource: modelData,
180
- loading: false
181
- });
182
- }
183
-
184
- utils.callback(listenersProps.dataChanged, _assertThisInitialized(_this2), [data, modelData, store, paging]);
185
- },
186
- load: function load(data, modelData, store) {
187
- utils.callback(listenersProps.load, _assertThisInitialized(_this2), [data, modelData, store]);
188
- },
189
- onErrorLoad: function onErrorLoad(err, response) {
190
- _this2.setState({
191
- loading: false
192
- });
193
-
194
- utils.callback(listenersProps.onErrorLoad, _assertThisInitialized(_this2), [err, response]);
195
- }
196
- },
197
- data: restStore.data ? restStore.data : props.dataSource ? props.dataSource : null
198
- }, restStore), {}, {
199
- autoLoad: restStore.autoLoad === false ? false : true
200
- });
201
-
202
- _this2.store = new PageStore(Object.assign({}, storeProps, {
203
- pagination: _this2.props.pagination
204
- }));
205
- }
206
-
207
- return _this2;
53
+ return _super.apply(this, arguments);
208
54
  }
209
55
 
210
56
  _createClass(NSCTable, [{
211
- key: "componentDidMount",
212
- value: function componentDidMount() {
213
- this.setState({
214
- columns: _toConsumableArray(this.props.columns)
215
- });
216
- var store = this.props.store;
217
-
218
- if (store && store.data) {
219
- this.store.setData(store.data);
220
- }
221
- }
222
- }, {
223
- key: "componentDidUpdate",
224
- value: function componentDidUpdate(prevProps) {
225
- if (this.props.columns !== prevProps.columns) {
226
- this.setState({
227
- columns: this.props.columns
228
- });
229
- }
230
- }
231
- /**
232
- * 清除选中颜色
233
- */
234
-
235
- }, {
236
- key: "clearSelectColor",
237
- value: function clearSelectColor() {
238
- this.setState({
239
- activeIndex: -1
240
- });
241
- return this;
242
- }
243
- }, {
244
- key: "getPaginationByStore",
245
- value: function getPaginationByStore() {
246
- return this.store.getPagination();
247
- }
248
- }, {
249
- key: "onChange",
250
- value: function onChange(pagination, filters, sorter, extra) {
251
- var _this3 = this;
252
-
253
- var _this$props = this.props,
254
- autoOnChange = _this$props.autoOnChange,
255
- autoSort = _this$props.autoSort,
256
- autoPagination = _this$props.autoPagination,
257
- onChange = _this$props.onChange;
258
-
259
- if (autoOnChange === false) {
260
- onChange && onChange(pagination, filters, sorter, extra);
261
- return;
262
- }
263
-
264
- var handlePagination = function handlePagination() {
265
- var params = {};
266
- var paging = _this3.getPaginationByStore() || {};
267
-
268
- if (!isEmptyObj(pagination)) {
269
- var _p;
270
-
271
- var p = (_p = {}, _defineProperty(_p, paging.currentKey || "current", pagination.current), _defineProperty(_p, paging.pageSizeKey || "size", pagination.pageSize), _p);
272
- Object.assign(params, p);
273
- }
274
-
275
- if (autoSort === true && !isEmptyObj(sorter)) {
276
- if (sorter.order == "ascend") {
277
- params.ascs = sorter.column.sortField || sorter.column.field || sorter.field;
278
- params.descs = "";
279
- }
280
-
281
- if (sorter.order == "descend") {
282
- params.descs = sorter.column.sortField || sorter.column.field || sorter.field;
283
- params.ascs = "";
284
- }
285
- }
286
-
287
- _this3.store.reload({
288
- params: params
289
- });
290
- };
291
-
292
- var onChangeFn = this.props.onChange; // 用户传了onChange保留用户自主处理表格变化的权力
293
-
294
- if (onChangeFn) {
295
- utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);
296
- }
297
-
298
- if (this.props.autoPagination) {
299
- handlePagination();
300
- }
301
- }
302
- }, {
303
- key: "getStore",
304
- value: function getStore() {
305
- return this.store;
306
- }
307
- /**
308
- * 获取数据模型对象
309
- */
310
-
311
- }, {
312
- key: "getModel",
313
- value: function getModel() {
314
- return this.store.getModel();
315
- }
316
- /**
317
- * 菜单搜索过滤显示
318
- * @param {String} val
319
- */
320
-
321
- }, {
322
- key: "handleSearch",
323
- value: function handleSearch(val, fieldOption, searchColor) {
324
- this.setState({
325
- searchText: val,
326
- fieldOption: fieldOption,
327
- searchColor: searchColor
328
- });
329
- }
330
- /**
331
- * 模块列表移动排序
332
- */
333
-
334
- }, {
335
- key: "filterColumn",
336
- value: function filterColumn(checkedValue) {
337
- var filterColumns = this.props.columns.map(function (col) {
338
- var newCol = _objectSpread({}, col);
339
-
340
- if (checkedValue.includes(col.dataIndex)) {
341
- newCol.initShow = true;
342
- } else {
343
- newCol.initShow = false;
344
- }
345
-
346
- return newCol;
347
- });
348
- this.setState({
349
- columns: filterColumns
350
- });
351
- }
352
- }, {
353
- key: "getColumns",
354
- value: function getColumns() {
355
- var _this4 = this;
356
-
357
- var columns = this.state.columns;
358
- var _this$props2 = this.props,
359
- disableColumns = _this$props2.disableColumns,
360
- colLists = _this$props2.columns;
361
- var defaultShowCols = columns.filter(function (cols) {
362
- return cols.initShow !== false;
363
- });
364
- var defaultHideCols = columns.filter(function (cols) {
365
- return cols.initShow === false;
366
- });
367
- var content = /*#__PURE__*/React.createElement(_Checkbox.Group, {
368
- onChange: this.filterColumn.bind(this),
369
- options: colLists.map(function (col) {
370
- return {
371
- label: col.title,
372
- value: col.dataIndex
373
- };
374
- }),
375
- defaultValue: defaultShowCols.map(function (col) {
376
- return col.dataIndex;
377
- })
378
- });
379
- var cols = defaultShowCols.map(function (col) {
380
- if (col.ellipsis && !col.render) {
381
- col.ellipsis = {
382
- showTitle: false
383
- };
384
-
385
- col.render = function (text) {
386
- return /*#__PURE__*/React.createElement(_Tooltip, {
387
- placement: "topLeft",
388
- title: text
389
- }, text);
390
- };
391
- }
392
-
393
- return col;
394
- });
395
- var IconAction = {
396
- title: /*#__PURE__*/React.createElement("div", {
397
- className: styles["th-icon"],
398
- ref: this.thIconRef
399
- }, /*#__PURE__*/React.createElement(_Popover, {
400
- title: "\u9009\u62E9\u663E\u793A\u7684\u5217",
401
- content: content,
402
- placement: "bottomRight",
403
- trigger: "click",
404
- overlayStyle: {
405
- minWidth: 410,
406
- maxWidth: 450
407
- },
408
- getPopupContainer: function getPopupContainer() {
409
- return _this4.thIconRef.current;
410
- }
411
- }, /*#__PURE__*/React.createElement(AppstoreOutlined, {
412
- size: 24,
413
- className: styles["app-store-icon"]
414
- }))),
415
- dataIndex: "icon-menu",
416
- key: "icon-menu",
417
- width: 50,
418
- align: "center"
419
- };
420
-
421
- if (this.props.filterColumn) {
422
- cols.push(IconAction);
423
- }
424
-
425
- return cols;
426
- }
427
- }, {
428
57
  key: "render",
429
58
  value: function render() {
430
- var _this5 = this;
431
-
432
- var _this = this,
433
- _this$state = this.state,
434
- loading = _this$state.loading,
435
- dataSource = _this$state.dataSource,
436
- _this$state$paginatio = _this$state.pagination,
437
- pagination = _this$state$paginatio === void 0 ? {} : _this$state$paginatio,
438
- searchText = _this$state.searchText,
439
- fieldOption = _this$state.fieldOption,
440
- searchColor = _this$state.searchColor,
441
- props = utils.omit(this.props, ["store", "onChange", "columns"], {
442
- rowKey: "id",
443
- clickChangeColor: false
444
- });
445
-
446
- if (props.pagination !== false) {
447
- props.pagination = _objectSpread(_objectSpread({
448
- position: ["bottomRight"],
449
- showSizeChanger: true,
450
- showQuickJumper: true
451
- }, props.pagination), pagination);
452
-
453
- if (props.showTotal == true) {
454
- props.pagination.showTotal = function (total, _ref2) {
455
- var _ref3 = _slicedToArray(_ref2, 2),
456
- from = _ref3[0],
457
- to = _ref3[1];
458
-
459
- // return "显示 " + from + " - " + to + "条,共 " + total + " 条";
460
- return "共 " + total + " 条";
461
- };
462
- }
463
- }
464
-
465
- props.onChange = function (pagination, filters, sorter, extra) {
466
- _this.onChange(pagination, filters, sorter, extra);
467
- };
468
-
469
- if (props.clickChangeColor) {
470
- var onRowFn = props.onRow;
471
-
472
- props.onRow = function (record, index) {
473
- var custom = onRowFn ? onRowFn(record, index) : {};
474
- var onClickFn = custom.onClick;
475
-
476
- custom.onClick = function (event) {
477
- _this.setState({
478
- activeIndex: index //获取点击行的索引
479
-
480
- });
481
-
482
- utils.callback(onClickFn, _this, [event]);
483
- };
484
-
485
- return custom;
486
- };
487
-
488
- props.rowClassName = function (record, index) {
489
- return index === _this.state.activeIndex ? "".concat(styles.clickRowStyle) : "";
490
- };
491
- }
492
-
493
- var newDataSource = [];
59
+ var _this$props = this.props,
60
+ resizeColumn = _this$props.resizeColumn,
61
+ params = _objectWithoutProperties(_this$props, _excluded);
494
62
 
495
- if (searchText) {
496
- var data = treeUtils.getSearchMenuDatas(this, searchText, fieldOption, searchColor);
497
- newDataSource = data.treeDatas;
498
- props.expandedRowKeys = data.openKeys;
63
+ if (resizeColumn) {
64
+ return /*#__PURE__*/React.createElement(ResizeTable, params);
499
65
  } else {
500
- newDataSource = dataSource;
66
+ return /*#__PURE__*/React.createElement(NormalTable, params);
501
67
  }
502
-
503
- props.store = props.store || {};
504
- props.store.autoLoad = props.store.autoLoad === false ? false : true;
505
- var dragable = _this.props.dragable;
506
- var dragableProps = dragable === true ? {
507
- components: BodyRowComponent,
508
- onRow: function onRow(record, index) {
509
- return {
510
- index: index,
511
- record: record,
512
- moveRow: _this5.moveRow
513
- };
514
- }
515
- } : {};
516
- var DefaultTable = /*#__PURE__*/React.createElement(_Table, _extends({
517
- childrenColumnName: "childNodes",
518
- dataSource: newDataSource,
519
- columns: this.getColumns(),
520
- loading: loading,
521
- className: styles["nsc-table"],
522
- locale: {
523
- emptyText: /*#__PURE__*/React.createElement(NoData, null)
524
- }
525
- }, props, dragableProps));
526
- return dragable === true ? /*#__PURE__*/React.createElement(DndProvider, {
527
- backend: HTML5Backend
528
- }, DefaultTable) : DefaultTable;
529
68
  }
530
69
  }]);
531
70
 
@@ -540,8 +79,9 @@ _defineProperty(NSCTable, "defaultProps", {
540
79
  dragUrl: "",
541
80
  autoPagination: true,
542
81
  autoSort: true,
543
- autoOnChange: true
82
+ autoOnChange: true,
83
+ resizeColumn: false
544
84
  });
545
85
 
546
- export default withZhLocale(NSCTable);
547
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJOb0RhdGEiLCJOU0NUYWJsZSIsInByb3BzIiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJfdGhpcyIsImRyYWdOb2RlIiwicmVjb3JkIiwidGFyZ2V0Tm9kZSIsIm1vdmVBcnJheSIsImlkcyIsInBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVJZHMiLCJwYXJhbXMiLCJpZCIsInBhcmVudElkIiwiYXR0cmlidXRlIiwibW92ZVJvdyIsInN0b3JlIiwicmVsb2FkIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwic2V0U3RhdGUiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwiZGF0YSIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXREYXRhIiwicHJldlByb3BzIiwiZmlsdGVycyIsInNvcnRlciIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsIm9uQ2hhbmdlIiwiaGFuZGxlUGFnaW5hdGlvbiIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwicCIsImN1cnJlbnRLZXkiLCJjdXJyZW50IiwicGFnZVNpemVLZXkiLCJwYWdlU2l6ZSIsIm9yZGVyIiwiYXNjcyIsImNvbHVtbiIsInNvcnRGaWVsZCIsImZpZWxkIiwiZGVzY3MiLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJmaWx0ZXJDb2x1bW5zIiwibWFwIiwiY29sIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInN0YXRlIiwiZGlzYWJsZUNvbHVtbnMiLCJjb2xMaXN0cyIsImRlZmF1bHRTaG93Q29scyIsImZpbHRlciIsImNvbHMiLCJkZWZhdWx0SGlkZUNvbHMiLCJjb250ZW50IiwiZmlsdGVyQ29sdW1uIiwiYmluZCIsImxhYmVsIiwidGl0bGUiLCJ2YWx1ZSIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsIkljb25BY3Rpb24iLCJ0aEljb25SZWYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwia2V5Iiwid2lkdGgiLCJhbGlnbiIsInB1c2giLCJvbWl0Iiwicm93S2V5IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJpbmRleCIsImN1c3RvbSIsIm9uQ2xpY2tGbiIsIm9uQ2xpY2siLCJldmVudCIsInJvd0NsYXNzTmFtZSIsImNsaWNrUm93U3R5bGUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwiRGVmYXVsdFRhYmxlIiwiZ2V0Q29sdW1ucyIsImVtcHR5VGV4dCIsIkNvbXBvbmVudCIsImRyYWdVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsZ0JBQVQsUUFBaUMsbUJBQWpDO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixtQkFBM0I7QUFDQSxPQUFPQyxLQUFQLElBQWdCQyxTQUFoQixRQUE2QyxhQUE3QztBQUNBLFNBQVNDLEtBQVQsUUFBc0IsdUJBQXRCO0FBVUEsT0FBTyxLQUFLQyxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBU0MsV0FBVCxRQUE0QixXQUE1QjtBQUNBLE9BQU9DLE9BQVAsSUFBa0JDLGNBQWxCLEVBQWtDQyxhQUFsQyxRQUF1RCxtQkFBdkQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGNBQXRCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLElBQVFDLGdCQUFSLEdBQTJDTCxPQUEzQyxDQUFRSyxnQkFBUjtBQUFBLElBQTBCQyxZQUExQixHQUEyQ04sT0FBM0MsQ0FBMEJNLFlBQTFCO0FBQ0EsT0FBT0MsWUFBUCxNQUF5Qix3QkFBekI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLElBQXZCO0FBZ0NBLFNBQVNQLGNBQVQsRUFBeUJDLGFBQXpCOztJQUNNTyxROzs7OztBQWdDSixvQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsS0FBTjs7QUFEaUIsNkRBcEJYLEVBb0JXOztBQUFBLDhFQW5CUFosS0FBSyxDQUFDYSxTQUFOLEVBbUJPOztBQUFBLDZEQWpCWDtBQUNOQyxNQUFBQSxVQUFVLEVBQUUsRUFETjtBQUVOQyxNQUFBQSxPQUFPLEVBQUUsRUFGSDtBQUdOQyxNQUFBQSxPQUFPLEVBQUUsS0FISDtBQUlOQyxNQUFBQSxVQUFVLEVBQUUsRUFKTjtB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ekJ2RyxZQUFBQSxNQUFNLEVBQU5BLE1BRnlCO0FBR3pCVSxZQUFBQSxPQUFPLEVBQUUsTUFBSSxDQUFDQTtBQUhXLFdBQXBCO0FBQUE7QUFGVCxPQURKLEdBU0ksRUFWTjtBQVdBLFVBQU00RyxZQUFZLGdCQUNoQjtBQUNFLFFBQUEsa0JBQWtCLEVBQUMsWUFEckI7QUFFRSxRQUFBLFVBQVUsRUFBRVIsYUFGZDtBQUdFLFFBQUEsT0FBTyxFQUFFLEtBQUtTLFVBQUwsRUFIWDtBQUlFLFFBQUEsT0FBTyxFQUFFckksT0FKWDtBQUtFLFFBQUEsU0FBUyxFQUFFVixNQUFNLENBQUMsV0FBRCxDQUxuQjtBQU1FLFFBQUEsTUFBTSxFQUFFO0FBQUVnSixVQUFBQSxTQUFTLGVBQUUsb0JBQUMsTUFBRDtBQUFiO0FBTlYsU0FPTTFJLEtBUE4sRUFRTXNJLGFBUk4sRUFERjtBQWFBLGFBQU9ELFFBQVEsS0FBSyxJQUFiLGdCQUNMLG9CQUFDLFdBQUQ7QUFBYSxRQUFBLE9BQU8sRUFBRXpJO0FBQXRCLFNBQXFDNEksWUFBckMsQ0FESyxHQUdMQSxZQUhGO0FBS0Q7Ozs7RUE1WW9CcEosS0FBSyxDQUFDdUosUzs7Z0JBQXZCNUksUSxrQkFDa0I7QUFDcEJzRixFQUFBQSxjQUFjLEVBQUUsRUFESTtBQUVwQmdELEVBQUFBLFFBQVEsRUFBRSxLQUZVO0FBR3BCbEIsRUFBQUEsU0FBUyxFQUFFLElBSFM7QUFJcEJ2QixFQUFBQSxZQUFZLEVBQUUsSUFKTTtBQUtwQmdELEVBQUFBLE9BQU8sRUFBRSxFQUxXO0FBTXBCbEYsRUFBQUEsY0FBYyxFQUFFLElBTkk7QUFPcEJELEVBQUFBLFFBQVEsRUFBRSxJQVBVO0FBUXBCRCxFQUFBQSxZQUFZLEVBQUU7QUFSTSxDOztBQThZeEIsZUFBZTNELFlBQVksQ0FBQ0UsUUFBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7IEFwcHN0b3JlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIENoZWNrYm94LFxyXG4gIENoZWNrYm94T3B0aW9uVHlwZSxcclxuICBQb3BvdmVyLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERuZFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LWRuZFwiO1xyXG5pbXBvcnQgQm9keVJvdywgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9IGZyb20gXCIuLi9jb21tb24vQm9keVJvd1wiO1xyXG5pbXBvcnQgdHJlZVV0aWxzIGZyb20gXCIuLi90cmVlVXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IE5vRGF0YSB9IGZyb20gXCIuLlwiO1xyXG5cclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkaXNhYmxlQ29sdW1ucz86IHN0cmluZ1tdOyAvLyDkuI3lj6/pmpDol4/lv4XpobvmmL7npLrnmoTliJdcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHM+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZGlzYWJsZUNvbHVtbnM6IFtdLFxyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuXHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgIC8v5pCc57Si5paH5pysXHJcbiAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICB9O1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBQYWdlU3RvcmUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc3RvcmVQcm9wcywge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbjogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7IGF1dG9PbkNoYW5nZSwgYXV0b1NvcnQsIGF1dG9QYWdpbmF0aW9uLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvbiA9ICgpID0+IHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIHtcclxuICAgICAgICBzaXplPzogc3RyaW5nO1xyXG4gICAgICAgIHBhZ2VTaXplPzogc3RyaW5nO1xyXG4gICAgICAgIGFzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgZGVzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgW3Byb3BOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcblxyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhdXRvU29ydCA9PT0gdHJ1ZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgaWYgKHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiKSB7XHJcbiAgICAgICAgICBwYXJhbXMuYXNjcyA9XHJcbiAgICAgICAgICAgIHNvcnRlci5jb2x1bW4uc29ydEZpZWxkIHx8IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmZpZWxkO1xyXG4gICAgICAgICAgcGFyYW1zLmRlc2NzID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNvcnRlci5vcmRlciA9PSBcImRlc2NlbmRcIikge1xyXG4gICAgICAgICAgcGFyYW1zLmRlc2NzID1cclxuICAgICAgICAgICAgc29ydGVyLmNvbHVtbi5zb3J0RmllbGQgfHwgc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuZmllbGQ7XHJcbiAgICAgICAgICBwYXJhbXMuYXNjcyA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbkNoYW5nZUZuID0gdGhpcy5wcm9wcy5vbkNoYW5nZTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b1BhZ2luYXRpb24pIHtcclxuICAgICAgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gcmVxdWVzdChcImh0dHA6Ly9kZW1vLmphdmFzdm4uY29tL2FwaS9hZG1pbi9tZW51cy9kcmFnXCIsIHtcclxuICAgIC8vICAgbWV0aG9kOiBcIlBBVENIXCIsXHJcbiAgICAvLyAgIGRhdGE6IHBhcmFtcyxcclxuICAgIC8vICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAvLyAgICAgdGhpcy5zdG9yZS5yZWxvYWQoKTtcclxuICAgIC8vICAgfSxcclxuICAgIC8vIH0pO1xyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1ucygpIHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZGlzYWJsZUNvbHVtbnMsIGNvbHVtbnM6IGNvbExpc3RzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIaWRlQ29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ID09PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+XHJcbiAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGUpXHJcbiAgICAgICAgKX1cclxuICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8VG9vbHRpcCBwbGFjZW1lbnQ9XCJ0b3BMZWZ0XCIgdGl0bGU9e3RleHR9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L1Rvb2x0aXA+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IEljb25BY3Rpb246IENvbHVtblR5cGU8e30+ID0ge1xyXG4gICAgICB0aXRsZTogKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJ0aC1pY29uXCJdfSByZWY9e3RoaXMudGhJY29uUmVmfT5cclxuICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWQgc2l6ZT17MjR9IGNsYXNzTmFtZT17c3R5bGVzW1wiYXBwLXN0b3JlLWljb25cIl19IC8+XHJcbiAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICksXHJcbiAgICAgIGRhdGFJbmRleDogXCJpY29uLW1lbnVcIixcclxuICAgICAga2V5OiBcImljb24tbWVudVwiLFxyXG4gICAgICB3aWR0aDogNTAsXHJcbiAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbHRlckNvbHVtbikge1xyXG4gICAgICBjb2xzLnB1c2goSWNvbkFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KHRoaXMucHJvcHMsIFtcInN0b3JlXCIsIFwib25DaGFuZ2VcIiwgXCJjb2x1bW5zXCJdLCB7XHJcbiAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm9wcy5vbkNoYW5nZSA9IGZ1bmN0aW9uIChwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICAgIF90aGlzLm9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5jbGlja0NoYW5nZUNvbG9yKSB7XHJcbiAgICAgIGNvbnN0IG9uUm93Rm4gPSBwcm9wcy5vblJvdztcclxuICAgICAgcHJvcHMub25Sb3cgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBjdXN0b20gPSBvblJvd0ZuID8gb25Sb3dGbihyZWNvcmQsIGluZGV4KSA6IHt9O1xyXG4gICAgICAgIGNvbnN0IG9uQ2xpY2tGbiA9IGN1c3RvbS5vbkNsaWNrO1xyXG4gICAgICAgIGN1c3RvbS5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBpbmRleCwgLy/ojrflj5bngrnlh7vooYznmoTntKLlvJVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXRpbHMuY2FsbGJhY2sob25DbGlja0ZuLCBfdGhpcywgW2V2ZW50XSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tO1xyXG4gICAgICB9O1xyXG4gICAgICBwcm9wcy5yb3dDbGFzc05hbWUgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gX3RoaXMuc3RhdGUuYWN0aXZlSW5kZXhcclxuICAgICAgICAgID8gYCR7c3R5bGVzLmNsaWNrUm93U3R5bGV9YFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8VGFibGVcclxuICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJuc2MtdGFibGVcIl19XHJcbiAgICAgICAgbG9jYWxlPXt7IGVtcHR5VGV4dDogPE5vRGF0YSAvPiB9fVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICB7Li4uZHJhZ2FibGVQcm9wc31cclxuICAgICAgLz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB3aXRoWmhMb2NhbGUoTlNDVGFibGUpO1xyXG4iXX0=
86
+ export default NSCTable;
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsIk5vcm1hbFRhYmxlIiwiUmVzaXplVGFibGUiLCJOU0NUYWJsZSIsInByb3BzIiwicmVzaXplQ29sdW1uIiwicGFyYW1zIiwiQ29tcG9uZW50IiwiZGlzYWJsZUNvbHVtbnMiLCJkcmFnYWJsZSIsInNob3dUb3RhbCIsImZpbHRlckNvbHVtbiIsImRyYWdVcmwiLCJhdXRvUGFnaW5hdGlvbiIsImF1dG9Tb3J0IiwiYXV0b09uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0EsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBa0JDLGNBQWxCLEVBQWtDQyxhQUFsQyxRQUF1RCxtQkFBdkQ7QUFDQSxPQUFPQyxXQUFQLE1BQXdCLGNBQXhCO0FBQ0EsT0FBT0MsV0FBUCxNQUF3QixnQkFBeEI7QUFnQ0EsU0FBU0gsY0FBVCxFQUF5QkMsYUFBekI7O0lBQ01HLFE7Ozs7Ozs7Ozs7Ozs7V0FhSixrQkFBUztBQUNQLHdCQUFvQyxLQUFLQyxLQUF6QztBQUFBLFVBQVFDLFlBQVIsZUFBUUEsWUFBUjtBQUFBLFVBQXlCQyxNQUF6Qjs7QUFDQSxVQUFJRCxZQUFKLEVBQWtCO0FBQ2hCLDRCQUFPLG9CQUFDLFdBQUQsRUFBaUJDLE1BQWpCLENBQVA7QUFDRCxPQUZELE1BRU87QUFDTCw0QkFBTyxvQkFBQyxXQUFELEVBQWlCQSxNQUFqQixDQUFQO0FBQ0Q7QUFDRjs7OztFQXBCb0JSLEtBQUssQ0FBQ1MsUzs7Z0JBQXZCSixRLGtCQUNrQjtBQUNwQkssRUFBQUEsY0FBYyxFQUFFLEVBREk7QUFFcEJDLEVBQUFBLFFBQVEsRUFBRSxLQUZVO0FBR3BCQyxFQUFBQSxTQUFTLEVBQUUsSUFIUztBQUlwQkMsRUFBQUEsWUFBWSxFQUFFLElBSk07QUFLcEJDLEVBQUFBLE9BQU8sRUFBRSxFQUxXO0FBTXBCQyxFQUFBQSxjQUFjLEVBQUUsSUFOSTtBQU9wQkMsRUFBQUEsUUFBUSxFQUFFLElBUFU7QUFRcEJDLEVBQUFBLFlBQVksRUFBRSxJQVJNO0FBU3BCVixFQUFBQSxZQUFZLEVBQUU7QUFUTSxDOztBQXNCeEIsZUFBZUYsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcblxyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IFRhYmxlUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCBOb3JtYWxUYWJsZSBmcm9tIFwiLi9Ob3JtYWxUYWJsXCI7XHJcbmltcG9ydCBSZXNpemVUYWJsZSBmcm9tIFwiLi9SZXNpemVDb2x1bW5cIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkaXNhYmxlQ29sdW1ucz86IHN0cmluZ1tdOyAvLyDkuI3lj6/pmpDol4/lv4XpobvmmL7npLrnmoTliJdcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuOyAvL+WIl+aYr+WQpuaLluWKqO+8jOiHquWumuS5ieWuveW6plxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcz4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkaXNhYmxlQ29sdW1uczogW10sXHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4sIC4uLnBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChyZXNpemVDb2x1bW4pIHtcclxuICAgICAgcmV0dXJuIDxSZXNpemVUYWJsZSB7Li4ucGFyYW1zfSAvPjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiA8Tm9ybWFsVGFibGUgey4uLnBhcmFtc30gLz47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOU0NUYWJsZTtcclxuIl19
@@ -0,0 +1,23 @@
1
+ //可拖动样式
2
+ /* 内容过多以...显示 */
3
+ .ellipsisText {
4
+ overflow: hidden;
5
+ text-overflow: ellipsis;
6
+ white-space: nowrap;
7
+ display: block;
8
+ }
9
+ /* 显示拖拽样式 */
10
+ .react-resizable {
11
+ position: relative;
12
+ background-clip: padding-box;
13
+ }
14
+ .react-resizable-handle {
15
+ position: absolute;
16
+ width: 10px;
17
+ height: 100%;
18
+ bottom: 0;
19
+ right: 0;
20
+ cursor: col-resize;
21
+ z-index: 6;
22
+ // border-right: 1px solid rgba(0, 0, 0, 0.06);
23
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -68,6 +68,7 @@
68
68
  "echarts": "^5.2.2",
69
69
  "omit.js": "^2.0.2",
70
70
  "react-dnd": "^14.0.2",
71
- "react-dnd-html5-backend": "^14.0.0"
71
+ "react-dnd-html5-backend": "^14.0.0",
72
+ "react-resizable": "^3.0.4"
72
73
  }
73
74
  }