imm-element-ui 0.5.9 → 0.6.1

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.
@@ -308,7 +308,7 @@ export const convertGrid = (thisArg, gridList, fiterPreloads) => {
308
308
  fiterPreloads = [...fiterPreloads, ...item.fiterPreloads];
309
309
  }
310
310
  if (item.type == 'grid') {
311
- let { gridOptions: { columnDefs, ...restGridOptions }, subTableSource, subDataKey, title, selectDataCb, fk, mainField, uniqueField, addDataCb, showDelete = true, scrollHeight, dragSort } = item;
311
+ let { gridOptions: { columnDefs, ...restGridOptions }, subTableSource, subDataKey, title, selectDataCb, fk, mainField, uniqueField, addDataCb, showDelete = true, scrollHeight, dragSort, selectionMode } = item;
312
312
  grid = { subTableSource, subDataKey, title, showDelete, ...grid };
313
313
  let gridOptions = {
314
314
  ...restGridOptions,
@@ -324,6 +324,9 @@ export const convertGrid = (thisArg, gridList, fiterPreloads) => {
324
324
  gridOptions.rowDragManaged = true;
325
325
  gridOptions.dragSort = dragSort;
326
326
  }
327
+ if (selectionMode) {
328
+ gridOptions.selectionMode = selectionMode;
329
+ }
327
330
  convertCol(columnDefs, thisArg.authLevel, gridOptions.modelName, dragSort);
328
331
  gridOptions.columnDefs = columnDefs;
329
332
  if (subTableSource === 'select') {
@@ -376,4 +379,4 @@ export const convertForm = (thisArg, groupArr, sourceData) => {
376
379
  mainField: sourceData.model.mainFields,
377
380
  };
378
381
  };
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN6QyxHQUFHO0tBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXO0tBQzlCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXO0tBQy9DLFdBQVcsRUFBRSxDQUFDLE9BQU87S0FDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVE7S0FDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJ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SUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2xELENBQUM7SUFDRixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxXQUFXLEdBQUc7UUFDckIsTUFBTSxFQUFFO1lBQ1A7Z0JBQ0MsVUFBVSxFQUFFLHlCQUF5QjtnQkFDckMsS0FBSyxFQUFFLFFBQVE7YUFDZjtTQUNEO1FBQ0QsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN2QixTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVO0tBQ3RDLENBQUM7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgcGlwZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcclxuaW1wb3J0IHsgZm9ybVR5cGVUb1Byb3BzIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcblxyXG5leHBvcnQgbGV0IHRvUGFzY2FsQ2FzZSA9IChzdHI6IHN0cmluZykgPT5cclxuXHRzdHJcclxuXHRcdC5yZXBsYWNlKC9fL2csICcgJykgLy8g5LiL5YiS57q/5pu/5o2i5Li656m65qC8XHJcblx0XHQucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJykgLy8g5bCP6am85bOw5YiG5Ymy5Li65Y2V6K+NXHJcblx0XHQudG9Mb3dlckNhc2UoKSAvLyDovazkuLrlsI/lhplcclxuXHRcdC5zcGxpdCgvXFxzKy8pIC8vIOaMieepuuagvOWIhuWJslxyXG5cdFx0Lm1hcCgod29yZCkgPT4gKHdvcmQgPyB3b3JkWzBdLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpIDogJycpKVxyXG5cdFx0LmpvaW4oJycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVW5pcXVlSWQgPSAoKSA9PiB7XHJcblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7IC8vIOaXtumXtOaIs+i9rDM26L+b5Yi257yp55+t6ZW/5bqmXHJcblx0Y29uc3QgcmFuZG9tID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDQpOyAvLyDpmo/mnLrpg6jliIZcclxuXHRyZXR1cm4gYCR7dGltZXN0YW1wfSR7cmFuZG9tfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2lyY3VsYXJJdGVyYXRvciA9IChhcnJheTogYW55W10pID0+IHtcclxuXHRsZXQgaW5kZXggPSAtMTtcclxuXHRyZXR1cm4ge1xyXG5cdFx0bmV4dDogKCkgPT4ge1xyXG5cdFx0XHRpbmRleCsrO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbaW5kZXggJSBhcnJheS5sZW5ndGhdO1xyXG5cdFx0fSxcclxuXHRcdHByZXY6ICgpID0+IHtcclxuXHRcdFx0aW5kZXgtLTtcclxuXHRcdFx0cmV0dXJuIGFycmF5WygoaW5kZXggJSBhcnJheS5sZW5ndGgpICsgYXJyYXkubGVuZ3RoKSAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VGdW5jdGlvbnMgPSAob2JqOiBhbnksIF90aGlzOiBhbnkpOiBhbnkgPT4ge1xyXG5cdGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG5cdFx0Ly8g5bCd6K+V5qOA5rWL5piv5ZCm5piv5Ye95pWw5a2X56ym5LiyXHJcblx0XHRpZiAoKG9iai5pbmNsdWRlcygnPT4nKSB8fCBvYmouaW5jbHVkZXMoJ1Byb21pc2UnKSkgJiYgIWlzSlNPTlBhcnNhYmxlKG9iaikpIHtcclxuXHRcdFx0Y29uc3QgbyA9IGNvbXBpbGVUc1RvSnMob2JqKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ+ino+aekOWHveaVsDonLCBvYmopO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGNvbnN0IHNhbmRib3ggPSB7XHJcblx0XHRcdFx0XHRPYnNlcnZhYmxlLFxyXG5cdFx0XHRcdFx0b2YsXHJcblx0XHRcdFx0XHRzaGFyZVJlcGxheSxcclxuXHRcdFx0XHRcdHBpcGUsXHJcblx0XHRcdFx0XHRQcm9taXNlLCAvLyDmt7vliqAgUHJvbWlzZSDliLAgc2FuZGJveFxyXG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsIC8vIOagh+iusOaUr+aMgeW8guatpVxyXG5cdFx0XHRcdFx0cmVzb2x2ZTogUHJvbWlzZS5yZXNvbHZlLmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHRyZWplY3Q6IFByb21pc2UucmVqZWN0LmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0Ly8g5aSE55CGIFByb21pc2Ug5p6E6YCg5Ye95pWw55qE5oOF5Ya1XHJcblx0XHRcdFx0aWYgKG9iai5pbmNsdWRlcygnbmV3IFByb21pc2UnKSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdFx0J3NhbmRib3gnLFxyXG5cdFx0XHRcdFx0XHRgXHJcblx0XHRcdFx0XHRcdFx0d2l0aChzYW5kYm94KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJHtvfTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGAsXHJcblx0XHRcdFx0XHQpLmJpbmQoX3RoaXMpKHNhbmRib3gpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8g5aSE55CG5pmu6YCa5Ye95pWw5ZKM566t5aS05Ye95pWwXHJcblx0XHRcdFx0cmV0dXJuIG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdCdzYW5kYm94JyxcclxuXHRcdFx0XHRcdGBcclxuXHRcdFx0XHRcdFx0d2l0aChzYW5kYm94KSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuICgke299KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YCxcclxuXHRcdFx0XHQpLmJpbmQoX3RoaXMpKHNhbmRib3gpO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcign5Ye95pWw6Kej5p6Q5aSx6LSlOicsIGUsICdcXG7ljp/lp4vlrZfnrKbkuLI6Jywgb2JqKTtcclxuXHRcdFx0XHRyZXR1cm4gb2JqO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAoaXNKU09OUGFyc2FibGUob2JqKSkge1xyXG5cdFx0XHRsZXQganNvbiA9IEpTT04ucGFyc2Uob2JqKTtcclxuXHRcdFx0cmV0dXJuIHBhcnNlRnVuY3Rpb25zKGpzb24sIF90aGlzKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBvYmo7XHJcblx0fVxyXG5cdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcclxuXHRcdHJldHVybiBvYmoubWFwKChpdGVtOiBhbnkpID0+IHBhcnNlRnVuY3Rpb25zKGl0ZW0sIF90aGlzKSk7XHJcblx0fVxyXG5cdGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcclxuXHRcdGNvbnN0IHJlc3VsdDogYW55ID0ge307XHJcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuXHRcdFx0aWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBwYXJzZUZ1bmN0aW9ucyhvYmpba2V5XSwgX3RoaXMpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIG9iajtcclxufTtcclxuXHJcbi8vIOi+heWKqeWHveaVsO+8muajgOafpeaYr+WQpuWMheWQqyBQcm9taXNlIOaehOmAoOWHveaVsFxyXG5jb25zdCBjb250YWluc1Byb21pc2VDb25zdHJ1Y3RvciA9IChzdHI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG5cdHJldHVybiAvbmV3XFxzK1Byb21pc2UvLnRlc3Qoc3RyKTtcclxufTtcclxuXHJcbi8vIOS/ruaUuSBjb21waWxlVHNUb0pzIOWHveaVsOS7peabtOWlveWcsOWkhOeQhiBQcm9taXNlXHJcbmV4cG9ydCBjb25zdCBjb21waWxlVHNUb0pzID0gKHRzQ29kZTogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuXHQvLyDlpoLmnpzmmK8gUHJvbWlzZSDmnoTpgKDlh73mlbDvvIzkuI3pnIDopoHpop3lpJblpITnkIZcclxuXHRpZiAoY29udGFpbnNQcm9taXNlQ29uc3RydWN0b3IodHNDb2RlKSkge1xyXG5cdFx0cmV0dXJuIHRzQ29kZTtcclxuXHR9XHJcblxyXG5cdGNvbnN0IHJlc3VsdCA9IHRzLnRyYW5zcGlsZU1vZHVsZSh0c0NvZGUsIHtcclxuXHRcdGNvbXBpbGVyT3B0aW9uczoge1xyXG5cdFx0XHRtb2R1bGU6IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMsXHJcblx0XHRcdHRhcmdldDogdHMuU2NyaXB0VGFyZ2V0LkVTMjAxNSxcclxuXHRcdFx0Ly8g5ZCv55So5byC5q2l5Ye95pWw5pSv5oyBXHJcblx0XHRcdGxpYjogWydlczIwMTUnLCAnZXMyMDE1LnByb21pc2UnLCAnZG9tJ10sXHJcblx0XHR9LFxyXG5cdH0pO1xyXG5cdHJldHVybiByZW1vdmVUcmFpbGluZ1NlbWljb2xvbihyZXN1bHQub3V0cHV0VGV4dCk7XHJcbn07XHJcblxyXG5jb25zdCByZW1vdmVUcmFpbGluZ1NlbWljb2xvbiA9IChmdW5jU3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdC8vIOWFiOWOu+mZpOWJjeWQjuepuueZvVxyXG5cdGNvbnN0IHRyaW1tZWQgPSBmdW5jU3RyLnRyaW0oKTtcclxuXHQvLyDlj6rmm7/mjaLmnIDlkI7kuIDkuKrliIblj7fvvIjlpoLmnpzlroPkuI3lnKjoirHmi6zlj7flhoXvvIlcclxuXHRpZiAodHJpbW1lZC5lbmRzV2l0aCgnOycpKSB7XHJcblx0XHRyZXR1cm4gdHJpbW1lZC5zbGljZSgwLCAtMSk7XHJcblx0fVxyXG5cdHJldHVybiB0cmltbWVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzSlNPTlBhcnNhYmxlID0gKHN0cjogYW55KSA9PiB7XHJcblx0dHJ5IHtcclxuXHRcdEpTT04ucGFyc2Uoc3RyKTtcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH0gY2F0Y2ggKGUpIHtcclxuXHRcdC8vIGxldCBzdHJJc09iaiA9IC9cXHtbXn1dKlxcfXxcXFtbXlxcXV0qXFxdLy50ZXN0KHN0cilcclxuXHRcdC8vIGlmKHN0cklzT2JqKXtcclxuXHRcdC8vIFx0Y29uc29sZS5lcnJvcignSlNPTiDop6PmnpDlpLHotKU6JywgZSwgJ1xcbuWOn+Wni+Wtl+espuS4sjonLCBzdHIpXHJcblx0XHQvLyB9XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIOagueaNruaMh+WumueahOmUruaVsOe7hOi/h+a7pOWvueixoVxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIC0g6KaB6L+H5ruk55qE5Y6f5aeL5a+56LGhXHJcbiAqIEBwYXJhbSB7QXJyYXl9IGtleXMgLSDpnIDopoHkv53nlZnnmoTplK7mlbDnu4RcclxuICogQHJldHVybnMge09iamVjdH0g6L+H5ruk5ZCO55qE5paw5a+56LGhXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZmlsdGVyT2JqZWN0QnlLZXlzID0gKG9iajogYW55LCBrZXlzOiBzdHJpbmdbXSkgPT4ge1xyXG5cdC8vIOWPguaVsOagoemqjFxyXG5cdGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XHJcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCfnrKzkuIDkuKrlj4LmlbDlv4XpobvmmK/mma7pgJrlr7nosaEnKTtcclxuXHR9XHJcblxyXG5cdGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xyXG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcign56ys5LqM5Liq5Y+C5pWw5b+F6aG75piv5pWw57uEJyk7XHJcblx0fVxyXG5cclxuXHQvLyDkvb/nlKhyZWR1Y2XliJvlu7rmlrDlr7nosaFcclxuXHRyZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYzogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG5cdFx0Ly8g5Y+q5pyJ5b2T5Y6f5a+56LGh5pyJ6K+l5bGe5oCn5pe25omN5re75Yqg5Yiw5paw5a+56LGhXHJcblx0XHRpZiAoa2V5IGluIG9iaikge1xyXG5cdFx0XHRhY2Nba2V5XSA9IG9ialtrZXldO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGFjYztcclxuXHR9LCB7fSk7XHJcbn07XHJcbi8qKlxyXG4gKiDoh6rlrprkuYnlh73mlbDljrvpmaTnqbrlrZfnrKbkuLJcclxuICogQHBhcmFtIGFjdCBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY29udmVydEFjdCA9IChhY3Q6YW55KSA9PntcclxuXHRhY3QuZm9yRWFjaCgodjphbnkpID0+IHtcclxuXHRcdGlmKHYuaGFzT3duUHJvcGVydHkoJ2J0bkhpZGRlbicpICYmdHlwZW9mIHYuYnRuSGlkZGVuICE9ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRkZWxldGUgdi5idG5IaWRkZW5cclxuXHRcdH1cclxuXHRcdGlmKHYuaGFzT3duUHJvcGVydHkoJ2J0bkRpc2FibGVkJykgJiZ0eXBlb2Ygdi5idG5EaXNhYmxlZCAhPSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0ZGVsZXRlIHYuYnRuRGlzYWJsZWRcclxuXHRcdH1cclxuXHRcdGlmKHYuaGFzT3duUHJvcGVydHkoJ29uQ2xpY2snKSAmJnR5cGVvZiB2Lm9uQ2xpY2sgIT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdGRlbGV0ZSB2Lm9uQ2xpY2tcclxuXHRcdH1cclxuXHR9KVxyXG5cdHJldHVybiBhY3Q7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBmb3JtcGFnZSDpgJrnlKhjb250ZW505Ye95pWw6L2s56e7XHJcbiAqIEBwYXJhbSBjb250ZW50IFxyXG4gKiBAcGFyYW0gdGhpc0FyZ1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNoYW5nZUNvbnRlbnQgPSAoY29udGVudDogYW55LHRoaXNBcmc6YW55KSAgPT57XHJcblx0bGV0IHsgZ3JpZExpc3QsIGhyZWZCdG5MaXN0LCBnZXRQcm0sIGdyb3Vwcywgc3RhdHVzS2V5LCBzdGF0dXMsIHN0YXR1c1N0ZXBzLHN0YXR1c0NvbmYgPSBudWxsIH0gPSBwYXJzZUZ1bmN0aW9ucyhjb250ZW50LHRoaXNBcmcpO1xyXG5cdGlmIChzdGF0dXNLZXkpIHtcclxuXHRcdHRoaXNBcmcuc3RhdHVzS2V5ID0gc3RhdHVzS2V5O1xyXG5cdFx0dGhpc0FyZy5zdGVwcyA9IHN0YXR1c1N0ZXBzO1xyXG5cdFx0c3RhdHVzQ29uZiAmJiAodGhpc0FyZy5zdGF0dXNDb25mID0gc3RhdHVzQ29uZilcclxuXHR9XHJcblxyXG5cdC8vIGxldCBhY3QgPSBwYXJzZUZ1bmN0aW9ucyhjb250ZW50LmFjdGlvbnMsdGhpc0FyZylcclxuXHR0aGlzQXJnLmFjdGlvbnMgPSBjb252ZXJ0QWN0KGNvbnRlbnQuYWN0aW9ucylcclxuXHQvLyBjb250ZW50LmZvcm1EaXNhYmxlZCAmJiAodGhpc0FyZy5mb3JtRGlzYWJsZWQgPSBwYXJzZUZ1bmN0aW9ucyhjb250ZW50LmZvcm1EaXNhYmxlZCwgdGhpc0FyZykpO1xyXG5cdGNvbnRlbnQuZm9ybURpc2FibGVkICYmICh0aGlzQXJnLmZvcm1EaXNhYmxlZCA9IGNvbnRlbnQuZm9ybURpc2FibGVkKTtcclxuXHR0aGlzQXJnLmdldFBybSA9IGdldFBybTtcclxuXHR0aGlzQXJnLmdldFBybS5vcmdGaWVsZCA9IGNvbnRlbnQub3JnRmllbGQgfHwgJyc7XHJcblx0dGhpc0FyZy5ncmlkcyA9IFtdO1xyXG5cdGxldCBmaXRlclByZWxvYWRzOmFueVtdID0gW11cclxuXHQvLyBncmlkTGlzdCA9IHBhcnNlRnVuY3Rpb25zKGdyaWRMaXN0LCB0aGlzQXJnKTtcclxuXHQvLyBsZXQgZ3JvdXBBcnIgPSBwYXJzZUZ1bmN0aW9ucyhncm91cHMsIHRoaXNBcmcpO1xyXG5cdC8vIGdyb3Vwcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHQvLyBcdGlmICh0aGlzQXJnLmF1dGhMZXZlbCA8IDMpIHtcclxuXHQvLyBcdFx0aXRlbVtmb3JtVHlwZVRvUHJvcHNbaXRlbS50eXBlXV0uZGlzYWJsZWQgPSB0cnVlO1xyXG5cdC8vIFx0fVxyXG5cdC8vIH0pO1xyXG5cdC8vIHRoaXNBcmcuZm9ybU9wdGlvbnMgPSB7XHJcblx0Ly8gXHRmaWVsZHM6IFtcclxuXHQvLyBcdFx0e1xyXG5cdC8vIFx0XHRcdGdyb3VwQ2xhc3M6ICdmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCcsXHJcblx0Ly8gXHRcdFx0Z3JvdXA6IGdyb3VwcyxcclxuXHQvLyBcdFx0fSxcclxuXHQvLyBcdF0sXHJcblx0Ly8gXHRmb3JtOiBuZXcgRm9ybUdyb3VwKHt9KSxcclxuXHQvLyBcdG1haW5GaWVsZDogY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLm1haW5GaWVsZHMsXHJcblx0Ly8gfTtcclxuXHRjb252ZXJ0Rm9ybSh0aGlzQXJnLGdyb3Vwcyxjb250ZW50LnNvdXJjZURhdGEpXHJcblx0Y29udmVydEdyaWQodGhpc0FyZyxncmlkTGlzdCxmaXRlclByZWxvYWRzKVxyXG5cdC8vIGdyaWRMaXN0LmZvckVhY2goYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xyXG5cdC8vIFx0IWl0ZW0udHlwZSAmJiAoaXRlbS50eXBlID0gJ2dyaWQnKVxyXG5cdC8vIFx0bGV0IGdyaWQ6YW55ID0ge3R5cGU6aXRlbS50eXBlfVxyXG5cdC8vIFx0aWYoaXRlbS5maXRlclByZWxvYWRzIGluc3RhbmNlb2YgQXJyYXkpe1xyXG5cdC8vIFx0XHRmaXRlclByZWxvYWRzID0gWy4uLmZpdGVyUHJlbG9hZHMsIC4uLml0ZW0uZml0ZXJQcmVsb2Fkc11cclxuXHQvLyBcdH1cclxuXHQvLyBcdGlmKGl0ZW0udHlwZSA9PSAnZ3JpZCcpe1xyXG5cdC8vIFx0XHRsZXQge1xyXG5cdC8vIFx0XHRcdGdyaWRPcHRpb25zOiB7IGNvbHVtbkRlZnMsIC4uLnJlc3RHcmlkT3B0aW9ucyB9LFxyXG5cdC8vIFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdC8vIFx0XHRcdHN1YkRhdGFLZXksXHJcblx0Ly8gXHRcdFx0dGl0bGUsXHJcblx0Ly8gXHRcdFx0c2VsZWN0RGF0YUNiLFxyXG5cdC8vIFx0XHRcdGZrLFxyXG5cdC8vIFx0XHRcdG1haW5GaWVsZCxcclxuXHQvLyBcdFx0XHR1bmlxdWVGaWVsZCxcclxuXHQvLyBcdFx0XHRhZGREYXRhQ2IsXHJcblx0Ly8gXHRcdFx0c2hvd0RlbGV0ZSA9IHRydWUsXHJcblx0Ly8gXHRcdFx0c2Nyb2xsSGVpZ2h0LFxyXG5cdC8vIFx0XHRcdGRyYWdTb3J0XHJcblx0Ly8gXHRcdH0gPSBpdGVtO1xyXG5cdC8vIFx0XHRncmlkID0geyBzdWJUYWJsZVNvdXJjZSwgc3ViRGF0YUtleSwgdGl0bGUsc2hvd0RlbGV0ZSwgLi4uZ3JpZH07XHJcblx0Ly8gXHRcdGxldCBncmlkT3B0aW9ucyA9IHtcclxuXHQvLyBcdFx0XHQuLi5yZXN0R3JpZE9wdGlvbnMsXHJcblx0Ly8gXHRcdFx0ZmssXHJcblx0Ly8gXHRcdFx0c3ViVGFibGVTb3VyY2UsXHJcblx0Ly8gXHRcdFx0c3ViRGF0YUtleSxcclxuXHQvLyBcdFx0XHRtYWluRmllbGQsXHJcblx0Ly8gXHRcdH07XHJcblx0Ly8gXHRcdGlmKHNjcm9sbEhlaWdodCl7XHJcblx0Ly8gXHRcdFx0Z3JpZE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YFxyXG5cdC8vIFx0XHR9XHJcblx0Ly8gXHRcdGlmKGRyYWdTb3J0KXtcclxuXHQvLyBcdFx0XHRncmlkT3B0aW9ucy5yb3dEcmFnTWFuYWdlZCA9IHRydWVcclxuXHQvLyBcdFx0XHRncmlkT3B0aW9ucy5kcmFnU29ydCA9IGRyYWdTb3J0XHJcblx0Ly8gXHRcdH1cclxuXHQvLyBcdFx0Y29udmVydENvbChjb2x1bW5EZWZzLHRoaXNBcmcuYXV0aExldmVsLCBncmlkT3B0aW9ucy5tb2RlbE5hbWUsZHJhZ1NvcnQpO1xyXG5cdC8vIFx0XHRncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gY29sdW1uRGVmcztcclxuXHJcblx0Ly8gXHRcdGlmIChzdWJUYWJsZVNvdXJjZSA9PT0gJ3NlbGVjdCcpIHtcclxuXHQvLyBcdFx0XHR0aGlzQXJnLndlYmdldCh7IGNvZGU6IGl0ZW0uc2VsZWN0TW9kZWxDb2RlIH0pLnN1YnNjcmliZSgocmVzOmFueSkgPT4ge1xyXG5cdC8vIFx0XHRcdFx0bGV0IHNlbGVjdENvbnRlbnQgPSBKU09OLnBhcnNlKHJlcy5jb250ZW50KTtcclxuXHQvLyBcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucyA9IHBhcnNlRnVuY3Rpb25zKHNlbGVjdENvbnRlbnQsIHRoaXNBcmcpPy5ncmlkT3B0aW9ucztcclxuXHQvLyBcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPSBncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlIHx8ICdzZXJ2ZXJTaWRlJztcclxuXHQvLyBcdFx0XHRcdGlmIChncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xyXG5cdC8vIFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2VydmVyRnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdC8vIFx0XHRcdFx0fSBlbHNlIHtcclxuXHQvLyBcdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLmNsaWVudEZ1bmMgPSBncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHQvLyBcdFx0XHRcdH1cclxuXHQvLyBcdFx0XHRcdGdyaWQudW5pcXVlRmllbGQgPSB1bmlxdWVGaWVsZDtcclxuXHQvLyBcdFx0XHRcdGdyaWQuc2VsZWN0RGF0YUNiID0gc2VsZWN0RGF0YUNiO1xyXG5cdC8vIFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNjcm9sbEhlaWdodCA9ICczMDBweCc7XHJcblx0Ly8gXHRcdFx0XHRncmlkT3B0aW9uc0hvb2tlcihncmlkLnNlbGVjdE9wdGlvbnMsIHNlbGVjdENvbnRlbnQpO1xyXG5cdC8vIFx0XHRcdH0pO1xyXG5cdC8vIFx0XHRcdGdyaWQuc2VhcmNoUHJtID0geyAuLi50aGlzQXJnLnNlYXJjaFBybSB9O1xyXG5cdC8vIFx0XHR9IGVsc2Uge1xyXG5cdC8vIFx0XHRcdGFkZERhdGFDYiAmJiAoZ3JpZE9wdGlvbnMuYWRkRGF0YUNiID0gYWRkRGF0YUNiKTtcclxuXHQvLyBcdFx0fVxyXG5cdC8vIFx0XHRncmlkLmdyaWRPcHRpb25zID0gZ3JpZE9wdGlvbnM7XHJcblx0Ly8gXHR9IGVsc2Uge1xyXG5cdC8vIFx0XHRpdGVtLmludGVyYWN0aXZlTGFiZWwgPSB0cnVlXHJcblx0Ly8gXHRcdGdyaWQgPSB7XHJcblx0Ly8gXHRcdFx0Li4uaXRlbVxyXG5cdC8vIFx0XHR9XHJcblx0Ly8gXHRcdGdyaWQuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblx0Ly8gXHR9XHJcblx0Ly8gXHR0aGlzQXJnLmdyaWRzLnB1c2goZ3JpZCk7XHJcblx0Ly8gfSk7XHJcblx0dGhpc0FyZy5mb3JtRGV0YWlsID0gIGNvbnRlbnQuZm9ybURldGFpbFxyXG5cdHRoaXNBcmcuc2F2ZUZ1bmMgPSBjb250ZW50LnNhdmVGdW5jXHJcblx0dGhpc0FyZy5pc0xvZyA9IGNvbnRlbnQuc291cmNlRGF0YS5tb2RlbC5sb2c7XHJcblx0dGhpc0FyZy5nZXRQcm1bJ2dldExvZyddID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZml0ZXJQcmVsb2FkcyddID0gZml0ZXJQcmVsb2Fkc1xyXG5cdHRoaXNBcmcuaHJlZkJ0bkxpc3QgID0gaHJlZkJ0bkxpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0Q29sID0gKGNvbDogYW55W10sIGF1dGhMZXZlbDpudW1iZXIsbW9kZWxOYW1lPzogc3RyaW5nLGRyYWdTb3J0PzpzdHJpbmcsKSA9PiB7XHJcblx0Y29sLmZvckVhY2goKGl0ZW06IGFueSxpbmRleDpudW1iZXIpID0+IHtcclxuXHRcdGl0ZW0uaGlkZSA9IGl0ZW0uaGlkZUNvbDtcclxuXHRcdGlmIChhdXRoTGV2ZWwgPCAzKSB7XHJcblx0XHRcdGl0ZW0uZWRpdGFibGUgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGlmKGRyYWdTb3J0ICYmIGluZGV4ID09PTApe1xyXG5cdFx0XHRpdGVtLnJvd0RyYWcgPSB0cnVlXHJcblx0XHR9XHJcblx0fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBncmlkT3B0aW9uc0hvb2tlciA9IChncmlkT3B0aW9uczogYW55LCBzZWxlY3RDb250ZW50OiBhbnkpID0+IHtcclxuXHRncmlkT3B0aW9ucz8uY29sdW1uRGVmcz8uZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuXHRcdGlmIChjb2wuaGlkZUNvbCkge1xyXG5cdFx0XHRjb2wuaGlkZSA9IGNvbC5oaWRlQ29sO1xyXG5cdFx0XHRkZWxldGUgY29sLmhpZGVDb2w7XHJcblx0XHR9XHJcblx0fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0R3JpZCA9ICh0aGlzQXJnOmFueSxncmlkTGlzdDphbnksZml0ZXJQcmVsb2FkczphbnkpID0+IHtcclxuXHRncmlkTGlzdC5mb3JFYWNoKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuXHRcdCFpdGVtLnR5cGUgJiYgKGl0ZW0udHlwZSA9ICdncmlkJylcclxuXHRcdGxldCBncmlkOmFueSA9IHt0eXBlOml0ZW0udHlwZX1cclxuXHRcdGlmKGl0ZW0uZml0ZXJQcmVsb2FkcyBpbnN0YW5jZW9mIEFycmF5KXtcclxuXHRcdFx0Zml0ZXJQcmVsb2FkcyA9IFsuLi5maXRlclByZWxvYWRzLCAuLi5pdGVtLmZpdGVyUHJlbG9hZHNdXHJcblx0XHR9XHJcblx0XHRpZihpdGVtLnR5cGUgPT0gJ2dyaWQnKXtcclxuXHRcdFx0bGV0IHtcclxuXHRcdFx0XHRncmlkT3B0aW9uczogeyBjb2x1bW5EZWZzLCAuLi5yZXN0R3JpZE9wdGlvbnMgfSxcclxuXHRcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHRcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdFx0XHRcdHRpdGxlLFxyXG5cdFx0XHRcdHNlbGVjdERhdGFDYixcclxuXHRcdFx0XHRmayxcclxuXHRcdFx0XHRtYWluRmllbGQsXHJcblx0XHRcdFx0dW5pcXVlRmllbGQsXHJcblx0XHRcdFx0YWRkRGF0YUNiLFxyXG5cdFx0XHRcdHNob3dEZWxldGUgPSB0cnVlLFxyXG5cdFx0XHRcdHNjcm9sbEhlaWdodCxcclxuXHRcdFx0XHRkcmFnU29ydFxyXG5cdFx0XHR9ID0gaXRlbTtcclxuXHRcdFx0Z3JpZCA9IHsgc3ViVGFibGVTb3VyY2UsIHN1YkRhdGFLZXksIHRpdGxlLHNob3dEZWxldGUsIC4uLmdyaWR9O1xyXG5cdFx0XHRsZXQgZ3JpZE9wdGlvbnMgPSB7XHJcblx0XHRcdFx0Li4ucmVzdEdyaWRPcHRpb25zLFxyXG5cdFx0XHRcdGZrLFxyXG5cdFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdFx0XHRcdHN1YkRhdGFLZXksXHJcblx0XHRcdFx0bWFpbkZpZWxkLFxyXG5cdFx0XHR9O1xyXG5cdFx0XHRpZihzY3JvbGxIZWlnaHQpe1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnNjcm9sbEhlaWdodCA9IGAke3Njcm9sbEhlaWdodH1weGBcclxuXHRcdFx0fVxyXG5cdFx0XHRpZihkcmFnU29ydCl7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMucm93RHJhZ01hbmFnZWQgPSB0cnVlXHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuZHJhZ1NvcnQgPSBkcmFnU29ydFxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnZlcnRDb2woY29sdW1uRGVmcyx0aGlzQXJnLmF1dGhMZXZlbCwgZ3JpZE9wdGlvbnMubW9kZWxOYW1lLGRyYWdTb3J0KTtcclxuXHRcdFx0Z3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IGNvbHVtbkRlZnM7XHJcblxyXG5cdFx0XHRpZiAoc3ViVGFibGVTb3VyY2UgPT09ICdzZWxlY3QnKSB7XHJcblx0XHRcdFx0dGhpc0FyZy53ZWJnZXQoeyBjb2RlOiBpdGVtLnNlbGVjdE1vZGVsQ29kZSB9KS5zdWJzY3JpYmUoKHJlczphbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBzZWxlY3RDb250ZW50ID0gSlNPTi5wYXJzZShyZXMuY29udGVudCk7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMgPSBwYXJzZUZ1bmN0aW9ucyhzZWxlY3RDb250ZW50LCB0aGlzQXJnKT8uZ3JpZE9wdGlvbnM7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlID0gZ3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSB8fCAnc2VydmVyU2lkZSc7XHJcblx0XHRcdFx0XHRpZiAoZ3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpIHtcclxuXHRcdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNlcnZlckZ1bmMgPSBncmlkLnNlbGVjdE9wdGlvbnMuc2VydmVyRnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5jbGllbnRGdW5jID0gZ3JpZC5zZWxlY3RPcHRpb25zLmNsaWVudEZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRncmlkLnVuaXF1ZUZpZWxkID0gdW5pcXVlRmllbGQ7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdERhdGFDYiA9IHNlbGVjdERhdGFDYjtcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zY3JvbGxIZWlnaHQgPSAnMzAwcHgnO1xyXG5cdFx0XHRcdFx0Z3JpZE9wdGlvbnNIb29rZXIoZ3JpZC5zZWxlY3RPcHRpb25zLCBzZWxlY3RDb250ZW50KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRncmlkLnNlYXJjaFBybSA9IHsgLi4udGhpc0FyZy5zZWFyY2hQcm0gfTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhZGREYXRhQ2IgJiYgKGdyaWRPcHRpb25zLmFkZERhdGFDYiA9IGFkZERhdGFDYik7XHJcblx0XHRcdH1cclxuXHRcdFx0Z3JpZC5ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aXRlbS5pbnRlcmFjdGl2ZUxhYmVsID0gdHJ1ZVxyXG5cdFx0XHRncmlkID0ge1xyXG5cdFx0XHRcdC4uLml0ZW1cclxuXHRcdFx0fVxyXG5cdFx0XHRncmlkLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cdFx0fVxyXG5cdFx0dGhpc0FyZy5ncmlkcy5wdXNoKGdyaWQpO1xyXG5cdH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29udmVydEZvcm0gPSAodGhpc0FyZzphbnksIGdyb3VwQXJyOmFueSxzb3VyY2VEYXRhOmFueSkgPT4ge1xyXG5cdGdyb3VwQXJyLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0aWYgKHRoaXNBcmcuYXV0aExldmVsIDwgMykge1xyXG5cdFx0XHRpdGVtW2Zvcm1UeXBlVG9Qcm9wc1tpdGVtLnR5cGVdXS5kaXNhYmxlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0fSk7XHJcblx0dGhpc0FyZy5mb3JtT3B0aW9ucyA9IHtcclxuXHRcdGZpZWxkczogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0Z3JvdXBDbGFzczogJ2ZsZXggZmxleC1yb3cgZmxleC13cmFwJyxcclxuXHRcdFx0XHRncm91cDogZ3JvdXBBcnIsXHJcblx0XHRcdH0sXHJcblx0XHRdLFxyXG5cdFx0Zm9ybTogbmV3IEZvcm1Hcm91cCh7fSksXHJcblx0XHRtYWluRmllbGQ6IHNvdXJjZURhdGEubW9kZWwubWFpbkZpZWxkcyxcclxuXHR9O1xyXG59Il19
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN6QyxHQUFHO0tBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXO0tBQzlCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXO0tBQy9DLFdBQVcsRUFBRSxDQUFDLE9BQU87S0FDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVE7S0FDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJ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LE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbEQsQ0FBQztJQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLFdBQVcsR0FBRztRQUNyQixNQUFNLEVBQUU7WUFDUDtnQkFDQyxVQUFVLEVBQUUseUJBQXlCO2dCQUNyQyxLQUFLLEVBQUUsUUFBUTthQUNmO1NBQ0Q7UUFDRCxJQUFJLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVU7S0FDdEMsQ0FBQztBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBwaXBlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xyXG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuXHJcbmV4cG9ydCBsZXQgdG9QYXNjYWxDYXNlID0gKHN0cjogc3RyaW5nKSA9PlxyXG5cdHN0clxyXG5cdFx0LnJlcGxhY2UoL18vZywgJyAnKSAvLyDkuIvliJLnur/mm7/mjaLkuLrnqbrmoLxcclxuXHRcdC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKSAvLyDlsI/pqbzls7DliIblibLkuLrljZXor41cclxuXHRcdC50b0xvd2VyQ2FzZSgpIC8vIOi9rOS4uuWwj+WGmVxyXG5cdFx0LnNwbGl0KC9cXHMrLykgLy8g5oyJ56m65qC85YiG5YmyXHJcblx0XHQubWFwKCh3b3JkKSA9PiAod29yZCA/IHdvcmRbMF0udG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkgOiAnJykpXHJcblx0XHQuam9pbignJyk7XHJcblxyXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVVbmlxdWVJZCA9ICgpID0+IHtcclxuXHRjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpLnRvU3RyaW5nKDM2KTsgLy8g5pe26Ze05oiz6L2sMzbov5vliLbnvKnnn63plb/luqZcclxuXHRjb25zdCByYW5kb20gPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgNCk7IC8vIOmaj+acuumDqOWIhlxyXG5cdHJldHVybiBgJHt0aW1lc3RhbXB9JHtyYW5kb219YDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaXJjdWxhckl0ZXJhdG9yID0gKGFycmF5OiBhbnlbXSkgPT4ge1xyXG5cdGxldCBpbmRleCA9IC0xO1xyXG5cdHJldHVybiB7XHJcblx0XHRuZXh0OiAoKSA9PiB7XHJcblx0XHRcdGluZGV4Kys7XHJcblx0XHRcdHJldHVybiBhcnJheVtpbmRleCAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdFx0cHJldjogKCkgPT4ge1xyXG5cdFx0XHRpbmRleC0tO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbKChpbmRleCAlIGFycmF5Lmxlbmd0aCkgKyBhcnJheS5sZW5ndGgpICUgYXJyYXkubGVuZ3RoXTtcclxuXHRcdH0sXHJcblx0fTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBwYXJzZUZ1bmN0aW9ucyA9IChvYmo6IGFueSwgX3RoaXM6IGFueSk6IGFueSA9PiB7XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcblx0XHQvLyDlsJ3or5Xmo4DmtYvmmK/lkKbmmK/lh73mlbDlrZfnrKbkuLJcclxuXHRcdGlmICgob2JqLmluY2x1ZGVzKCc9PicpIHx8IG9iai5pbmNsdWRlcygnUHJvbWlzZScpKSAmJiAhaXNKU09OUGFyc2FibGUob2JqKSkge1xyXG5cdFx0XHRjb25zdCBvID0gY29tcGlsZVRzVG9KcyhvYmopO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygn6Kej5p6Q5Ye95pWwOicsIG9iaik7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3Qgc2FuZGJveCA9IHtcclxuXHRcdFx0XHRcdE9ic2VydmFibGUsXHJcblx0XHRcdFx0XHRvZixcclxuXHRcdFx0XHRcdHNoYXJlUmVwbGF5LFxyXG5cdFx0XHRcdFx0cGlwZSxcclxuXHRcdFx0XHRcdFByb21pc2UsIC8vIOa3u+WKoCBQcm9taXNlIOWIsCBzYW5kYm94XHJcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSwgLy8g5qCH6K6w5pSv5oyB5byC5q2lXHJcblx0XHRcdFx0XHRyZXNvbHZlOiBQcm9taXNlLnJlc29sdmUuYmluZChQcm9taXNlKSxcclxuXHRcdFx0XHRcdHJlamVjdDogUHJvbWlzZS5yZWplY3QuYmluZChQcm9taXNlKSxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyDlpITnkIYgUHJvbWlzZSDmnoTpgKDlh73mlbDnmoTmg4XlhrVcclxuXHRcdFx0XHRpZiAob2JqLmluY2x1ZGVzKCduZXcgUHJvbWlzZScpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0XHQnc2FuZGJveCcsXHJcblx0XHRcdFx0XHRcdGBcclxuXHRcdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAke299O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YCxcclxuXHRcdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyDlpITnkIbmma7pgJrlh73mlbDlkoznrq3lpLTlh73mlbBcclxuXHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0J3NhbmRib3gnLFxyXG5cdFx0XHRcdFx0YFxyXG5cdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCR7b30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRgLFxyXG5cdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCflh73mlbDop6PmnpDlpLHotKU6JywgZSwgJ1xcbuWOn+Wni+Wtl+espuS4sjonLCBvYmopO1xyXG5cdFx0XHRcdHJldHVybiBvYmo7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChpc0pTT05QYXJzYWJsZShvYmopKSB7XHJcblx0XHRcdGxldCBqc29uID0gSlNPTi5wYXJzZShvYmopO1xyXG5cdFx0XHRyZXR1cm4gcGFyc2VGdW5jdGlvbnMoanNvbiwgX3RoaXMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0cmV0dXJuIG9iai5tYXAoKGl0ZW06IGFueSkgPT4gcGFyc2VGdW5jdGlvbnMoaXRlbSwgX3RoaXMpKTtcclxuXHR9XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IHBhcnNlRnVuY3Rpb25zKG9ialtrZXldLCBfdGhpcyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gb2JqO1xyXG59O1xyXG5cclxuLy8g6L6F5Yqp5Ye95pWw77ya5qOA5p+l5piv5ZCm5YyF5ZCrIFByb21pc2Ug5p6E6YCg5Ye95pWwXHJcbmNvbnN0IGNvbnRhaW5zUHJvbWlzZUNvbnN0cnVjdG9yID0gKHN0cjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcblx0cmV0dXJuIC9uZXdcXHMrUHJvbWlzZS8udGVzdChzdHIpO1xyXG59O1xyXG5cclxuLy8g5L+u5pS5IGNvbXBpbGVUc1RvSnMg5Ye95pWw5Lul5pu05aW95Zyw5aSE55CGIFByb21pc2VcclxuZXhwb3J0IGNvbnN0IGNvbXBpbGVUc1RvSnMgPSAodHNDb2RlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdC8vIOWmguaenOaYryBQcm9taXNlIOaehOmAoOWHveaVsO+8jOS4jemcgOimgemineWkluWkhOeQhlxyXG5cdGlmIChjb250YWluc1Byb21pc2VDb25zdHJ1Y3Rvcih0c0NvZGUpKSB7XHJcblx0XHRyZXR1cm4gdHNDb2RlO1xyXG5cdH1cclxuXHJcblx0Y29uc3QgcmVzdWx0ID0gdHMudHJhbnNwaWxlTW9kdWxlKHRzQ29kZSwge1xyXG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XHJcblx0XHRcdG1vZHVsZTogdHMuTW9kdWxlS2luZC5Db21tb25KUyxcclxuXHRcdFx0dGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDE1LFxyXG5cdFx0XHQvLyDlkK/nlKjlvILmraXlh73mlbDmlK/mjIFcclxuXHRcdFx0bGliOiBbJ2VzMjAxNScsICdlczIwMTUucHJvbWlzZScsICdkb20nXSxcclxuXHRcdH0sXHJcblx0fSk7XHJcblx0cmV0dXJuIHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uKHJlc3VsdC5vdXRwdXRUZXh0KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uID0gKGZ1bmNTdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcblx0Ly8g5YWI5Y676Zmk5YmN5ZCO56m655m9XHJcblx0Y29uc3QgdHJpbW1lZCA9IGZ1bmNTdHIudHJpbSgpO1xyXG5cdC8vIOWPquabv+aNouacgOWQjuS4gOS4quWIhuWPt++8iOWmguaenOWug+S4jeWcqOiKseaLrOWPt+WGhe+8iVxyXG5cdGlmICh0cmltbWVkLmVuZHNXaXRoKCc7JykpIHtcclxuXHRcdHJldHVybiB0cmltbWVkLnNsaWNlKDAsIC0xKTtcclxuXHR9XHJcblx0cmV0dXJuIHRyaW1tZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNKU09OUGFyc2FibGUgPSAoc3RyOiBhbnkpID0+IHtcclxuXHR0cnkge1xyXG5cdFx0SlNPTi5wYXJzZShzdHIpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fSBjYXRjaCAoZSkge1xyXG5cdFx0Ly8gbGV0IHN0cklzT2JqID0gL1xce1tefV0qXFx9fFxcW1teXFxdXSpcXF0vLnRlc3Qoc3RyKVxyXG5cdFx0Ly8gaWYoc3RySXNPYmope1xyXG5cdFx0Ly8gXHRjb25zb2xlLmVycm9yKCdKU09OIOino+aekOWksei0pTonLCBlLCAnXFxu5Y6f5aeL5a2X56ym5LiyOicsIHN0cilcclxuXHRcdC8vIH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcbn07XHJcblxyXG4vKipcclxuICog5qC55o2u5oyH5a6a55qE6ZSu5pWw57uE6L+H5ruk5a+56LGhXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSDopoHov4fmu6TnmoTljp/lp4vlr7nosaFcclxuICogQHBhcmFtIHtBcnJheX0ga2V5cyAtIOmcgOimgeS/neeVmeeahOmUruaVsOe7hFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSDov4fmu6TlkI7nmoTmlrDlr7nosaFcclxuICovXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJPYmplY3RCeUtleXMgPSAob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdKSA9PiB7XHJcblx0Ly8g5Y+C5pWw5qCh6aqMXHJcblx0aWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ+esrOS4gOS4quWPguaVsOW/hemhu+aYr+aZrumAmuWvueixoScpO1xyXG5cdH1cclxuXHJcblx0aWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSB7XHJcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCfnrKzkuozkuKrlj4LmlbDlv4XpobvmmK/mlbDnu4QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOS9v+eUqHJlZHVjZeWIm+W7uuaWsOWvueixoVxyXG5cdHJldHVybiBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHQvLyDlj6rmnInlvZPljp/lr7nosaHmnInor6XlsZ7mgKfml7bmiY3mt7vliqDliLDmlrDlr7nosaFcclxuXHRcdGlmIChrZXkgaW4gb2JqKSB7XHJcblx0XHRcdGFjY1trZXldID0gb2JqW2tleV07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gYWNjO1xyXG5cdH0sIHt9KTtcclxufTtcclxuLyoqXHJcbiAqIOiHquWumuS5ieWHveaVsOWOu+mZpOepuuWtl+espuS4slxyXG4gKiBAcGFyYW0gYWN0IFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0QWN0ID0gKGFjdDphbnkpID0+e1xyXG5cdGFjdC5mb3JFYWNoKCh2OmFueSkgPT4ge1xyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuSGlkZGVuJykgJiZ0eXBlb2Ygdi5idG5IaWRkZW4gIT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdGRlbGV0ZSB2LmJ0bkhpZGRlblxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuRGlzYWJsZWQnKSAmJnR5cGVvZiB2LmJ0bkRpc2FibGVkICE9ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRkZWxldGUgdi5idG5EaXNhYmxlZFxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpICYmdHlwZW9mIHYub25DbGljayAhPSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0ZGVsZXRlIHYub25DbGlja1xyXG5cdFx0fVxyXG5cdH0pXHJcblx0cmV0dXJuIGFjdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIGZvcm1wYWdlIOmAmueUqGNvbnRlbnTlh73mlbDovaznp7tcclxuICogQHBhcmFtIGNvbnRlbnQgXHJcbiAqIEBwYXJhbSB0aGlzQXJnXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY2hhbmdlQ29udGVudCA9IChjb250ZW50OiBhbnksdGhpc0FyZzphbnkpICA9PntcclxuXHRsZXQgeyBncmlkTGlzdCwgaHJlZkJ0bkxpc3QsIGdldFBybSwgZ3JvdXBzLCBzdGF0dXNLZXksIHN0YXR1cywgc3RhdHVzU3RlcHMsc3RhdHVzQ29uZiA9IG51bGwgfSA9IHBhcnNlRnVuY3Rpb25zKGNvbnRlbnQsdGhpc0FyZyk7XHJcblx0aWYgKHN0YXR1c0tleSkge1xyXG5cdFx0dGhpc0FyZy5zdGF0dXNLZXkgPSBzdGF0dXNLZXk7XHJcblx0XHR0aGlzQXJnLnN0ZXBzID0gc3RhdHVzU3RlcHM7XHJcblx0XHRzdGF0dXNDb25mICYmICh0aGlzQXJnLnN0YXR1c0NvbmYgPSBzdGF0dXNDb25mKVxyXG5cdH1cclxuXHJcblx0Ly8gbGV0IGFjdCA9IHBhcnNlRnVuY3Rpb25zKGNvbnRlbnQuYWN0aW9ucyx0aGlzQXJnKVxyXG5cdHRoaXNBcmcuYWN0aW9ucyA9IGNvbnZlcnRBY3QoY29udGVudC5hY3Rpb25zKVxyXG5cdC8vIGNvbnRlbnQuZm9ybURpc2FibGVkICYmICh0aGlzQXJnLmZvcm1EaXNhYmxlZCA9IHBhcnNlRnVuY3Rpb25zKGNvbnRlbnQuZm9ybURpc2FibGVkLCB0aGlzQXJnKSk7XHJcblx0Y29udGVudC5mb3JtRGlzYWJsZWQgJiYgKHRoaXNBcmcuZm9ybURpc2FibGVkID0gY29udGVudC5mb3JtRGlzYWJsZWQpO1xyXG5cdHRoaXNBcmcuZ2V0UHJtID0gZ2V0UHJtO1xyXG5cdHRoaXNBcmcuZ2V0UHJtLm9yZ0ZpZWxkID0gY29udGVudC5vcmdGaWVsZCB8fCAnJztcclxuXHR0aGlzQXJnLmdyaWRzID0gW107XHJcblx0bGV0IGZpdGVyUHJlbG9hZHM6YW55W10gPSBbXVxyXG5cdC8vIGdyaWRMaXN0ID0gcGFyc2VGdW5jdGlvbnMoZ3JpZExpc3QsIHRoaXNBcmcpO1xyXG5cdC8vIGxldCBncm91cEFyciA9IHBhcnNlRnVuY3Rpb25zKGdyb3VwcywgdGhpc0FyZyk7XHJcblx0Ly8gZ3JvdXBzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdC8vIFx0aWYgKHRoaXNBcmcuYXV0aExldmVsIDwgMykge1xyXG5cdC8vIFx0XHRpdGVtW2Zvcm1UeXBlVG9Qcm9wc1tpdGVtLnR5cGVdXS5kaXNhYmxlZCA9IHRydWU7XHJcblx0Ly8gXHR9XHJcblx0Ly8gfSk7XHJcblx0Ly8gdGhpc0FyZy5mb3JtT3B0aW9ucyA9IHtcclxuXHQvLyBcdGZpZWxkczogW1xyXG5cdC8vIFx0XHR7XHJcblx0Ly8gXHRcdFx0Z3JvdXBDbGFzczogJ2ZsZXggZmxleC1yb3cgZmxleC13cmFwJyxcclxuXHQvLyBcdFx0XHRncm91cDogZ3JvdXBzLFxyXG5cdC8vIFx0XHR9LFxyXG5cdC8vIFx0XSxcclxuXHQvLyBcdGZvcm06IG5ldyBGb3JtR3JvdXAoe30pLFxyXG5cdC8vIFx0bWFpbkZpZWxkOiBjb250ZW50LnNvdXJjZURhdGEubW9kZWwubWFpbkZpZWxkcyxcclxuXHQvLyB9O1xyXG5cdGNvbnZlcnRGb3JtKHRoaXNBcmcsZ3JvdXBzLGNvbnRlbnQuc291cmNlRGF0YSlcclxuXHRjb252ZXJ0R3JpZCh0aGlzQXJnLGdyaWRMaXN0LGZpdGVyUHJlbG9hZHMpXHJcblx0Ly8gZ3JpZExpc3QuZm9yRWFjaChhc3luYyAoaXRlbTogYW55KSA9PiB7XHJcblx0Ly8gXHQhaXRlbS50eXBlICYmIChpdGVtLnR5cGUgPSAnZ3JpZCcpXHJcblx0Ly8gXHRsZXQgZ3JpZDphbnkgPSB7dHlwZTppdGVtLnR5cGV9XHJcblx0Ly8gXHRpZihpdGVtLmZpdGVyUHJlbG9hZHMgaW5zdGFuY2VvZiBBcnJheSl7XHJcblx0Ly8gXHRcdGZpdGVyUHJlbG9hZHMgPSBbLi4uZml0ZXJQcmVsb2FkcywgLi4uaXRlbS5maXRlclByZWxvYWRzXVxyXG5cdC8vIFx0fVxyXG5cdC8vIFx0aWYoaXRlbS50eXBlID09ICdncmlkJyl7XHJcblx0Ly8gXHRcdGxldCB7XHJcblx0Ly8gXHRcdFx0Z3JpZE9wdGlvbnM6IHsgY29sdW1uRGVmcywgLi4ucmVzdEdyaWRPcHRpb25zIH0sXHJcblx0Ly8gXHRcdFx0c3ViVGFibGVTb3VyY2UsXHJcblx0Ly8gXHRcdFx0c3ViRGF0YUtleSxcclxuXHQvLyBcdFx0XHR0aXRsZSxcclxuXHQvLyBcdFx0XHRzZWxlY3REYXRhQ2IsXHJcblx0Ly8gXHRcdFx0ZmssXHJcblx0Ly8gXHRcdFx0bWFpbkZpZWxkLFxyXG5cdC8vIFx0XHRcdHVuaXF1ZUZpZWxkLFxyXG5cdC8vIFx0XHRcdGFkZERhdGFDYixcclxuXHQvLyBcdFx0XHRzaG93RGVsZXRlID0gdHJ1ZSxcclxuXHQvLyBcdFx0XHRzY3JvbGxIZWlnaHQsXHJcblx0Ly8gXHRcdFx0ZHJhZ1NvcnRcclxuXHQvLyBcdFx0fSA9IGl0ZW07XHJcblx0Ly8gXHRcdGdyaWQgPSB7IHN1YlRhYmxlU291cmNlLCBzdWJEYXRhS2V5LCB0aXRsZSxzaG93RGVsZXRlLCAuLi5ncmlkfTtcclxuXHQvLyBcdFx0bGV0IGdyaWRPcHRpb25zID0ge1xyXG5cdC8vIFx0XHRcdC4uLnJlc3RHcmlkT3B0aW9ucyxcclxuXHQvLyBcdFx0XHRmayxcclxuXHQvLyBcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHQvLyBcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdC8vIFx0XHRcdG1haW5GaWVsZCxcclxuXHQvLyBcdFx0fTtcclxuXHQvLyBcdFx0aWYoc2Nyb2xsSGVpZ2h0KXtcclxuXHQvLyBcdFx0XHRncmlkT3B0aW9ucy5zY3JvbGxIZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgXHJcblx0Ly8gXHRcdH1cclxuXHQvLyBcdFx0aWYoZHJhZ1NvcnQpe1xyXG5cdC8vIFx0XHRcdGdyaWRPcHRpb25zLnJvd0RyYWdNYW5hZ2VkID0gdHJ1ZVxyXG5cdC8vIFx0XHRcdGdyaWRPcHRpb25zLmRyYWdTb3J0ID0gZHJhZ1NvcnRcclxuXHQvLyBcdFx0fVxyXG5cdC8vIFx0XHRjb252ZXJ0Q29sKGNvbHVtbkRlZnMsdGhpc0FyZy5hdXRoTGV2ZWwsIGdyaWRPcHRpb25zLm1vZGVsTmFtZSxkcmFnU29ydCk7XHJcblx0Ly8gXHRcdGdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBjb2x1bW5EZWZzO1xyXG5cclxuXHQvLyBcdFx0aWYgKHN1YlRhYmxlU291cmNlID09PSAnc2VsZWN0Jykge1xyXG5cdC8vIFx0XHRcdHRoaXNBcmcud2ViZ2V0KHsgY29kZTogaXRlbS5zZWxlY3RNb2RlbENvZGUgfSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcblx0Ly8gXHRcdFx0XHRsZXQgc2VsZWN0Q29udGVudCA9IEpTT04ucGFyc2UocmVzLmNvbnRlbnQpO1xyXG5cdC8vIFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zID0gcGFyc2VGdW5jdGlvbnMoc2VsZWN0Q29udGVudCwgdGhpc0FyZyk/LmdyaWRPcHRpb25zO1xyXG5cdC8vIFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSA9IGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgfHwgJ3NlcnZlclNpZGUnO1xyXG5cdC8vIFx0XHRcdFx0aWYgKGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSB7XHJcblx0Ly8gXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jID0gZ3JpZC5zZWxlY3RPcHRpb25zLnNlcnZlckZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0Ly8gXHRcdFx0XHR9IGVsc2Uge1xyXG5cdC8vIFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5jbGllbnRGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdC8vIFx0XHRcdFx0fVxyXG5cdC8vIFx0XHRcdFx0Z3JpZC51bmlxdWVGaWVsZCA9IHVuaXF1ZUZpZWxkO1xyXG5cdC8vIFx0XHRcdFx0Z3JpZC5zZWxlY3REYXRhQ2IgPSBzZWxlY3REYXRhQ2I7XHJcblx0Ly8gXHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gJzMwMHB4JztcclxuXHQvLyBcdFx0XHRcdGdyaWRPcHRpb25zSG9va2VyKGdyaWQuc2VsZWN0T3B0aW9ucywgc2VsZWN0Q29udGVudCk7XHJcblx0Ly8gXHRcdFx0fSk7XHJcblx0Ly8gXHRcdFx0Z3JpZC5zZWFyY2hQcm0gPSB7IC4uLnRoaXNBcmcuc2VhcmNoUHJtIH07XHJcblx0Ly8gXHRcdH0gZWxzZSB7XHJcblx0Ly8gXHRcdFx0YWRkRGF0YUNiICYmIChncmlkT3B0aW9ucy5hZGREYXRhQ2IgPSBhZGREYXRhQ2IpO1xyXG5cdC8vIFx0XHR9XHJcblx0Ly8gXHRcdGdyaWQuZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcclxuXHQvLyBcdH0gZWxzZSB7XHJcblx0Ly8gXHRcdGl0ZW0uaW50ZXJhY3RpdmVMYWJlbCA9IHRydWVcclxuXHQvLyBcdFx0Z3JpZCA9IHtcclxuXHQvLyBcdFx0XHQuLi5pdGVtXHJcblx0Ly8gXHRcdH1cclxuXHQvLyBcdFx0Z3JpZC5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHQvLyBcdH1cclxuXHQvLyBcdHRoaXNBcmcuZ3JpZHMucHVzaChncmlkKTtcclxuXHQvLyB9KTtcclxuXHR0aGlzQXJnLmZvcm1EZXRhaWwgPSAgY29udGVudC5mb3JtRGV0YWlsXHJcblx0dGhpc0FyZy5zYXZlRnVuYyA9IGNvbnRlbnQuc2F2ZUZ1bmNcclxuXHR0aGlzQXJnLmlzTG9nID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZ2V0TG9nJ10gPSBjb250ZW50LnNvdXJjZURhdGEubW9kZWwubG9nO1xyXG5cdHRoaXNBcmcuZ2V0UHJtWydmaXRlclByZWxvYWRzJ10gPSBmaXRlclByZWxvYWRzXHJcblx0dGhpc0FyZy5ocmVmQnRuTGlzdCAgPSBocmVmQnRuTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRDb2wgPSAoY29sOiBhbnlbXSwgYXV0aExldmVsOm51bWJlcixtb2RlbE5hbWU/OiBzdHJpbmcsZHJhZ1NvcnQ/OnN0cmluZywpID0+IHtcclxuXHRjb2wuZm9yRWFjaCgoaXRlbTogYW55LGluZGV4Om51bWJlcikgPT4ge1xyXG5cdFx0aXRlbS5oaWRlID0gaXRlbS5oaWRlQ29sO1xyXG5cdFx0aWYgKGF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbS5lZGl0YWJsZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYoZHJhZ1NvcnQgJiYgaW5kZXggPT09MCl7XHJcblx0XHRcdGl0ZW0ucm93RHJhZyA9IHRydWVcclxuXHRcdH1cclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdyaWRPcHRpb25zSG9va2VyID0gKGdyaWRPcHRpb25zOiBhbnksIHNlbGVjdENvbnRlbnQ6IGFueSkgPT4ge1xyXG5cdGdyaWRPcHRpb25zPy5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG5cdFx0aWYgKGNvbC5oaWRlQ29sKSB7XHJcblx0XHRcdGNvbC5oaWRlID0gY29sLmhpZGVDb2w7XHJcblx0XHRcdGRlbGV0ZSBjb2wuaGlkZUNvbDtcclxuXHRcdH1cclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRHcmlkID0gKHRoaXNBcmc6YW55LGdyaWRMaXN0OmFueSxmaXRlclByZWxvYWRzOmFueSkgPT4ge1xyXG5cdGdyaWRMaXN0LmZvckVhY2goYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0IWl0ZW0udHlwZSAmJiAoaXRlbS50eXBlID0gJ2dyaWQnKVxyXG5cdFx0bGV0IGdyaWQ6YW55ID0ge3R5cGU6aXRlbS50eXBlfVxyXG5cdFx0aWYoaXRlbS5maXRlclByZWxvYWRzIGluc3RhbmNlb2YgQXJyYXkpe1xyXG5cdFx0XHRmaXRlclByZWxvYWRzID0gWy4uLmZpdGVyUHJlbG9hZHMsIC4uLml0ZW0uZml0ZXJQcmVsb2Fkc11cclxuXHRcdH1cclxuXHRcdGlmKGl0ZW0udHlwZSA9PSAnZ3JpZCcpe1xyXG5cdFx0XHRsZXQge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zOiB7IGNvbHVtbkRlZnMsIC4uLnJlc3RHcmlkT3B0aW9ucyB9LFxyXG5cdFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdFx0XHRcdHN1YkRhdGFLZXksXHJcblx0XHRcdFx0dGl0bGUsXHJcblx0XHRcdFx0c2VsZWN0RGF0YUNiLFxyXG5cdFx0XHRcdGZrLFxyXG5cdFx0XHRcdG1haW5GaWVsZCxcclxuXHRcdFx0XHR1bmlxdWVGaWVsZCxcclxuXHRcdFx0XHRhZGREYXRhQ2IsXHJcblx0XHRcdFx0c2hvd0RlbGV0ZSA9IHRydWUsXHJcblx0XHRcdFx0c2Nyb2xsSGVpZ2h0LFxyXG5cdFx0XHRcdGRyYWdTb3J0LFxyXG5cdFx0XHRcdHNlbGVjdGlvbk1vZGVcclxuXHRcdFx0fSA9IGl0ZW07XHJcblx0XHRcdGdyaWQgPSB7IHN1YlRhYmxlU291cmNlLCBzdWJEYXRhS2V5LCB0aXRsZSxzaG93RGVsZXRlLCAuLi5ncmlkfTtcclxuXHRcdFx0bGV0IGdyaWRPcHRpb25zID0ge1xyXG5cdFx0XHRcdC4uLnJlc3RHcmlkT3B0aW9ucyxcclxuXHRcdFx0XHRmayxcclxuXHRcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHRcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdFx0XHRcdG1haW5GaWVsZCxcclxuXHRcdFx0fTtcclxuXHRcdFx0aWYoc2Nyb2xsSGVpZ2h0KXtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zY3JvbGxIZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgXHJcblx0XHRcdH1cclxuXHRcdFx0aWYoZHJhZ1NvcnQpe1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnJvd0RyYWdNYW5hZ2VkID0gdHJ1ZVxyXG5cdFx0XHRcdGdyaWRPcHRpb25zLmRyYWdTb3J0ID0gZHJhZ1NvcnRcclxuXHRcdFx0fVxyXG5cdFx0XHRpZihzZWxlY3Rpb25Nb2RlKSB7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGVcclxuXHRcdFx0fVxyXG5cdFx0XHRjb252ZXJ0Q29sKGNvbHVtbkRlZnMsdGhpc0FyZy5hdXRoTGV2ZWwsIGdyaWRPcHRpb25zLm1vZGVsTmFtZSxkcmFnU29ydCk7XHJcblx0XHRcdGdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBjb2x1bW5EZWZzO1xyXG5cclxuXHRcdFx0aWYgKHN1YlRhYmxlU291cmNlID09PSAnc2VsZWN0Jykge1xyXG5cdFx0XHRcdHRoaXNBcmcud2ViZ2V0KHsgY29kZTogaXRlbS5zZWxlY3RNb2RlbENvZGUgfSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgc2VsZWN0Q29udGVudCA9IEpTT04ucGFyc2UocmVzLmNvbnRlbnQpO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zID0gcGFyc2VGdW5jdGlvbnMoc2VsZWN0Q29udGVudCwgdGhpc0FyZyk/LmdyaWRPcHRpb25zO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSA9IGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgfHwgJ3NlcnZlclNpZGUnO1xyXG5cdFx0XHRcdFx0aWYgKGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSB7XHJcblx0XHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jID0gZ3JpZC5zZWxlY3RPcHRpb25zLnNlcnZlckZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5jbGllbnRGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Z3JpZC51bmlxdWVGaWVsZCA9IHVuaXF1ZUZpZWxkO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3REYXRhQ2IgPSBzZWxlY3REYXRhQ2I7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gJzMwMHB4JztcclxuXHRcdFx0XHRcdGdyaWRPcHRpb25zSG9va2VyKGdyaWQuc2VsZWN0T3B0aW9ucywgc2VsZWN0Q29udGVudCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Z3JpZC5zZWFyY2hQcm0gPSB7IC4uLnRoaXNBcmcuc2VhcmNoUHJtIH07XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YWRkRGF0YUNiICYmIChncmlkT3B0aW9ucy5hZGREYXRhQ2IgPSBhZGREYXRhQ2IpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGdyaWQuZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGl0ZW0uaW50ZXJhY3RpdmVMYWJlbCA9IHRydWVcclxuXHRcdFx0Z3JpZCA9IHtcclxuXHRcdFx0XHQuLi5pdGVtXHJcblx0XHRcdH1cclxuXHRcdFx0Z3JpZC5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHRcdH1cclxuXHRcdHRoaXNBcmcuZ3JpZHMucHVzaChncmlkKTtcclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGb3JtID0gKHRoaXNBcmc6YW55LCBncm91cEFycjphbnksc291cmNlRGF0YTphbnkpID0+IHtcclxuXHRncm91cEFyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdGlmICh0aGlzQXJnLmF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbVtmb3JtVHlwZVRvUHJvcHNbaXRlbS50eXBlXV0uZGlzYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cdHRoaXNBcmcuZm9ybU9wdGlvbnMgPSB7XHJcblx0XHRmaWVsZHM6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGdyb3VwQ2xhc3M6ICdmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCcsXHJcblx0XHRcdFx0Z3JvdXA6IGdyb3VwQXJyLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZvcm06IG5ldyBGb3JtR3JvdXAoe30pLFxyXG5cdFx0bWFpbkZpZWxkOiBzb3VyY2VEYXRhLm1vZGVsLm1haW5GaWVsZHMsXHJcblx0fTtcclxufSJdfQ==
@@ -3692,7 +3692,7 @@ const convertGrid = (thisArg, gridList, fiterPreloads) => {
3692
3692
  fiterPreloads = [...fiterPreloads, ...item.fiterPreloads];
3693
3693
  }
3694
3694
  if (item.type == 'grid') {
3695
- let { gridOptions: { columnDefs, ...restGridOptions }, subTableSource, subDataKey, title, selectDataCb, fk, mainField, uniqueField, addDataCb, showDelete = true, scrollHeight, dragSort } = item;
3695
+ let { gridOptions: { columnDefs, ...restGridOptions }, subTableSource, subDataKey, title, selectDataCb, fk, mainField, uniqueField, addDataCb, showDelete = true, scrollHeight, dragSort, selectionMode } = item;
3696
3696
  grid = { subTableSource, subDataKey, title, showDelete, ...grid };
3697
3697
  let gridOptions = {
3698
3698
  ...restGridOptions,
@@ -3708,6 +3708,9 @@ const convertGrid = (thisArg, gridList, fiterPreloads) => {
3708
3708
  gridOptions.rowDragManaged = true;
3709
3709
  gridOptions.dragSort = dragSort;
3710
3710
  }
3711
+ if (selectionMode) {
3712
+ gridOptions.selectionMode = selectionMode;
3713
+ }
3711
3714
  convertCol(columnDefs, thisArg.authLevel, gridOptions.modelName, dragSort);
3712
3715
  gridOptions.columnDefs = columnDefs;
3713
3716
  if (subTableSource === 'select') {
@@ -3872,6 +3875,12 @@ const _gridUtils = {
3872
3875
  maxWidth: 80,
3873
3876
  });
3874
3877
  }
3878
+ if (gridOptions.selectionMode === 'none') {
3879
+ gridOptions.rowSelection = undefined;
3880
+ }
3881
+ else if (gridOptions.selectionMode === 'single') {
3882
+ gridOptions.rowSelection = { mode: 'singleRow' };
3883
+ }
3875
3884
  return { ...gridOptions };
3876
3885
  },
3877
3886
  };
@@ -4489,15 +4498,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
4489
4498
 
4490
4499
  const ColorMap = {
4491
4500
  emerald: '#10B981',
4492
- green: '#22C55E',
4501
+ green: '#22c55e',
4493
4502
  lime: '#84CC16',
4494
- orange: '#F97316',
4503
+ orange: '#f97316',
4495
4504
  amber: '#F59E0B',
4496
4505
  sky: '#0EA5E9',
4497
- blue: '#3B82F6',
4506
+ blue: '#0ea5e9',
4498
4507
  violet: '#6B26C1',
4499
4508
  pink: '#EC4899',
4500
- purple: '#9A72C8',
4509
+ purple: '##f97316',
4501
4510
  red: '#EF4444',
4502
4511
  yellow: '#F59E0B',
4503
4512
  gray: '#4B5563',
@@ -5010,8 +5019,8 @@ class GridComponent {
5010
5019
  this.grid?.api.forEachNode((node, index) => {
5011
5020
  let id = node.data.id;
5012
5021
  let isMovingDown = event.overIndex > this.dragBeforeIndex;
5013
- if ((isMovingDown && index >= this.dragBeforeIndex && index <= event.overIndex)
5014
- || (!isMovingDown && index <= this.dragBeforeIndex && index >= event.overIndex)) {
5022
+ if ((isMovingDown && index >= this.dragBeforeIndex && index <= event.overIndex) ||
5023
+ (!isMovingDown && index <= this.dragBeforeIndex && index >= event.overIndex)) {
5015
5024
  // console.log('node----',node.data,event.overIndex)
5016
5025
  let oldValue;
5017
5026
  if (index == event.overIndex) {
@@ -5023,7 +5032,7 @@ class GridComponent {
5023
5032
  // console.log('oldIndex----',oldValue)
5024
5033
  if (!id) {
5025
5034
  this.upsert()?.subsert[this.subIndex]['maptmp'].set(index, Object.assign(node.data, {
5026
- [this.gridOptions().dragSort]: index + 1
5035
+ [this.gridOptions().dragSort]: index + 1,
5027
5036
  }));
5028
5037
  }
5029
5038
  else {